單片機(jī)時(shí)間顯示模塊設(shè)計(jì)_第1頁
單片機(jī)時(shí)間顯示模塊設(shè)計(jì)_第2頁
單片機(jī)時(shí)間顯示模塊設(shè)計(jì)_第3頁
單片機(jī)時(shí)間顯示模塊設(shè)計(jì)_第4頁
單片機(jī)時(shí)間顯示模塊設(shè)計(jì)_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單元4 時(shí)間顯示模塊設(shè)計(jì)回顧 1,8051單片機(jī)最小系統(tǒng)的組成?單片機(jī)最小系統(tǒng)的組成?2,單片機(jī)運(yùn)行以什么單位計(jì)算時(shí)間?,單片機(jī)運(yùn)行以什么單位計(jì)算時(shí)間?3,單片機(jī)如何驅(qū)動(dòng),單片機(jī)如何驅(qū)動(dòng)LED?本單元任務(wù)p任務(wù)1 數(shù)碼管顯示設(shè)計(jì) p任務(wù)2 定時(shí)器應(yīng)用設(shè)計(jì)p任務(wù)3 DS1302時(shí)鐘設(shè)計(jì)p任務(wù)4 按鍵計(jì)數(shù)設(shè)計(jì) 任務(wù)1 數(shù)碼管顯示設(shè)計(jì) 任務(wù)描述:任務(wù)描述:任務(wù)分析:任務(wù)分析: LED數(shù)碼管顯示器作為嵌入式單片機(jī)應(yīng)用產(chǎn)品中常用的廉價(jià)輸出設(shè)備,數(shù)碼管顯示器作為嵌入式單片機(jī)應(yīng)用產(chǎn)品中常用的廉價(jià)輸出設(shè)備,更是單片機(jī)系統(tǒng)設(shè)計(jì)經(jīng)常使用的顯示設(shè)備。本任務(wù)要求設(shè)計(jì)時(shí)間顯示模塊,更是單片機(jī)系統(tǒng)設(shè)計(jì)經(jīng)常使用的顯示設(shè)備。

2、本任務(wù)要求設(shè)計(jì)時(shí)間顯示模塊,模擬模擬24小時(shí)制時(shí)間運(yùn)行,時(shí)間初始為小時(shí)制時(shí)間運(yùn)行,時(shí)間初始為10點(diǎn)整。點(diǎn)整。 模擬模擬24小時(shí)運(yùn)行,需用小時(shí)運(yùn)行,需用6位位LED數(shù)碼管(小時(shí)、分鐘、秒各需數(shù)碼管(小時(shí)、分鐘、秒各需2位)位)進(jìn)行顯示。先將進(jìn)行顯示。先將LED數(shù)碼管安裝在單片機(jī)數(shù)碼管安裝在單片機(jī)I/O上,程序設(shè)計(jì)初始時(shí)間為上,程序設(shè)計(jì)初始時(shí)間為10:00:00,每隔一定時(shí)間,單位秒加,每隔一定時(shí)間,單位秒加1,并進(jìn)行秒、分鐘、小時(shí)的正確進(jìn)位,并進(jìn)行秒、分鐘、小時(shí)的正確進(jìn)位即可。即可。 1,七段LED數(shù)碼管工作原理 n七段LED數(shù)碼管是由發(fā)光二級(jí)管排列構(gòu)成.由(ag 7段)和1個(gè)圓點(diǎn)(dp)組成。

3、LED數(shù)碼管的的連接方式有共陽極和共陰極兩種。 q共陰極共陰極:把各段發(fā)光二極管的陰極連接在一起,然后通過接地或低電平,如下圖示,根據(jù)要求需點(diǎn)亮發(fā)光二極管的陽極輸入高電平,不需點(diǎn)亮的發(fā)光二極管的陽極輸入低電平。q共陽極共陽極:把各段發(fā)光二極管的陽極連接在一起,然后通過接電源或高電平,如下圖示, 根據(jù)要求需點(diǎn)亮發(fā)光二極管的陰極輸入低電平,不需點(diǎn)亮的發(fā)光二極管的陰極輸入高電平。 通過控制7段發(fā)光二極不同組合的亮滅,顯示出不同的數(shù)字與字母。例如你要用單片機(jī)控制數(shù)碼管顯示3的數(shù)字,那就要分別點(diǎn)亮發(fā)光二極管的a,b,c,d,g段,如下圖示(共陽極) . n七段碼LED顯示器字形編碼:n請(qǐng)同學(xué)們理解每個(gè)字

4、符的編碼由來請(qǐng)同學(xué)們理解每個(gè)字符的編碼由來顯示字符共陽極共陰極顯示字符共陽極共陰極00 xC00 x3FC0 xC60 x3910 xF90 x06D0 xA10 x5E20 xA40 x5BE0 x860 x7930 xB00 x4FF0 x8E0 x7140 x990 x66P0 x8C0 x7350 x920 x6DU0 xC10 x3E60 x820 x7DR0 xCE0 x3170 xF80 x07Y0 x910 x6E80 x800 x7F亮0 x000 xFF90 x900 x6F滅0 xFF0 x00A0 x880 x77H0 x890 x76B0 x830 x7CL0 xC7

5、0 x38【例4-1】試設(shè)計(jì)驅(qū)動(dòng)1位數(shù)碼管顯示8個(gè)流水燈點(diǎn)亮的序號(hào)。 設(shè)計(jì)分析設(shè)計(jì)分析:流水LED燈和P1口相連,1位數(shù)碼管的段選線和P2相連,位選線直接和電源(高電平)相連,使得數(shù)碼管處于一直工作狀態(tài)而無需編程選中,如圖4-5所示。當(dāng)?shù)谝粋€(gè)LED點(diǎn)亮?xí)r,編程驅(qū)動(dòng)數(shù)碼管顯示“1”,當(dāng)?shù)诙€(gè)LED點(diǎn)亮?xí)r,編程驅(qū)動(dòng)數(shù)碼管顯示“2”即數(shù)碼管的顯示內(nèi)容跟隨著被點(diǎn)亮LED的序號(hào)而改變。 void main() unsigned char i=0;while(1)P1 = led_lighti;/點(diǎn)亮對(duì)應(yīng)的LEDP2 = seg7_lighti; /LED顯示相應(yīng)的數(shù)字delay();i+;/i自加1if

6、(i=8)i=0;/判斷是否點(diǎn)亮最后一個(gè)LED,是則重新點(diǎn)亮 2,數(shù)碼管顯示方式 n靜態(tài)顯示方式靜態(tài)顯示方式 q每位數(shù)碼管的段選線和位選線是獨(dú)立的,所以同一時(shí)刻可以顯示不同的字符,編程簡單。但是這樣很浪費(fèi)單片機(jī)的I/O口資源,N位靜態(tài)數(shù)碼管就要求有N8根I/O接口線,所以適合數(shù)碼管較少的場合。n動(dòng)態(tài)顯示方式動(dòng)態(tài)顯示方式:動(dòng)態(tài)顯示方式的接口電路的連接是將所有數(shù)碼管的段選線(adp) 同名并聯(lián),如所有a段并聯(lián),所有b段并聯(lián),然后有一個(gè)8位的I/O接口來控制各個(gè)段。而每位數(shù)碼管的位選線由相應(yīng)的I/O接口控制,每一瞬間只有一位數(shù)碼管的位選線被選中,所以每一瞬間只能顯示一位數(shù)碼管,同樣,下一瞬間只選中另

7、一位數(shù)碼管的位選線,所以下一瞬間也只能顯示下一位數(shù)碼管。等所有數(shù)碼管都掃描完畢后,又再進(jìn)行下一輪的循環(huán)掃描循環(huán)掃描。由于掃描時(shí)間很短由于掃描時(shí)間很短,人眼的人眼的視覺殘留效應(yīng),所以看到的是所有數(shù)碼管一起顯示視覺殘留效應(yīng),所以看到的是所有數(shù)碼管一起顯示?!纠?-2】試設(shè)計(jì)驅(qū)動(dòng)2位數(shù)碼管動(dòng)態(tài)顯示“28”。設(shè)計(jì)分析設(shè)計(jì)分析:2位數(shù)碼管與單片機(jī)連接如圖4-10所示,其中段選線和P0口相連,位選線則分別由P2.6、P2.7控制。根據(jù)數(shù)碼管動(dòng)態(tài)顯示每次只選中1位數(shù)碼管工作的掃描原理,程序設(shè)計(jì)上先掃描顯示第1位數(shù)碼管(只需位選第1位數(shù)碼管P2=0 xbf,“2”的編碼賦值給段選線P0=0 xa4),接著掃描

8、顯示第2位數(shù)碼管(只需位選第2位數(shù)碼管P2=0 x7f,“8”的編碼賦值給段選線P0=0 x80)。 void main() while(1)P2 = 0 xbf;/位選數(shù)碼管,即選中第一位數(shù)碼管P0= 0 xa4;/段選數(shù)碼管,“2”的編碼賦值給P0display_delay();/顯示延時(shí)P0=0 xff;/關(guān)閉顯示 P2 = 0 x7f;/位選數(shù)碼管,即選中第二位數(shù)碼管P0= 0 x80;/段選數(shù)碼管,“8”的編碼賦值給P0display_delay();/顯示延時(shí)P0=0 xff;/關(guān)閉顯示 n1. Proteus電路設(shè)計(jì) n2. Keil C51程序設(shè)計(jì) n3. Proteus-Ke

9、il聯(lián)合調(diào)試仿真 任務(wù)實(shí)施硬件電路圖n(1)程序流程初始時(shí)間為10點(diǎn)整。主程序循環(huán)掃描6個(gè)數(shù)碼管動(dòng)態(tài)顯示,由于掃描速度很快,因此在程序設(shè)計(jì)上,考慮6個(gè)數(shù)碼管動(dòng)態(tài)掃描多次(100)后,再進(jìn)行顯示加1。同時(shí)注意秒、分鐘、小時(shí)的進(jìn)制進(jìn)位。 驅(qū)動(dòng)點(diǎn)亮數(shù)碼管模擬時(shí)間顯示i=100?Ysecond2=6?YNN開始second1=10?NY初始時(shí)間變量為10點(diǎn)整初始循環(huán)掃描變量i為0變量second1加1變量i加1變量i清0變量second1清0變量second2加1min1=10?N變量second2清0變量min1加1min2=6?N變量min1清0變量min2加1hour1=10?N變量min2清0

10、變量hour1加1hour2=2&hour1=4N變量hour1清0變量hour2加1YYhour1、hour2清0YYn運(yùn)行Proteus-Keil聯(lián)合調(diào)試仿真 任務(wù)2 定時(shí)器應(yīng)用設(shè)計(jì) 任務(wù)描述:任務(wù)描述:任務(wù)分析:任務(wù)分析:任務(wù)任務(wù)1仿仿24小時(shí)制運(yùn)行,其精度無法達(dá)到實(shí)用價(jià)值,本任務(wù)要求設(shè)小時(shí)制運(yùn)行,其精度無法達(dá)到實(shí)用價(jià)值,本任務(wù)要求設(shè)計(jì)實(shí)用的時(shí)鐘,驅(qū)動(dòng)六個(gè)數(shù)碼管按計(jì)實(shí)用的時(shí)鐘,驅(qū)動(dòng)六個(gè)數(shù)碼管按24小時(shí)制顯示運(yùn)行。小時(shí)制顯示運(yùn)行。 嵌入式程序設(shè)計(jì)中經(jīng)常定義函數(shù)實(shí)現(xiàn)延時(shí),這對(duì)于要求不高、無需嵌入式程序設(shè)計(jì)中經(jīng)常定義函數(shù)實(shí)現(xiàn)延時(shí),這對(duì)于要求不高、無需精確的的情況下,尚無大礙。然而在某些

11、場合對(duì)時(shí)間的精度要求比較高,精確的的情況下,尚無大礙。然而在某些場合對(duì)時(shí)間的精度要求比較高,比如時(shí)鐘設(shè)計(jì),如果仍然采用延時(shí)程序進(jìn)行秒、分鐘、小時(shí)的延時(shí)設(shè)計(jì),比如時(shí)鐘設(shè)計(jì),如果仍然采用延時(shí)程序進(jìn)行秒、分鐘、小時(shí)的延時(shí)設(shè)計(jì),隨著運(yùn)行時(shí)間的增加,其累積誤差就會(huì)很大,甚至導(dǎo)致項(xiàng)目設(shè)計(jì)的失敗。隨著運(yùn)行時(shí)間的增加,其累積誤差就會(huì)很大,甚至導(dǎo)致項(xiàng)目設(shè)計(jì)的失敗。另一方面由于單片機(jī)系統(tǒng)一般是多任務(wù)系統(tǒng),延時(shí)程序運(yùn)行的同時(shí)將使單另一方面由于單片機(jī)系統(tǒng)一般是多任務(wù)系統(tǒng),延時(shí)程序運(yùn)行的同時(shí)將使單片機(jī)片機(jī)CPU無法快速執(zhí)行其他代碼,從而不符合設(shè)計(jì)要求。本任務(wù)學(xué)習(xí)單片無法快速執(zhí)行其他代碼,從而不符合設(shè)計(jì)要求。本任務(wù)學(xué)習(xí)單

12、片機(jī)定時(shí)機(jī)定時(shí)/計(jì)數(shù)器部件,其定時(shí)功能滿足對(duì)時(shí)間有嚴(yán)格要求的場合。計(jì)數(shù)器部件,其定時(shí)功能滿足對(duì)時(shí)間有嚴(yán)格要求的場合。 1.定時(shí)/計(jì)數(shù)器結(jié)構(gòu)2.定時(shí)器如何計(jì)算時(shí)間 n在“內(nèi)部計(jì)時(shí)器” 功能下,每個(gè)機(jī)器周期定時(shí)器的值增1。因此,可以說此時(shí)的定時(shí)器是在計(jì)數(shù)機(jī)器周期。一個(gè)機(jī)器周期由12個(gè)晶振周期組成。當(dāng)晶振頻率為12MHz時(shí):12,000,000/12=1,000,000就是每秒鐘有1,000,000個(gè)機(jī)器周期,即每個(gè)機(jī)器周期的時(shí)間是1s。定時(shí)器的值是在每個(gè)機(jī)器周期下(1us)增1;n課堂思考:(1)當(dāng)晶振頻率為6MHz時(shí),定時(shí)器的值多長時(shí)間加1? (2)12MHz晶振頻率下,要求一次溢出定時(shí)時(shí)間為1

13、0us,請(qǐng)問定時(shí)寄存器THx/TLx計(jì)數(shù)多少次產(chǎn)生溢出?如果將晶振頻率改為6MHz呢? 定時(shí)器工作模式需要在定時(shí)器模式寄存器TMOD(Timer Mode Control Register)中進(jìn)行編程設(shè)定。定時(shí)器模式寄存器TMOD不可以位尋址。位位符號(hào)符號(hào)功能說明功能說明7GATE定時(shí)器1門控制位(Timer 1 Gating Control Bit)當(dāng)TCON中的TR0設(shè)定為1,并且GATE=1,定時(shí)器1(Time1)只在 INT1引腳為高電平時(shí)計(jì)時(shí)(或計(jì)數(shù))當(dāng)GATE=0時(shí),定時(shí)器1(Time1)只在TCON中的TR0設(shè)定為1時(shí)計(jì)時(shí)(或計(jì)數(shù))6C/T定時(shí)器1定時(shí)、計(jì)數(shù)功能選擇位(Timer

14、 1 Counter/Timer Select Bit)C/T=0時(shí),定時(shí)器1(Time1)工作于計(jì)時(shí)方式C/T=1時(shí),定時(shí)器1(Time1)工作于計(jì)數(shù)方式5M1定時(shí)器1工作模式選擇位(Timer 1 Mode Select Bit)4M0定時(shí)器1工作模式選擇位(Timer 1 Mode Select Bit)3GATE定時(shí)器0門控制位(Timer 0 Gating Control Bit)當(dāng)TCON中的TR0設(shè)定為1,并且GATE=1,定時(shí)器0(Time0)只在 INT0引腳為高電平時(shí)計(jì)時(shí)(或計(jì)數(shù))當(dāng)GATE=0時(shí),定時(shí)器0(Time0)只在TCON中的TR0設(shè)定為1時(shí)計(jì)時(shí)(或計(jì)數(shù))2C/T

15、定時(shí)、計(jì)數(shù)功能選擇位(Timer 0 Counter/Timer Select Bit )C/T=0時(shí),定時(shí)器0(Time0)工作于計(jì)時(shí)方式C/T=1時(shí),定時(shí)器0(Time0)工作于計(jì)數(shù)方式1M1定時(shí)器0工作模式選擇位(Timer 0 Mode Select Bits)0M0定時(shí)器0工作模式選擇位(Timer 0 Mode Select Bits)3. 定時(shí)器專用寄存器 MODEM1M0模式說明模式說明00013位定時(shí)器10116位定時(shí)器2108位定時(shí)器;自動(dòng)加載311TL0為8位計(jì)時(shí)(或計(jì)數(shù))器,由T0控制;TH0為另一計(jì)時(shí)(或計(jì)數(shù))器,由T1控制;TL1、TH1此時(shí)不使用。n特殊功能寄存器

16、TCOD也稱為定時(shí)器控制寄存器。 n定時(shí)寄存器定時(shí)寄存器(Timer Register) 定時(shí)器由兩個(gè)兩個(gè)8位寄存器位寄存器組成,分別是高字節(jié)寄存器(High Byte Register)和低字節(jié)寄存器(Low Byte Register)。對(duì)于定時(shí)器定時(shí)器0分別對(duì)應(yīng)分別對(duì)應(yīng)TH0寄存器(TH0 Register)和TL0寄存器(TL0 Register),對(duì)于定時(shí)器定時(shí)器1則分別對(duì)應(yīng)則分別對(duì)應(yīng)TH1寄存器和TL1寄存器。這兩個(gè)寄存器在模式0、模式1時(shí)組合成字?jǐn)?shù)據(jù)寄存器使用,在模式2時(shí)分別使用,定時(shí)器0模式3分別使用,定時(shí)器1模式3不使用 。 nTR0:定時(shí)器定時(shí)器0運(yùn)行控制位運(yùn)行控制位(Ti

17、mer 0 Run Control Bit)由軟件置1或清0。置置1時(shí)定時(shí)器時(shí)定時(shí)器0啟動(dòng),啟動(dòng),清清0時(shí)定時(shí)時(shí)定時(shí)器器0停止停止nET0:定時(shí)器定時(shí)器0中斷控制位中斷控制位(Timer 0 interrupt Control Bit)由軟件置1或清0。置置1時(shí)允許定時(shí)器時(shí)允許定時(shí)器0中斷中斷,清清0時(shí)時(shí)關(guān)閉定時(shí)器關(guān)閉定時(shí)器0中斷中斷4.定時(shí)器工作方式n通過設(shè)置TMOD寄存器的M1、M0位,可以構(gòu)成定時(shí)器的4種工作方式。 n(1)方式0 n(2)方式1 n(3)方式2 n(4)方式3 5.定時(shí)器的設(shè)置與控制 n初始設(shè)置初始設(shè)置8051單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器是可編程的,其工作方式和工作過程均

18、可通過程序進(jìn)行設(shè)定和控制,需要初始設(shè)置的內(nèi)容如下:q先給定時(shí)器方式寄存器TMOD送一個(gè)方式控制字,設(shè)定使用哪個(gè)定時(shí)器及相應(yīng)的工作方式;q給定時(shí)寄存器(THx,TLx)送定時(shí)初值,確定需要定時(shí)的時(shí)間;q根據(jù)需要給中斷允許寄存器IE送中斷控制字,給中斷優(yōu)先級(jí)寄存器IP送優(yōu)先級(jí)控制字,以開放相應(yīng)中斷和設(shè)定中斷優(yōu)先級(jí);q給定時(shí)器控制寄存器TCON送命令字,啟/停定時(shí)器運(yùn)行。 n【例4-4】 晶振頻率為12Mhz,選擇T0定時(shí)1ms,在只依靠軟件控制定時(shí)器計(jì)數(shù)開關(guān)的情況下,請(qǐng)?jiān)O(shè)置正確的T0的相關(guān)寄存器?n分析:選擇定時(shí)器T0,即需設(shè)置T0相關(guān)寄存器TMOD、TH0、TL0 、TCON。 n(1)晶振頻率

19、12Mhz情況下,每個(gè)機(jī)器周期是1s,定時(shí)1ms即是1000us。而方式2、3為8位計(jì)數(shù)器,一次溢出最長時(shí)間為256us,需要多次溢出才能達(dá)到1ms的定時(shí)要求,這樣將增加編程復(fù)雜性。如果采用方式0、方式1,它們一次溢出最長時(shí)間分別為8193us、65536us,即一次溢出范圍內(nèi)即可實(shí)現(xiàn)定時(shí)1000us。因此可設(shè)置采用T0方式1進(jìn)行定時(shí),由于只依靠軟件控制定時(shí)啟/停,即GATE應(yīng)為0。TMOD的高4位用來控制T1,可全部清“0”,只需設(shè)置TMOD低4位 TMOD用字節(jié)指令賦值為:TMOD=0 x01; n(2)由于12MHz晶振頻率下的機(jī)器周器為1us,因此周期定時(shí)1ms需要計(jì)數(shù)1,000個(gè)機(jī)器

20、周期,也就是定時(shí)寄存器TH0/TL0數(shù)值累計(jì)增加1,000即可。為了方便掌握定時(shí)時(shí)間結(jié)束的時(shí)間點(diǎn),將定時(shí)寄存器設(shè)置為剛好經(jīng)過1,000累加就溢出。下面是設(shè)置定時(shí)寄存器的初始值過程:65536-1000=64536;將64536轉(zhuǎn)為成16進(jìn)制:64536=0 xfc18,將0 xfc賦值給TH0,0 x18賦值給TL0即可。TH0=0 xfc; /TH0存放定時(shí)初值高8位TL0=0 x18;/TL0存放定時(shí)初值低8位即16位定時(shí)器,當(dāng)TH0/TL0從0 xfc18加到溢出(0 xffff再加1時(shí)),正好是1ms。 n(3)定時(shí)器0溢出可采用軟件查詢溢出標(biāo)志位TF0的方法來判斷,但一般將定時(shí)器溢出

21、作為中斷處理,因此,將中斷允許寄存器IE的ET0位和EA位置1。即:ET0=1;/允許T0溢出中斷EA=1;/允許總中斷如果此系統(tǒng)中沒有其他的中斷源,一般不需要設(shè)置IP。n(4)啟動(dòng)定時(shí)器運(yùn)行,即將TCON的TR0置“1”。TR0=1;/啟動(dòng)T0運(yùn)行 n判斷定時(shí)寄存器是否溢出判斷定時(shí)寄存器是否溢出q前面討論了定時(shí)寄存器的工作原理,它在相應(yīng)信號(hào)源作用下,定時(shí)寄存器的值均會(huì)增1,當(dāng)THx/TLx的值超出了其表示范圍時(shí),硬件就會(huì)自動(dòng)將標(biāo)志位TF0(或TF1)置1,定時(shí)寄存器的值也會(huì)恢復(fù)到初始值0(方式2除外)。q因此很多時(shí)候無需讀取定時(shí)寄存器的值,就可以知道期望的計(jì)時(shí)時(shí)間是否已經(jīng)結(jié)束,方法就是預(yù)先將

22、定時(shí)寄存器設(shè)置為剛好經(jīng)過期望的定時(shí)時(shí)間就溢出。故了解溢出標(biāo)志位的情況,成為判斷計(jì)時(shí)是否結(jié)束的方便方法。q溢出標(biāo)志位可以產(chǎn)生中斷申請(qǐng),當(dāng)打開相應(yīng)中斷允許位,便引發(fā)硬件動(dòng)作執(zhí)行中斷服務(wù)程序。 n【例4-5】擇TIME0的定時(shí)功能,在MODE1模式下,編程控制定時(shí)動(dòng)作開關(guān);如定時(shí)0.5ms, 請(qǐng)運(yùn)用溢出產(chǎn)生中斷的方式編寫相關(guān)程序?主程序的T0溢出中斷初始化程序:TMOD=0 x01;/初始TMOD寄存器TH0=HIGH(65536-500);/初始TH0/TL0寄存器,裝載定時(shí)初值TL0=LOW(65536-500);TR0=1; /啟動(dòng)定時(shí)器T0運(yùn)行ET0=1;/允許T0中斷EA=1;/開放總中斷

23、 T0溢出中斷程序:void T0_interrupt() interrupt 1 using 1/TH0=HIGH(65536-500);/重裝定時(shí)初值 TL0=LOW(65536-500);;【課堂思考】設(shè)定時(shí)器T0,以方式1工作,試編寫定時(shí)1s的程序。 n1. Proteus電路設(shè)計(jì) n2. Keil C51程序設(shè)計(jì) n3. Proteus-Keil聯(lián)合調(diào)試仿真 任務(wù)實(shí)施硬件電路圖n定時(shí)器時(shí)鐘程序流程及說明主程序?qū)⒀h(huán)點(diǎn)亮6個(gè)共陽極數(shù)碼管進(jìn)行相應(yīng)的顯示,當(dāng)秒加到60進(jìn)一位分鐘,當(dāng)分鐘加到60進(jìn)一位小時(shí),當(dāng)小時(shí)加到24重新清0開始。時(shí)間運(yùn)行則采用定時(shí)器設(shè)計(jì),每次定時(shí)50ms,計(jì)數(shù)20次定時(shí)

24、為1s。 定時(shí)次數(shù)變量清0時(shí)間運(yùn)行到1s否秒、分鐘、小時(shí)變量相應(yīng)變化驅(qū)動(dòng)數(shù)碼管秒、分鐘、小時(shí)進(jìn)行相應(yīng)顯示開始Y初始定時(shí)器0寄存器及相關(guān)變量Nn運(yùn)行Proteus-Keil聯(lián)合調(diào)試仿真 任務(wù)3 DS1302時(shí)鐘設(shè)計(jì) 任務(wù)描述:任務(wù)描述:任務(wù)分析:任務(wù)分析:本任務(wù)要求在主機(jī)斷電情況下,時(shí)鐘仍保持運(yùn)行,即當(dāng)開機(jī)后,時(shí)本任務(wù)要求在主機(jī)斷電情況下,時(shí)鐘仍保持運(yùn)行,即當(dāng)開機(jī)后,時(shí)鐘顯示模塊能顯示當(dāng)前正確時(shí)間(秒、分鐘、小時(shí)),并能擴(kuò)展實(shí)現(xiàn)對(duì)日、鐘顯示模塊能顯示當(dāng)前正確時(shí)間(秒、分鐘、小時(shí)),并能擴(kuò)展實(shí)現(xiàn)對(duì)日、月、星期、年的計(jì)數(shù)等。月、星期、年的計(jì)數(shù)等。 如果時(shí)鐘運(yùn)行模塊與主機(jī)共電源,當(dāng)主機(jī)掉電后,時(shí)鐘模塊

25、也將停如果時(shí)鐘運(yùn)行模塊與主機(jī)共電源,當(dāng)主機(jī)掉電后,時(shí)鐘模塊也將停止運(yùn)行。重新開機(jī)后,時(shí)間又將從初始狀態(tài)開始運(yùn)行,需要手動(dòng)調(diào)整為正止運(yùn)行。重新開機(jī)后,時(shí)間又將從初始狀態(tài)開始運(yùn)行,需要手動(dòng)調(diào)整為正確時(shí)間。因此,由主機(jī)產(chǎn)生時(shí)鐘運(yùn)行信號(hào)或主機(jī)與時(shí)鐘模塊共一套電源,確時(shí)間。因此,由主機(jī)產(chǎn)生時(shí)鐘運(yùn)行信號(hào)或主機(jī)與時(shí)鐘模塊共一套電源,在實(shí)際應(yīng)用中并不常見。目前一般運(yùn)用實(shí)時(shí)時(shí)鐘芯片實(shí)現(xiàn)對(duì)秒、分鐘、小在實(shí)際應(yīng)用中并不常見。目前一般運(yùn)用實(shí)時(shí)時(shí)鐘芯片實(shí)現(xiàn)對(duì)秒、分鐘、小時(shí)、月、星期、年的計(jì)數(shù),本任務(wù)選用時(shí)、月、星期、年的計(jì)數(shù),本任務(wù)選用DS1302串行時(shí)鐘芯片作為時(shí)鐘運(yùn)串行時(shí)鐘芯片作為時(shí)鐘運(yùn)行的核心部件,由單片機(jī)控制完

26、成實(shí)時(shí)時(shí)鐘的設(shè)計(jì)。行的核心部件,由單片機(jī)控制完成實(shí)時(shí)時(shí)鐘的設(shè)計(jì)。 1.串行時(shí)鐘電路DS1302接口簡介n串行時(shí)鐘電路DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,其接口簡單、價(jià)格低廉、使用方便,被廣泛地采用。它的主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能。 DS1302時(shí)鐘可以對(duì)秒、分鐘、小時(shí)、月、星期、年的計(jì)數(shù),年計(jì)數(shù)可達(dá)到2100 年;閏年可自行調(diào)整;可選擇12 小時(shí)制和24 小時(shí)制;可以設(shè)置AM、PM;有31*8 位的額外數(shù)據(jù)暫存寄存器;工作電壓:2.0-5.5V。 2. DS1302引腳及功能 3. DS1302寄存器 寄存器

27、名稱命令字 各位內(nèi)容取值范圍讀寫D7D6D5D4D3D2D1D0秒寄存器80H81HCH10SECSEC00-59分寄存器82H83H010MINMIN00-59小時(shí)寄存器84H85H12/24010HRHR01-12,0-23日期寄存器86H87H0010DATEDATE01-28,29,30,31月份寄存器88H89H00010MMONTH01-12周寄存器8AH8BH00000DAY01-07年份寄存器8CH8DH10YEARYEAR01-99控制寄存器8EH8FHWP00000004.數(shù)據(jù)輸入輸出時(shí)序圖 n1. Proteus電路設(shè)計(jì) n2. Keil C51程序設(shè)計(jì) n3. Prot

28、eus-Keil聯(lián)合調(diào)試仿真 任務(wù)實(shí)施硬件電路圖nDS1302程序設(shè)計(jì)開始初始變量及定義引腳讀DS1302秒數(shù)據(jù)讀DS1302分?jǐn)?shù)據(jù)驅(qū)動(dòng)數(shù)碼管顯示讀DS1302小時(shí)數(shù)據(jù)驅(qū)動(dòng)數(shù)碼管顯示驅(qū)動(dòng)數(shù)碼管顯示n運(yùn)行Proteus-Keil聯(lián)合調(diào)試仿真 【課堂思考【課堂思考】如要取得DS1302日歷、星期數(shù)據(jù),請(qǐng)編寫出相應(yīng)的程序。 任務(wù)4 按鍵計(jì)數(shù)設(shè)計(jì) 任務(wù)描述:任務(wù)描述:任務(wù)分析:任務(wù)分析:任何一個(gè)電子元器件都有壽命,比如按鍵一般使用次數(shù)在任何一個(gè)電子元器件都有壽命,比如按鍵一般使用次數(shù)在10萬次。萬次。為了解有關(guān)器件的使用情況,本任務(wù)要求統(tǒng)計(jì)最常用按鍵(用來改變流水為了解有關(guān)器件的使用情況,本任務(wù)要求統(tǒng)

29、計(jì)最常用按鍵(用來改變流水燈運(yùn)行狀態(tài)的按鍵)的使用次數(shù),當(dāng)達(dá)到燈運(yùn)行狀態(tài)的按鍵)的使用次數(shù),當(dāng)達(dá)到10萬次后發(fā)聲警報(bào),及時(shí)通知更萬次后發(fā)聲警報(bào),及時(shí)通知更換按鍵以保證系統(tǒng)正常工作。換按鍵以保證系統(tǒng)正常工作。 顯然,用查詢方式設(shè)計(jì)按鍵是無法滿足要求。前面講到,顯然,用查詢方式設(shè)計(jì)按鍵是無法滿足要求。前面講到,51單片機(jī)單片機(jī)的定時(shí)器除了計(jì)時(shí)功能外,還有計(jì)數(shù)的作用,因此可以使用其的定時(shí)器除了計(jì)時(shí)功能外,還有計(jì)數(shù)的作用,因此可以使用其“計(jì)數(shù)計(jì)數(shù)”功功能自動(dòng)統(tǒng)計(jì)按鍵次數(shù)。能自動(dòng)統(tǒng)計(jì)按鍵次數(shù)。 1.定時(shí)器如何實(shí)現(xiàn)計(jì)數(shù) n當(dāng)它用作對(duì)外部事件計(jì)數(shù)時(shí),接相應(yīng)的外部輸入引腳T0(P3.4)或T1(P3.5)。在

30、這種情況下,當(dāng)檢測到輸入引腳上的電平由高跳變到低,計(jì)數(shù)器就加1。把啤酒瓶經(jīng)過產(chǎn)生的脈沖信號(hào)接入P3.4引腳,每過一瓶啤酒則T0寄存器的計(jì)數(shù)值增1。這個(gè)過程是統(tǒng)計(jì)外部事件觸發(fā)的次數(shù),是個(gè)計(jì)數(shù)過程,如果沒有外部事件發(fā)生,計(jì)數(shù)器的值不變。如果想要了解生產(chǎn)線上經(jīng)過的啤酒瓶數(shù)量,只需讀取計(jì)數(shù)器中的值即可。 2.計(jì)數(shù)器的設(shè)置與控制n在確定了定時(shí)器的計(jì)數(shù)功能后,需要初始設(shè)置同定時(shí)大致相同,主要步驟如下:qTMOD中將功能設(shè)置為計(jì)數(shù)器,即將位設(shè)置為1,同時(shí)設(shè)置工作模式,即設(shè)置M1、M0的值;q設(shè)定計(jì)數(shù)寄存器THx/TLx的初始值;q根據(jù)需要設(shè)置中斷允許寄存器IE或優(yōu)先級(jí)寄存器IP的值,以開放相應(yīng)中斷和設(shè)定中斷優(yōu)先級(jí);q通過TCON設(shè)置計(jì)數(shù)器的啟動(dòng)方式,將GATE設(shè)置為0則通過TRx啟動(dòng)。 3.單片機(jī)I/O驅(qū)動(dòng)實(shí)現(xiàn)發(fā)聲警報(bào)n蜂鳴器分為壓電式和電磁式兩種。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動(dòng)膜片及外殼組成,其發(fā)聲原理為

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論