版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 單片機(jī)課程設(shè)計(jì)</b></p><p> 課題: 定時(shí)開關(guān)</p><p> 系 別: 電氣與電子工程系 </p><p> 專 業(yè): 電氣工程及其自動(dòng)化 </p><p> 姓 名:
2、</p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)老師: </p><p><b> 一、設(shè)計(jì)目的</b></p><p> 通過課程設(shè)計(jì)的教學(xué)實(shí)踐,將課本所學(xué)應(yīng)用于實(shí)際中縮小理論與實(shí)際的差距進(jìn)一步學(xué)習(xí),掌握單片機(jī)應(yīng)
3、用系統(tǒng)的有關(guān)知識(shí),加深了解單片機(jī)的工作原理。初步掌握簡單的單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)、制作、調(diào)試的方法。使自己的設(shè)計(jì)水平和對(duì)所學(xué)的知識(shí)的應(yīng)用能力以及分析問題、解決問題的能力得到全面提高,同時(shí)培養(yǎng)成良好的科學(xué)態(tài)度和嚴(yán)謹(jǐn)?shù)脑O(shè)計(jì)習(xí)慣。</p><p><b> 二、設(shè)計(jì)要求</b></p><p> 1、設(shè)計(jì)一按鍵k1,使裝置處于運(yùn)行或設(shè)置狀態(tài)。</p><
4、;p> 2、設(shè)置一按鍵k2,能夠?qū)崿F(xiàn)時(shí)間調(diào)節(jié)的增加或減少。</p><p> 3、設(shè)置一按鍵k3,k4,k5,分別用于調(diào)節(jié)時(shí)間的時(shí),分,秒位。</p><p> 4、設(shè)置一復(fù)位鍵能夠?qū)崿F(xiàn)時(shí)間的復(fù)位,即初始狀態(tài)23時(shí)59分59秒。</p><p><b> 三、總體設(shè)計(jì)</b></p><p><b&g
5、t; 3.1總體框圖</b></p><p><b> 圖1系統(tǒng)總體方框圖</b></p><p><b> 3.2工作原理 </b></p><p> 設(shè)計(jì)的電路主要由三模塊構(gòu)成:單片機(jī)控制電路,驅(qū)動(dòng)電路,數(shù)碼管顯示電路。本設(shè)計(jì)采用C語言程序設(shè)計(jì),使單片機(jī)控制數(shù)碼管顯示時(shí)、分、秒,可通過按
6、鍵開關(guān)來進(jìn)行調(diào)節(jié)所要定時(shí)間的時(shí)間。設(shè)計(jì)采用的是時(shí)、分、秒顯示,單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理同時(shí)在數(shù)碼管上顯示。</p><p><b> 3.3主程序流程圖</b></p><p><b> 圖2主程序流程圖</b></p><p><b> 四、各部分電路設(shè)計(jì)</b></p><p
7、> 4.1單片機(jī)最小系統(tǒng)設(shè)計(jì)</p><p> (1) 芯片:AT89C51</p><p> AT89C51是各單片機(jī)中最為典型和最有代表性的一種是一種帶4KB閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的單片機(jī),可穩(wěn)定地工作于5V的電源下。其集成度高、功能強(qiáng)、能耗低、通用性好、價(jià)
8、格便宜。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器。其組合而成的配件產(chǎn)品在日常生活的使用過程中非常方便、簡單且實(shí)用,深受著廣大消費(fèi)者的喜愛。</p><p> AT89C51管腳說明如下: P0口:P0口為三態(tài)雙向口,能帶8個(gè)TTL電路。有兩種功能:
9、第一功能是一個(gè)8位漏極開路型的雙向I/O口,這時(shí)P0口可看做數(shù)據(jù)總線;第二功能是在訪問外部存儲(chǔ)器時(shí),分時(shí)提供低8位地址和8位雙向數(shù)據(jù)總線,這時(shí)先用做地址總線再用做數(shù)據(jù)總線。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P0口內(nèi)部無上拉電阻,作為I/O口使用時(shí),必須外接上拉電阻。 P1口:P1口是一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口(使用前有一個(gè)準(zhǔn)備動(dòng)
10、作),負(fù)載能力為4個(gè)TTL電路。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口,P2口緩沖器可接收、輸出4個(gè)TTL門電流。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p><b> 4.2 時(shí)鐘電路&
11、lt;/b></p><p> 單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種: 內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。 本系統(tǒng)中AT89C51單片機(jī)采用內(nèi)部時(shí)鐘方式。最常用的內(nèi)部時(shí)鐘方式是采用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz~12MHz之間。電容值無嚴(yán)格要求,但電容取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小和振蕩電路起振速度有少許影響,一般可在20pF~100pF之間取值。AT98C51單片機(jī)的時(shí)鐘電路如圖3所示。&
12、lt;/p><p> 單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種: 內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。 本系統(tǒng)中AT89C51單片機(jī)采用內(nèi)部時(shí)鐘方式。最常用的內(nèi)部時(shí)鐘方式是采用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz~12MHz之間。電容值無嚴(yán)格要求,但電容取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小和振蕩電路起振速度有少許影響,一般可在20pF~100pF之間取值。</p><p><b>
13、4.3 復(fù)位電路</b></p><p> 復(fù)位是單片機(jī)的初始化操作。單片機(jī)系統(tǒng)在上電啟動(dòng)運(yùn)行時(shí),都需要先復(fù)位。其作用是使CPU和系統(tǒng)中其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。單片機(jī)的外部復(fù)位電路有上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種。本系統(tǒng)中AT89C51單片機(jī)采用上電加按鍵手動(dòng)復(fù)位電路,如圖4所示。</p><p> 圖3 AT89C51單片機(jī)的復(fù)位電路<
14、;/p><p> 4.4 CD4066模擬開關(guān)設(shè)計(jì)</p><p> CD4066 的引腳功能下圖5所示。</p><p> 圖4CD4066引腳功能圖</p><p> 每個(gè)封裝內(nèi)部有4 個(gè)獨(dú)立的模擬開關(guān),每個(gè)模擬開關(guān)有輸入、輸出、控制三個(gè)端子,其中輸入端和輸出端可互換。當(dāng)控制端加高電平時(shí),開關(guān)導(dǎo)通;當(dāng)控制端加低電平時(shí)開關(guān)截止。模擬開關(guān)
15、導(dǎo)通時(shí),導(dǎo)通電阻為幾十歐姆;模擬開關(guān)截止時(shí),呈現(xiàn)很高的阻抗,可以看成為開路。模擬開關(guān)可傳輸數(shù)字信號(hào)和模擬信號(hào),可傳輸?shù)哪M信號(hào)的上限頻率為40MHz。各開關(guān)間的串?dāng)_很小,典型值為-50dB。</p><p> CD4066是四雙向模擬開關(guān),主要用作模擬或數(shù)字信號(hào)的多路傳輸。CD4066由四個(gè)相互獨(dú)立的雙向開關(guān)組成,每個(gè)開關(guān)有一個(gè)控制信號(hào)端,開關(guān)可以相互獨(dú)立地開斷,互補(bǔ)影響。這種結(jié)構(gòu)消除了開關(guān)晶體管閾值電壓隨輸入
16、信號(hào)的變化,因此在整個(gè)工作信號(hào)范圍內(nèi)導(dǎo)通阻抗比較低。CD4066引出端排列與CC4016一致,但具有比較低的導(dǎo)通阻抗。另外,導(dǎo)通阻抗在整個(gè)輸入信號(hào)范圍內(nèi)基本不變。與單通道開關(guān)相比,具有輸入信號(hào)峰值電壓范圍等于電源電壓以及在輸入信號(hào)范圍內(nèi)導(dǎo)通阻抗比較穩(wěn)定等優(yōu)點(diǎn)。但若應(yīng)用于采保電路,仍推薦CD4016。 當(dāng)模擬開關(guān)的電源電壓采用雙電源時(shí),例如 =﹢5V, =﹣5V(均對(duì)地0V而言),則輸入電壓對(duì)稱于0V的正、負(fù)信號(hào)電壓(﹢5V~﹣5
17、V)均能傳輸。這時(shí)要求控制信號(hào)C=“1”為+5V,C=“0”為-5V,否則只能傳輸正極性的信號(hào)電壓。</p><p><b> 4.5顯示模塊設(shè)計(jì)</b></p><p> 本系統(tǒng)中采用8位LED數(shù)碼管顯示時(shí)、分、秒,用一片74HC573分別對(duì)段碼鎖存和一片74HC138對(duì)位碼進(jìn)行控制,實(shí)現(xiàn)動(dòng)態(tài)掃描方式顯示,節(jié)省單片機(jī)I/O口資源,簡化硬件電路。</p>
18、;<p> (1) LED顯示器</p><p> LED顯示器是由若干個(gè)發(fā)光二極管組成顯示字段的顯示部件,當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆劃發(fā)光,控制不同組合的二極管導(dǎo)通,就能顯示出各種字符。LED顯示器有多種形式,如:“米”字型顯示器,點(diǎn)陣顯示器和七段數(shù)碼顯示器等。在本系統(tǒng)中采用八段數(shù)碼顯示器。</p><p> 因?yàn)楣碴帢O的LED數(shù)碼管它的驅(qū)動(dòng)電流是分開的
19、,在單片機(jī)進(jìn)行動(dòng)態(tài)掃描的時(shí)候不會(huì)影響彼此的電流,故本系統(tǒng)中的8位LED數(shù)碼管均用共陰極的數(shù)碼管。</p><p> (2) 74HC573芯片</p><p> 特點(diǎn):三態(tài)總線驅(qū)動(dòng)輸出,置數(shù)全并行存取,緩沖控制輸入,使能輸入有改善抗擾度的滯后作用。 原理說明:74HC573的八個(gè)鎖存器都是透明的D型鎖存器,當(dāng)使能(G)為高時(shí),Q輸出將隨數(shù)據(jù)(D)輸入而變。當(dāng)使能為低時(shí),
20、輸出將鎖存在已建立的數(shù)據(jù)電平上。輸出控制不影響鎖存器的內(nèi)部工作,即老數(shù)據(jù)可以保持,甚至當(dāng)輸出被關(guān)閉時(shí),新的數(shù)據(jù)也可以置入。這種電路可以驅(qū)動(dòng)大電容或低阻抗負(fù)載,可以直接與系統(tǒng)總線接口并驅(qū)動(dòng)總線,而不需要外接口。特別適用于緩沖寄存器,I/O 通道,雙向總線驅(qū)動(dòng)器和工作寄存器。</p><p> 74HC573引腳說明:</p><p> 圖5 74HC573引腳圖</p>&
21、lt;p><b> (3) 顯示電路</b></p><p> 將兩片74HC573的數(shù)據(jù)輸入端D0 - D7都分別與AT89C51單片機(jī)的P1.0 – P1.7 引腳連接,輸出端與數(shù)碼管的段端,位端相連。實(shí)現(xiàn)段選和位選。兩片74HC573的鎖存使能端LE與OE分別接VCC和GND,74HC573的輸出端接至數(shù)碼管,如圖7所示。</p><p><b&
22、gt; 圖6 顯示電路</b></p><p><b> 1.4調(diào)時(shí)模塊設(shè)計(jì)</b></p><p> 當(dāng)k1接地時(shí),處于設(shè)置時(shí)間狀態(tài)。當(dāng)k1高電平時(shí),處于工作狀態(tài)。Ke2高電平時(shí)用于調(diào)節(jié)時(shí)間的增加。處于低電平時(shí)用于調(diào)節(jié)時(shí)間的減少。K3,k4,k5,分別用于調(diào)節(jié)時(shí)間的時(shí),分,秒位。如圖8</p><p><b>
23、圖7調(diào)時(shí)模塊設(shè)計(jì)</b></p><p><b> 五、整體電路圖</b></p><p><b> 圖九整體電路圖</b></p><p><b> 六、仿真及調(diào)試</b></p><p> ?。?) KEIL工程的建立</p><p&
24、gt; Keil單片機(jī)模擬調(diào)試軟件對(duì)MCS51單片機(jī)應(yīng)用系統(tǒng)的軟件開發(fā)過程采用工程(Project)管理。工程保存著程序編輯的信息和程序調(diào)試的環(huán)境。在開始編寫程序之前首先應(yīng)該建立一個(gè)工程。新建一個(gè)工程之前通常還需要建立一個(gè)文件夾,后面產(chǎn)生的工程文件和源程序文件等都將存儲(chǔ)在這個(gè)文件夾之中。在如圖所示的集成開發(fā)環(huán)境的窗口中選擇Project→New Project命令將打開建立新工程的對(duì)話框,如圖6-1所示。</p><
25、;p><b> 圖6-1</b></p><p> 在“保存在”下拉列表框中選擇新建工程將要存儲(chǔ)的文件夾名,在“文件名”文本框中輸入工程的名稱,注意對(duì)于工程不要添加擴(kuò)展名,單擊“保存”按鈕即可完成一個(gè)工程的創(chuàng)建。單擊“保存”按鈕在完成一個(gè)工程創(chuàng)建的同時(shí)也打開了單片機(jī)芯片型號(hào)選擇對(duì)話框。如圖6-2所示的對(duì)話框已經(jīng)完成了芯片型號(hào)的選擇。</p><p> 圖6
26、-2 芯片的選擇</p><p><b> ?。?)源文件的輸入</b></p><p> Keil單片機(jī)模擬調(diào)試軟件內(nèi)集成了一個(gè)文本編輯器,用該文本編輯器可以編輯源程序。如圖6-3所示。在圖6-3中已經(jīng)完成了匯編語言源文件的輸入,并且完成了源程序向當(dāng)前工程的添加。如圖6-3所示:</p><p> 圖6-3 源文件輸入</p&g
27、t;<p> 完成c語言源文件的輸入后,在集成開發(fā)環(huán)境中選擇File→Save As命令可以完成文件的第一次存儲(chǔ)。注意,c源文件的擴(kuò)展名應(yīng)該是.c,它應(yīng)該與工程文件存儲(chǔ)在同一文件夾內(nèi)。在完成文件的第一次存儲(chǔ)后,當(dāng)對(duì)c語言源文件又進(jìn)行了修改,再次存儲(chǔ)文件時(shí)則應(yīng)該選擇File→Save命令、單擊保存工具按鈕或者按快捷鍵Ctrl+S實(shí)現(xiàn)文件的保存。</p><p> 首先點(diǎn)擊左邊的Project窗口的
28、Target1,然后使用菜單“Project中的Option for Target1”即出現(xiàn)對(duì)工程設(shè)置的對(duì)話框,如圖6-4所示:</p><p> 圖6-4 調(diào)試對(duì)話框的設(shè)置</p><p> 對(duì)上圖進(jìn)行相應(yīng)的設(shè)置,用來選擇最終的目標(biāo)文件所在的文件夾,默認(rèn)是與工程文件在同一個(gè)文件夾中。在設(shè)置好工程后就可以進(jìn)行編譯、連接。選擇Project中的Build target,對(duì)當(dāng)前工程進(jìn)行連接
29、,編譯過程中會(huì)出現(xiàn)很多語法錯(cuò)誤,會(huì)有錯(cuò)誤報(bào)告出現(xiàn),雙擊該行,可以定位到出錯(cuò)的位置,對(duì)源程序反復(fù)新蓋之后,最終會(huì)得到如圖所示的結(jié)果,提示獲得了名為Hex的文件,該文件即可被編程器讀入寫到芯片中</p><p> 圖6-5 調(diào)試后的結(jié)果</p><p> 寫到芯片中的程序,可以用Proteus中進(jìn)行仿真,仿真結(jié)果如下圖6-6所示:</p><p><b>
30、 七、設(shè)計(jì)總結(jié)</b></p><p> 經(jīng)過將近一周的單片機(jī)課程設(shè)計(jì),我有了很多的體會(huì)和感想。通過本次對(duì)定時(shí)開關(guān)的設(shè)計(jì),我對(duì)單片機(jī)這門課程有了更進(jìn)一步的了解。無論是在其硬件連接方面還是在軟件編程方面,都取得了新的收獲。</p><p> 本次課程設(shè)計(jì)采用了AT89S51單片機(jī)芯片,通過本次實(shí)驗(yàn)及查閱相關(guān)資料,我們對(duì)其有了一定的認(rèn)識(shí),在本課題設(shè)計(jì)報(bào)告的硬件介紹部分
31、也對(duì)其作了詳細(xì)的論述。S51在C51的基礎(chǔ)上增加了許多新的功能,使其功能更為完善,應(yīng)用領(lǐng)域也更為廣泛。另外,在對(duì)單片機(jī)編程方面,我們又掌握了一些新的編程思想,使得程序更為簡練、易懂,而且更為嚴(yán)謹(jǐn),程序執(zhí)行的穩(wěn)定性得到了提高,以前在學(xué)單片機(jī)這門課程時(shí)只是對(duì)其理論知識(shí)有了初步的了解。通過本次實(shí)驗(yàn),我們對(duì)它的工作原理徹底理解了,對(duì)其啟動(dòng)設(shè)置、轉(zhuǎn)換結(jié)束判斷以及輸出控制等都基本掌握。電路連接方面,我們對(duì)其與單片機(jī)的連接也有了更為直觀的認(rèn)識(shí),通過實(shí)
32、驗(yàn)的摸索以及必要的理論知識(shí),我們準(zhǔn)確的實(shí)現(xiàn)了它于單片機(jī)的互連。設(shè)計(jì)過程中,我遇到過許多次失敗的考驗(yàn),比如,自己對(duì)單片機(jī)編程時(shí)遇到了很多阻礙,想要放棄,然而,就在要放棄的那一刻,我明白了,原來結(jié)果并不那么重要,我們更應(yīng)該注重的是這一整個(gè)過程。于是,我堅(jiān)持了下來。我非常感激同組隊(duì)員對(duì)我的的指導(dǎo)和幫助,沒有他們的幫助,我還會(huì)做很多的無用功。 通過這次設(shè)計(jì),這也對(duì)我們今后的工作敲響了警鐘:要認(rèn)真的看待每個(gè)需要處理的問題,不要認(rèn)為事<
33、;/p><p><b> 八、參考文獻(xiàn)</b></p><p> [1]《單片機(jī)原理及應(yīng)用》,張毅剛、 彭喜元, 高等教育出版社2011.12</p><p> [2《]單片機(jī)應(yīng)用技術(shù)指導(dǎo)書》,陸劍,河南工業(yè)職業(yè)技術(shù)學(xué)院2005.12.[3《]單片機(jī)系統(tǒng)設(shè)計(jì)與實(shí)》,汪道輝,電子工業(yè)出版社 2007.6</p><p>
34、; [4《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》,辛友順、胡永生,福建科學(xué)技術(shù)出版社2010.6</p><p> [5]《單片機(jī)開發(fā)與實(shí)例》, 黃慶華、張永格,電子工業(yè)出版社2008.9</p><p> [6]《單片機(jī)原理與應(yīng)用》(C語言版) 閆玉德、俞紅,機(jī)械工業(yè)出版社2005.3</p><p> [7] 《單片機(jī)應(yīng)用教程》,清李葉紫、王喜斌、胡輝,青華大學(xué)出
35、版社.2008.6.</p><p> [8]《單片機(jī)應(yīng)用技術(shù)》,劉守義、王靜霞,西安電子科技大學(xué)出版社,2002.6</p><p><b> 附錄1</b></p><p><b> 九、程序</b></p><p> #include<reg51.h></p>
36、<p> #define DataPort P1</p><p> sbit LED=P0^0;</p><p> char hour=23,minute=59,second=59;</p><p> unsigned char i=0;</p><p> unsigned char TempData[8];</p
37、><p> sbit wei=P2^0;</p><p> sbit duan=P2^1;</p><p> sbit KEY1=P2^2;</p><p> sbit KEY2=P2^3;</p><p> sbit KEY3=P2^4;</p><p> sbit KEY4=P2^5
38、;</p><p> sbit KEY5=P2^6;</p><p> sbit motor=P2^7;</p><p> unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p> unsigned char co
39、de weima[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};</p><p> void display(unsigned char a,unsigned char b);</p><p> void delay(unsigned char num);</p><p> void KeyScan();</p&
40、gt;<p> void DataDeal();</p><p> void Tiner0_Init()</p><p><b> {</b></p><p> TMOD=0x01;</p><p> TH0=(65536-50000)/256;</p><p> TL0
41、=(65536-50000)%256;</p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><
42、;p> void main()</p><p><b> {</b></p><p> Tiner0_Init();</p><p><b> motor=0;</b></p><p> TempData[0]=duanma[second%10];</p><p&
43、gt; TempData[1]=duanma[second/10];</p><p> TempData[2]=0x40;</p><p> TempData[3]=duanma[minute%10];</p><p> TempData[4]=duanma[minute/10];</p><p> TempData[5]=0x40
44、;</p><p> TempData[6]=duanma[hour%10];</p><p> TempData[7]=duanma[hour/10];</p><p> display(0,8);</p><p><b> while(1)</b></p><p><b>
45、 {</b></p><p> if(KEY1==1)</p><p><b> {</b></p><p> display(0,8);</p><p> if((second==0)&&(minute==0)&&(hour==0))</p><
46、p><b> {</b></p><p> TempData[0]=duanma[0];</p><p> TempData[1]=duanma[0];</p><p> TempData[2]=0x40;</p><p> TempData[3]=duanma[0];</p><p&
47、gt; TempData[4]=duanma[0];</p><p> TempData[5]=0x40;</p><p> TempData[6]=duanma[0];</p><p> TempData[7]=duanma[0];</p><p><b> motor=0;</b></p>&
48、lt;p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> motor=1;</b></p><p><b> }</b></p
49、><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> LED=0;</b></p><p> KeyScan();</p>&
50、lt;p> display(0,8);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void Tiner0_isr() interrupt 1</p><
51、p><b> {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p> if(KEY1==1)</p><p><b> {</b></p><p><b
52、> i++;</b></p><p> if((second!=0)||(minute!=0)||(hour!=0))</p><p><b> {</b></p><p><b> if(i==20)</b></p><p><b> {</b>&
53、lt;/p><p><b> i=0;</b></p><p><b> second--;</b></p><p> if(second<0)</p><p><b> {</b></p><p> second=59;</p>
54、;<p><b> minute--;</b></p><p> if(minute<0)</p><p><b> {</b></p><p> minute=59;</p><p><b> hour--;</b></p>&l
55、t;p><b> }</b></p><p><b> }</b></p><p> DataDeal();</p><p><b> }</b></p><p><b> }</b></p><p><b&
56、gt; }</b></p><p><b> }</b></p><p> void DataDeal()</p><p><b> {</b></p><p> TempData[0]=duanma[second%10];</p><p> Temp
57、Data[1]=duanma[second/10];</p><p> TempData[2]=0x40;</p><p> TempData[3]=0;</p><p> TempData[4]=duanma[minute/10];</p><p> TempData[5]=0x40;</p><p> T
58、empData[6]=duanma[hour%10];</p><p> TempData[7]=duanma[hour/10];</p><p><b> }</b></p><p> void display(unsigned char a,unsigned char b)</p><p><b>
59、 {</b></p><p> static unsigned char c=0;</p><p> DataPort=0;</p><p><b> duan=1;</b></p><p><b> duan=0;</b></p><p> DataP
60、ort=weima[c+a];</p><p><b> wei=1;</b></p><p><b> wei=0;</b></p><p> DataPort=TempData[c];</p><p><b> duan=1;</b></p><
61、p><b> duan=0;</b></p><p><b> c++;</b></p><p><b> if(c==b)</b></p><p><b> c=0;</b></p><p><b> }</b>&l
62、t;/p><p> void delay(unsigned char num)</p><p><b> {</b></p><p> while(num--);</p><p><b> }</b></p><p> void KeyScan()</p>
63、<p><b> {</b></p><p> if(KEY1==0)</p><p><b> {</b></p><p> if((KEY3==0)||(KEY4==0)||(KEY5==0))</p><p><b> {</b></p>
64、<p> delay(30);</p><p> if((KEY3==0)||(KEY4==0)||(KEY5==0))</p><p><b> {</b></p><p> if(KEY2==1)</p><p><b> {</b></p>&l
65、t;p> if(KEY3==0)</p><p><b> {</b></p><p> while(!KEY3);</p><p> if(hour<24)</p><p><b> {</b></p><p><b> hour++;&l
66、t;/b></p><p> if(hour==24)</p><p><b> {</b></p><p><b> hour=0;</b></p><p><b> }</b></p><p><b> }</b&g
67、t;</p><p><b> }</b></p><p> if(KEY4==0)</p><p><b> {</b></p><p> while(!KEY4);</p><p> if(minute<60)</p><p>&l
68、t;b> {</b></p><p><b> minute++;</b></p><p> if(minute==60)</p><p><b> {</b></p><p><b> minute=0;</b></p><p&
69、gt;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(KEY5==0)</p><p><b> {</b></p><p> while(!K
70、EY5);</p><p> if(second<60)</p><p><b> {</b></p><p><b> second++;</b></p><p> if(second==60)</p><p><b> {</b>&l
71、t;/p><p><b> second=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
72、t;</p><p><b> else</b></p><p><b> {</b></p><p> if(KEY3==0)</p><p><b> {</b></p><p> while(!KEY3);</p><
73、p> if(hour>0)</p><p><b> {</b></p><p><b> hour--;</b></p><p> if(hour==0)</p><p><b> {</b></p><p><b>
74、 hour=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(KEY4==0)</p><p><b> {</
75、b></p><p> while(!KEY4);</p><p> if(minute>0)</p><p><b> {</b></p><p><b> minute--;</b></p><p> if(minute==0)</p>
76、<p><b> {</b></p><p><b> minute=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&
77、gt;<p> if(KEY5==0)</p><p><b> {</b></p><p> while(!KEY5);</p><p> if(second>0)</p><p><b> {</b></p><p><b> s
78、econd--;</b></p><p> if(second==0)</p><p><b> {</b></p><p><b> second=0;</b></p><p><b> }</b></p><p><b>
79、; }</b></p><p><b> }</b></p><p><b> }</b></p><p> DataDeal();</p><p><b> }</b></p><p><b> }</b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子課程設(shè)計(jì)報(bào)告--數(shù)字式定時(shí)開關(guān)
- 數(shù)字式定時(shí)開關(guān)數(shù)電課程設(shè)計(jì)
- 數(shù)字電路課程設(shè)計(jì)數(shù)字定時(shí)開關(guān)
- 數(shù)字電路課程設(shè)計(jì)--實(shí)用數(shù)字式定時(shí)開關(guān)設(shè)計(jì)
- 定時(shí)開關(guān)控制器的制作
- 定時(shí)開關(guān)控制器的制作
- 定時(shí)開關(guān)插座畢業(yè)論文
- 數(shù)電課設(shè)數(shù)字式定時(shí)開關(guān)
- 課程設(shè)計(jì)-定時(shí)排氣扇設(shè)計(jì)
- 定時(shí)與計(jì)數(shù)演示燈課程設(shè)計(jì)
- 30s定時(shí)電路課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--定時(shí)插座
- 音樂倒數(shù)定時(shí)器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)—定時(shí)鬧鐘設(shè)計(jì)
- 單片機(jī)定時(shí)鬧鐘課程設(shè)計(jì)
- 自動(dòng)定時(shí)排氣扇 課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)—定時(shí)鬧鐘設(shè)計(jì)
- 課程設(shè)計(jì)--可預(yù)置定時(shí)電路設(shè)計(jì)
- 課程設(shè)計(jì)-紅外遙控開關(guān)
- 單鍵觸摸開關(guān)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論