基本要求: 1頻率變換范圍1Hz-9999Hz 2 測量精度±1% 3 4位LED顯示 4 可測量方波、正弦波、三角波 5 高頻采用測頻法,低頻采用測周法測量
完整的課程設(shè)計(jì)下載(word格式的):
基于單片機(jī)的數(shù)字頻率計(jì)課設(shè)報(bào)告.doc
(1.15 MB, 下載次數(shù): 52)
2016-5-10 19:40 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
下面是論文的部分預(yù)覽:
課程設(shè)計(jì)說明書
課程設(shè)計(jì)名稱: 專業(yè)課程設(shè)計(jì) 課程設(shè)計(jì)題目: 數(shù)字頻率計(jì) 學(xué) 院 名 稱: 信息工程學(xué)院 專業(yè): 電子信息工程 班級: 學(xué)號:姓名: 評分: 教師: 2016 年 6 月 29 日 摘要 數(shù)字頻率計(jì)是一種專門對被測信號頻率進(jìn)行測量的電子測量儀器,在計(jì)算機(jī)、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域應(yīng)用廣泛。 本文詳細(xì)介紹數(shù)字頻率計(jì)的軟件設(shè)計(jì),并概述了硬件設(shè)計(jì),以中界頻率為界,低頻采用測周法,而高頻采用測頻法。其中,硬件電路由放大電路、整形電路、單片機(jī)定時(shí)計(jì)數(shù)電路、7279顯示電路四個(gè)部分組成。通過單片機(jī)STC89C51實(shí)現(xiàn)對特定周期窄脈沖的計(jì)數(shù)功能;通過芯片LM324實(shí)現(xiàn)對小信號的放大;通過芯片74LS14將輸入的非方波整形成方波;通過芯片hd7279A驅(qū)動(dòng)數(shù)碼管可連續(xù)動(dòng)態(tài)顯示4位數(shù)。軟件部分采用的是一種結(jié)構(gòu)化語言C51進(jìn)行編程。它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。主要功能模塊有主程序、測頻法程序、測周法程序、分離千、百、十、個(gè)位程序、7279顯示程序組成。 本數(shù)字頻率計(jì)可測量范圍在1Hz—9999Hz的正弦波、方波、三角波的信號,時(shí)基寬度為1us,10us,100us,1ms,本數(shù)字頻率計(jì)測量誤差大約在0.1%左右,精度為±0.04%,直接由軟件判斷測頻所用方法,解決了存在的換擋速度慢等缺點(diǎn),并且節(jié)約了硬件上的成本。具有精度高、使用方便、測量迅速,以及便等優(yōu)點(diǎn),而且還具有成本低、性價(jià)比高、功耗低等特點(diǎn)。因此,該頻率計(jì)具有一定的實(shí)用價(jià)值。 關(guān)鍵詞:測頻法、測周法、STC89C51單片機(jī)、HD7279A 目錄 前言 第一章 硬件電路方案設(shè)計(jì)及設(shè)計(jì)要求 1.1 設(shè)計(jì)內(nèi)容及要求 1.2 方案比較 1.3 方案論證 1.4方案選擇 第二章 系統(tǒng)組成和工作原理 2.1系統(tǒng)組成 2.2 系統(tǒng)工作原理 2.2.1頻率計(jì)測量方法簡介 2.2.2工作原理 第三章 硬件電路設(shè)計(jì) 3.1單片機(jī)最小系統(tǒng)電路 3.1.1 STC89C51功能簡介 3.1.2單片機(jī)STC89C51引腳圖 3.1.3復(fù)位電路 3.2 放大整形模塊 3.3 施密特整形 3.4 HD 7279A顯示模塊 第四章 軟件設(shè)計(jì)及程序流程圖 4.1 編程語言的選擇及程序的編譯調(diào)試 4.2 單片機(jī)計(jì)數(shù)原理 4.3主程序設(shè)計(jì) 4.3.1 設(shè)計(jì)思路 4.3.2程序流程圖 第五章 實(shí)驗(yàn)調(diào)試、測量結(jié)果記錄和誤差分析 5.1實(shí)驗(yàn)調(diào)試 5.2 測量結(jié)果記錄 5.3誤差分析 5.3.1產(chǎn)生誤差的原因 5.3.2減小誤差的方法 第六章 小結(jié)和體會(huì) 參考文獻(xiàn) 附錄一 元器件清單 附錄二 實(shí)驗(yàn)電路圖 附錄三 實(shí)驗(yàn)代碼 前言當(dāng)今社會(huì),隨著科技的進(jìn)步,數(shù)字系統(tǒng)的設(shè)計(jì)有了很大的進(jìn)步,如今運(yùn)行速度快、在功能更加強(qiáng)大的基礎(chǔ)上更加便于使用攜帶成了發(fā)展的方向。60年代以來,在半導(dǎo)體器件和計(jì)算機(jī)技術(shù)發(fā)展的基礎(chǔ)上,結(jié)合電測技術(shù)創(chuàng)造出了完全新的數(shù)字式儀表。它在測試方法、原理、儀器結(jié)構(gòu)和操作方法上完全與前面所講的模式式儀表不同,在質(zhì)的方面也有很大的飛躍,70年代以來,把微型計(jì)算機(jī)的功能引入數(shù)字儀表,產(chǎn)生了新型智能化儀表,它具有程序控制、信息儲存數(shù)據(jù)處理和自動(dòng)檢修功能,使數(shù)字儀表向高準(zhǔn)確度、多功能、高可靠性和低價(jià)格方面大大邁進(jìn)了一步。近代的數(shù)字頻率計(jì)就其功能而言,早已超出了早期只能測量頻率的范疇,而具有測量周期、頻率比、脈沖時(shí)間、累加計(jì)數(shù)等用途,并能輸出標(biāo)準(zhǔn)頻率、時(shí)標(biāo)脈沖、閘門時(shí)間脈沖及編碼信號等,成為一機(jī)多能、測頻范圍寬、測量精度高、測量速度快、自動(dòng)化程度高、直接數(shù)字顯示、操作簡便的常用電子儀器,它在教學(xué)、科研、生產(chǎn)、國防中得到廣泛使用。 頻率測量儀在數(shù)字電路、模擬電路中應(yīng)用比較廣泛,它是直接用十進(jìn)制數(shù)字來顯示被測信號頻率的一種測量裝置。它不僅可以測量正弦波,方波,三角波,尖脈沖信號和其他具有周期的信號的頻率,經(jīng)過改裝,可以測量脈沖寬度,做成數(shù)字式脈寬測量儀:可以測量電容做成數(shù)字電容測量儀;在電路中增加傳感器,還可以做成數(shù)字脈搏儀,計(jì)價(jià)器等。因此數(shù)字頻率儀在測量物理量方面的廣泛應(yīng)用。 由于時(shí)基電路,邏輯控制電路實(shí)際的硬件設(shè)計(jì)用到的器件較多,聯(lián)機(jī)比較復(fù)雜,而且會(huì)產(chǎn)生比較大的延遲。因此,本課程報(bào)告采用單片機(jī)為核心的控制電路,放大整形電路、和顯示電路的構(gòu)成原理,判斷所測量頻率與中界頻率的大小關(guān)系,在高頻段測頻模式而低頻段采用測周期模式的測量方法,將使整個(gè)系統(tǒng)大大簡化,提高整體性能,并且進(jìn)行了相應(yīng)的硬軟件設(shè)計(jì)。其基本功能是測量正弦信號、三角波信號、方波信號及其他各種單位時(shí)間內(nèi)變化的物理量,以十進(jìn)制數(shù)字的方式顯示被測信號頻率。在進(jìn)行模擬、數(shù)字電路的設(shè)計(jì)、安裝、調(diào)試過程中,由于其使用十進(jìn)制數(shù)顯示,測量迅速,精確度高,顯示直觀,因此它在電子測量過程中必不可少。 第一章 硬件電路方案設(shè)計(jì)及設(shè)計(jì)要求1.1 設(shè)計(jì)內(nèi)容及要求基本要求: 1頻率變換范圍1Hz-9999Hz 2 測量精度±1% 3 4位LED顯示 4 可測量方波、正弦波、三角波 5 高頻采用測頻法,低頻采用測周法測量 1.2 方案比較方案一:本方案主要以單片機(jī)為核心,利用單片機(jī)的計(jì)數(shù)定時(shí)功能來實(shí)現(xiàn)頻率的計(jì)數(shù)并且利用單片機(jī)的動(dòng)態(tài)掃描把測出的數(shù)據(jù)送到數(shù)字顯示電路顯示。其實(shí)原理框圖如圖1所示
1.002.jpg (11.93 KB, 下載次數(shù): 106)
下載附件
2016-5-10 19:57 上傳
圖1.1 方案一原理圖
方案二:本方案主要以數(shù)字器件為核心,主要分為時(shí)基電路,邏輯控制電路,放大整形電路,閘門電路,計(jì)數(shù)電路,鎖存電路,譯碼顯示電路七大部分。其原理框圖如圖2.2所示
1.003.jpg (16.95 KB, 下載次數(shù): 111)
下載附件
2016-5-10 19:57 上傳
圖1.2方案二原理框圖 1.3 方案論證 方案一:本方案主要以單片機(jī)為核心,被測信號先進(jìn)入信號放大電路進(jìn)行放大,再被送到波形整形電路整形,把被測得正弦波或者三角波為方波。利用單片機(jī)的計(jì)數(shù)器和定時(shí)器的功能對被測信號進(jìn)行計(jì)數(shù)。編寫相應(yīng)的程序可以使單片機(jī)自動(dòng)調(diào)節(jié)測量的量程,并把測出的頻率數(shù)據(jù)送到顯示電路顯示。 方案二:本方案使用大量的數(shù)字器件,被測量信號放大整形電路變成計(jì)數(shù)器所要求的脈沖信號,其頻率于被測信號的頻率相同。同時(shí)時(shí)基電路提供標(biāo)準(zhǔn)時(shí)間基準(zhǔn)信號,其高電平持續(xù)時(shí)間1s,當(dāng)1s信號來到時(shí),閘門開通,被測脈沖信號通過閘門,計(jì)數(shù)器開始計(jì)數(shù),直到1s信號結(jié)束閘門關(guān)閉,停止計(jì)數(shù)。若在閘門時(shí)間1s內(nèi)計(jì)數(shù)器計(jì)得的脈沖個(gè)數(shù)為N,則被測信號頻率FX=NHZ。邏輯控制電路的作用有兩個(gè):一是產(chǎn)生鎖存脈沖,是顯示器上的數(shù)字穩(wěn)定;二是產(chǎn)生清零脈沖,使計(jì)數(shù)器每次測量從零開始計(jì)數(shù)。 1.4方案選擇比較以上兩種方案可以知道,方案一得核心是單片機(jī),使用的元器件少,原理電路簡單,調(diào)試簡單只要改變程序的設(shè)定值則可以實(shí)現(xiàn)不同頻率范圍的測試能自動(dòng)選擇測試的量程。與方案一相比較方案二則使用了大量的數(shù)字元器件,原理電路復(fù)雜,硬件調(diào)試麻煩。如要測量高頻的信號還需要加上分頻電路,成本相對高了點(diǎn)。基于上述,所以選擇了方案一。 第二章 系統(tǒng)組成和工作原理2.1系統(tǒng)組成本系統(tǒng)主要由放大模塊、施密特整形模塊、單片機(jī)模塊和HD7279驅(qū)動(dòng)顯示模塊組成。通過軟件判斷高頻或低頻,單片機(jī)計(jì)數(shù)脈沖周期或個(gè)數(shù)來動(dòng)態(tài)測量所求頻率,并通過7279數(shù)碼管顯示出來。得到系統(tǒng)的總體結(jié)構(gòu)框圖如圖2.1所示
1.004.jpg (3.43 KB, 下載次數(shù): 106)
下載附件
2016-5-10 19:57 上傳
1.005.jpg (801 Bytes, 下載次數(shù): 90)
下載附件
2016-5-10 19:57 上傳
1.006.jpg (3.29 KB, 下載次數(shù): 104)
下載附件
2016-5-10 19:57 上傳
1.007.jpg (2.25 KB, 下載次數(shù): 93)
下載附件
2016-5-10 19:57 上傳
1.008.jpg (812 Bytes, 下載次數(shù): 84)
下載附件
2016-5-10 19:57 上傳
1.009.jpg (821 Bytes, 下載次數(shù): 109)
下載附件
2016-5-10 19:57 上傳
1.010.jpg (1.97 KB, 下載次數(shù): 96)
下載附件
2016-5-10 19:57 上傳
圖2.1 數(shù)字頻率計(jì)功能模塊 2.2 系統(tǒng)工作原理2.2.1頻率計(jì)測量方法簡介(1)測頻法,即在一定閘門時(shí)間內(nèi)測量被測信號的脈沖個(gè)數(shù)。 用一標(biāo)準(zhǔn)閘門信號(閘門寬度為Tc)對被測信號的重復(fù)周期進(jìn)行計(jì)數(shù),計(jì)數(shù)結(jié)果為Nx時(shí),其待測頻率為
1.011.jpg (1.27 KB, 下載次數(shù): 110)
下載附件
2016-5-10 19:57 上傳
1.012.jpg (1.71 KB, 下載次數(shù): 102)
下載附件
2016-5-10 19:57 上傳
時(shí)間Tc為標(biāo)準(zhǔn)閘門寬度(s),Nx為計(jì)數(shù)器計(jì)出的脈沖個(gè)數(shù)(重復(fù)周期數(shù)),測量的精度主要取決于計(jì)數(shù)Nx的誤差。其特點(diǎn)在于:測量方法簡單;待測信號頻率越高,精度越高;測量時(shí)間越長,誤差越小;但當(dāng)待測信號頻率較低時(shí),誤差較大。 (2)測周法 此法是在待測信號的一個(gè)周期Tx內(nèi),記錄標(biāo)準(zhǔn)頻率信號變化次數(shù)N0。這種方法測出的頻率是
1.013.jpg (938 Bytes, 下載次數(shù): 104)
下載附件
2016-5-10 19:57 上傳
=
1.014.jpg (911 Bytes, 下載次數(shù): 102)
下載附件
2016-5-10 19:57 上傳
/
1.015.jpg (868 Bytes, 下載次數(shù): 82)
下載附件
2016-5-10 19:57 上傳
(式2-2) 此法的特點(diǎn)是低頻檢測時(shí)精度高,但高頻檢測時(shí)誤差很大。為了提高T法高頻測量時(shí)的精度可通過A分頻使待測信號的周期擴(kuò)大A倍。 2.2.2工作原理本次設(shè)計(jì)的數(shù)字頻率計(jì)是以STC89C51 單片機(jī)為核心, 被測周期信號通過放大整形電路經(jīng)過操作形成特定周期的窄脈沖,送到單片機(jī)的T0(P3.4)口外脈沖觸發(fā)計(jì)數(shù)。 以1KHz為中界頻率,1000Hz-9999Hz為高頻段采用測頻法,記下1s脈沖個(gè)數(shù) c=256
1.016.jpg (677 Bytes, 下載次數(shù): 120)
下載附件
2016-5-10 19:57 上傳
TH0+TL0 (式2-3) 1Hz-999Hz為低頻段采用測周法,計(jì)算10個(gè)脈沖所用時(shí)間T T=溢出次數(shù)×溢出時(shí)間+計(jì)數(shù)值×1us f=
1.017.jpg (1.15 KB, 下載次數(shù): 95)
下載附件
2016-5-10 19:57 上傳
(式2-4) 最后,將被測信號頻率通過顯示電路讀取數(shù)值。
第三章 硬件電路設(shè)計(jì)本頻率計(jì)的數(shù)據(jù)測量系統(tǒng)主要元器件是單片機(jī)STC89C51,由外部晶振完成對待測信號頻率的定時(shí)和計(jì)數(shù)等功能,外部還要有放大電路、整形電路、顯示電路。 3.1單片機(jī)最小系統(tǒng)電路本次設(shè)計(jì)的數(shù)字頻率計(jì)是以宏晶公司STC89C51微處理器作為系統(tǒng)的控制核心,單片機(jī)控制電路主要由晶振電路、復(fù)位電路及串行通信電路構(gòu)成。由其組成的單片機(jī)最小系統(tǒng)電路原理圖如圖3.1所示。
1.018.jpg (35.57 KB, 下載次數(shù): 94)
下載附件
2016-5-10 19:57 上傳
圖 3.1 單片機(jī)最小系統(tǒng)原理圖 3.1.1 STC89C51功能簡介(1)增強(qiáng)型1T 流水線/ 精簡指令集結(jié)構(gòu)8051 CPU (2)工作電壓:3.4V-5.5V (5V 單片機(jī))/ 2.0V-3.8V (3V 單片機(jī) (3)工作頻率范圍:0 -35 MHz,相當(dāng)于普通8051 的0~420MHz.實(shí)際工作頻率可達(dá)48MHz. (4)用戶應(yīng)用程序空間12K / 10K / 8K / 6K / 4K / 2K 字節(jié) (5)片上集成512 字節(jié)RAM (6)通用I/O 口(27/23個(gè)),復(fù)位后為:準(zhǔn)雙向口/ 弱上拉(普通8051 傳統(tǒng)I/O 口) 可設(shè)置成四種模式:準(zhǔn)雙向口/ 弱上拉,推挽/ 強(qiáng)上拉,僅為輸入/ 高阻,開漏 每個(gè)I/O 口驅(qū)動(dòng)能力均可達(dá)到20mA,但整個(gè)芯片最大不得超過55mA (7)ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器 可通過串口(P3.0/P3.1)直接下載用戶程序,數(shù)秒即可完成一片 (8)EEPROM 功能 (9)看門狗 (10)內(nèi)部集成MAX810 專用復(fù)位電路(外部晶體20M 以下時(shí),可省外部復(fù)位電路) (11)時(shí)鐘源:外部高精度晶體/ 時(shí)鐘,內(nèi)部R/C 振蕩器。用戶在下載用戶程序時(shí),可選擇是使用內(nèi)部R/C 振蕩器還是外部晶體/ 時(shí)鐘。常溫下內(nèi)部R/C 振蕩器頻率為:5.2MHz ~6.8MHz。精度要求不高時(shí),可選擇使用內(nèi)部時(shí)鐘,因?yàn)橛袦仄堖x4MHz ~8MHz (12)有2個(gè)16 位定時(shí)器/ 計(jì)數(shù)器 (13)外部中斷2 路,下降沿中斷或低電平觸發(fā)中斷,Power Down 模式可由外部中斷低電平觸發(fā)中斷方式喚醒 (14)PWM( 4 路)/ P C A(可編程計(jì)數(shù)器陣列),也可用來再實(shí)現(xiàn)4個(gè)定時(shí)器或4個(gè)外部中斷(上升沿中斷/ 下降沿中斷均可支持) (15)STC89Cc516AD具有ADC功能。10 位精度ADC,共8 路 (16)通用異步串行口(UART) (17)SPI 同步通信口,主模式/ 從模式 (18)工作溫度范圍:0 -75℃/ -40 -+85℃ 3.1.2單片機(jī)STC89C51引腳圖STC89C51有40個(gè)引腳,按引腳功能大致可分為4個(gè)種類:電源、時(shí)鐘、控制和I/O引腳。 ⒈ 電源: ⑴ VCC - 芯片電源,接+5V;
⑵ VSS - 接地端; ⒉ 時(shí)鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 ⒊ 控制線:控制線共有4根, ⑴ ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖
① ALE功能:用來鎖存P0口送出的低8位地址
② PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 ⑵ PSEN:外ROM讀選通信號。 ⑶ RST/VPD:復(fù)位/備用電源。 ① RST(Reset)功能:復(fù)位信號輸入端。 ② VPD功能:在Vcc掉電情況下,接備用電源。 ⑷ EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 ① EA功能:內(nèi)外ROM選擇端。 ② Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 ⒋ I/O線 80C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。
P3口還具有第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線)。 3.1.3復(fù)位電路1、手動(dòng)按鈕復(fù)位 手動(dòng)按鈕復(fù)位需要人為在復(fù)位輸入端RST上加入高電平(圖3.2)。一般采用的辦法是在RST端和正電源Vcc之間接一個(gè)按鈕。當(dāng)人為按下按鈕時(shí),則Vcc的+5V電平就會(huì)直接加到RST端。手動(dòng)按鈕復(fù)位的電路如所示。由于人的動(dòng)作再快也會(huì)使按鈕保持接通達(dá)數(shù)十毫秒,所以完全能夠滿足復(fù)位的時(shí)間要求。
1.019.jpg (7.29 KB, 下載次數(shù): 84)
下載附件
2016-5-10 19:57 上傳
圖3.2 手動(dòng)復(fù)位電路 2、上電復(fù)位 上電復(fù)位電路如圖3.3所示,只要在RST復(fù)位輸入引腳上接一電容至Vcc端,下接一個(gè)電阻到地即可。對于CMOS型單片機(jī),由于在RST端內(nèi)部有一個(gè)下拉電阻,故可將外部電阻去掉,而將外接電容減至1µF。上電復(fù)位的工作過程是在加電時(shí),復(fù)位電路通過電 容加給RST端一個(gè)短暫的高電平信號,此高電平信號隨著Vcc對電容的充電過程而逐漸回落,即RST端的高電平持續(xù)時(shí)間取決于電容的充電時(shí)間。為了保證系統(tǒng)能夠可靠地復(fù)位,RST端的高電平信號必須維持足夠長的時(shí)間。上電時(shí),Vcc的上升時(shí)間約為10ms,而振蕩器的起振時(shí)間取決于振蕩頻率,如晶振頻率為10MHz,起振時(shí)間為1ms;晶振頻率為1MHz,起振時(shí)間則為10ms。在圖2的復(fù)位電路中,當(dāng)Vcc掉電時(shí),必然會(huì)使RST端電壓迅速下降到0V以下,但是,由于內(nèi)部電路的限制作用,這個(gè)負(fù)電壓將不會(huì)對器件產(chǎn)生損害。另外,在復(fù)位期間,端口引腳處于隨機(jī)狀態(tài),復(fù)位后,系統(tǒng)將端口置為全“l(fā)”態(tài)。如果系統(tǒng)在上電時(shí)得不到有效的復(fù)位,則程序計(jì)數(shù)器PC將得不到一個(gè)合適的初值,因此,CPU可能會(huì)從一個(gè)未被定義的位置開始執(zhí)行程序
1.020.jpg (7.46 KB, 下載次數(shù): 95)
下載附件
2016-5-10 19:57 上傳
圖3.3 上電復(fù)位電路 3.2 放大整形模塊對于小電壓信號,數(shù)字頻率計(jì)需要把微弱信號放大,故本課設(shè)采用LM324放大器,優(yōu)點(diǎn)是使用廣泛,價(jià)格便宜。 參數(shù)計(jì)算:放大器輸出電壓為
1.021.jpg (2.74 KB, 下載次數(shù): 108)
下載附件
2016-5-10 19:57 上傳
(式3-1) 放大倍數(shù)n=
1.022.jpg (1.88 KB, 下載次數(shù): 103)
下載附件
2016-5-10 19:57 上傳
=11 (式3-2)
1.023.jpg (27.2 KB, 下載次數(shù): 107)
下載附件
2016-5-10 19:57 上傳
圖3.4 放大整形模塊電路圖 3.3 施密特整形施密特整形器可以把邊沿變化緩慢的周期性信號變換為邊沿很陡的矩形脈沖信號。輸入的信號只要幅度大于vt+,即可在施密特觸發(fā)器的輸出端得到同等頻率的矩形脈沖信號。整形波形如圖3.5所示,放大整形仿真圖如圖3.6所示
1.024.jpg (7.65 KB, 下載次數(shù): 110)
下載附件
2016-5-10 19:57 上傳
圖3.5 施密特整形
1.025.jpg (34.7 KB, 下載次數(shù): 119)
下載附件
2016-5-10 19:57 上傳
圖3.6 放大整形電路仿真圖 3.4 HD 7279A顯示模塊
1.026.jpg (25.37 KB, 下載次數(shù): 104)
下載附件
2016-5-10 19:57 上傳
HD7279A(見圖3.7)是一片具有串行接口的,同時(shí)驅(qū)動(dòng)8位共陰式數(shù)碼管的智能顯示驅(qū)動(dòng)芯片,其中P1.0接單片機(jī)的
1.027.jpg (1018 Bytes, 下載次數(shù): 112)
下載附件
2016-5-10 19:57 上傳
,P1.1接單片機(jī)的CLK,P1.2接單片機(jī)的DATA,P1.0接單片機(jī)的
1.028.jpg (1.16 KB, 下載次數(shù): 85)
下載附件
2016-5-10 19:57 上傳
. 圖3.8 HD7279A
HD7279A的控制指令分為二大類——純指令和帶有數(shù)據(jù)的指令。由于本次設(shè)計(jì)只利用了HD7279A構(gòu)成鍵盤和數(shù)碼管顯示,用段數(shù)碼管顯示,在設(shè)計(jì)中用到的HD7279A 的控制指令有復(fù)位(A4H)和讀鍵盤(15H)指令和送數(shù)據(jù)指令。 1、復(fù)位指令(A4H):當(dāng)HD7279A收到該指令后,將所有的顯示清除,所有設(shè)置的字符消隱、閃爍等屬性也被一起消除。執(zhí)行該指令后,芯片所處的狀態(tài)與系統(tǒng)上電后所處的狀態(tài)一樣。 2、帶有數(shù)據(jù)的指令:本次設(shè)計(jì)采用了兩種譯碼方式,一種是下載數(shù)據(jù)且按方式0譯碼,即命令由二個(gè)字節(jié)組成,前半部分為指令,格式為(8XH),X為位地址,后一字節(jié)低四位為數(shù)據(jù)。另一種是下載數(shù)據(jù)但不譯碼方式,即命令由二個(gè)字節(jié)組成,前半部分為指令,格式為(9XH),X為位地址,后一字節(jié)顯示數(shù)據(jù)從高至低位分別為DP和A-G。分別對應(yīng)7段LED數(shù)碼管的各段。 3、讀鍵盤指令(15H):該指令從HD7279A讀出當(dāng)前的按鍵代碼。與復(fù)位指令不同,此命令的前一個(gè)字節(jié)15H為微控制器傳送到HD7279A的指令,而后一個(gè)字節(jié)d0—d7則為HD7279A返回的按鍵代碼,本次采用4X4鍵盤,則各鍵鍵盤代碼分別定義為04H—07H。此指令的前半段,HD7279A的DATA引腳處于高阻輸入狀態(tài),以接受來自微處理器的指令;在指令的后半段,DATA引腳從輸入狀態(tài)轉(zhuǎn)為輸出狀態(tài),輸出鍵盤代碼的值。其時(shí)序圖如圖3.7所示
1.029.jpg (12.96 KB, 下載次數(shù): 94)
下載附件
2016-5-10 19:57 上傳
讀鍵盤指令(8位,高位在前) HD7279輸出的鍵盤代碼(8位,高位在前) 圖3.7讀鍵盤指令時(shí)序圖 其中:T5=50us,T6=8us,T7=8us。
第四章 軟件設(shè)計(jì)及程序流程圖4.1 編程語言的選擇及程序的編譯調(diào)試1)編程語言的選擇 MCS-51編程語言常用的有兩種,一種是匯編語言,另一種是C語言。匯編語言的機(jī)器代碼生成效率很高,但是可讀性并不強(qiáng),復(fù)雜一點(diǎn)的程序就更是難讀懂,而C 語言在大多數(shù)情況下其機(jī)器代碼生成效率和匯編語言相當(dāng),但可讀性和可移植性卻遠(yuǎn)遠(yuǎn)超過了匯編語言,而且C語言還可以嵌入?yún)R編來解決高實(shí)效性的代碼編寫問題。 對于開發(fā)周期來說,C語言的開發(fā)周期通常小于匯編語言很多。C 語言是一種結(jié)構(gòu)化語言[1]。它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù),這種語言的表現(xiàn)能力和處理能力極強(qiáng),它不僅具有豐富的運(yùn)算符和數(shù)據(jù)類型,便于實(shí)現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。它還可以直接訪問內(nèi)存的物理地址,進(jìn)行位(bit)一級的操作。C語言的模塊化開發(fā)方式使開發(fā)出來的程序模塊可不經(jīng)修改,直接被其他項(xiàng)目所用,這樣可以最大程度的實(shí)現(xiàn)資源共享。由于C語言實(shí)現(xiàn)了對硬件的編程操作,因此C語言集高級語言和低級語言的功能為一體,具有高效性,可移植性強(qiáng)等特點(diǎn)。 綜合以上C 語言的優(yōu)點(diǎn),本次設(shè)計(jì)選擇由美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)Keil uVision2對單片機(jī)進(jìn)行軟件編程。 2)源程序的編譯 由于單片機(jī)只能執(zhí)行機(jī)器語言的程序(目標(biāo)程序),因此將C51 源程序編輯好以擴(kuò)展名.C 保存后,應(yīng)將源程序編譯成目標(biāo)程序。編譯過程中,能夠檢查程序的正確性,并能發(fā)現(xiàn)源程序中的語法錯(cuò)誤和一般性的邏輯錯(cuò)誤,但不能檢查結(jié)構(gòu)上的錯(cuò)誤。如果有錯(cuò)誤,信息窗口會(huì)報(bào)告顯示,并指出錯(cuò)誤位置及錯(cuò)誤類型。程序錯(cuò)誤被糾正后,要重新進(jìn)行編譯調(diào)試,直到程序編譯無誤為止。只有當(dāng)被編譯的程序沒有錯(cuò)誤時(shí),才能執(zhí)行程序及對程序進(jìn)行仿真調(diào)試。 3)程序的仿真調(diào)試 對源程序編譯形成目標(biāo)程序,只是排除了語法錯(cuò)誤和一般性的邏輯錯(cuò)誤,只有將目標(biāo)程序應(yīng)用到硬件中,經(jīng)過開發(fā)系統(tǒng)Keil uVision2的仿真調(diào)試后且滿足功能要求才能寫到程序存儲器中。仿真調(diào)試是對程序功能是否能實(shí)現(xiàn)所做的最后檢查。 4.2 單片機(jī)計(jì)數(shù)原理計(jì)算計(jì)數(shù)初值:設(shè)計(jì)數(shù)初值為X,本設(shè)計(jì)采用12 MHz的晶振。機(jī)器周期=12×(1/晶振頻率) 當(dāng)計(jì)數(shù)器T0設(shè)定為計(jì)數(shù)方式1時(shí),其計(jì)數(shù)脈沖是來源T0端口的外部事件。當(dāng)T0端口上出現(xiàn)由“1”(高電平)到“0”(低電平)的負(fù)跳變脈沖時(shí),計(jì)數(shù)器則加1計(jì)數(shù)。計(jì)算機(jī)是在每個(gè)機(jī)器周期的S5P2狀態(tài)時(shí)采樣T1端口,當(dāng)前一個(gè)機(jī)器周期采樣為1且后一個(gè)機(jī)器周期采樣為0時(shí),計(jì)數(shù)器加1計(jì)數(shù)。計(jì)算機(jī)需用兩個(gè)機(jī)器周期來識別1次計(jì)數(shù),因而最大計(jì)數(shù)速率為振蕩頻率的1/24。在采用12 MHz晶振的情況下,單片機(jī)最大計(jì)數(shù)速度為0.5 MHz即500 kHz。 另外,此處對外部事件計(jì)數(shù)脈沖的占空比(即脈沖的持續(xù)寬度)無特殊要求,從T0口輸入脈沖信號,T0可實(shí)現(xiàn)對脈沖個(gè)數(shù)的計(jì)數(shù) 4.3主程序設(shè)計(jì)4.3.1 設(shè)計(jì)思路主程序是整個(gè)系統(tǒng)軟件的運(yùn)行主體,各個(gè)子系統(tǒng)的軟件程序都必須經(jīng)過它的調(diào)度,才能運(yùn)行得當(dāng)。根據(jù)設(shè)計(jì)的功能要求,主程序主要完成了對系統(tǒng)的初始化,初始化具體參數(shù)如下: 1、內(nèi)存工作單元初始化: 標(biāo)志位初始化:設(shè)置中界頻率為1000HZ,測頻法、測周法標(biāo)志位均清零。讀數(shù)標(biāo)志初始化測頻法中斷次數(shù)、測周法溢出次數(shù)清零,個(gè)、十、百、千位清零 2、顯示模塊初始化:7279復(fù)位 3、定時(shí)中斷0和定時(shí)中斷1初始化: EA=1;中斷使能,ET0=1;定時(shí)中斷0溢出中斷,ET1=1;定時(shí)中斷1溢出中斷 4、顯示初始化,系統(tǒng)啟動(dòng)時(shí)顯示初始化為所有數(shù)碼管都顯示0000。 4.3.2程序流程圖1主程序流程圖
1.030.jpg (46.28 KB, 下載次數(shù): 93)
下載附件
2016-5-10 19:57 上傳
圖4.1 T0時(shí)鐘中斷流程圖
1.038.jpg (30.08 KB, 下載次數(shù): 98)
下載附件
2016-5-10 19:57 上傳
圖4.2 T1時(shí)鐘中斷流程圖
第五章 實(shí)驗(yàn)調(diào)試、測量結(jié)果記錄和誤差分析5.1實(shí)驗(yàn)調(diào)試在調(diào)試過程中所使用的測試儀器儀表和工具包括: 函數(shù)信號發(fā)生器一個(gè);萬用表一個(gè);穩(wěn)壓電源一個(gè);最小系統(tǒng)板一塊; Keil C51 單片機(jī)編譯軟件;示波器一臺。 在確定好電路、領(lǐng)好元器件后即開始對布局。分別按放大電路和整形電路進(jìn)行焊接。函數(shù)發(fā)生器產(chǎn)生的三角波、正弦波通過放大整形電路后輸出到示波器,在示波器中可以看到頻率幾乎不變的完美的方波。后拔出示波器探頭,接上單片機(jī)頻率計(jì)及顯示。 第一次調(diào)試中,7279數(shù)碼管一直顯示71Hz不變化,無論如何改變頻率,其顯示值保持不變,懷疑是程序某處錯(cuò)誤,陷入了死循環(huán)中。后來檢查程序發(fā)現(xiàn)調(diào)用測頻法和測周法的子程序中標(biāo)志位最開始沒有清零,導(dǎo)致第一次讀值后頻率標(biāo)志未清零,單片機(jī)判斷計(jì)數(shù)結(jié)束,使第二次讀值的子程序無法進(jìn)行,也就無法顯示改變的頻率值。后來修改語句,頻率計(jì)能正常動(dòng)態(tài)計(jì)數(shù)。 本次實(shí)驗(yàn)在穩(wěn)壓電源的正負(fù)極增加1uf電容到地濾除電源中高頻成分分量,起了穩(wěn)定電路系統(tǒng)的作用。 5.2 測量結(jié)果記錄實(shí)驗(yàn)測量結(jié)果如表1所示 表1 實(shí)驗(yàn)測量結(jié)果
1.039.jpg (3.07 KB, 下載次數(shù): 88)
下載附件
2016-5-10 19:57 上傳
精度的計(jì)算 (式5-1) A ——檢測系統(tǒng)的精度
1.040.jpg (1.01 KB, 下載次數(shù): 105)
下載附件
2016-5-10 19:57 上傳
—測量范圍內(nèi)允許的最大絕對誤差
1.041.jpg (953 Bytes, 下載次數(shù): 115)
下載附件
2016-5-10 19:57 上傳
—滿量程輸出 所以,經(jīng)計(jì)算得出,A=4
1.042.jpg (744 Bytes, 下載次數(shù): 91)
下載附件
2016-5-10 19:57 上傳
9999=±0.04% 5.3誤差分析5.3.1產(chǎn)生誤差的原因產(chǎn)生的誤差主要包括量化誤差、觸發(fā)誤差、標(biāo)準(zhǔn)頻率誤差。 1.量化誤差:是在將模擬量變換為數(shù)字量的量化過程中產(chǎn)生的誤差,是數(shù)字化儀器所特有的誤差,是不可消除的誤差。它是由于頻率計(jì)閘門的開啟與計(jì)數(shù)脈沖的輸入在時(shí)間上的不確定性,即相位隨機(jī)性而產(chǎn)生的誤差。要減小量化誤差對測頻的影響,應(yīng)設(shè)法增大計(jì)數(shù)值N,選擇較大倍數(shù)的倍頻器和分頻器。 2.觸發(fā)誤差:又稱為變換誤差,被測信號在整形過程中,由于整形電路本身觸發(fā)電平的抖動(dòng)或者被測信號疊加有噪聲和各種干擾信號等原因,使得整形后的脈沖周期不等于被測信號的周期,由此而產(chǎn)生的誤差。 觸發(fā)誤差對測量周期的影響較大,對測量頻率的影響較小,所以測頻時(shí)一般不考慮觸發(fā)誤差的影響。減小誤差的方法,盡量提高被測信號的信噪比,采用多周期測量法。 3.標(biāo)準(zhǔn)頻率誤差:是指由于晶振信號不穩(wěn)定等原因而產(chǎn)生的誤差。測頻時(shí),晶振信號用來產(chǎn)生門控信號(即時(shí)基信號),標(biāo)準(zhǔn)頻率誤差稱為時(shí)基誤差。一般情況下,標(biāo)準(zhǔn)頻率誤差較小,不予考慮。 4.函數(shù)信號發(fā)生器產(chǎn)生的信號波頻率不穩(wěn)定 5.由于實(shí)驗(yàn)室單片機(jī)使用的時(shí)間比較長,受制造、測量、條件變化的影響,實(shí)際晶振頻率與標(biāo)稱值的不符 6.外界噪聲等的干擾 5.3.2減小誤差的方法1、改進(jìn)實(shí)驗(yàn)方案,使用等精度測量可能更較精確測量結(jié)果 2、在相同條件下和短時(shí)期內(nèi),對同一被測量進(jìn)行多次重復(fù)測量 3、換用較高精度的晶振,選用穩(wěn)定性良好的函數(shù)信號發(fā)生器
第六章 小結(jié)和體會(huì)在設(shè)計(jì)過程中,得到了我的指導(dǎo)老師的悉心指導(dǎo)與幫助,首先在此表示衷心的感謝。 本應(yīng)用系統(tǒng)設(shè)計(jì)的目的是通過在“單片機(jī)原理及應(yīng)用”課堂上學(xué)習(xí)的知識,以及查閱資料,培養(yǎng)一種自學(xué)的能力。并且引導(dǎo)一種創(chuàng)新的思維,把學(xué)到的知識應(yīng)用到日常生活當(dāng)中。經(jīng)過這次一個(gè)較完整的課程設(shè)計(jì)和制作過程,對于認(rèn)識到自己在知識方面存在的不足,明確今后的學(xué)習(xí)方向是非常有益的,為將來的的就業(yè)提前打了下堅(jiān)實(shí)的基礎(chǔ)。 在設(shè)計(jì)的過程中,我不斷的學(xué)習(xí),思考和同學(xué)間相互討論,運(yùn)用科學(xué)的分析問題的方法解決遇到的困難,掌握單片機(jī)系統(tǒng)一般的開發(fā)流程,學(xué)會(huì)對常見問題的處理方法,積累設(shè)計(jì)系統(tǒng)的經(jīng)驗(yàn),充分發(fā)揮教學(xué)與實(shí)踐的結(jié)合。全能提高個(gè)人系統(tǒng)開發(fā)的綜合能力,開拓了思維,為今后能在相應(yīng)工作崗位上的工作打下了堅(jiān)實(shí)的基礎(chǔ)。 調(diào)試階段可以說是這次設(shè)計(jì)中最重要的部分,因?yàn)橐郧暗闹皇抢碚摱皇钦嬲膶?shí)體。所以說它是最重要的。調(diào)試階段我們遇到的問題有:對編寫代碼不熟悉;因?yàn)橛布蛙浖K是分開做而后又組裝到一起的,所以兼容性不是很好(也就是不能融合為一個(gè)整體,直接接在函數(shù)信號發(fā)生器上能行但是接硬件部分就會(huì)出現(xiàn)問題,沒有預(yù)期現(xiàn)象出現(xiàn));針對以上幾個(gè)問題我們作出了以下的“對策”:軟件不熟悉,就借來參考書,一步一步的對著學(xué),而且上網(wǎng)查資料和芯片使用說明,所以隨著接觸的增加軟件也就越來越熟悉。另外在電路方面需要進(jìn)一步的設(shè)計(jì)和修改。 通過這次課設(shè)報(bào)告也發(fā)現(xiàn)了自己很多的不足之處,首先體現(xiàn)在動(dòng)手能力不強(qiáng),今后必須加強(qiáng)對這方面能力的培養(yǎng),必須培養(yǎng)和鍛煉自己獨(dú)立思考的能力,將學(xué)過的理論應(yīng)用到實(shí)踐中去,再好的理論不去用它我們就看不到現(xiàn)在科技的進(jìn)步,科技推動(dòng)人類社會(huì)的不斷向前發(fā)展。 參考文獻(xiàn)[1]張先庭主編.單片機(jī)原理、接口與C51應(yīng)用程序設(shè)計(jì).北京:國防工業(yè)出版社.2011 [2]李光飛,樓苗然主編.51系列單片機(jī).北京:北京航空航天大學(xué)出版社,2003 [3]黃正瑾編著.CPLD系統(tǒng)設(shè)計(jì)技術(shù)入門與應(yīng)用. 北京: 電子工業(yè)出版社, 2002 [4]謝自美編著.電子線路設(shè)計(jì)·實(shí)驗(yàn)·測試.華中理工大學(xué)出版社,2002 [5]陳永甫編著.電子電路智能化設(shè)計(jì).實(shí)例與應(yīng)用.北京:電子工業(yè)出版,2002.8 [6]康華光主編.電子技術(shù) 基礎(chǔ)(第四版).北京:高等教育出版社,1999 附錄一 元器件清單 序號 | 數(shù)量 | 符號及參數(shù) | 1 | 2 | 電容 | 1uF | RB.1/.2 | 2 | 1 | 單片機(jī)最小系統(tǒng)板 |
| STC89c51 | 3 | 1 | 運(yùn)算放大器 |
| LM324 | 4 | 1 | 施密特整形器 |
| 74LS14N | 5 | 3 | 電阻R1 | 1KΩ | AXIAL-0.4 | 6 | 1 | 電阻R2 | 10KΩ | AXIAL-0.4 | 附錄二 實(shí)驗(yàn)電路圖
1.043.jpg (40.1 KB, 下載次數(shù): 104)
下載附件
2016-5-10 19:57 上傳
附錄三 實(shí)驗(yàn)代碼#include #include #define uchar unsigned char #define uint unsigned int #define jiezhi 1000//定義中界頻率為1000HZ uchar flag_0=0,flag_1=0,flag=0;//定義測頻法、測周法標(biāo)志位并清零 uchar count_0=0,count_1=0,count=0;//定義測頻法中斷次數(shù)、測周法溢出次數(shù)并清零 uchar qian=0,bai=0,shi=0,ge=0;//個(gè)、十、百位定義并清零 #define HD7279_RESET 0xa4 //復(fù)位 sbit HD7279_CS=P1^0; // HD7279_CS--P1.0 sbit HD7279_CLK=P1^1; // HD7279_CLK-- P1.1 sbit HD7279_DATA=P1^2; // HD7279_DATA-- P1.2 sbit HD7279_KEY =P1^3; // HD7279_KEY-- P1.3 void initf() { TMOD=0x15;//定時(shí)器1方式1定時(shí),定時(shí)器0方式1計(jì)數(shù) TH1=(65536-50000)/256; TL1=(65536-50000)%256;//定義50ms中斷 TH0=0; TL0=0;//定時(shí)器高8位、低8位清零 EA=1; ET1=1; TR0=1;//打開定時(shí) TR1=1;//開始計(jì)數(shù) flag=1;//測頻法標(biāo)志位為1 } void initt() { TR0=0; TR1=0; TMOD=0x15; //定時(shí)器1方式1定時(shí),定時(shí)器0方式1計(jì)數(shù) TH1=0; TL1=0; TH0=255; TL0=255; EA=1; ET1=1; ET0=1; TR0=1; flag=0;//測周法標(biāo)志位為0 count_1=0; //溢出位清零 } void fenli(long int m) { uint temp; temp=m; qian=temp/1000;//頻率值除以1000取整作千位 temp=temp%1000; bai=temp/100;//第一次余數(shù)除以100取整 temp=temp%100; shi=temp/10;//第二次余數(shù)除以10取整 ge=temp%10;//第二次余數(shù)直接作個(gè)位 } /***************HD7279模塊程序************************************/ void HD7279_LongDelay(void) { unsigned char i; for (i=0;i<6;i++); } void HD7279_ShortDelay(void) {;} void HD7279_SendByte( unsigned char out_byte) { unsigned char i; HD7279_CS=0; HD7279_LongDelay(); for(i=0;i<8;i++) { if(out_byte&0x80) { HD7279_DATA=1; } else { HD7279_DATA=0; } HD7279_CLK=1; HD7279_ShortDelay(); HD7279_CLK=0; HD7279_ShortDelay(); out_byte=out_byte<<1; } HD7279_DATA=0; } void Write7279(unsigned char command, unsigned char dta) { HD7279_SendByte( command ); HD7279_SendByte( dta ); HD7279_ShortDelay(); HD7279_CS=1; } void display() { HD7279_SendByte(0xa4);//復(fù)位 Write7279(0x83,qian); Write7279(0x82,bai); Write7279(0x81,shi); Write7279(0x80,ge); } void main() { uchar a,b; long int c; while(1) { initf(); while(!flag_0); flag_0=0;//測頻法標(biāo)志位清零 a=TH0; b=TL0; c=256*a+b;//先用測頻法測頻率 if(c>=jiezhi)//判斷是否大于中界頻率 { fenli(c);//大于中界頻率調(diào)用千、百、十位分離程序 display();//顯示 } else { initt(); while(!flag_1); flag_1=0; //測周法標(biāo)志位清零 a=TH1; b=TL1; c=(65536*count_1+a*256+b)/100;//時(shí)間=溢出數(shù)*溢出時(shí)間+計(jì)數(shù)值 c=50000/c; fenli(c);//調(diào)用千、百、十位分離程序 display();//顯示 } } } void time0() interrupt 1//定時(shí)器中斷0 { TH0=255; TL0=251;//計(jì)5次 TR1=1; count++; if(count==2) //循環(huán)2次 { count=0; flag_1=1;//測頻法標(biāo)志位置1 } } void time1() interrupt 3//定時(shí)器中斷1 { if(flag) { TH1=(65536-50000)/256; TL1=(65536-50000)%256;//50ms count_0++; if(count_0==20&&flag_0==0)//判斷中斷次數(shù)是否執(zhí)行20次 { count_0=0; flag_0=1;//測周法標(biāo)志位置1 } } else { TH1=0; TL1=0;//溢出后定時(shí)器清零 count_1++;//溢出次數(shù)加1 } } |