多功能電腦時(shí)鐘設(shè)計(jì)報(bào)告含正確C語(yǔ)言程序96分_第1頁(yè)
多功能電腦時(shí)鐘設(shè)計(jì)報(bào)告含正確C語(yǔ)言程序96分_第2頁(yè)
多功能電腦時(shí)鐘設(shè)計(jì)報(bào)告含正確C語(yǔ)言程序96分_第3頁(yè)
多功能電腦時(shí)鐘設(shè)計(jì)報(bào)告含正確C語(yǔ)言程序96分_第4頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

1、精品多功能電腦時(shí)鐘設(shè)計(jì)報(bào)告一、實(shí)訓(xùn)目的意義及任務(wù)要求1.1 目的意義在如今,單片機(jī)的使用領(lǐng)域已十分廣泛,它在智能儀器儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等均有很廣泛的應(yīng)用。單片機(jī)又稱(chēng)單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。單片機(jī)作為一門(mén)專(zhuān)業(yè)學(xué)科,對(duì)學(xué)生的要求也較高,要求對(duì) C 語(yǔ)言有較好的掌握,還要與單片機(jī)的硬件工作原理相結(jié)合,也是理論與實(shí)踐相結(jié)合的一大體現(xiàn)。多功能電腦時(shí)鐘有效地檢驗(yàn)了單片機(jī)中對(duì)數(shù)碼管,蜂鳴器, LED 燈的控制,同時(shí)提高了學(xué)生的工程系統(tǒng)設(shè)計(jì)能力。通過(guò)此次單片機(jī)系統(tǒng)綜合訓(xùn)練,不僅要讓學(xué)生認(rèn)識(shí)了解它,而且增強(qiáng)學(xué)生學(xué)科積極性。2.

2、2 任務(wù)要求通過(guò)對(duì)硬件和軟件的設(shè)計(jì)要求設(shè)計(jì)的電腦時(shí)鐘完成以下功能:1.基本功能實(shí)時(shí)顯示當(dāng)前時(shí)間( 4 位數(shù)碼管顯示, 2 位顯示小時(shí), 2 位顯示分鐘,第 2位小數(shù)點(diǎn) 0.5 秒亮, 0.5 秒滅)。能用一按鍵依次切換顯示年及月日。能修改當(dāng)前時(shí)鐘。具有秒表功能,顯示秒和百分秒。welcome精品2. 擴(kuò)展功能單片機(jī)與 PC 機(jī)的通訊(可選);可設(shè)定初值的倒計(jì)時(shí)功能(可選)鬧鐘及報(bào)時(shí)功能(可選) ;顯示星期(可選)。3. 設(shè)計(jì)參數(shù)顯示時(shí)間時(shí), 4 位數(shù)碼管顯示, 2 位顯示小時(shí), 2 位顯示分鐘,第2 位小數(shù)點(diǎn) 0.5 秒亮, 0.5 秒滅;蜂鳴器報(bào)時(shí)時(shí)間以每生學(xué)號(hào)最末位確定。二.實(shí)習(xí)任務(wù)的方案

3、2.1任務(wù)進(jìn)度布置任務(wù)、分析任務(wù)、學(xué)習(xí)單片機(jī)的C51 功能程序設(shè)計(jì)( 3 天)方案設(shè)計(jì)、使用Protel 設(shè)計(jì)和繪制硬件原理圖(1.5 天)程序設(shè)計(jì)和調(diào)試( 4.5 天)設(shè)計(jì)驗(yàn)收、撰寫(xiě)報(bào)告(1 天)2.2系統(tǒng)分析根據(jù)系統(tǒng)功能要求,可將系統(tǒng)組成結(jié)構(gòu)分成四大部分: DS1302 時(shí)鐘芯片讀數(shù)據(jù)寫(xiě)數(shù)據(jù)模塊;數(shù)碼管顯示模塊;按鍵設(shè)置調(diào)節(jié)時(shí)間模塊;秒表功能模塊。硬件電路接線圖如附錄一,本系統(tǒng)采用 DS1302 時(shí)鐘芯片,四位數(shù)碼管用來(lái)welcome精品顯示年月日,星期,時(shí)分,以及秒和百分秒。其中年月日,時(shí)分秒和星期采用DS1302 的數(shù)據(jù)顯示,秒表采用單片機(jī)定時(shí)中斷實(shí)現(xiàn)。本系統(tǒng)共用到四個(gè)按鍵,且均為獨(dú)立

4、對(duì)地按鍵,分別用于顯示切換,修改切換,修改加一,修改減一,秒表啟動(dòng)暫停和數(shù)據(jù)清零。2.3器件選擇選用 STC89C51 芯片,頻率為 11.0592MHz,由于系統(tǒng)要求顯示年月日小時(shí)和分鐘,采用四位LED 數(shù)碼管顯示即可。按鍵是用來(lái)設(shè)置時(shí)間或鬧鐘時(shí)間或啟動(dòng)秒表等功能的,設(shè)置三個(gè)按鍵:顯示切換模式鍵( key3 )、修改數(shù)據(jù)鍵( key0 )、加一鍵 (key1) 、減一鍵( key2 )。常見(jiàn)的 LED 顯示具有清晰明亮的特點(diǎn)。 是顯示接口也是絕大多數(shù)單片機(jī)應(yīng)用系統(tǒng)必備的部件之一。發(fā)光二極管組成的顯示器是單片機(jī)應(yīng)用產(chǎn)品中最常用的廉價(jià)輸出設(shè)備。它由若干個(gè)發(fā)光二極管按一定的規(guī)律排列而成。當(dāng)某一個(gè)發(fā)

5、光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一筆畫(huà)被點(diǎn)亮,控制不同組合的二極管導(dǎo)通,就能顯出各種字符。常用的 7 段顯示器的結(jié)構(gòu)如圖所示,發(fā)光二極管的陽(yáng)極連在一起的稱(chēng)為共陽(yáng)極顯示器,陰極連在一起的成為共陰顯示器。1 位顯示器由 8 個(gè)發(fā)光二極管組成,其中 7 個(gè)發(fā)光二極管 ag 控制 7 個(gè)筆畫(huà)的亮或暗,另一個(gè)控制一個(gè)小數(shù)點(diǎn)的亮和暗,這種筆畫(huà)的七段顯示器能顯示的字符較少,字符的形狀有些失真,但失控簡(jiǎn)單,使用方便。welcome精品三、系統(tǒng)硬件設(shè)計(jì)3.1單片機(jī)的最小系統(tǒng)單片機(jī)功能系統(tǒng)圖見(jiàn)附錄1,。單片機(jī)最小系統(tǒng)由STC89C51 單片機(jī)、復(fù)位電路、晶振電路組成。如圖3.1 所示welcome精品圖 3.1 單

6、片機(jī)最小系統(tǒng)圖3.2數(shù)碼管、獨(dú)立按鍵及DS1302時(shí)鐘芯片電路的設(shè)計(jì)在電子鐘的輸入部分, 設(shè)置相應(yīng)的置數(shù)功能, 通過(guò)外部設(shè)備的輸入, 如按鍵,實(shí)現(xiàn)時(shí)間的切換。除此之外,調(diào)整日期等時(shí)間也需要按鍵進(jìn)行輸入。在選用輸入端口時(shí),將 P0 引腳與按鍵相連進(jìn)行輸入。K1、 K2、 K3、K4 分別表示設(shè)置切換鍵、數(shù)值加一鍵、數(shù)值減一、顯示月和日鍵。系統(tǒng)仿真電路圖welcome精品系統(tǒng)仿真電路圖DS1302 與單片機(jī)連線圖3.3其他附屬電路設(shè)計(jì)按鍵設(shè)計(jì),電頻轉(zhuǎn)換芯片的硬件電路如下圖所示:welcome精品RS232 串口通信及電源電路等設(shè)計(jì),如圖3.3 所示圖 3.3 附屬電路設(shè)計(jì)圖welcome精品四、軟

7、件設(shè)計(jì)4.1主程序設(shè)計(jì)使用定時(shí)器 0 來(lái)定時(shí),定時(shí) 5ms ,運(yùn)用定時(shí)器的中斷來(lái)實(shí)現(xiàn)這些功能,顯示是用的數(shù)碼管的動(dòng)態(tài)掃描,每5ms 掃描一位數(shù)碼管, 20ms 循環(huán)一次。設(shè)置一些標(biāo)志位,實(shí)時(shí)時(shí)間顯示的標(biāo)志位,星期顯示的標(biāo)志位,鬧鈴時(shí)間顯示的標(biāo)志位,秒表顯示的標(biāo)志位,在不同的模式下,我們要使該模式下的標(biāo)志位有效,從而進(jìn)行此模式的顯示,通過(guò)按鍵進(jìn)行不同的操作。每個(gè)標(biāo)志位有效時(shí),數(shù)碼管顯示的內(nèi)容就不一樣。鬧鐘的實(shí)現(xiàn)是用一個(gè)子函數(shù), 每 5ms 調(diào)用一次函數(shù), 并把北京時(shí)間與設(shè)定的鬧鈴時(shí)間比較,如果相等就使蜂鳴器有效。鬧鈴時(shí)間的長(zhǎng)短可以用一個(gè)變量對(duì)秒計(jì)數(shù),當(dāng)計(jì)數(shù)值小于我們?cè)O(shè)定的值時(shí),就是蜂鳴器有效,當(dāng)

8、大于等于設(shè)定的值時(shí)就關(guān)閉蜂鳴器。整點(diǎn)報(bào)時(shí)或半點(diǎn)報(bào)時(shí)很好實(shí)現(xiàn),在中斷函數(shù)里,當(dāng)分鐘等于60 時(shí),蜂鳴器對(duì)應(yīng)鳴叫相應(yīng)點(diǎn)數(shù),并且小時(shí)要自增1,當(dāng)分鐘等于30 時(shí),蜂鳴器鳴一次,分鐘自增 1 ,要使蜂鳴器有效,可用一個(gè)變量對(duì)秒計(jì)數(shù),當(dāng)秒等于我們?cè)O(shè)定的值時(shí),就關(guān)閉蜂鳴器。4.2系統(tǒng)操作功能設(shè)計(jì)根據(jù)系統(tǒng)功能描述,可以分為:北京時(shí)間功能、整點(diǎn)報(bào)時(shí)、鬧鈴功能、日期顯示及秒表功能功能。我們通過(guò)對(duì) K_Mode鍵按下的次數(shù)計(jì)數(shù),用Mode計(jì)數(shù), Mode的次數(shù)就welcome精品代表了不同的模式,每個(gè)模式都有與之相對(duì)應(yīng)的指示燈,每個(gè)模式的功能如下:Mode0:按鍵每按下時(shí)顯示北京時(shí)間模式,此時(shí),四個(gè)指示燈全滅,顯

9、示格式為:小時(shí) .分鐘(如: 07.35 ,為 7 點(diǎn) 35 分),按 K_UP 或者 K_DN 鍵對(duì)系統(tǒng)沒(méi)影響,每到整點(diǎn)或半點(diǎn)時(shí)時(shí), 要進(jìn)行相應(yīng)點(diǎn)數(shù)的間隔蜂鳴報(bào)時(shí) (半點(diǎn)短鳴一次)。Mode1:按鍵按下一次時(shí),進(jìn)入修改北京時(shí)間的小時(shí)模式,四個(gè)指示燈依次為“亮滅滅滅”,按 K_UP 或者 K_DN 鍵對(duì)小時(shí)進(jìn)行修改。Mode2:按鍵按下兩次時(shí),進(jìn)入修改北京時(shí)間的分鐘模式,四個(gè)指示燈依次為“滅亮滅滅”,按 K_UP 或者 K_DN 鍵對(duì)分鐘進(jìn)行修改。Mode3:按鍵按下三次時(shí),進(jìn)入修改鬧鈴時(shí)間的小時(shí)模式,四個(gè)指示燈依次為“滅滅亮滅”,按 K_UP 或者 K_DN 鍵對(duì)鬧鈴小時(shí)進(jìn)行修改。Mode4

10、:按鍵按下四次時(shí),進(jìn)入修改鬧鈴時(shí)間的分鐘模式,四個(gè)指示燈依次為滅滅滅亮,按K_UP 或者 K_DN 鍵對(duì)鬧鈴分鐘進(jìn)行修改。Mode5:按鍵按下五次時(shí),進(jìn)入年顯示模式,四個(gè)指示燈依次為“亮亮滅滅”,顯示格式為:四位年(如20.12 為當(dāng)前年份為公元2012 年) ,在此種模式下,按 K_UP 或者 K_DN 鍵對(duì)系統(tǒng)沒(méi)影響。Mode6:按鍵按下六次時(shí),進(jìn)入月日顯示模式,四個(gè)指示燈依次為“亮滅亮滅”,顯示格式為:月日(如07.05 為當(dāng)前日期為7 月 5 日) ,在此種模式下 ,按 K_UP 或者 K_DN 鍵對(duì)系統(tǒng)沒(méi)影響。Mode 7 :按鍵按下七次時(shí), 進(jìn)入秒表模式, 四個(gè)指示燈依次為 “亮滅

11、滅亮”,顯示格式為:秒百分秒(如05.90 為當(dāng)前秒表計(jì)時(shí)到5 秒 900 毫秒) ,在此種模式下 ,K_UP 鍵設(shè)為用來(lái)啟動(dòng) / 暫停秒表、 K_DN 鍵設(shè)為用來(lái)對(duì)秒表進(jìn)行清零。Mode8:按鍵按下八次時(shí),進(jìn)入鬧鐘選擇模式,四個(gè)指示燈依次為“亮亮welcome精品亮滅”,顯示格式為: CL01/00 ,"CL.00" 表示貪睡鬧鈴功能關(guān)閉, "CL.01" 表示貪睡鬧鈴功能開(kāi)啟, 按 UP 或 DN 鍵可在 00 或 01 間循環(huán)選擇;在貪睡鬧鈴功能關(guān)閉時(shí),可按任意鍵停止當(dāng)前鬧鐘,或不按鍵,則鬧鐘1 分鐘,以后再不響。在貪睡鬧鈴功能開(kāi)啟時(shí),如按下除UP

12、 鍵外的任意鍵,停止當(dāng)前鬧鐘,如不按鍵,則鬧鐘 1 分鐘;當(dāng)過(guò) 5 分鐘后,鬧鐘又會(huì)重新響起, 如此循環(huán),只有按下 UP 鍵時(shí),才能停止鬧鐘以后再不響。 在此種模式下 ,K_UP 鍵設(shè)為用來(lái)啟動(dòng) / 暫停秒表、K_DN鍵設(shè)為用來(lái)對(duì)秒表進(jìn)行清零。Mode 9 :按鍵按下九次時(shí), 進(jìn)入整點(diǎn)報(bào)時(shí)選擇模式, 四個(gè)指示燈依次為 “亮亮亮亮”,顯示格式為: BS01/00 ,"BS.00" 表示整點(diǎn)報(bào)時(shí)功能關(guān)閉, 01 表示報(bào)時(shí)功能開(kāi)啟,按 UP 或 DN 鍵可在 00 或 01 間循環(huán)選擇。4.3 主程序 void main()圖 4.1 主程序功能流程圖welcome精品4.4 主

13、程序設(shè)計(jì)主程序采用定時(shí)器0 對(duì)程序進(jìn)行掃描執(zhí)行。分別執(zhí)行 DS1302 芯片初始化子程序, 寫(xiě)數(shù)據(jù)子程序,將最初的值寫(xiě)入芯片中, 采用 while 循環(huán)循環(huán)執(zhí)行鍵盤(pán)掃描子程序。main()TMOD=0x01;/ 使用模式 1,16 位定時(shí)器TH0=(65536-10000)/256;/ 給定初值TL0=(65536-10000)%256;EA=1;/ 總中斷打開(kāi)ET0=1;/ 定時(shí)器中斷打開(kāi)TR0=1;/ 定時(shí)器開(kāi)關(guān)打開(kāi)Ds1302_Init();Ds1302_Write_Time();while(1)keyscan();if(Btread=0) Btread=1;Ds1302_Read_Ti

14、me();welcome精品display();4.5 DS1302子程序設(shè)計(jì)此子程序分為初始化程序,讀數(shù)據(jù)程序,寫(xiě)數(shù)據(jù)程序,一些數(shù)據(jù)程序?yàn)槔?;void Ds1302_Write_Byte(unsigned char addr, unsigned char d)CE=0;_nop_();SCLK=0; _nop_();welcome精品CE=1; _nop_();Write1302(addr);Write1302(d);CE=0; _nop_();IO=1;SCLK=1;welcome精品4.6 時(shí)間調(diào)整子程序welcome精品時(shí)間調(diào)整子程序采用的是對(duì)key1 按的次數(shù)不同來(lái)進(jìn)行對(duì)年月日時(shí)分及

15、星期的設(shè)置。void zongshi(void)if(!key)if(btx=0)if(!key)btx=1;k+; elsebtx=0; k=1時(shí),調(diào)整年份, key1 為加 ,key2 為減void keyscan()k=2 時(shí),調(diào)整月份, key1 為加 ,key2 為減k=3 時(shí),調(diào)整日份, key1 為加 ,key2為減display();k=4 時(shí),調(diào)整星期, key1 為加 ,key2為減if(!key)if(btx=0)welcome精品if(!key)btx=1;k+;4.7按鍵切換子程序void tiaoshidisplay()if(z=15)z=0;switch(k)ca

16、se 1:bt1=bt1;break;/ 年case 2:bt2=bt2;bt1=0;break;/ 月case 3:bt3=bt3;bt1=0;break;/ 日case 4:bt1=bt1;bt3=0;break;/ 周case 5:bt2=bt2;bt1=0;break;/ 時(shí)case 6:bt3=bt3;bt2=0;break;/ 分welcome精品default:bt3=0;break;welcome精品五、調(diào)試及性能分析5.1 軟件測(cè)試電子成年歷是多功能的數(shù)字型,可以看當(dāng)前日期(陰、陽(yáng)歷),時(shí)間,還有溫度的儀器。電子成年歷功能很多,所以對(duì)于它的程序也較為復(fù)雜,所以在編寫(xiě)程序和調(diào)試

17、時(shí)出現(xiàn)了相對(duì)較多的問(wèn)題。最后經(jīng)過(guò)多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過(guò)程中主要遇到的問(wèn)題如下:1. 時(shí)鐘不準(zhǔn),走一段時(shí)間后誤差較大原因:該問(wèn)題主要是晶振芯片的頻率不真確引起的。晶振的頻率理論值為12MHZ, 由于存在誤差,導(dǎo)致了單片機(jī)時(shí)間走一段時(shí)間后便出現(xiàn)了誤差。2燒入程序后, LED 數(shù)碼管顯示閃動(dòng) ,而且亮度不均勻。解決:首先對(duì)調(diào)用的延時(shí)進(jìn)行逐漸修改,可以解決顯示閃動(dòng)問(wèn)題。其次,由于本作品使作動(dòng)態(tài)掃描方式顯示的數(shù)字,動(dòng)態(tài)掃描很快,人的肉眼是無(wú)法看出,但是調(diào)用的顯示程序時(shí),如果不在反回時(shí)屏蔽掉最后的附值,則會(huì)出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解

18、決了此問(wèn)題。3修改時(shí)間、日期時(shí)沒(méi)有農(nóng)歷沒(méi)有自動(dòng)對(duì)應(yīng)上。解決:把不相關(guān)的程序暫時(shí)屏蔽,地農(nóng)歷的子程序獨(dú)立調(diào)試,發(fā)現(xiàn)在調(diào)用農(nóng)歷自動(dòng)更新時(shí),對(duì)十進(jìn)制和十六進(jìn)制處理不好,所以會(huì)造成錯(cuò)亂。最后把相應(yīng)的十進(jìn)制進(jìn)行修改,使得可以與十六進(jìn)制對(duì)應(yīng),最后解決了此問(wèn)題.welcome精品5.2 測(cè)試結(jié)果分析與結(jié)論(1 )在測(cè)試中遇到發(fā)光二極管、LED 數(shù)碼管為不顯示時(shí) ,首先使用試測(cè)儀對(duì)電路進(jìn)行測(cè)試 ,觀察是否存在漏焊 ,虛焊 ,或者元件損壞 .(2 ) LED 數(shù)碼管顯示不正常,還有亮度不夠,首先使用試測(cè)儀對(duì)電路進(jìn)行測(cè)試 ,觀察電路是否存在短路現(xiàn)象。查看燒寫(xiě)的程序是否正確無(wú)誤,對(duì)程序進(jìn)行認(rèn)真修改。( 3) .DS

19、1302 與微處理器進(jìn)行數(shù)據(jù)交換時(shí),首先由微處理器向電路發(fā)送命令字節(jié),命令字節(jié)最高位 MSB(D7) 必須為邏輯 1 ,如果 D7=0 ,則禁止寫(xiě)DS1302 ,即寫(xiě)保護(hù); D6=0 ,指定時(shí)鐘數(shù)據(jù), D6=1 ,指定RAM數(shù)據(jù); D5 D1 指定輸入或輸出的特定寄存器; 最低位 LSB(D0) 為邏輯 0,指定寫(xiě)操作 (輸入 ),D0=1 ,指定讀操作 (輸出 )。在 DS1302 的時(shí)鐘日歷或 RAM 進(jìn)行數(shù)據(jù)傳送時(shí), DS1302 必須首先發(fā)送命令字節(jié)。若進(jìn)行單字節(jié)傳送, 8 位命令字節(jié)傳送結(jié)束之后, 在下 2 個(gè) SCLK 周期的上升沿輸入數(shù)據(jù)字節(jié),或在下 8 個(gè) SCLK 周期的下降

20、沿輸出數(shù)據(jù)字節(jié)。DS1302與 RAM相關(guān)的寄存器分為兩類(lèi):一類(lèi)是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8 位的字節(jié),其命令控制字為C0H FDH ,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;再一類(lèi)為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫(xiě)所有的RAM的 31 個(gè)字節(jié)。要特別說(shuō)明的是備用電源B1,可以用電池或者超級(jí)電容器(0.1F 以上 )。雖然 DS1302在主電源掉電后的耗電很小,但是,如果要長(zhǎng)時(shí)間保證時(shí)鐘正常,最好選用小型充電電池。可以用老式電腦主板上的3.6V 充電電池。如果斷電時(shí)間較短 (幾小時(shí)或幾天 )時(shí),就可以用漏電較小的普通電解電容器代替。100 就F可welcome精品

21、以保證1 小時(shí)的正常走時(shí)。 DS1302在第一次加電后,必須進(jìn)行初始化操作。初始化后就可以按正常方法調(diào)整時(shí)間。5.3測(cè)試結(jié)論經(jīng)過(guò)多次的反復(fù)測(cè)試與分析,可以對(duì)電路的原理及功能更加熟悉,同時(shí)提高了設(shè)計(jì)能力與及對(duì)電路的分析能力.同時(shí)在軟件的編程方面得到更到的提高,對(duì)編程能力得到加強(qiáng) .同時(shí)對(duì)所學(xué)的知識(shí)得到很大的提高與鞏固welcome精品六、心得體會(huì)在該部分實(shí)習(xí)中,我有幾點(diǎn)收獲:1 、 整合程序時(shí),并非把各個(gè)模塊鏈接起來(lái)就行,往往需要把某些模塊拆開(kāi),重新嵌入整合程序中,方能實(shí)現(xiàn)它的功能,說(shuō)明程序的調(diào)用和嵌套要靈活,不能生搬硬套。2 、 中斷的應(yīng)用。在程序中,T0 和 T1 兩個(gè)定時(shí)器我均用到了,而源

22、程序模塊都用 T0,沒(méi)用 T1,中斷優(yōu)先級(jí)一樣,所以在整合后,需要修改中斷優(yōu)先級(jí),而我簡(jiǎn)單的把兩個(gè)中斷優(yōu)先級(jí)定為 1 和 2,程序當(dāng)然無(wú)法運(yùn)行了,后來(lái)經(jīng)學(xué)長(zhǎng)指導(dǎo)才明白,優(yōu)先級(jí)是有順序的,單片機(jī)共五個(gè)中斷源,都有自然的優(yōu)先級(jí),不能隨便設(shè)置,后來(lái)將 T1 的優(yōu)先級(jí)改為 3 ,程序可以執(zhí)行。3 、該部分實(shí)習(xí),使我對(duì)軟件的設(shè)計(jì)有了進(jìn)一步的認(rèn)識(shí),編寫(xiě)程序也有跡可循,對(duì)單片機(jī)有了更深的理解,而且將 C 語(yǔ)言用到了單片機(jī)上,有了一次新的嘗試,以前學(xué)到的單片機(jī)的知識(shí)在實(shí)習(xí)中均得到了實(shí)踐,對(duì)我以后的從事相應(yīng)的工作奠定了一個(gè)基礎(chǔ)。welcome精品參考文獻(xiàn)1 李廣弟等 單片機(jī)基礎(chǔ) 北京航空航天出版社, 20072

23、 樓然苗等 51 系列單片機(jī)設(shè)計(jì)實(shí)例 北京航空航天出版社, 20083 張毅剛 .單片機(jī)原理及應(yīng)用 .北京:高等教育出版社 ,200welcome精品附錄一welcome精品附錄二程序如下:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define Write_Protect 0x8e/ 寫(xiě)保護(hù)#define OutPut P0/ 顯示輸出/sbit DU=P26;/ 數(shù)碼管段選/sbit WE=P27;/ 數(shù)碼管位選sbit CE=P33

24、;/ 復(fù)位端口定義在P0.2 引腳sbit IO=P24;/ 數(shù)據(jù)輸出端定義在P0.4 引腳sbit SCLK=P32;/ 時(shí)鐘輸出端口定義在 P0.3引腳sbit key=P34;/ 時(shí)間調(diào)節(jié)控制鍵sbit key1=P35;/ 每按一次位加一sbit key2=P36;/ 每按一次位減一sbit key3=P37;/ 顯示切換ucharcodeWei=0xfe,0xfd,0xfb,0xf7,0xfd;/位選數(shù)據(jù)0xef,0xdf,0xbf,0x7fucharcodeDuan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;welcome精

25、品/0-9共陰代碼codeucharWaddr=0x8c,0x88,0x86,0x84,0x82,0x80,0x8a;/ 寄存器寫(xiě)地址codeucharRaddr=0x8d,0x89,0x87,0x85,0x83,0x81,0x8b;/ 寄存器讀地址uchar timeset=0x01,0x02,0x03,0x04,0x05,0x00,0x01; /*設(shè)置初始時(shí)間 */uchar time_buf7;/* 存讀到的時(shí)間 */uchar time_disp7;uchar dispdat5;/* 存儲(chǔ)顯示值的 */uchar Btdis=0,k=0,z;bit btx,btx1,btx2,btx3

26、,bt1,bt2,bt3; bit Btread;uint flag1;/*=函數(shù)功能:延時(shí)n 毫秒入口參數(shù): n=*/void Write1302(uchar dat);void delaynms(uchar n)uchar i,j;for(i=n;i>0;i-)welcome精品for(j=125;j>0;j-);/*=函數(shù)功能:根據(jù)命令字,向1302 寫(xiě)一個(gè)字節(jié)數(shù)據(jù)入口參數(shù): Cmd ,存儲(chǔ)命令字; dat ,存儲(chǔ)待寫(xiě)的數(shù)據(jù)=*/void Ds1302_Write_Byte(unsigned char addr, unsigned char d)CE=0;_nop_();SC

27、LK=0; _nop_();CE=1;_nop_();Write1302(addr);Write1302(d);CE=0; _nop_();IO=1;SCLK=1;/ 從 DS1302 讀出一字節(jié)數(shù)據(jù)uchar Ds1302_Read_Byte(unsigned char addr)unsigned char i;welcome精品unsigned char temp;CE=1;addr = addr | 0x01;for (i = 0; i < 8; i +) if (addr & 0x01) IO=1; elseIO=0; SCLK=1;SCLK=0;addr = addr

28、>> 1;/ 輸出數(shù)據(jù): temp for (i = 0; i < 8; i +) temp = temp >> 1; if (IO) temp |= 0x80; else temp &= 0x7F; SCLK=1; SCLK=0;welcome精品CE=0; / 停止 DS1302 總線return temp;/*=函數(shù)功能:向 1302 日歷時(shí)鐘芯片寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù)入口參數(shù): dat=*/void Write1302(uchar dat)uchar i;/SCLK=0;CE=1;for(i=0;i<8;i+)IO=dat&0x01;SC

29、LK=0;SCLK=1;dat=dat>>1;welcome精品/*=函數(shù)功能:根據(jù)命令字,從1302 讀取一個(gè)字節(jié)的數(shù)據(jù)入口參數(shù): Cmd返回參數(shù): dat=*/uchar Readset1302(uchar Cmd)uchar dat;CE=0;SCLK=0;CE=1;Write1302(Cmd);SCLK=1;CE=0;return dat;void bcdpro(void)unsigned char i,tmp;for(i=0;i<7;i+)/BCD處理welcome精品tmp=timeseti/10;/timeset=0x01,0x02,0x03,0x04,0x05

30、,0x06,0x01time_bufi=timeseti%10;/time_buf7time_bufi=time_bufi+tmp*16;/*=向 DS1302 寫(xiě)入時(shí)鐘數(shù)據(jù)=*/void Ds1302_Write_Time(void)unsigned int i;uchar flag;flag=Readset1302(0x81);if(flag&0x80)/ 判斷時(shí)鐘芯片是否停止,為1 時(shí)時(shí)鐘停止/ 掉電保存bcdpro();for(i=0;i<7;i+) Ds1302_Write_Byte(Waddri,time_bufi); Ds1302_Write_Byte(0x8e,0

31、x80);/ 打開(kāi)寫(xiě)保護(hù)welcome精品/*=從 DS1302 讀出時(shí)鐘數(shù)據(jù)=*/void Ds1302_Read_Time(void)unsigned char i,tmp;for(i=0;i<7;i+)time_bufi=Ds1302_Read_Byte(Raddri); for(i=0;i<7;i+)/BCD 處理tmp=time_bufi/16;time_bufi=time_bufi%16;time_dispi=time_bufi+tmp*10; /*=DS1302 初始化=welcome精品=*/void Ds1302_Init(void)CE=0;/RST 腳置低SC

32、LK=0;/SCK 腳置低Ds1302_Write_Byte(0x80,0x00);/*= 函數(shù)名: 時(shí)分秒顯示子程序= 函數(shù)功能:將從 DS1302 讀到的數(shù)據(jù)在 8 位共陰數(shù)碼管上顯示= 返回參數(shù):=*/void display()uchar i;if(Btdis=0) if(bt2=0)dispdat0=Duantime_disp3/10;/ 時(shí)dispdat1=Duantime_disp3%10;elsewelcome精品dispdat0=0x00;dispdat1=0x00;/dispdat2=0x40;/"-"if(bt3=0)dispdat2=Duantime_disp4/10;/ 分dispdat3=Duantime_disp4%10;elsedispdat2=0x00;dispdat3=0x00;/dispdat5=0x40;if(flag1<25)dispdat4=0x80;elsedispdat4=0x00;if(Btdis=3)welcome精品dispdat0=Duantime_disp5/10;/ 秒dispdat1=Duantime_disp5%10;disp

溫馨提示

  • 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ù)網(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)論