六位數(shù)顯頻率計數(shù)器的設(shè)計_第1頁
六位數(shù)顯頻率計數(shù)器的設(shè)計_第2頁
六位數(shù)顯頻率計數(shù)器的設(shè)計_第3頁
六位數(shù)顯頻率計數(shù)器的設(shè)計_第4頁
六位數(shù)顯頻率計數(shù)器的設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、標(biāo)簽: 無標(biāo)簽6位數(shù)顯頻率計數(shù)器1 實驗任務(wù) 利用at89s51單片機(jī)的t0、t1的定時計數(shù)器功能,來完成對輸入的信號進(jìn)行頻率計數(shù),計數(shù)的頻率結(jié)果通過8位動態(tài)數(shù)碼管顯示出來。要求能夠?qū)?250khz的信號頻率進(jìn)行準(zhǔn)確計數(shù),計數(shù)誤差不超過1hz。2 電路原理圖 圖4.31.1 3 系統(tǒng)板上硬件連線 (1) 把“單片機(jī)系統(tǒng)”區(qū)域中的p0.0p0.7與“動態(tài)數(shù)碼顯示”區(qū)域中的abcdefgh端口用8芯排線連接。(2) 把“單片機(jī)系統(tǒng)”區(qū)域中的p2.0p2.7與“動態(tài)數(shù)碼顯示”區(qū)域中的s1s2s3s4s5s6s7s8端口用8芯排線連接。(3) 把“單片機(jī)系統(tǒng)”區(qū)域中的p3.4(t0)端子用導(dǎo)線連接到“

2、頻率產(chǎn)生器”區(qū)域中的wave端子上。4 程序設(shè)計內(nèi)容 (1) 定時/計數(shù)器t0和t1的工作方式設(shè)置,由圖可知,t0是工作在計數(shù)狀態(tài)下,對輸入的頻率信號進(jìn)行計數(shù),但對工作在計數(shù)狀態(tài)下的t0,最大計數(shù)值為fosc/24,由于fosc12mhz,因此:t0的最大計數(shù)頻率為250khz。對于頻率的概念就是在一秒只數(shù)脈沖的個數(shù),即為頻率值。所以t1工作在定時狀態(tài)下,每定時1秒中到,就停止t0的計數(shù),而從t0的計數(shù)單元中讀取計數(shù)的數(shù)值,然后進(jìn)行數(shù)據(jù)處理。送到數(shù)碼管顯示出來。(2) t1工作在定時狀態(tài)下,最大定時時間為65ms,達(dá)不到1秒的定時,所以采用定時50ms,共定時20次,即可完成1秒的定時功能。5

3、 c語言源程序 #include unsigned char code dispbit=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; unsigned char dispbuf8=0,0,0,0,0,0,10,10; unsigned char temp8; unsigned char dispcount; unsigned char t0count; unsigned char

4、timecount; bit flag; unsigned long x; void main(void) unsigned char i; tmod=0x15; th0=0; tl0=0; th1=(65536-4000)/256; tl1=(65536-4000)%256; tr1=1; tr0=1; et0=1; et1=1; ea=1; while(1) if(flag=1) flag=0; x=t0count*65536+th0*256+tl0; for(i=0;i8;i+) tempi=0; i=0; while(x/10) tempi=x%10; x=x/10; i+; temp

5、i=x; for(i=0;i6;i+) dispbufi=tempi; timecount=0; t0count=0; th0=0; tl0=0; tr0=1; void t0(void) interrupt 1 using 0 t0count+; void t1(void) interrupt 3 using 0 th1=(65536-4000)/256; tl1=(65536-4000)%256; timecount+; if(timecount=250) tr0=0; timecount=0; flag=1; p0=dispcodedispbufdispcount; p2=dispbit

6、dispcount; dispcount+; if(dispcount=8) dispcount=0; 6位led顯示單片機(jī)控制電子鐘/計數(shù)器這是我們設(shè)計的單片機(jī)電子鐘/計時器學(xué)習(xí)板,它采用6位led數(shù)碼管顯示時、分、秒,以24小時計時方式??梢酝ㄟ^按鍵實現(xiàn)時分調(diào)整、秒表時鐘功能轉(zhuǎn)換、省電(關(guān)閉顯示)等功能。我們能提供的完整的匯編語言源程序清單及電路原理設(shè)計圖有助于學(xué)習(xí)者進(jìn)行分析和進(jìn)行實驗驗證6位led顯示單片機(jī)控制電子鐘/計數(shù)器成品板 成品每套84元51單片機(jī)做的電子鐘在很多地方都有介紹, 對于單片機(jī)學(xué)習(xí)者來說這個程序基本上是一道門檻,掌握了電子鐘程序, 基本上可以說51單片機(jī)就掌握了80%

7、。常見的電子鐘程序由顯示部分、計算部分、時鐘調(diào)整部分構(gòu)成,本產(chǎn)品硬件上完全支持倒計時器,客戶只要自己修改程序就能實現(xiàn)倒計時功能。 為了實現(xiàn)led顯示器的數(shù)字顯示,可以采用靜態(tài)顯示法和動態(tài)顯示法。由于靜態(tài)顯示法需要數(shù)據(jù)鎖存器等硬件,接口復(fù)雜一些??紤]時鐘顯示只有六位,且系統(tǒng)沒有其它復(fù)雜的處理任務(wù),所以決定采用動態(tài)掃描法實現(xiàn)led的顯示。單片機(jī)采用易購的at89s51系列,這樣單片機(jī)可具有足夠的空余硬件資源實現(xiàn)其它的擴(kuò)充功能,硬件系統(tǒng)的總體構(gòu)成如下圖所示: 該板采用at89s51單片機(jī),最小化應(yīng)用設(shè)計,采用共陽七段led顯示器,p0口輸出段碼數(shù)據(jù),p2.0p2.5做列掃描輸出,p1.0,p1.1,

8、p1.2,接三個按鍵開關(guān),用以調(diào)時及功能設(shè)置。為了提高共陽數(shù)碼管的驅(qū)動電壓,用9012做電源驅(qū)動輸出。采用12m晶振,有利于提高秒計時的精度。 本設(shè)計中,計時采用定時器t0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當(dāng)端口開關(guān)按下時,轉(zhuǎn)入相應(yīng)功能程序。其主程序執(zhí)行流程圖見下左圖: 數(shù)碼管顯示的數(shù)據(jù)存放在內(nèi)存單元70h75h中。其中70h71h存放秒數(shù)據(jù),72h73h存放分?jǐn)?shù)據(jù),74h75h存放時數(shù)據(jù),每一地址單元內(nèi)均為十進(jìn)制bcd碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進(jìn)制bcd碼數(shù)據(jù)的對應(yīng)段碼存放在rom表中。顯示時,先取出70h75h某一地址中的數(shù)據(jù),然后查得對應(yīng)的顯示用段碼,并從p0

9、口輸出,p2口將對應(yīng)的數(shù)碼管選中供電,就能顯示該地址單元的數(shù)據(jù)值。 定時器t0用于時間計時。定時溢出中斷周期可分別設(shè)為50mst和10ms。中斷進(jìn)入后,先判斷是時鐘計時還是秒表計時,時鐘計時累計中斷20次(即1s)時,對秒計數(shù)單元進(jìn)行加1操作,秒表計時每10ms進(jìn)行加1操作。時鐘計數(shù)單元地址分別在70h71h(秒)、76h77h(分)和78h79h(時),最大計時值為23時59分59秒。而秒表計數(shù)單元地址也在70h71h(0.01毫秒)、76h77h(秒)和78h79h(分),最大計時值為99分59.99秒。7ah單元內(nèi)存放“熄滅符”數(shù)據(jù)(#0ah)。在計數(shù)單元中采用十進(jìn)制bcd碼計數(shù),滿60

10、(秒表功能時有100)進(jìn)位,t0中斷服務(wù)程序執(zhí)行流程見上圖右 t1中斷服務(wù)程序用于指示調(diào)整單元數(shù)字的亮閃。在時間調(diào)整狀態(tài)下,每過0.3s將對應(yīng)單元的顯示數(shù)據(jù)換成“熄滅符”數(shù)據(jù)(#0ah)。這樣在調(diào)整時間時,對應(yīng)調(diào)整單元的顯示數(shù)據(jù)會間隔閃亮。調(diào)時功能程序的設(shè)計方法是:按下p1.0口按鍵,若按下時間短于1 s則進(jìn)入省電狀態(tài)(數(shù)碼管不亮,時鐘不停);否則進(jìn)入調(diào)分狀態(tài),等待操作,此時計時器停止走動。當(dāng)再按下按鈕時,若按下時間短于0.5s,則時間加1分;若按下時間長于0.5s,則進(jìn)入小時調(diào)整狀態(tài)。在小時調(diào)整狀態(tài)下,當(dāng)按鍵按下的時間長于0.5s時,退出調(diào)整狀態(tài),時鐘繼續(xù)走動。p1.1口按鍵在調(diào)時狀態(tài)下可實

11、現(xiàn)減1功能。在正常狀態(tài)下,若按下p1.1 口按鍵,則進(jìn)行時鐘/秒表功能的轉(zhuǎn)換,轉(zhuǎn)換后計時從零開始。當(dāng)按下p1.2口的按鍵時,可實現(xiàn)清0、計時啟動、暫停功能。使用方法:按下s6按鍵,如果按下時間小于1秒,就會進(jìn)入省電模式,這時數(shù)碼管熄滅但是時鐘仍然運行。如果按下s6按鍵時間大于1秒,就會進(jìn)入調(diào)分狀態(tài),此時計時器停止走動等待操作,這時中間的兩位00會閃爍,這時當(dāng)按下s6按鍵時間小于0.5秒時,時間信息就會加1(單位分鐘);若時間大于0.5秒,這時左邊的兩位00會閃爍,進(jìn)入小時調(diào)整,在小時調(diào)整狀態(tài)下按下s6按鍵時間小于0.5秒時,時間信息就會加1(單位小時),如果按下按鍵時間大于0.5s時,就會退出

12、調(diào)整狀態(tài),時鐘繼續(xù)走動。如果按下s7按鍵,就會進(jìn)入1/100秒精確計時模式,如果按一下s8時間就會暫停,再按s8就會清零,再按s8又會進(jìn)入精確計時模式,在精確時模式,如果按一下s7就會返回正常計時模式。以下是部分匯編源程序,購買我們產(chǎn)品后我們可以通過電子郵件將完整的單片機(jī)匯編源程序和燒寫文件發(fā)送給客戶。硬件參數(shù)板上資源:isp下載接口(預(yù)留)、51mcu、6位led顯示、3位按鍵電源部分自帶整流、濾波、穩(wěn)壓電路,輸入寬范圍(ac7-15v或者dc9-16v),交流直流都能正常使用,不用區(qū)分極性。; at89s51時鐘程序 ;(該程序不全,不要直接使用。購買產(chǎn)品后提供全部程序和圖紙); 定時器t

13、0、t1溢出周期為50ms,t0為秒計數(shù)用, t1為調(diào)整時閃爍用,; p1.0、p1.1、p1.2為調(diào)整按鈕,p0口 為字符輸出口,采用共陽顯示管。; 中斷入口程序 ;org 0000h ;程序執(zhí)行開始地址ljmp start ;跳到標(biāo)號start執(zhí)行org 0003h ;外中斷0中斷程序入口reti ;外中斷0中斷返回org 000bh ;定時器t0中斷程序入口ljmp intt0 ;跳至intto執(zhí)行org 0013h ;外中斷1中斷程序入口reti ;外中斷1中斷返回org 001bh ;定時器t1中斷程序入口ljmp intt1 ;跳至intt1執(zhí)行org 0023h ;串行中斷程序入

14、口地址reti ;串行中斷程序返回 ; 主 程 序 ;start: lcall st ;上電顯示年月日及班級學(xué)號mov r0,#70h ;清70h-7ah共11個內(nèi)存單元mov r7,#0bh ;cleardisp: mov r0,#00h ;inc r0 ;djnz r7,cleardisp ;mov 20h,#00h ;清20h(標(biāo)志用)mov 7ah,#0ah ;放入熄滅符數(shù)據(jù)mov tmod,#11h ;設(shè)t0、t1為16位定時器mov tl0,#0b0h ;50ms定時初值(t0計時用)mov th0,#3ch ;50ms定時初值mov tl1,#0b0h ;50ms定時初值(t1閃

15、爍定時用)mov th1,#3ch ;50ms定時初值setb ea ;總中斷開放setb et0 ;允許t0中斷setb tr0 ;開啟t0定時器mov r4,#14h ;1秒定時用初值(50ms20)start1: lcall display ;調(diào)用顯示子程序jnb p1.0,setmm1 ;p1.0口為0時轉(zhuǎn)時間調(diào)整程序jnb p1.1,funss ; 秒表功能,p1.1按鍵調(diào)時時作減1加能jnb p1.2,funpt ;stop,puse,clrsjmp start1 ;p1.0口為1時跳回start1setmm1: ljmp setmm ;轉(zhuǎn)到時間調(diào)整程序setmmfunss: lc

16、all ds20msjb p1.1,start1wait11: jnb p1.1,wait11cpl 03hmov 70h,#00hmov 71h,#00hmov 76h,#00hmov 77h,#00hmov 78h,#00hmov 79h,#00hajmp start1funpt: lcall ds20msjb p1.2,start1wait22: jnb p1.2,wait21clr et0clr tr0wait33: jb p1.2,wait31lcall ds20msjb p1.2,wait33wait66: jnb p1.2,wait61mov r0,#70h ;清70h-79h共

17、10個內(nèi)存單元mov r7,#0ah ;clearp: mov r0,#00h ;inc r0 ;djnz r7,clearp ;wait44: jb p1.2,wait41lcall ds20msjb p1.2,wait44wait55: jnb p1.2,wait51setb et0setb tr0ajmp start1wait21: lcall displayajmp wait22wait31: lcall displayajmp wait33wait41: lcall displayajmp wait44wait51: lcall displayajmp wait55wait61: l

18、call displayajmp wait66 ; 1秒計時程序 ;t0中斷服務(wù)程序intt0: push acc ;累加器入棧保護(hù)push psw ;狀態(tài)字入棧保護(hù)clr et0 ;關(guān)t0中斷允許clr tr0 ;關(guān)閉定時器t0jb 03h,fssmov a,#0b7h ;中斷響應(yīng)時間同步修正add a,tl0 ;低8位初值修正mov tl0,a ;重裝初值(低8位修正值)mov a,#3ch ;高8位初值修正addc a,th0 ;mov th0,a ;重裝初值(高8位修正值)setb tr0 ;開啟定時器t0djnz r4, outt0 ;20次中斷未到中斷退出addss: mov r4

19、,#14h ;20次中斷到(1秒)重賦初值mov r0,#71h ;指向秒計時單元(71h-72h)acall add1 ;調(diào)用加1程序(加1秒操作)mov a,r3 ;秒數(shù)據(jù)放入a(r3為2位十進(jìn)制數(shù)組合)clr c ;清進(jìn)位標(biāo)志cjne a,#60h,addmm ;addmm: jc outt0 ;小于60秒時中斷退出acall clr0 ;大于或等于60秒時對秒計時單元清0mov r0,#77h ;指向分計時單元(76h-77h)acall add1 ;分計時單元加1分鐘mov a,r3 ;分?jǐn)?shù)據(jù)放入aclr c ;清進(jìn)位標(biāo)志cjne a,#60h,addhh ;addhh: jc ou

20、tt0 ;小于60分時中斷退出acall clr0 ;大于或等于60分時分計時單元清0mov r0,#79h ;指向小時計時單元(78h-79h)acall add1 ;小時計時單元加1小時mov a,r3 ;時數(shù)據(jù)放入aclr c ;清進(jìn)位標(biāo)志jb 03h,outt0 ;秒表時最大數(shù)為99cjne a,#24h,hour ;hour: jc outt0 ;小于24小時中斷退出acall clr0 ;大于或等于24小時小時計時單元清0outt0: mov 72h,76h ;中斷退出時將分、時計時單元數(shù)據(jù)移mov 73h,77h ;入對應(yīng)顯示單元mov 74h,78h ;mov 75h,79h ;pop psw ;恢復(fù)狀態(tài)字(出棧)pop acc ;恢復(fù)累加器setb et0 ;開放t0中斷reti ;中斷返回;秒表計時程序(10ms加1),低2位為0.1、0.01秒,中間2位為秒,最高位為分。;最大計數(shù)值為99fss: mov a,#0f7h ;中斷響應(yīng)時間同步修正,重裝初值(10ms)add a,tl0 ;低8位初值修正mov tl0,a ;重裝初值(低8位修正值)mov a,#0d8h ;高8位初值修正addc a,th0 ;mov th0,a ;重裝初

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論