基于單片機(jī)的定時(shí)鬧鐘課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  任務(wù)書</b></p><p>  一、設(shè)計(jì)目的 </p><p>  本設(shè)計(jì)主要是對(duì)51單片機(jī)的一個(gè)方面的擴(kuò)展,是能實(shí)現(xiàn)一般定時(shí)鬧鐘功能的設(shè)計(jì)。需要實(shí)現(xiàn)某一功能時(shí),按對(duì)應(yīng)的按鍵即可,經(jīng)過(guò)多次驗(yàn)證,此設(shè)計(jì)靈活簡(jiǎn)便,可以實(shí)現(xiàn)顯示、定時(shí)、修改定時(shí)、定時(shí)時(shí)間到能發(fā)出報(bào)警聲的功能。</p><p><b>

2、  二、設(shè)計(jì)要求</b></p><p>  1、能顯示時(shí)時(shí)—分分—秒秒。</p><p>  2、能夠設(shè)定定時(shí)時(shí)間,并修改定時(shí)時(shí)間。</p><p>  3、定時(shí)時(shí)間到能發(fā)出警報(bào)聲。</p><p><b>  目 錄</b></p><p><b>  1.緒論1<

3、;/b></p><p><b>  2.方案論證1</b></p><p><b>  3.方案說(shuō)明2</b></p><p>  4.硬件方案設(shè)計(jì)2</p><p>  4.1單片機(jī)STC89C522</p><p>  4.2 時(shí)鐘電路4</p&g

4、t;<p>  4.3數(shù)碼管顯示電路4</p><p><b>  4.4鍵盤電路6</b></p><p><b>  4.5報(bào)警電路7</b></p><p>  5.軟件方案設(shè)計(jì)7</p><p>  5.1系統(tǒng)軟件設(shè)計(jì)7</p><p><

5、;b>  5.2鍵盤程序7</b></p><p><b>  5.3 LED8</b></p><p>  5.4音響報(bào)警電路8</p><p>  5.5 程序流程圖8</p><p><b>  6.調(diào)試9</b></p><p><b

6、>  7.小結(jié)10</b></p><p><b>  8.參考文獻(xiàn)11</b></p><p>  9.附錄:定時(shí)鬧鐘源程序12</p><p><b>  1.緒論</b></p><p>  系統(tǒng)采用單片機(jī)STC89C52作為本設(shè)計(jì)的核心元件,在其基礎(chǔ)上外圍擴(kuò)展芯片和外

7、圍電路,附加時(shí)鐘電路,復(fù)位電路,鍵盤接口及LED顯示器。鍵盤采用獨(dú)立連接式。還有定時(shí)報(bào)警系統(tǒng),即定時(shí)時(shí)間到,通過(guò)揚(yáng)聲器發(fā)出報(bào)警聲,提示預(yù)先設(shè)定時(shí)間時(shí)間到,從而起到定時(shí)作用。</p><p>  外圍器件有LED顯示驅(qū)動(dòng)器及相應(yīng)的顯示數(shù)字電子鐘設(shè)計(jì)與制作可采用單片機(jī)來(lái)完成。由于其功能的實(shí)現(xiàn)主要通過(guò)軟件編程來(lái)完成,那么就降低了硬件電路的復(fù)雜性,而且其成本也有所降低,所以在該設(shè)計(jì)與制作中采用單片機(jī)STC89C52,它是

8、低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有8KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外, STC89C52的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有512B的RAM、32條I/O口線、3個(gè)16位定時(shí)計(jì)數(shù)器、4個(gè)外部中斷、一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu))等。</p><p>  在LED顯示器中,分成靜態(tài)顯示和動(dòng)態(tài)顯示兩類,在這個(gè)設(shè)計(jì)的最小系統(tǒng)中主要用了它的動(dòng)態(tài)顯示

9、功能,動(dòng)態(tài)顯示器利用了人視覺(jué)的短暫停留,在數(shù)據(jù)的傳輸中是一個(gè)一個(gè)傳輸?shù)?,且先傳輸?shù)臀弧?lt;/p><p><b>  2.方案論證</b></p><p>  單片機(jī)作為核心的控制元件,使得電路的可靠性比較高,功能也比較強(qiáng)大, 而且可以隨時(shí)的更新系統(tǒng),進(jìn)行不同狀態(tài)的組合。</p><p>  本系統(tǒng)采用單片機(jī)STC89C52作為本設(shè)計(jì)的核心元件,

10、利用兩個(gè)4位7段共陰LED作為顯示器件。接入共陰LED顯示器,可顯示時(shí),分鐘,秒,單片機(jī)外圍接有定時(shí)報(bào)警系統(tǒng),定時(shí)時(shí)間到,蜂鳴器發(fā)出報(bào)警聲,提示預(yù)先設(shè)定時(shí)間到。</p><p>  電路由下列部分組成:時(shí)鐘電路、復(fù)位電路、控制電路、LED顯示、報(bào)警電路,芯片選用STC89C52單片機(jī)。 </p><p>  系統(tǒng)基本框圖如圖2.1所示:</p><p>  圖2.1

11、 系統(tǒng)基本框圖</p><p><b>  3.方案說(shuō)明</b></p><p>  此設(shè)計(jì)主要是通過(guò)單片機(jī)系統(tǒng),綜合運(yùn)用定時(shí)器、中斷、數(shù)碼顯示等知識(shí)設(shè)計(jì)一個(gè)可定時(shí)的電子鐘。它包括系統(tǒng)總體方案及硬件設(shè)計(jì),軟件設(shè)計(jì),Proteus軟件仿真等部分。</p><p>  系統(tǒng)總體方案及硬件設(shè)計(jì)是本設(shè)計(jì)的重要組成部分,在這部分詳細(xì)介紹了時(shí)鐘原理,硬件

12、設(shè)計(jì),數(shù)碼管LED,以及在設(shè)計(jì)過(guò)程中考慮到技術(shù)指標(biāo),機(jī)型的選擇,器件的選擇等一系列問(wèn)題。</p><p>  硬件設(shè)計(jì)的主要任務(wù)是根據(jù)總體設(shè)計(jì)要求,以及在所選機(jī)型的基礎(chǔ)上,確定系統(tǒng)擴(kuò)展所要用的存儲(chǔ)器,I/O電路及有關(guān)外圍電路等然后設(shè)計(jì)出系統(tǒng)的電路原理圖。</p><p>  合理的軟件結(jié)構(gòu)是設(shè)計(jì)出一個(gè)性能優(yōu)良的單片機(jī)應(yīng)用性系統(tǒng)軟件的基礎(chǔ),因此必須充分重視。在本設(shè)計(jì)中采用應(yīng)用廣泛的C語(yǔ)言。用

13、Proteus軟件仿真檢查設(shè)計(jì)是否合理。</p><p><b>  4.硬件方案設(shè)計(jì)</b></p><p>  4.1單片機(jī)STC89C52</p><p>  STC89C52是一個(gè)低電壓,高性能CMOS型8位單片機(jī),片內(nèi)含8KB的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器(ROM)和512B的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用STC公司的

14、高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,內(nèi)置功能強(qiáng)大的微型計(jì)算機(jī)的STC89C52提供了高性價(jià)比的解決方案。其引腳圖如下圖4.1所示:</p><p>  圖4.1 STS89C52</p><p>  STC89C52具體介紹如下:</p><p>  1)主電源引腳(2根)</p>

15、<p>  VCC(40):電源輸入,接+5V電源</p><p>  GND(20):接地線</p><p>  2)外接晶振引腳(2根)</p><p>  XTAL1(19):片內(nèi)振蕩電路的輸入端</p><p>  XTAL2(18):片內(nèi)振蕩電路的輸出端</p><p>  3)控制引腳(4根)&

16、lt;/p><p>  RST/VPP(9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。</p><p>  ALE/PROG(30):地址鎖存允許信號(hào)</p><p>  PSEN(29):外部存儲(chǔ)器讀選通信號(hào)</p><p>  EA/VPP(31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程

17、序存儲(chǔ)器讀指令。</p><p>  4)可編程輸入/輸出引腳(32根)</p><p>  STC89C52單片機(jī)有4組8位的可編程I/O口,分別為P0、P1、P2、P3口,每個(gè)口有8位(8根引腳),共32根。</p><p>  PO口(39~32):8位雙向I/O口線,名稱為P0.0~P0.7</p><p>  P1口(1~8):8位

18、準(zhǔn)雙向I/O口線,名稱為P1.0~P1.7 </p><p>  P2口(21~28):8位準(zhǔn)雙向I/O口線,名稱為P2.0~P2.7 </p><p>  P3口(10~17):8位準(zhǔn)雙向I/O口線,名稱為P3.0~P3.7</p><p><b>  4.2 時(shí)鐘電路</b></p><p>  單片機(jī)的時(shí)鐘產(chǎn)生方法

19、有兩種:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。</p><p>  本系統(tǒng)中STC89C52單片機(jī)采用內(nèi)部時(shí)鐘方式。最常用的內(nèi)部時(shí)鐘方式是采用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz~12MHz之間。電容值無(wú)嚴(yán)格要求,但電容取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小和振蕩電路起振速度有少許影響,一般可在20pF~100pF之間取值。STC89C52單片機(jī)的時(shí)鐘電路如圖4.2所示。</p><p&

20、gt;  圖4.2 時(shí)鐘電路</p><p>  4.3數(shù)碼管顯示電路</p><p>  單片機(jī)中通常使用7段LED,LED是發(fā)光二極管顯示器的縮寫。LED顯示器由于結(jié)構(gòu)簡(jiǎn)單,價(jià)格便宜,體積小,亮度高,電壓低,可靠性高,壽命長(zhǎng),響應(yīng)速度快,顏色鮮艷,配置靈活,與單片機(jī)接口方便而得到廣泛應(yīng)用。LED顯示器是由若干個(gè)發(fā)光二極管組成顯示字段的顯示部件,當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆

21、劃發(fā)光,控制不同組合的二極管導(dǎo)通,就能顯示出各種字符。LED顯示器有多種形式,如:“米”字型顯示器,點(diǎn)陣顯示器和七段數(shù)碼顯示器等,在單片機(jī)系統(tǒng)中使用最多的是七段數(shù)碼顯示器。</p><p>  LED七段數(shù)碼顯示器由8個(gè)發(fā)光二極管組成顯示字符,根據(jù)內(nèi)部發(fā)光二極管</p><p>  的連接形式不同,LED有共陰極和共陽(yáng)極兩種,如圖4.3.1所示為4為7段共陰數(shù)碼管的引腳圖。</p&g

22、t;<p>  圖4.3.1 4段共陰數(shù)碼管引腳圖</p><p>  采用高亮共陰型s位數(shù)碼管,為示區(qū)別,顯示秒的兩個(gè)數(shù)碼管個(gè)頭較小,另外4個(gè)較大。共陰數(shù)碼管連接線路如下:一般用7個(gè)發(fā)光二極管構(gòu)成顯示數(shù)字和符號(hào),另外還用一段發(fā)光二極管顯示小數(shù)點(diǎn)。這種顯示器一般分為兩種,共陽(yáng)極顯示器和共陰極顯示器,共陽(yáng)極顯示器是把每個(gè)二極管的正端連在一起,共陰極顯示器是把每個(gè)二極管的陰極連在一起。一只顯示器是有8

23、個(gè)發(fā)光二極管構(gòu)成,當(dāng)把某段加正向電壓時(shí),則該段所對(duì)應(yīng)的筆劃亮,不加正向電壓則暗,為了保護(hù)各段不受損壞需要加限流電阻,無(wú)論是共陽(yáng)極顯示器還是共陰極顯示器,它的8段排列順序都是一樣的:A段、B段、C段、D段、E段、F段、G段和DP段。在單片機(jī)中通常使用7段LED。數(shù)碼管的顯示電路如下圖4.3.2所示:</p><p>  圖4.3.2 數(shù)碼管的顯示電路</p><p>  數(shù)碼管中二極管電流

24、的計(jì)算</p><p>  二極管本身有2V的電壓降,一般二極管電流取10mA,則需添加的電阻為</p><p>  R=(U-ULed)/ILed,</p><p>  代入相關(guān)數(shù)值,即為300Ω。</p><p>  本設(shè)計(jì)中,選用的電阻為470Ω,則電流為</p><p>  I=(U-ULed)/R´

25、,</p><p>  代入實(shí)際數(shù)值,即為6.4mA,能夠滿足顯示效果。</p><p><b>  4.4鍵盤電路</b></p><p>  設(shè)計(jì)方案中使用的是3個(gè)開關(guān)鍵組成的鍵盤電路,如下圖4.4所示:</p><p>  圖4.4 鍵盤電路圖</p><p><b>  4.5

26、報(bào)警電路</b></p><p>  設(shè)計(jì)方案中,采用的是蜂鳴器和PNP型三極管組成的報(bào)警電路。如下圖4.5所示:</p><p>  圖4.5 報(bào)警電路</p><p><b>  5.軟件方案設(shè)計(jì)</b></p><p><b>  5.1系統(tǒng)軟件設(shè)計(jì)</b></p>

27、<p>  該系統(tǒng)軟件主要有主程序模塊,定時(shí)中斷服務(wù)程序,中斷等待服務(wù)程序,鍵盤程序,顯示子程序服務(wù)程序等六大模塊組成,因?yàn)镃語(yǔ)言容易理解和記憶,所以我們用C語(yǔ)言來(lái)寫此程序。</p><p><b>  5.2鍵盤程序</b></p><p>  鍵盤采用查詢的方式,放在主程序中,當(dāng)沒(méi)有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦有鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理

28、,處理結(jié)束后再返回。</p><p><b>  5.3 LED</b></p><p>  七段LED由七個(gè)發(fā)光二極管按日字排開,所有發(fā)光二極管的陽(yáng)極連在一起成共陽(yáng)極,陰極連在一塊稱共陰極接法。當(dāng)采用芯片驅(qū)動(dòng)時(shí)不需要加限流電阻,其他情況下一般應(yīng)外接限流電阻。動(dòng)態(tài)顯示電路有顯示塊,字形碼封鎖驅(qū)動(dòng)器,字位鎖存驅(qū)動(dòng)器三部分組成。</p><p>&

29、lt;b>  5.4音響報(bào)警電路</b></p><p>  在STC89C52外圍的一個(gè)管口上加蜂鳴器,通過(guò)軟件與硬件的結(jié)合可實(shí)現(xiàn)定時(shí)鬧鐘功能。</p><p><b>  5.5 程序流程圖</b></p><p>  圖5.5 程序流程圖</p><p><b>  6.調(diào)試</b

30、></p><p>  設(shè)幾個(gè)按鍵從左往右為K1,K2,K3。K1與P1.0相連,K2與P1.1相連,K3與P1.2相連。</p><p>  按一下啟動(dòng)開關(guān),顯示為時(shí)間顯示。按一下K1,進(jìn)入時(shí)間顯示的小時(shí)設(shè)定狀態(tài);按兩下K1,進(jìn)入時(shí)間顯示的分鐘設(shè)定狀態(tài);按三下K1,進(jìn)入定時(shí)的小時(shí)設(shè)定狀態(tài);按四下K1,進(jìn)入定時(shí)的分鐘設(shè)定狀態(tài);按五下K1,退出設(shè)定,進(jìn)入當(dāng)前時(shí)間顯示狀態(tài);K2和K3分別

31、是對(duì)當(dāng)前設(shè)定值的加和減。如下圖6.1和6.2所示。</p><p>  圖6.1 調(diào)時(shí)仿真效果圖</p><p>  圖6.2 定時(shí)仿真效果圖</p><p><b>  7.小結(jié)</b></p><p>  在做課程設(shè)計(jì)的過(guò)程中,我進(jìn)一步認(rèn)識(shí)到全面專業(yè)知識(shí)以及邏輯思考方式對(duì)研究問(wèn)題的重要性,同時(shí)我也更加具體的掌握了課程

32、設(shè)計(jì)的基本方法。</p><p>  經(jīng)過(guò)不斷的努力,我終于完成了這次課程設(shè)計(jì),總的來(lái)說(shuō),我學(xué)到了不少的東西,知道了理論聯(lián)系實(shí)際的重要性。在設(shè)計(jì)過(guò)程中我遇到了很多的困難,但沒(méi)放棄,查閱了許多相關(guān)的書籍,自己獨(dú)立思考和借鑒了前人的許多優(yōu)秀成果,并與所學(xué)的知識(shí)緊密的結(jié)合了起來(lái)。我相信這過(guò)程對(duì)我今后的學(xué)習(xí)和工作有著積極的影響,并搭好了平臺(tái)。</p><p>  通過(guò)這次設(shè)計(jì),我對(duì)這門課有了更好的

33、理解,尤其結(jié)合了這幾年學(xué)的相關(guān)的專業(yè)知識(shí),對(duì)各門課都有了一個(gè)較全面的理解。這必將對(duì)我以后的學(xué)習(xí)和工作有很大的幫助。本次課程設(shè)計(jì)的定時(shí)鬧鐘電路,可以滿足人們的基本要求,但因?yàn)橹R(shí)水平有限,此電路中存在一定的問(wèn)題,雖可以通過(guò)增加電路解決,但過(guò)于復(fù)雜和現(xiàn)有水平有限,本次設(shè)計(jì)就未深入涉及,想要更好的改進(jìn)電路,需要進(jìn)一步的努力,如果有好的意見(jiàn),希望老師給予支持指導(dǎo)。</p><p><b>  8.參考文獻(xiàn)<

34、;/b></p><p>  [1] 何立民.單片機(jī)應(yīng)用技術(shù)選編10.北京:北京航空航天大學(xué)出版社</p><p>  [2] 林立.單片機(jī)原理及應(yīng)用.北京:電子工業(yè)出版社</p><p>  [3] 沙占友等.單片機(jī)外圍電路設(shè)計(jì).西安:電子工業(yè)出版社</p><p>  [4] 江力.蔡駿.王艷春.董澤芳.單片機(jī)原理與應(yīng)用技術(shù).北京,

35、清華大學(xué)出版社</p><p>  [5] 潘永紅.柳殊.單片機(jī)原理與應(yīng)用.西安,西安電子科技大學(xué)出版社 </p><p>  9.附錄:定時(shí)鬧鐘源程序</p><p>  #include <reg52.h></p><p>  unsigned char led[12]={0x3f,0x06,0x5b,0x4f,0x66,0x

36、6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; //用一維數(shù)組定義0-9、橫杠、全滅</p><p>  unsigned char a[8]; </p><p>  unsigned char second=0,minute=0,hour=1;</p><p>  unsigned char minute1=0,hour1=0;<

37、;/p><p>  unsigned char b[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//掃描</p><p>  unsigned char k=0;</p><p>  unsigned int temp; // 記錄毫秒為秒的變量</p><p>  unsigned char

38、M,S_flag;//M是模式,更新時(shí)間的種模式加上正常模式S_flag閃爍標(biāo)志</p><p>  sbit K1=P1^0;</p><p>  sbit K2=P1^1;</p><p>  sbit K3=P1^2;</p><p>  sbit BEEP=P3^3;</p><p>  void dela

39、y(unsigned n) //0.2毫秒</p><p><b>  {</b></p><p><b>  int x,y;</b></p><p>  for(x=0;x<n;x++)</p><p>  for(y=0;y<24;y++);</p>&l

40、t;p><b>  }</b></p><p>  void time1() interrupt 3 //定時(shí)器中斷函數(shù)</p><p><b>  {</b></p><p>  TH1=0xfc; //定時(shí)ms</p><p><b>  TL1=0x18;</

41、b></p><p><b>  temp++;</b></p><p>  if(temp==1000) //配合定時(shí)器定時(shí)s</p><p><b>  {</b></p><p><b>  temp=0;</b></p><p>  s

42、econd++;</p><p><b>  }</b></p><p>  if(second==59)</p><p><b>  {</b></p><p>  second=0; </p><p>  if(minute<59)</p><

43、p><b>  minute++;</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  minute=0;</b></p><p><b>  hour++;</b

44、></p><p>  hour%=24; </p><p><b>  }</b></p><p><b>  }</b></p><p>  if(hour1==hour&&minute1==minute&&second<10) //鬧鐘時(shí)間

45、到</p><p><b>  {</b></p><p><b>  if(M==0)</b></p><p>  BEEP=!BEEP;</p><p><b>  } </b></p><p>  if(temp%250==0)

46、 //每ms</p><p>  S_flag=!S_flag; //閃爍標(biāo)志位取反</p><p>  if(k==8) k=0;</p><p>  P0=a[k];</p><p>  P2=b[k++]; </p><p>  delay(1); </p><p

47、>  P2=0xff;</p><p><b>  } </b></p><p>  void display()</p><p><b>  {</b></p><p><b>  switch(M)</b></p><p><

48、b>  {</b></p><p><b>  case 0:</b></p><p><b>  {</b></p><p>  a[0]=led[hour/10];</p><p>  a[1]=led[hour%10];</p><p>  a[2]=

49、led[10];</p><p>  a[3]=led[minute/10];</p><p>  a[4]=led[minute%10];</p><p>  a[5]=led[10];</p><p>  a[6]=led[second/10];</p><p>  a[7]=led[second%10];<

50、/p><p><b>  }break;</b></p><p><b>  case 1:</b></p><p><b>  {</b></p><p>  if(S_flag==1)</p><p><b>  {</b><

51、/p><p>  a[0]=led[hour/10];</p><p>  a[1]=led[hour%10];</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

52、<p>  a[0]=led[11];</p><p>  a[1]=led[11];</p><p><b>  }</b></p><p>  a[2]=led[10];</p><p>  a[3]=led[minute/10];</p><p>  a[4]=led[minu

53、te%10];</p><p>  a[5]=led[10];</p><p>  a[6]=led[second/10];</p><p>  a[7]=led[second%10];</p><p><b>  }break;</b></p><p><b>  case 2:<

54、;/b></p><p><b>  {</b></p><p>  a[0]=led[hour/10];</p><p>  a[1]=led[hour%10];</p><p>  a[2]=led[10];</p><p>  if(S_flag==1)</p><

55、p><b>  {</b></p><p>  a[3]=led[minute/10];</p><p>  a[4]=led[minute%10];</p><p><b>  }</b></p><p><b>  else</b></p><p&

56、gt;<b>  {</b></p><p>  a[3]=led[11];</p><p>  a[4]=led[11];</p><p><b>  }</b></p><p>  a[5]=led[10];</p><p>  a[6]=led[second/10];&

57、lt;/p><p>  a[7]=led[second%10];</p><p><b>  }break;</b></p><p><b>  case 3:</b></p><p><b>  {</b></p><p>  if(S_flag==1)&

58、lt;/p><p><b>  {</b></p><p>  a[0]=led[hour1/10];</p><p>  a[1]=led[hour1%10];</p><p><b>  }</b></p><p><b>  else</b></

59、p><p><b>  {</b></p><p>  a[0]=led[11];</p><p>  a[1]=led[11];</p><p><b>  }</b></p><p>  a[2]=led[10];</p><p>  a[3]=led

60、[minute1/10];</p><p>  a[4]=led[minute1%10];</p><p>  a[5]=led[11];</p><p>  a[6]=led[11];</p><p>  a[7]=led[11];</p><p><b>  }break;</b></p

61、><p><b>  case 4:</b></p><p><b>  {</b></p><p>  a[0]=led[hour1/10];</p><p>  a[1]=led[hour1%10];</p><p>  a[2]=led[10];</p>&l

62、t;p>  if(S_flag==1)</p><p><b>  {</b></p><p>  a[3]=led[minute1/10];</p><p>  a[4]=led[minute1%10];</p><p><b>  }</b></p><p><

63、;b>  else</b></p><p><b>  {</b></p><p>  a[3]=led[11];</p><p>  a[4]=led[11];</p><p><b>  }</b></p><p>  a[5]=led[11];<

64、/p><p>  a[6]=led[11];</p><p>  a[7]=led[11];</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p&g

65、t;  void key_prc()</p><p><b>  {</b></p><p><b>  if(K1==0)</b></p><p><b>  {</b></p><p>  delay(10);//延時(shí)去抖 </p><p>

66、;  if(K1==0) //按K1進(jìn)行模式切換 </p><p><b>  { M++;</b></p><p><b>  if(M==5) </b></p><p><b>  M=0;</b></p><p><b>  }</b>&l

67、t;/p><p>  while(!K1);//等待按鍵釋放</p><p>  } </p><p><b>  if(M!=0)</b></p><p><b>  {</b></p><p><b>  switch(M)</b><

68、;/p><p><b>  {</b></p><p>  case 1: //模式--調(diào)時(shí)</p><p><b>  { </b></p><p><b>  if(K2==0)</b></p><p><b>  {</b>

69、;</p><p>  delay(10);//延時(shí)去抖 </p><p>  if(K2==0) //加鍵按下</p><p><b>  { </b></p><p>  if(hour<23) hour++;</p><p>  else hour=0;<

70、/p><p><b>  } </b></p><p>  while(!K2); //等待按鍵釋放</p><p><b>  }</b></p><p><b>  if(K3==0)</b></p><p><b>  {</b&

71、gt;</p><p>  delay(10); </p><p>  if(K3==0)</p><p><b>  { </b></p><p>  if(hour> 0) hour--;</p><p>  else hour=23;</p><p>

72、;<b>  }</b></p><p>  while(!K3); </p><p><b>  }</b></p><p>  } break; </p><p>  case 2: //模式--調(diào)分</p><p><b>  { &l

73、t;/b></p><p><b>  if(K2==0)</b></p><p><b>  {</b></p><p>  delay(10);</p><p>  if(K2==0) </p><p><b>  {</b&g

74、t;</p><p>  if(minute<59) minute++;</p><p>  else minute=0;</p><p><b>  } </b></p><p>  while(!K2);</p><p><b>  }</b></p>

75、<p><b>  if(K3==0)</b></p><p><b>  {</b></p><p>  delay(10);</p><p>  if(K3==0) </p><p><b>  { </b></p><p>

76、  if(minute>0) minute--;</p><p>  else minute=59;</p><p><b>  } </b></p><p>  while(!K3);</p><p><b>  }</b></p><p><b>  }

77、break;</b></p><p>  case 3: //模式--鬧鐘調(diào)時(shí)</p><p><b>  { </b></p><p><b>  if(K2==0)</b></p><p><b>  {</b></p><

78、p>  delay(10); </p><p>  if(K2==0) </p><p><b>  { </b></p><p>  if(hour1<23)</p><p><b>  hour1++;</b></p><p>  el

79、se hour1=0;</p><p><b>  }</b></p><p>  while(!K2); </p><p><b>  }</b></p><p><b>  if(K3==0)</b></p><p><b>  {<

80、;/b></p><p>  delay(10);</p><p>  if(K3==0) </p><p>  { if(hour1>0)</p><p><b>  hour1--;</b></p><p>  else hour1=23;</p><p

81、><b>  }</b></p><p>  while(!K3); </p><p><b>  }</b></p><p><b>  } break;</b></p><p>  case 4: //模式--鬧鐘調(diào)分 </p><p>

82、;<b>  { </b></p><p><b>  if(K2==0)</b></p><p><b>  {</b></p><p>  delay(10); </p><p>  if(K2==0) </p><p>&

83、lt;b>  { </b></p><p>  if(minute1<59)</p><p>  minute1++;</p><p>  else minute1=0;</p><p><b>  } </b></p><p>  while(!K2);</p

84、><p><b>  }</b></p><p><b>  if(K3==0)</b></p><p><b>  {</b></p><p>  delay(10);//延時(shí)去抖</p><p>  if(K3==0) //減鍵按下<

85、/p><p>  { if(minute1>0)</p><p>  minute1--;</p><p>  else minute1=59;</p><p><b>  }</b></p><p>  while(!K3); </p><p><b> 

86、 } </b></p><p><b>  } break;</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  } </b></p><p>

87、;  void main()</p><p><b>  { </b></p><p><b>  M=0;</b></p><p>  S_flag=0; //閃爍標(biāo)志位</p><p>  TMOD=0x10; //定時(shí)器以方式定時(shí)</p><p><b

88、>  TL1=0x18;</b></p><p>  EA=1; //打開總中斷</p><p>  ET1=1; //允許定時(shí)器中斷</p><p>  TR1=1; //開啟定時(shí)器(開始定時(shí)計(jì)數(shù))</p><p><b>  while(1)</b></p><p&g

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論