版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p> 題目名稱: 智能電子數(shù)字鐘設(shè)計(jì) </p><p> 系 : 電氣工程系 </p><p> 專 業(yè): 建筑電氣與智能化 </p><p> 班 級(jí): 電智
2、112 </p><p> 學(xué) 號(hào): </p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師: </p><p> 職 稱: 講師
3、 </p><p> 2014年 1月 10日</p><p><b> 目 錄</b></p><p> 摘 要………………………………………………………………………………1</p><p> 一、系統(tǒng)總體方案設(shè)計(jì)……………………………………………………………2</p><
4、;p> 1、系統(tǒng)結(jié)構(gòu)框圖……………………………………………………………………2</p><p> 2、系統(tǒng)的基本原理及設(shè)計(jì)思想……………………………………………………2</p><p> 二、系統(tǒng)硬件設(shè)計(jì)…………………………………………………………………3</p><p> 1、電源模塊…………………………………………………………………………3<
5、/p><p> 2、單片機(jī)模塊………………………………………………………………………4</p><p> 3、晶振電路模塊……………………………………………………………………4</p><p> 4、LED顯示電路模塊………………………………………………………………5</p><p> 5、獨(dú)立鍵盤模塊………………………………………………
6、……………………6</p><p> 6、復(fù)位電路模塊……………………………………………………………………7</p><p> 7、報(bào)時(shí)電路模塊……………………………………………………………………7</p><p> 8、實(shí)時(shí)時(shí)鐘電路模塊………………………………………………………………7</p><p> 三、系統(tǒng)軟件設(shè)計(jì)………………
7、…………………………………………………10</p><p> 1、編程軟件選擇……………………………………………………………………10</p><p> 2、軟件設(shè)計(jì)流程……………………………………………………………………11</p><p> 結(jié) 論………………………………………………………………………………14</p><p>
8、; 參考文獻(xiàn)………………………………………………………………………………15</p><p> 附 錄………………………………………………………………………………16</p><p> 1、電路原理圖……………………………………………………………………16</p><p> 2、C語(yǔ)言程序………………………………………………………………………17<
9、;/p><p><b> 摘 要</b></p><p> 近年來(lái),隨著電子產(chǎn)品的發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,由于它具有功能強(qiáng),體積小,功耗低,價(jià)格便宜,工作可靠,使用方便等特點(diǎn),因此越來(lái)越廣泛地應(yīng)用于各個(gè)領(lǐng)域.本文針對(duì)人們對(duì)數(shù)字時(shí)鐘的這一需求,設(shè)計(jì)了一種由單片機(jī)控制的智能化數(shù)字時(shí)鐘,功能強(qiáng)大,界面友好,更好的滿足了人們對(duì)數(shù)字時(shí)鐘的智能化要求。智能電子
10、數(shù)字鐘是采用AT89C51單片機(jī)對(duì)專用時(shí)鐘芯片DS1302控制來(lái)實(shí)現(xiàn)時(shí)鐘功能,通過(guò)專用LED顯示驅(qū)動(dòng)芯片MAX7219實(shí)現(xiàn)LED的驅(qū)動(dòng)控制,通過(guò)增量鍵盤預(yù)置和調(diào)整時(shí)間、星期。秒計(jì)數(shù)器滿60向分計(jì)數(shù)器進(jìn)位,分計(jì)數(shù)器滿60向時(shí)計(jì)數(shù)器進(jìn)位,時(shí)計(jì)數(shù)器以24為一個(gè)周期。AT89C51單片機(jī)通過(guò)控制專用時(shí)鐘芯片DS1302的輸出經(jīng)專用LED顯示驅(qū)動(dòng)芯片MAX7219控制七位共陰LED顯示器,可將星期、時(shí)、分、秒在相應(yīng)位置正確顯示,并實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)功能
11、。</p><p> 關(guān)鍵詞:智能數(shù)字鐘;AT89C51;LED;MAX7219</p><p> 一、系統(tǒng)總體方案設(shè)計(jì)</p><p> 由單片機(jī)作為數(shù)字鐘的核心控制器,可以通過(guò)通過(guò)專用時(shí)鐘芯片DS1302提供時(shí)鐘信號(hào)進(jìn)行計(jì)時(shí)實(shí)現(xiàn)計(jì)時(shí)功能,將其時(shí)間數(shù)據(jù)經(jīng)單片機(jī)輸出,利用顯示器顯示出來(lái)。通過(guò)鍵盤可以進(jìn)行定時(shí)、校時(shí)功能。輸出設(shè)備顯示器可以用液晶顯示技術(shù)和數(shù)碼管顯
12、示技術(shù)。單片機(jī)芯片作為控制系統(tǒng)的核心部件,它除了具備微機(jī)CPU的數(shù)值計(jì)算功能外,還具有靈活強(qiáng)大的控制功能,以便實(shí)時(shí)檢測(cè)系統(tǒng)的輸入量、控制系統(tǒng)的輸出量,實(shí)現(xiàn)自動(dòng)控制。</p><p> 設(shè)計(jì)中采用單片機(jī)技術(shù)來(lái)實(shí)現(xiàn)數(shù)字鐘的功能。采用AT89C51單片機(jī),用由LED顯示驅(qū)動(dòng)芯片MAX7219控制7位共陰極LED的顯示電路。還有一些其他控制電路,如:晶振電路,復(fù)位電路,報(bào)時(shí)電路和鍵盤電路。</p><
13、;p><b> 1、系統(tǒng)結(jié)構(gòu)框圖</b></p><p> 系統(tǒng)由六個(gè)模塊組成,既:?jiǎn)纹瑱C(jī)模塊、晶振電路模塊、復(fù)位電路模塊、獨(dú)立鍵盤模塊、報(bào)時(shí)電路模塊和顯示電路模塊。按照系統(tǒng)設(shè)計(jì)功能的要求。電路系統(tǒng)構(gòu)成框圖如圖1所示。</p><p><b> 圖1 系統(tǒng)構(gòu)成框圖</b></p><p> 2、系統(tǒng)的基本原理
14、及設(shè)計(jì)思想</p><p> 使用9V干電池經(jīng)LM7805穩(wěn)壓,再經(jīng)穩(wěn)壓管D1穩(wěn)壓后輸出+5V直流電,供給AT89C51單片機(jī)模塊、晶振電路模塊、復(fù)位電路模塊、獨(dú)立鍵盤模塊、顯示電路模塊和報(bào)時(shí)電路模塊所需的工作電源。</p><p> 使用專用時(shí)鐘芯片DS1302為AT89C51單片機(jī)提供時(shí)鐘源,然后嚴(yán)格地按時(shí)序執(zhí)行指令進(jìn)行工作。在執(zhí)行指令時(shí),CPU首先到程序存儲(chǔ)器中取出需要執(zhí)行的指令
15、操作碼,然后譯碼,并由時(shí)序電路產(chǎn)生一系列控制信號(hào)完成指令所規(guī)定的操作。</p><p> 復(fù)位是單片機(jī)的初始化操作,只需給AT89C51的復(fù)位引腳RESET加上大于2個(gè)機(jī)器周期的高電平就可使AT89C51復(fù)位。當(dāng)AT89C51進(jìn)行復(fù)位時(shí),PC初始化為0000H,使AT89C51單片機(jī)從程序存儲(chǔ)器的0000H單元開(kāi)始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)程序運(yùn)行出錯(cuò)(如程序“跑飛”)或操作錯(cuò)誤使系統(tǒng)處于“死鎖
16、”狀態(tài)時(shí),也需要按復(fù)位鍵即RESET為高電平,使AT89C51擺脫“跑飛”或“死鎖”狀態(tài)而重新啟動(dòng)程序。</p><p> 鍵盤的任務(wù)有三項(xiàng):(1)首先判別是否有鍵按下。若有,進(jìn)入下一步工作。(2)識(shí)別哪一個(gè)鍵被按下,并求出相應(yīng)的鍵值。(3)根據(jù)鍵值,找到相應(yīng)鍵值的處理程序入口。在本設(shè)計(jì)中,鍵盤具有向單片機(jī)輸入數(shù)據(jù)、命令等功能,是人與單片機(jī)對(duì)話的主要手段。通過(guò)鍵盤,可以預(yù)置時(shí)間、星期。</p>&
17、lt;p> 常見(jiàn)的LED數(shù)碼管為“8”字型的,共計(jì)8段。每一個(gè)段對(duì)應(yīng)一個(gè)發(fā)光二極管。這種數(shù)碼管顯示器有共陽(yáng)極和共陰極兩種,本文采用共陰極接法。共陰極LED數(shù)碼管的發(fā)光二極管的陰極連接在一起,通常此公共陰極接地。當(dāng)某個(gè)發(fā)光二極管的陽(yáng)極為高電平時(shí),發(fā)光二極管點(diǎn)亮,相應(yīng)的段被顯示。采用MC14543作為L(zhǎng)ED驅(qū)動(dòng)器來(lái)實(shí)現(xiàn)LED的動(dòng)態(tài)掃描驅(qū)動(dòng),通過(guò)七位共陰LED顯示星期、時(shí)、分、秒。</p><p> 通過(guò)加入
18、一個(gè)使用晶體管驅(qū)動(dòng)的蜂鳴器報(bào)時(shí)電路,當(dāng)時(shí)間到達(dá)整點(diǎn)時(shí),報(bào)警電路進(jìn)行報(bào)時(shí)。工作原理為:P1.7接晶體管基極輸入端,當(dāng)P1.7輸出高電平時(shí),晶體管導(dǎo)通,壓電式蜂鳴器兩端獲得+5V電壓而鳴叫;當(dāng)P1.7輸出低電平時(shí),晶體管截止,蜂鳴器停止發(fā)聲。</p><p><b> 二、系統(tǒng)硬件設(shè)計(jì)</b></p><p> 系統(tǒng)是以AT89C51為核心控制器,外加一些控制電路來(lái)實(shí)
19、現(xiàn)數(shù)字鐘的基本功能。</p><p><b> 1、電源模塊</b></p><p> 電源模塊如圖2 電源電路,考慮到測(cè)量?jī)x器的應(yīng)用方便,本設(shè)計(jì)采用9V干電池經(jīng)LM7805穩(wěn)壓,再經(jīng)穩(wěn)壓管D1穩(wěn)壓后輸出+5V直流電,供給AT89C51單片機(jī)模塊、晶振電路模塊、復(fù)位電路模塊、獨(dú)立鍵盤模塊、顯示電路模塊和報(bào)時(shí)電路模塊所需的工作電源,電源正常工作由LED指示燈指示。&
20、lt;/p><p><b> 圖2 電源模塊</b></p><p><b> 2、單片機(jī)模塊</b></p><p> 本設(shè)計(jì)采用AT89C51單片機(jī)。AT89C51單片機(jī)是一種低功耗、高性能CMOS8位微控制器,具有8K在線可編程存儲(chǔ)器。AT89C51有5個(gè)中斷源,2個(gè)可編程的16位定時(shí)器/計(jì)數(shù)器。低功耗節(jié)電模式有空
21、閑模式和掉電模式。AT89C51的引腳圖如圖3所示:</p><p> ?。?)RESET:復(fù)位信號(hào)輸入端,高電平有效。</p><p> ?。?)/VP: 是外部程序存儲(chǔ)器訪問(wèn)允許控制端。</p><p> ?。?)XTAL1/XTAL2:片內(nèi)振蕩器反向放大器和時(shí)鐘發(fā)生器電路的輸入/輸出端。</p><p> (4):片外程序存儲(chǔ)器的讀選
22、通信號(hào),低電平有效。</p><p> (5)ALE/:ALE為CPU訪問(wèn)外部程序存儲(chǔ)器或外部數(shù)據(jù)存儲(chǔ)器提供一個(gè)地址鎖存信號(hào),將低8位地址鎖存在片外的地址鎖存器中。</p><p> ?。?)P0口:8位,漏極開(kāi)路的雙向I/O口。</p><p> ?。?)P1口:8位,準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。</p><p> ?。?)P2口:
23、8位,準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。</p><p> ?。?)P3口:8位,準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。還可提供第二功能。</p><p> 圖3 AT89C51單片機(jī)</p><p><b> 3、晶振電路模塊</b></p><p> 晶體振蕩器電路給數(shù)字鐘提供一個(gè)頻率穩(wěn)定準(zhǔn)確的12MHz的方波信號(hào)
24、。AT89C51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,它的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳跨接石英晶體和微調(diào)電容,構(gòu)成一個(gè)穩(wěn)定 的自激振蕩器,圖4為AT89C51內(nèi)部時(shí)鐘方式的電路。</p><p> 電路中的兩個(gè)電容典型值通常選擇為30pF,該電容的大小會(huì)影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。晶體振蕩的范圍通常是在1.212MHZ。晶體的頻率越高,系統(tǒng)的時(shí)鐘頻
25、率越高,單片機(jī)的運(yùn)行速度也就越快。</p><p> 4、LED顯示電路模塊</p><p> MAX7219(圖5)是MAXIM公司生產(chǎn)的串行輸入/輸出共陰極數(shù)碼管顯示驅(qū)動(dòng)芯片,一片MAX7219可驅(qū)動(dòng)8個(gè)7段(包括小數(shù)點(diǎn)共8段)數(shù)字LED、LED條線圖形顯示器、或64個(gè)分立的LED發(fā)光二級(jí)管。該芯片具有10MHz傳輸率的三線串行接口可與任何微處理器相連,只需一個(gè)外接電阻即可設(shè)置所有
26、LED的段電流。它的操作很簡(jiǎn)單,MCU只需通過(guò)模擬SPI三線接口就可以將相關(guān)的指令寫入MAX7219的內(nèi)部指令和數(shù)據(jù)寄存器,同時(shí)它還允許用戶選擇多種譯碼方式和譯碼位。此外它還支持多片7219串聯(lián)方式,這樣MCU就可以通過(guò)3根線(即串行數(shù)據(jù)線、串行時(shí)鐘線和芯片選通線)控制更多的數(shù)碼管顯示。</p><p> 圖5 MAX7219</p><p><b> 各引腳的功能為:<
27、;/b></p><p> DIN:串行數(shù)據(jù)輸入端</p><p> DOUT:串行數(shù)據(jù)輸出端,用于級(jí)連擴(kuò)展</p><p> LOAD:裝載數(shù)據(jù)輸入CLK:串行時(shí)鐘輸入</p><p> DIG0~DIG7:8位LED位選線,從共陰極LED中吸入電流</p><p> SEG A~SEG G DP7
28、段驅(qū)動(dòng)和小數(shù)點(diǎn)驅(qū)動(dòng)</p><p> ISET:通過(guò)一個(gè)10k電阻和Vcc相連,設(shè)置段電流</p><p> MAX7219同樣允許用戶對(duì)每一個(gè)數(shù)據(jù)選擇編碼或者不編碼。整個(gè)設(shè)備包含一個(gè)150μA的低功耗關(guān)閉模式,模擬和數(shù)字亮度控制,一個(gè)掃描限制寄存器允許用戶顯示1-8位數(shù)據(jù),還有一個(gè)讓所有LED發(fā)光的檢測(cè)模式。電路圖如下圖6所示。</p><p> 圖6 L
29、ED顯示電路</p><p><b> 5、獨(dú)立鍵盤模塊</b></p><p> 獨(dú)立式鍵盤的特點(diǎn)是:一鍵一線,各鍵相互獨(dú)立,每個(gè)按鍵各接一條I/O口線,通過(guò)檢測(cè)I/O輸入線的電平狀態(tài),可以很容易地判斷哪個(gè)按鍵被按下。圖7中的上拉電阻保證按鍵釋放時(shí),輸入檢測(cè)線上有穩(wěn)定的高電平,當(dāng)某一按鍵按下時(shí),對(duì)應(yīng)</p><p> 的檢測(cè)線就變成了低
30、電平,與其它按鍵相連的檢測(cè)線仍為高電平,只需讀入I/O輸入線的狀態(tài),判別哪一條I/O輸入線為低電平,就很容易識(shí)別出哪個(gè)按鍵被按下。</p><p> 在本設(shè)計(jì)中,用四個(gè)鍵來(lái)實(shí)現(xiàn)對(duì)星期和時(shí)間的校對(duì),按K week來(lái)調(diào)節(jié)星期,按K hour來(lái)調(diào)節(jié)小時(shí)的時(shí)間,按K min來(lái)調(diào)節(jié)分針的時(shí)間,按K sec來(lái)調(diào)節(jié)秒的時(shí)間。</p><p><b> 6、復(fù)位電路模塊</b>&
31、lt;/p><p> 圖8所示為復(fù)位電路原理圖,復(fù)位是單片機(jī)的初始化操作,其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開(kāi)始執(zhí)行程序,并使其它功能單元處于一個(gè)確定的初始狀態(tài)。按鍵手動(dòng)復(fù)位有電平和脈沖兩種方式,本設(shè)計(jì)采用按鍵電平復(fù)位電路,它是通過(guò)復(fù)位端RESET經(jīng)電阻與Vcc電源接通而實(shí)現(xiàn)的,它兼具上電復(fù)位功能。因本系統(tǒng)的晶振的頻率為12MHz,所以,復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)當(dāng)超過(guò)2μS才能完成復(fù)位操作。&
32、lt;/p><p><b> 7、報(bào)時(shí)電路模塊</b></p><p> 當(dāng)LED顯示器所顯示的時(shí)間為整點(diǎn)時(shí),單片機(jī)系統(tǒng)能夠發(fā)出提醒聲音使人們警覺(jué),使用單片機(jī)系統(tǒng)的I/O口很容易實(shí)現(xiàn)該功能。在圖9中,P1.7接晶體管的基極輸入端。當(dāng)P1.7輸出高電平時(shí),晶體管導(dǎo)通,壓電蜂鳴器兩端獲得約+5V電壓而鳴叫;當(dāng)P1.7輸出低電平時(shí),晶體管截止,蜂鳴器停止發(fā)聲。[8]<
33、/p><p><b> 實(shí)時(shí)時(shí)鐘電路模塊</b></p><p> DS1302 是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。</p><
34、p> 圖10 DS1302的引腳</p><p> 圖10表出DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位
35、/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置
36、為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),SCLK始終是輸入端。</p><p><b> 三、系統(tǒng)軟件設(shè)計(jì)</b></p><p><b> 1、編程軟件選擇</b></p><p> 本設(shè)計(jì)的軟件全部采用C語(yǔ)言進(jìn)行編寫。C語(yǔ)言編輯、編譯軟件選擇的是Keil uVision3。 Keil公司成立于1986年,主
37、要開(kāi)發(fā)、制造和銷售嵌入式8051、251、ARM、XC16x/C16x/ST10等微控制器軟件開(kāi)發(fā)工具,提供ANSI C編譯器、宏匯編程序、實(shí)時(shí)管理、調(diào)試和模擬器、綜合評(píng)估板等。Keil公司的uVision把編輯、編譯、鏈接和仿真等模式打包成集成開(kāi)發(fā)環(huán)境,當(dāng)然其集成的C51編譯器肯定跟Franklin公司的相關(guān)模塊肯定有交叉性,uVision還包含項(xiàng)目管理和調(diào)試器等非常有用的功能。</p><p><b&g
38、t; 2、 軟件設(shè)計(jì)流程</b></p><p> 主程序的功能主要是讀時(shí)間,將時(shí)間數(shù)據(jù)送到LED數(shù)碼管顯示,再判斷是否有按鍵按下,從而進(jìn)行校時(shí)功能。當(dāng)?shù)竭_(dá)整點(diǎn)時(shí),發(fā)出報(bào)時(shí)音。其流程圖如圖3-1所示。</p><p> 時(shí)鐘數(shù)據(jù)讀寫程序流程</p><p> 對(duì)時(shí)鐘芯片的操作主要包括:一是將芯片中的日期等數(shù)據(jù)讀出來(lái),二是在進(jìn)行日期等設(shè)置時(shí)將設(shè)置的
39、數(shù)據(jù)寫入芯片,這也是按鍵處理時(shí)的主要內(nèi)容。無(wú)論是讀數(shù)據(jù)還是寫數(shù)據(jù),均應(yīng)滿足DS1302 對(duì)時(shí)序的要求。對(duì)芯片各個(gè)數(shù)據(jù)部分的訪問(wèn)是通過(guò)地址進(jìn)行的,且讀和寫的地址不一樣。讀出的數(shù)據(jù)同樣要轉(zhuǎn)為ASC II碼,然后儲(chǔ)存起來(lái),等待送去顯示,流程圖如下圖所示:</p><p> 圖3-2 時(shí)鐘數(shù)據(jù)讀寫程序流程</p><p><b> LED顯示程序流程</b></p
40、><p> 系統(tǒng)的日期和時(shí)間信息顯示在7片8段LED數(shù)碼管上,在LED顯示器的第1片顯示星期,第2、3片顯示“時(shí)”,第4、5片顯示“分”、第6、7片顯示“秒”。</p><p> 液晶顯示程序流程如下圖所示:</p><p> 圖3-3 LED顯示程序流程</p><p><b> 按鍵處理程序流程</b><
41、/p><p> 本設(shè)計(jì)使用5個(gè)獨(dú)立式按鍵來(lái)控制時(shí)間和日期的調(diào)整,以及12小時(shí)/24小時(shí)計(jì)時(shí)方式的切換。當(dāng)“SET”鍵按下時(shí)進(jìn)入時(shí)間、日期的調(diào)整模式,每按 “UP”鍵一次,當(dāng)前數(shù)值增1;每按 “DOWN”鍵一次,當(dāng)前數(shù)值減1;調(diào)整完畢后按下“OK”鍵進(jìn)行確認(rèn)?!癕ODE”鍵為12小時(shí)/24小時(shí)計(jì)時(shí)方式的切換按鍵,若當(dāng)前為12小時(shí)計(jì)時(shí)方式,按下“MODE”鍵后轉(zhuǎn)變?yōu)?4小時(shí)方式;若當(dāng)前為24小時(shí)計(jì)時(shí)方式,則按下“MOD
42、E”鍵后轉(zhuǎn)變?yōu)?2小時(shí)方式。</p><p> 圖3-4 按鍵處理程序流程</p><p><b> 四、結(jié)論</b></p><p> 本設(shè)計(jì)在功能上基本上完成了本次智能化電子系統(tǒng)設(shè)計(jì)的要求,但是也尚存在一些問(wèn)題。由于時(shí)間倉(cāng)促和自身水平有限,對(duì)于電路的可靠性,穩(wěn)定性等參數(shù)還未做過(guò)詳細(xì)的測(cè)試。還可以通過(guò)修改程序,完成字符或數(shù)字的滾動(dòng)顯示
43、。這些是我們組尚未完成的附加功能。</p><p> 在本次設(shè)計(jì)中,我們最終完成本次智能化電子系統(tǒng)設(shè)計(jì)系的基本要求及功能,并在此基礎(chǔ)了對(duì)系統(tǒng)功能作了擴(kuò)展,增加了鬧鐘設(shè)置以及溫度測(cè)試等部分。在設(shè)計(jì)開(kāi)始前我們對(duì)各個(gè)模塊進(jìn)行了詳細(xì)的分析和設(shè)計(jì)準(zhǔn)備工作,設(shè)計(jì)過(guò)程中,積極參與完成各個(gè)技術(shù)實(shí)現(xiàn)的難點(diǎn),更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和具體的使用方法。</p><p> 通過(guò)本次設(shè)
44、計(jì),我們對(duì)單片機(jī)有了更深刻的認(rèn)識(shí),也從實(shí)踐的例子中去感受到了單片機(jī)設(shè)計(jì)給我們?cè)O(shè)計(jì)帶來(lái)的改變與進(jìn)步。我們不僅掌握protel99se軟件的使用。與此同時(shí),我們還對(duì)電子設(shè)計(jì)的思路有了更多的認(rèn)識(shí)。這次對(duì)多功能數(shù)字鐘的設(shè)計(jì)與制作,讓我了解設(shè)計(jì)電路的程序,也了解了關(guān)于智能電子鐘的原理與設(shè)計(jì)理念。在此次的智能電子鐘設(shè)計(jì)過(guò)程中,更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和具體的使用方法??傊鞘芤娣藴\。這為自己今后進(jìn)一步深化學(xué)習(xí),積累了一定寶
45、貴經(jīng)驗(yàn)。</p><p> 此次智能電子鐘設(shè)計(jì)中,我要特別感謝我的指導(dǎo)老師的熱情關(guān)懷和悉心指導(dǎo)。讓我從中更加的認(rèn)識(shí)了單片機(jī)的功能的實(shí)現(xiàn),同時(shí)也要感謝班內(nèi)的一些同學(xué)的幫助,在設(shè)計(jì)中幫我解決一些設(shè)計(jì)方面的困難。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 李朝青. 單片機(jī)原理及接口技術(shù)(簡(jiǎn)明修訂版) [M]. 杭州:
46、 北京航空航天大學(xué)出版社,1998.</p><p> [2] 李廣弟. 單片機(jī)基礎(chǔ)[M]. 北京: 北京航空航天大學(xué)出版社,1994.</p><p> [3] 高吉祥. 電子技術(shù)基礎(chǔ)實(shí)驗(yàn)與課程設(shè)計(jì)[M]. 電子工業(yè)出版社,2002.</p><p> [4] 康華光. 電子技術(shù)基礎(chǔ)[M]. 北京:高等教育出版社,2002.</p><
47、;p> [5] 陳忠平. 基于Proteus的51系列單片機(jī)設(shè)計(jì)與仿真(第二版)[M]. 北京:電子工業(yè)出版社,2012</p><p> [6] 清源科技.Protel 99 SE電路原理圖與PCB設(shè)計(jì)仿真[M].北京:機(jī)械工業(yè)出版社,2007.</p><p> [7] 康光華. 電子技術(shù)基礎(chǔ)模擬部分[M]. 北京:高等教育出版社,2006.</p>&
48、lt;p> [8] 梅麗鳳、王艷秋等. 單片機(jī)原理及接口技術(shù)[M]. 北京:清華大學(xué)出版社,2004.</p><p> [9] 閻石. 數(shù)字電子技術(shù)基礎(chǔ)(第四版) [M]. 北京:高等教育出版社,1998.</p><p> [10] 郁漢琪. 數(shù)字電子技術(shù)實(shí)驗(yàn)及課程設(shè)計(jì)[M]. 北京:高等教育出版社,1995.</p><p> [11]張毅
49、剛.單片機(jī)原理及應(yīng)用[M]. 北京:高等教育出版社,2010.</p><p> [12]陸彬.21天學(xué)通51單片機(jī)開(kāi)發(fā)[M]. 北京:電子工業(yè)出版社,2011</p><p><b> 附錄</b></p><p><b> 電路原理圖</b></p><p><b> C語(yǔ)言
50、程序</b></p><p> #include <reg52.H></p><p> #include <intrins.h></p><p> sbit LOAD=P1^1; </p><p> sbit DIN=P1^0; </p><p> sbit CL
51、K=P1^2; </p><p> sbit SCK=P3^4;</p><p> sbit SDA=P3^3;</p><p> sbit RST=P3^5;</p><p> sbit KEY1=P1^4; </p><p> sbit KEY2=P1^5;</p&g
52、t;<p> sbit KEY3=P1^6;</p><p> sbit KEY4=P1^7;</p><p> #define DECODE_MODE 0x09 </p><p> #define INTENSITY 0x0A </p><p> #define SCAN_LIMIT 0x0B &
53、lt;/p><p> #define SHUT_DOWN 0x0C </p><p> #define DISPLAY_TEST 0x0F </p><p> #define RST_CLRRST=0/*電平置低*/</p><p> #define RST_SETRST=1/*電平置高*/</p><p&
54、gt; #define IO_CLRSDA=0/*電平置低*/</p><p> #define IO_SETSDA=1/*電平置高*/</p><p> #define IO_RSDA/*電平讀取*/</p><p> #define SCK_CLRSCK=0/*時(shí)鐘信號(hào)*/</p><p> #define SCK_SE
55、TSCK=1/*電平置高*/</p><p> #define ds1302_sec_add0x80</p><p> #define ds1302_min_add0x82</p><p> #define ds1302_hr_add0x84</p><p> #define ds1302_control_add0x8
56、e</p><p> #define ds1302_charger_add0x90 </p><p> #define ds1302_clkburst_add0xbe</p><p> #define time 10000 </p><p><b> //函數(shù)聲明</b></p&g
57、t;<p> void Write7219(unsigned char address,unsigned char dat);</p><p> void Initial(void);</p><p> void Write_Ds1302_byte(unsigned char temp); </p><p> void Write_Ds1302
58、(unsigned char address,unsigned char dat );</p><p> unsigned char Read_Ds1302 ( unsigned char address );</p><p> void ds1302_write_time(void);</p><p> void ds1302_read_time(void)
59、;</p><p> void keyscan(void);</p><p> void Read_RTC(void);//read RTC </p><p> void Set_RTC(void); //set RTC </p><p> void InitTIMER0(void);//inital timer0</p>
60、<p> bit ReadRTC_Flag;</p><p> unsigned char time_buf1[4]={20,16,30};</p><p> unsigned int time_buf[4] ;</p><p> unsigned char l_tmpdisplay[8];</p><p> unsi
61、gned char keydat,temp;</p><p> //地址、數(shù)據(jù)發(fā)送子程序</p><p> void Write7219(unsigned char address,unsigned char dat)</p><p><b> { </b></p><p> unsigned char i;
62、</p><p> LOAD=0; </p><p><b> //發(fā)送地址</b></p><p> for (i=0;i<8;i++) </p><p> { CLK=0; </p><p> DIN=(bit)(address&0
63、x80); </p><p> address<<=1; CLK=1; }</p><p> for (i=0;i<8;i++) </p><p><b> { </b></p><p><b> CLK=
64、0;</b></p><p> DIN=(bit)(dat&0x80); </p><p> dat<<=1; </p><p> CLK=1; }</p><p> LOAD=1; </p><p><b> }</b&
65、gt;</p><p> /void Initial(void) </p><p><b> { </b></p><p> Write7219(SHUT_DOWN,0x01); //開(kāi)啟正常工作模式(0xX1)</p><p> Write7219(DISPLAY
66、_TEST,0x00); //選擇工作模式(0xX0)</p><p> Write7219(DECODE_MODE,0xff); //選用全譯碼模式</p><p> Write7219(SCAN_LIMIT,0x07); //8只LED全用 </p><p><b> }</b></p>
67、;<p> void delay(unsigned int cnt)</p><p><b> {</b></p><p> while(--cnt);</p><p><b> }</b></p><p> void main(void) </p>&l
68、t;p><b> {</b></p><p> InitTIMER0(); </p><p> Initial(); ds1302_write_time(); </p><p><b> while(1)</b></p><p>
69、<b> {</b></p><p> if(ReadRTC_Flag)</p><p><b> {</b></p><p> ReadRTC_Flag=0;</p><p> ds1302_read_time();</p><p> l_tmpdisplay
70、[0]=time_buf1[1]/10;l_tmpdisplay[1]=time_buf1[1]%10;l_tmpdisplay[2]=10;l_tmpdisplay[3]=time_buf1[2]/10;</p><p> l_tmpdisplay[4]=time_buf1[2]%10;</p><p> l_tmpdisplay[5]=10;</p>
71、;<p> l_tmpdisplay[6]=time_buf1[3]/10;</p><p> l_tmpdisplay[7]=time_buf1[3]%10;</p><p><b> }</b></p><p> keyscan();</p><p><b> }</b>
72、;</p><p><b> }</b></p><p> void InitTIMER0(void)</p><p><b> {</b></p><p> TMOD|=0x01;//定時(shí)器設(shè)置 16位</p><p> TH0=0xef;//初始化值</p
73、><p><b> TL0=0xf0;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> EA=1;</b></p><p><b>
74、}</b></p><p> /*向DS1302寫入一字節(jié)數(shù)據(jù)*/</p><p> void ds1302_write_byte(unsigned char addr, unsigned char d) {</p><p> unsigned char i;</p><p> RST_SET;</p&g
75、t;<p> addr = addr & 0xFE;</p><p> for (i = 0; i < 8; i ++) </p><p><b> {</b></p><p> if (addr & 0x01) {</p><p><b> IO_SET;<
76、/b></p><p><b> }</b></p><p><b> else {</b></p><p><b> IO_CLR;</b></p><p><b> }</b></p><p><b>
77、 SCK_SET;</b></p><p><b> SCK_CLR;</b></p><p> addr = addr >> 1;</p><p><b> }</b></p><p> for (i = 0; i < 8; i ++) {</p>
78、<p> if (d & 0x01) {</p><p><b> IO_SET;</b></p><p><b> }</b></p><p><b> else {</b></p><p><b> IO_CLR;</b>
79、;</p><p><b> }</b></p><p><b> SCK_SET;</b></p><p><b> SCK_CLR;</b></p><p> d = d >> 1;</p><p><b> }<
80、;/b></p><p> RST_CLR;}</p><p> unsigned char ds1302_read_byte(unsigned char addr) {</p><p> unsigned char i;</p><p> unsigned char temp;</p><p>
81、 RST_SET;</p><p> addr = addr | 0x01;</p><p> for (i = 0; i < 8; i ++)</p><p><b> {</b></p><p> if (addr & 0x01) {</p><p><
82、b> IO_SET;</b></p><p><b> }</b></p><p><b> else {</b></p><p><b> IO_CLR;</b></p><p><b> }</b></p>&
83、lt;p><b> SCK_SET;</b></p><p><b> SCK_CLR;</b></p><p> addr = addr >> 1;</p><p><b> }</b></p><p> for (i = 0; i < 8;
84、 i ++) {</p><p> temp = temp >> 1;</p><p> if (IO_R) {</p><p> temp |= 0x80;</p><p><b> }</b></p><p><b> else {</b></
85、p><p> temp &= 0x7F;</p><p><b> }</b></p><p><b> SCK_SET;</b></p><p><b> SCK_CLR;</b></p><p><b> }</b>
86、;</p><p> RST_CLR;return temp;</p><p><b> }</b></p><p> void ds1302_write_time(void) {</p><p> unsigned char i,tmp;</p><p> for(i=0;
87、i<4;i++){ //BCD處理</p><p> tmp=time_buf1[i]/10;</p><p> time_buf[i]=time_buf1[i]%10;</p><p> time_buf[i]=time_buf[i]+tmp*16;</p><p><b> }</b>
88、;</p><p> ds1302_write_byte(ds1302_control_add,0x00); </p><p> ds1302_write_byte(ds1302_sec_add,0x80); </p><p> ds1302_write_byte(ds1302_charger_add,0xa9); </p><
89、;p> ds1302_write_byte(ds1302_hr_add,time_buf[1]);ds1302_write_byte(ds1302_min_add,time_buf[2]);ds1302_write_byte(ds1302_sec_add,time_buf[3]);</p><p> ds1302_write_byte(ds1302_control_add,0x80);
90、}</p><p> void ds1302_read_time(void) </p><p> { unsigned char i,tmp;</p><p> time_buf[1]=ds1302_read_byte(ds1302_hr_add);//時(shí) </p><p> time_buf[2]=ds1302_read_by
91、te(ds1302_min_add);//分 </p><p> time_buf[3]=(ds1302_read_byte(ds1302_sec_add))&0x7F;//秒 </p><p> for(i=0;i<4;i++){ tmp=time_buf[i]/16;</p><p> time_buf1[i]=time_
92、buf[i]%16;</p><p> time_buf1[i]=time_buf1[i]+tmp*10;</p><p><b> }</b></p><p><b> }</b></p><p> void tim(void) interrupt 1 using 1
93、 </p><p><b> {</b></p><p> static unsigned char i,num;</p><p> unsigned char j;</p><p><b> TH0=0xf5;</b></p><p>
94、<b> TL0=0xe0;</b></p><p> for(j=1;j<9;j++)</p><p> { </p><p> Write7219(j,l_tmpdisplay[j-1]); </p><p><b> }</b></p>&l
95、t;p><b> i++;</b></p><p><b> if(i==8)</b></p><p><b> {</b></p><p><b> i=0;</b></p><p><b> num++;</b>&
96、lt;/p><p> if(10==num) {</p><p> ReadRTC_Flag=1; num=0;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
97、t;</p><p> void keyscan(void)</p><p><b> {</b></p><p> if(!KEY1) {</p><p> delay(time);</p><p><b> if(!KEY1)</b></p>
98、<p> { while(!KEY1) ; </p><p><b> keydat++;</b></p><p> if(keydat==4)</p><p><b> keydat=1;</b></p><p><b> }</b><
99、;/p><p><b> }</b></p><p> if( keydat==1)</p><p><b> {</b></p><p><b> P0=0XFE;</b></p><p><b> if(!KEY2)</b>
100、;</p><p><b> {</b></p><p> delay(time);</p><p><b> if(!KEY2)</b></p><p> { while(!KEY2) ; </p><p> time_buf1[1]++;if
101、(time_buf1[1]==24)time_buf1[1]=0; ds1302_write_time(); </p><p><b> }</b></p><p><b> } </b></p><p> if(!KEY3) </p><p><b>
102、; {</b></p><p> delay(time);</p><p><b> if(!KEY3)</b></p><p> { while(!KEY3) ; </p><p> time_buf1[1]--;if(time_buf1[1]==255)time_buf1[1]=23;
103、 </p><p> ds1302_write_time(); </p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if( keydat==2)
104、 {</p><p><b> P0=0Xfd;</b></p><p> if(!KEY2){</p><p> delay(time);</p><p><b> if(!KEY2)</b></p><p> { while(!KEY2) ; <
105、/p><p> time_buf1[2]++;if(time_buf1[2]==60)time_buf1[2]=0;//分加1</p><p> ds1302_write_time(); </p><p><b> }</b></p><p><b> }</b></p><
106、p> if(!KEY3) </p><p><b> {</b></p><p> delay(time);</p><p><b> if(!KEY3)</b></p><p> { while(!KEY3) ; </p><p> time_buf1[
107、2]--;if(time_buf1[2]==255)time_buf1[2]=59; ds1302_write_time(); </p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>
108、 if( keydat==3) </p><p><b> {</b></p><p><b> P0=0XFB;</b></p><p> if(!KEY2){</p><p> delay(time);</p><p><b> if(!KEY2)
109、</b></p><p> { while(!KEY2) ; </p><p> time_buf1[3]++;if(time_buf1[3]==60)time_buf1[3]=0;ds1302_write_time(); </p><p><b> }</b></p><p><b&g
110、t; }</b></p><p> if(!KEY3) {</p><p> delay(time);</p><p><b> if(!KEY3)</b></p><p> { while(!KEY3) ; </p><p> time_buf1[3]--;if(t
111、ime_buf1[3]==255)time_buf1[3]=59;ds1302_write_time(); </p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(KEY4==0
112、)</p><p><b> {</b></p><p> delay(time);</p><p><b> if(!KEY4)</b></p><p><b> {</b></p><p><b> keydat=0;</b
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電子課程設(shè)計(jì)---數(shù)字鐘
- 電力電子課程設(shè)計(jì)-- 數(shù)字鐘
- 單片機(jī)課程設(shè)計(jì)--智能電子數(shù)字鐘設(shè)計(jì)
- 電工電子課程設(shè)計(jì)---數(shù)字鐘設(shè)計(jì)
- 電子鐘課程設(shè)計(jì)報(bào)告--數(shù)字鐘設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 課程設(shè)計(jì)---多功能電子數(shù)字鐘
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字電子電路課程設(shè)計(jì)---數(shù)字鐘
- 課程設(shè)計(jì)--多功能電子數(shù)字鐘
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字電子技術(shù)課程設(shè)計(jì)--數(shù)字鐘
- 電子技術(shù)課程設(shè)計(jì) 數(shù)字鐘設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì) (2)
- 課程設(shè)計(jì)數(shù)字鐘
- eda數(shù)字鐘課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論