計(jì)數(shù)器的工作原理 計(jì)數(shù)器是一種基本的數(shù)字電路,可對輸入的數(shù)字時鐘(脈沖)進(jìn)行計(jì)數(shù),根據(jù)計(jì)數(shù)方向可分為加法計(jì)數(shù)器、減法計(jì)數(shù)器、可逆計(jì)數(shù)器等。 十進(jìn)制加法計(jì)數(shù)器如下圖
1.gif (106.66 KB, 下載次數(shù): 39)
下載附件
2023-4-27 15:03 上傳
加法計(jì)數(shù)器在數(shù)字時鐘的驅(qū)動下,如上圖中,每個上升沿的到來,就使計(jì)數(shù)值加一,其數(shù)值為0-->9,每次數(shù)值滿時就會產(chǎn)生一個進(jìn)位(溢出)信號。 定時器的本質(zhì) 定時器的本質(zhì)就是已知頻率(周期)的數(shù)字時鐘(脈沖)驅(qū)動下的計(jì)數(shù)器。比如上面的計(jì)數(shù)器,如果已知驅(qū)動時鐘為1MHz,那么每個時鐘周期為1us,十個計(jì)數(shù)周期就是10us,其溢出周期為10us,也可視為定時10us。如果想定時5us,則計(jì)數(shù)5個周期即可。8051的基本定時器有Timer0和Timer1,STC15F2K61S的定時器有T0、T1、T2。其T0的基本結(jié)構(gòu)如下圖所示(其他定時器基本類似)
4.png (103.42 KB, 下載次數(shù): 50)
下載附件
2023-4-27 15:03 上傳
定時器T0的核心是一個16位、可置數(shù)的加法計(jì)數(shù)器。配置寄存器包括:時鐘源選擇、方式控制、加載(初值)、中斷允許等。 定時器的軟件編程 以定時器T0為例,定時器編程的步驟為: (1) 確定定時器/計(jì)數(shù)器的工作方式----初始化:TMOD (2) 定時器0/1工作頻率1T還是12T:AUXR (3) 定時器0/1的時鐘輸出是否:AUXR2 (4) 計(jì)算定時器/計(jì)數(shù)器的計(jì)數(shù)初值,裝載TH和TL寄存器。 (5) 中斷設(shè)置(特殊功能寄存器IE、IP):EA (6) 啟動定時/計(jì)數(shù)器(TCON):TR0/TR1
相關(guān)寄存器:
定時初值的計(jì)算: 前面講了,定時器是一個16位的加法計(jì)數(shù)器,對輸入脈沖進(jìn)行計(jì)數(shù),從0計(jì)到65535 (2^16-1),然后進(jìn)位溢出。軟件通過溢出標(biāo)志位TF0進(jìn)行定時的判斷,因此計(jì)數(shù)器計(jì)了多少個脈沖,是從初值開始到65535溢出,這個脈沖計(jì)數(shù)值才是其定時器的定時周數(shù)。比如工作時鐘12MHz,默認(rèn)12分頻,即加法計(jì)數(shù)器的計(jì)數(shù)脈沖是1MHz,即計(jì)數(shù)周期1us,如果要定時1ms,則需要計(jì)數(shù)1ms/1us=1000個計(jì)數(shù)周期。先設(shè)置初值為(65536-1000),那么計(jì)數(shù)器溢出的時候它總共計(jì)數(shù)了65536-(65536-1000)=1000個周期。 因此定時器初值x的計(jì)算公式是:
1.png (2.15 KB, 下載次數(shù): 45)
下載附件
2023-4-27 15:00 上傳
其中fosc為工作頻率,t為所需的定時時間。 基本定時器實(shí)驗(yàn) 運(yùn)用定時器進(jìn)行“延時”是最基本的應(yīng)用。與前面的“軟件延時”對應(yīng),采用定時器延時的方式,我們成為“硬件延時”。 LED燈的硬件電路如附件
LED燈L1閃爍 設(shè)定50ms亮滅1次(延時太短,人眼不能分辨出LED燈閃爍)。以STC-ISP下載界面中默認(rèn)的11.0592MHz時鐘頻率計(jì)算,12分頻,則計(jì)數(shù)器的初值應(yīng)為65536-50ms*11.0592MHz/12=65536-46080=19456 定時器初始化代碼為: TMOD=0; AUXR=0; TH0=19456/256; //整除取整,得高8位 TL0=19456%256; //取余,得低8位 ET0=1;EA=1; //中斷使能,不采用中斷,應(yīng)清零 TR0=1; //開啟定時器,相當(dāng)于開關(guān) (1) 采用輪詢的方式
5.png (58.23 KB, 下載次數(shù): 54)
下載附件
2023-4-27 15:04 上傳
(2) 采用中斷的方式 定時器T0的中斷號為1
3.png (28.87 KB, 下載次數(shù): 49)
下載附件
2023-4-27 15:00 上傳
LED燈單盞燈從左到右流水 設(shè)計(jì)分析:這里采用定時中斷的方式,設(shè)定一個LED燈顯示變量x(8bit分別對應(yīng)8盞LED燈,主程序中根據(jù)這個顯示變量x去控制LED燈的亮滅;而定時中斷服務(wù)程序“定時到,就移位1次”。這樣就變成兩個進(jìn)程:主程序不停地輸出控制LED;中斷服務(wù)程序定時改變控制變量。
2.png (39.21 KB, 下載次數(shù): 60)
下載附件
2023-4-27 15:00 上傳
51hei.png (2.88 KB, 下載次數(shù): 49)
下載附件
2023-4-27 17:58 上傳
仿真給大家,代碼大家可以自己寫:
附件內(nèi)只有仿真 不含代碼.7z
(34.6 KB, 下載次數(shù): 10)
2023-4-27 15:06 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|