電子鐘課程設(shè)計(jì)多功能電子鐘_第1頁(yè)
電子鐘課程設(shè)計(jì)多功能電子鐘_第2頁(yè)
電子鐘課程設(shè)計(jì)多功能電子鐘_第3頁(yè)
電子鐘課程設(shè)計(jì)多功能電子鐘_第4頁(yè)
電子鐘課程設(shè)計(jì)多功能電子鐘_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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、內(nèi)蒙古科技大學(xué)智能儀表綜合訓(xùn)練設(shè)計(jì)說(shuō)明書(shū)題 目:多功能電子鐘學(xué)生姓名:趙曉紅學(xué) 號(hào):0967112235專(zhuān) 業(yè):測(cè)控技術(shù)與儀器班 級(jí):2009-2指導(dǎo)教師:肖俊生摘要隨著電子科學(xué)技術(shù)的不斷發(fā)展,許多電子產(chǎn)品給人們的生活帶來(lái)了根本性改變,多功能電子鐘是人們生活中必不可少的產(chǎn)品,為人們的生活帶來(lái)極大的方便。本次設(shè)計(jì)是根據(jù)多功能數(shù)字電子鐘的特點(diǎn),使用STC89C52單片機(jī)芯片控制電路以及DS1302時(shí)鐘芯片產(chǎn)生實(shí)時(shí)時(shí)鐘/日歷,利用4位LED數(shù)碼管顯示時(shí)間信息,通過(guò)4個(gè)獨(dú)立按鍵實(shí)現(xiàn)時(shí)間信息的切換和調(diào)整功能。設(shè)計(jì)的軟件程序利用Keil編輯實(shí)現(xiàn)、電子鐘的系統(tǒng)的仿真通過(guò)proteus和protelDXP繪制

2、電路原理圖及PCB電路板,軟件硬件實(shí)物的調(diào)試。關(guān)鍵詞:電子鐘;STC89C52;DS1302;74LS164;LED顯示;目錄第一章前言3第二章總體方案設(shè)計(jì)42.1總體設(shè)計(jì)思路42.2系統(tǒng)基本方案設(shè)計(jì)和論證4單片機(jī)STC89C524時(shí)鐘芯片DS130242.2.3 LED數(shù)碼管顯示方案確定42.3設(shè)計(jì)最終方案5第三章硬件設(shè)計(jì)63.1電子鐘總體硬件框圖63.2 STC89C5263.2.1 STC89C52芯片介紹63.2.2 STC89C52單片機(jī)的復(fù)位電路73.2.3 STC89C52單片機(jī)的晶振電路73.3 DS1302時(shí)鐘電路83.3.1 DS1302芯片介紹83.3.2 DS1302工

3、作原理83.3.3 DS1302 連接電路圖93.4 74LS164共陰極數(shù)碼管驅(qū)動(dòng)芯片93.4.1 74LS164芯片功能及工作原理93.4.2 74LS164驅(qū)動(dòng)數(shù)碼管103.5時(shí)鐘顯示校正電路103.6蜂鳴電路11第四章軟件設(shè)計(jì)124.1編譯語(yǔ)言的選擇124.2語(yǔ)言編輯軟件Keil簡(jiǎn)介124.3程序設(shè)計(jì)12主程序模塊124.3.2 DS1302時(shí)鐘模塊13按鍵調(diào)整模塊144.3.4 74LS164驅(qū)動(dòng)數(shù)碼管顯示模塊14第五章總結(jié)15參考文獻(xiàn)16附錄1 多功能電子鐘硬件原理圖及PCB電路板17附錄2 多功能電子鐘C程序18第一章 前言單片機(jī)技術(shù)已經(jīng)廣泛應(yīng)用于工業(yè)控制、智能化儀器儀表、家用電

4、器,甚至電子玩具等各個(gè)領(lǐng)域。它具有體積小、功能多可靠性高、價(jià)格低廉、使用方便、系統(tǒng)設(shè)計(jì)靈活等優(yōu)點(diǎn),不僅成為工業(yè)測(cè)控領(lǐng)域普遍采用的智能化控制工具,而且已滲入到人們工作和生活的各個(gè)角落,有力地推動(dòng)了各行業(yè)的技術(shù)改革和產(chǎn)品的更新?lián)Q代,應(yīng)用前景廣闊。在單片機(jī)模塊中最常見(jiàn)的就是電子鐘,它采用數(shù)字電路實(shí)現(xiàn)對(duì)時(shí)、分、秒數(shù)字顯示的計(jì)時(shí)裝置,與機(jī)械時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性?,F(xiàn)在市面上還有各種時(shí)鐘芯片通過(guò)簡(jiǎn)單的串行通信與單片機(jī)進(jìn)行通信能夠?qū)崟r(shí)提供時(shí)間信息,使電子鐘被廣泛應(yīng)用于社會(huì)的各個(gè)領(lǐng)域,給人們的生活、學(xué)習(xí)、工作、娛樂(lè)帶來(lái)極大的方便。多功能數(shù)字電子鐘可以設(shè)置定時(shí)自動(dòng)報(bào)警、定時(shí)自動(dòng)鬧鈴、測(cè)試溫度、時(shí)間程序

5、自動(dòng)控制、甚至各種電氣設(shè)備的自動(dòng)啟用等功能,這樣的多功能數(shù)字電子鐘會(huì)使我們的生活更加方便,所以對(duì)多功能數(shù)字電子鐘的研究有很重要的現(xiàn)實(shí)意義。在這次電子鐘的設(shè)計(jì)過(guò)程中將已學(xué)過(guò)的比較零散的數(shù)字電路的知識(shí)有機(jī)的、系統(tǒng)的聯(lián)系起來(lái)用于實(shí)際,培養(yǎng)了綜合分析和設(shè)計(jì)電路,寫(xiě)程序、調(diào)試硬件電路的能力。第二章 總體方案設(shè)計(jì)2.1總體設(shè)計(jì)思路本設(shè)計(jì)就是應(yīng)用單片機(jī)強(qiáng)大的控制功能制作而成的多功能數(shù)字電子鐘,該多功能數(shù)字電子鐘通過(guò)4位LED數(shù)碼管和4位獨(dú)立按鍵實(shí)現(xiàn)年、月、日、時(shí)和分的顯示以及時(shí)間顯示的切換、時(shí)間修改調(diào)整。本設(shè)計(jì)采用的是STC89C52單片機(jī)。計(jì)時(shí)芯片采用時(shí)鐘芯片DS1302,該芯片通過(guò)簡(jiǎn)單的串行通信與單片機(jī)

6、進(jìn)行通信,時(shí)鐘/日歷電路能夠?qū)崟r(shí)提供年、月、日、時(shí)、分、秒信息,采用雙電源供電,當(dāng)外部電源掉電時(shí)能夠利用后備電池準(zhǔn)確計(jì)時(shí)。顯示采用LED靜態(tài)顯示,顯示驅(qū)動(dòng)芯片74LS164為8位串入并出的移位寄存器。2.2系統(tǒng)基本方案設(shè)計(jì)和論證單片機(jī)STC89C52STC89C52是一個(gè)低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)。主要性能有:兼容MCS51指令系統(tǒng)、32個(gè)雙向I/O口、256x8bit內(nèi)部RAM、3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷、時(shí)鐘頻率0-24MHz、2個(gè)串行中斷、可編程UART串行通道、2

7、個(gè)外部中斷源、6個(gè)中斷源、2個(gè)讀寫(xiě)中斷口線、3級(jí)加密位、低功耗空閑和掉電模式、軟件設(shè)置睡眠和喚醒功能。時(shí)鐘芯片DS1302采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高。計(jì)算機(jī)可通過(guò)中斷或查詢方式讀取計(jì)時(shí)數(shù)據(jù)并進(jìn)行顯示,因此計(jì)時(shí)功能的實(shí)現(xiàn)無(wú)需占用CPU的時(shí)間。LED數(shù)碼管顯示方案確定方案一:靜態(tài)顯示。靜態(tài)顯示,即當(dāng)顯示器顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定導(dǎo)通或截止。在靜態(tài)顯示系統(tǒng)中,每位顯示器都應(yīng)有各自的鎖存器、譯碼器與驅(qū)動(dòng)器,顯示驅(qū)動(dòng)電路具有輸出鎖存功能,用以鎖存各自待顯示數(shù)字的BCD碼或反碼

8、。因此,靜態(tài)顯示系統(tǒng)在每一次顯示輸出后能夠保持顯示不變,僅在待顯數(shù)字需要改變時(shí),才更新其數(shù)字顯示器中鎖存的內(nèi)容。這種顯示占用很少的CPU時(shí)間,顯示數(shù)據(jù)穩(wěn)定可靠。方案二:動(dòng)態(tài)顯示。動(dòng)態(tài)顯示,即各位數(shù)碼管輪流點(diǎn)亮,對(duì)于顯示器各位數(shù)碼管,每隔一段延時(shí)時(shí)間循環(huán)點(diǎn)亮一次。在動(dòng)態(tài)顯示系統(tǒng)中,微處理器或控制器應(yīng)定時(shí)地對(duì)各個(gè)顯示器進(jìn)行掃描,顯示器件分時(shí)輪流工作,每次只能使一個(gè)器件顯示,但由于人的視覺(jué)暫留現(xiàn)象,仍感覺(jué)所有的器件都在同時(shí)顯示。在LED數(shù)碼管輪流工作時(shí),為了防止出現(xiàn)閃爍現(xiàn)象,LED數(shù)碼管刷新頻率必須大于25Hz,即同一LED數(shù)碼管相臨兩次點(diǎn)亮?xí)r間間隔要小于40ms。顯示器的亮度與導(dǎo)通電流、點(diǎn)亮?xí)r間及

9、間隔時(shí)間的比例有關(guān),調(diào)整參數(shù)可以實(shí)現(xiàn)較高穩(wěn)定度的顯示。動(dòng)態(tài)顯示節(jié)省了I/O口,降低了能耗。在本次設(shè)計(jì)中,我們只用了4位LED數(shù)碼管,所需I/O口不多,整體電路不是很復(fù)雜,從占用CPU時(shí)間少和顯示穩(wěn)定的角度出發(fā),選擇方案一。2.3設(shè)計(jì)最終方案本次設(shè)計(jì)采用STC89C52作為主控制系統(tǒng), DS1302提供時(shí)鐘,利用74LS164驅(qū)動(dòng)4位數(shù)碼管靜態(tài)顯示,4位獨(dú)立按鍵對(duì)時(shí)間顯示功能進(jìn)行切換和調(diào)整。該設(shè)計(jì)包括硬件電路原理的實(shí)現(xiàn)方案設(shè)計(jì)、軟件程序編輯的實(shí)現(xiàn)、電子鐘正常工作的流程圖及原理圖、硬件實(shí)物的調(diào)試和系統(tǒng)的仿真。第三章 硬件設(shè)計(jì)3.1電子鐘總體硬件框圖該電子鐘的設(shè)計(jì)采用STC89C52作為主控制系統(tǒng),

10、 DS1302提供時(shí)鐘,利用74LS164驅(qū)動(dòng)4位數(shù)碼管靜態(tài)顯示,4位獨(dú)立按鍵對(duì)時(shí)間顯示功能進(jìn)行切換和調(diào)整,蜂鳴電路實(shí)現(xiàn)鬧鐘功能,整體硬件框圖如圖3.1所示。圖3.1多功能電子鐘系統(tǒng)硬件電路組成框圖3.2 STC89C52 STC89C52芯片介紹STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash存儲(chǔ)器。芯片擁有靈巧的8 位CPU和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM, 32位I/O 口線,看門(mén)狗定時(shí)器,內(nèi)置4KB EEPROM,MAX81

11、0復(fù)位電路,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。另外 STC89X52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz。圖3.2為STC89C52的引腳功能圖。圖3.2STC89C52引腳功能圖STC89C52單片機(jī)的復(fù)位電路任何單片機(jī)在開(kāi)始工作前,都必須進(jìn)行一次復(fù)位過(guò)程,使單片機(jī)處于一種確定的狀態(tài)。當(dāng)在STC89C52單片機(jī)的RST引腳引入高電平并保持2個(gè)機(jī)器

12、周期時(shí),單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作(若該引腳持續(xù)保持高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài))。按鍵手動(dòng)復(fù)位電路,RST端通過(guò)電阻與VCC電源接通,通過(guò)電阻的分壓就可以實(shí)現(xiàn)單片機(jī)的復(fù)位,如圖3.3所示。圖3.3復(fù)位電路3.2.3 STC89C52單片機(jī)的晶振電路單片機(jī)工作的過(guò)程中各指令的微操作在時(shí)間上有嚴(yán)格的次序,這種微操作的時(shí)間次序稱作時(shí)序,單片機(jī)的時(shí)鐘信號(hào)用來(lái)為單片機(jī)芯片內(nèi)部各種微操作提供時(shí)間基準(zhǔn),89C52的時(shí)鐘產(chǎn)生方式有兩種,一種是內(nèi)部時(shí)鐘方式,一種是外部時(shí)鐘方式。外部時(shí)鐘方式是把外部已有的時(shí)鐘信號(hào)引入到單片機(jī)內(nèi),此方式常用于多片89C52單片機(jī)同時(shí)工作,以便于各單片機(jī)的同步,這種方式適宜用來(lái)使

13、單片機(jī)的時(shí)鐘與外部信號(hào)保持同步。一般要求外部信號(hào)高電平的持續(xù)時(shí)間大于20ns.且為頻率低于12MHz的方波。為了盡量降低功耗,所以采用內(nèi)部時(shí)鐘方式,連接方式如圖3.4所示。圖3.4晶振電路在89C52單片機(jī)的內(nèi)部有一個(gè)震蕩電路,只要在單片機(jī)的XTAL1和XTAL2引腳外接石英晶體(簡(jiǎn)稱晶振)就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號(hào),圖中電容C1和C2的作用是穩(wěn)定頻率,電容值一般為30pF,晶振選擇的是11.0592MHz。3.3 DS1302時(shí)鐘電路 DS1302芯片介紹DS1302時(shí)鐘芯片可以工作于24小時(shí)模式或AM/PM的12小時(shí)模式。其內(nèi)部包含了10個(gè)時(shí)鐘寄存器和31字節(jié)RAM,

14、這些寄存器和RAM用來(lái)存放各種時(shí)間數(shù)據(jù)。在使用時(shí),可以對(duì)芯片的當(dāng)前時(shí)間進(jìn)行設(shè)定。DS1302能在非常低的功耗下工作。DS1302時(shí)鐘芯片的主要性能有實(shí)時(shí)時(shí)鐘記錄計(jì)秒、分鐘、小時(shí)、日、月和年;31字節(jié)RAM存儲(chǔ)時(shí)間數(shù)據(jù);2.05.0V供電;采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù);8針DIP封裝和SOIC封裝;兼容TTL電平。 DS1302工作原理DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc10.2V時(shí),Vcc

15、2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過(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í),在Vcc2.0V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)

16、輸入輸出端(雙向),SCLK為時(shí)鐘輸入端。圖3.5為DS1302引腳圖。圖3.5 DS1302引腳封裝圖 DS1302 連接電路圖DS1302外部連接電路如下圖所示。圖3.6 DS1302連接圖3.4 74LS164共陰極數(shù)碼管驅(qū)動(dòng)芯片3.4.1 74LS164芯片功能及工作原理74LS164是高速硅門(mén)CMOS器件,與低功耗肖特基型TTL(LSTTL)器件的引腳兼容。74LS164是8位邊沿觸發(fā)式移位寄存器,串行輸入數(shù)據(jù),然后并行輸出。數(shù)據(jù)通過(guò)兩個(gè)輸入端(DSA或DSB)之一串行輸入;任一輸入端可以用作高電平使能端,控制另一輸入端的數(shù)據(jù)輸入。兩個(gè)輸入端或者連接在一起,或者把不用的輸入端接高電平

17、,一定不要懸空。 時(shí)鐘(CP)每次由低變高時(shí),數(shù)據(jù)右移一位,輸入到 Q0,Q0是兩個(gè)數(shù)據(jù)輸入端(DSA和DSB)的邏輯與,它將上升時(shí)鐘沿之前保持一個(gè)建立時(shí)間的長(zhǎng)度。主復(fù)位 (MR) 輸入端上的一個(gè)低電平將使其它所有輸入端都無(wú)效,同時(shí)非同步地清除寄存器,強(qiáng)制所有的輸出為低電平。圖3.7為74LS164引腳圖。圖3.7 74LS164引腳功能圖3.4.2 74LS164驅(qū)動(dòng)數(shù)碼管靜態(tài)數(shù)碼管顯示電路由四只74LS164、四只共陰極LED數(shù)碼管組成。輸入只有兩個(gè)信號(hào),它們是串行數(shù)據(jù)線DIN和移位信號(hào)CLK。 其中第1、2腳為串行數(shù)據(jù)輸入端,2個(gè)引腳按邏輯與運(yùn)算規(guī)律輸入信號(hào),共一個(gè)輸入信號(hào)時(shí)可并接。第8

18、腳為時(shí)鐘輸入端,每一個(gè)時(shí)鐘信號(hào)的上升沿加到S端時(shí),移位寄存器移一位,8個(gè)時(shí)鐘脈沖過(guò)后,8位二進(jìn)制數(shù)全部移入74LS164中。R(第9腳)為復(fù)位端,當(dāng)R=0時(shí),移位寄存器各位復(fù)0,只有當(dāng)R=1時(shí),時(shí)鐘脈沖才起作用。Q1Q8(第3-6和10-13引腳)并行輸出端分別接LED顯示器的hga各段對(duì)應(yīng)的引腳上。在給出了8個(gè)脈沖后,最先進(jìn)入74LS164的第一個(gè)數(shù)據(jù)到達(dá)了最高位,再來(lái)一個(gè)脈沖,第一個(gè)脈沖就會(huì)從最高位移出。四只74LS164首尾相連,每只74LS164的并行輸出作為L(zhǎng)ED數(shù)碼管顯示的段碼。具體的連接如圖3.8所示。圖3.8 74LS164驅(qū)動(dòng)數(shù)碼管靜態(tài)顯示接線圖3.5時(shí)鐘顯示校正電路利用按鍵

19、開(kāi)關(guān)來(lái)校正時(shí)鐘顯示的數(shù)字。當(dāng)按鈕按下時(shí),將在相應(yīng)的端口輸入一個(gè)低電平,通過(guò)相應(yīng)的程序來(lái)改變時(shí)鐘顯示。其中K1按鍵開(kāi)關(guān)用來(lái)選擇要修改的數(shù)字;K2按鍵用來(lái)增加所選數(shù)字的數(shù)值;K3按鍵用來(lái)減少所選數(shù)字的數(shù)值,K4按鍵用來(lái)切換顯示時(shí)間。圖3.9為按鍵電路。圖3.9 按鍵電路3.6蜂鳴電路單片機(jī)在復(fù)位后的個(gè)I/O口是高電平,此時(shí)三極管是截止的,編寫(xiě)程序使選定的I/O為低電平,此時(shí)三極管導(dǎo)通,導(dǎo)通后蜂鳴器與電源正極連通,構(gòu)成一個(gè)工作回路,從而發(fā)出滴滴的響聲實(shí)現(xiàn)鬧鐘功能。電路連接如圖3.10所示。圖3.10 蜂鳴電路連接圖第四章 軟件設(shè)計(jì)在硬件電路設(shè)計(jì)的基礎(chǔ)上,本設(shè)計(jì)中的軟件主要采用Keil編譯器進(jìn)行編寫(xiě),

20、該程序主要包括三個(gè)方面的內(nèi)容:一是DS1302從單片機(jī)中讀取數(shù)據(jù)進(jìn)行計(jì)數(shù),二是利用按鍵對(duì)時(shí)間進(jìn)行調(diào)整,三是74LS164驅(qū)動(dòng)LED數(shù)碼管顯示時(shí)間。軟件總體設(shè)計(jì)主要包括主程序設(shè)計(jì)和各個(gè)子程序的設(shè)計(jì)。畫(huà)出主程序及每一子程序的流程圖,編寫(xiě)程序。軟件編寫(xiě)的主體思路是將系統(tǒng)按功能模塊化劃分,然后根據(jù)模塊要實(shí)現(xiàn)的功能寫(xiě)各個(gè)子程序。最后,將各程序模塊連接成一個(gè)完整的程序。4.1編譯語(yǔ)言的選擇對(duì)于單片機(jī)的開(kāi)發(fā)應(yīng)用中,C語(yǔ)言編寫(xiě)的程序比用匯編編寫(xiě)的程序更符合人們的思考習(xí)慣。還有很多處理器都支持C編譯器,這樣意味著處理器也能很快上手。且具有良好的模塊化、容易閱讀、維護(hù)等優(yōu)點(diǎn),且編寫(xiě)的模塊程序易于移植?;贑語(yǔ)言和

21、匯編語(yǔ)言的優(yōu)缺點(diǎn),采用C語(yǔ)言編寫(xiě)。4.2語(yǔ)言編輯軟件Keil簡(jiǎn)介Keil C51軟件是針對(duì)51系列兼容單片機(jī)的C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),其集成開(kāi)發(fā)環(huán)境為Keil C Version。Keil C Version提供了包括C51編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案。Keil與Proteus有聯(lián)合調(diào)試的功能,構(gòu)建一個(gè)智能儀器儀表的虛擬開(kāi)發(fā)平臺(tái)。4.3程序設(shè)計(jì)4.3.1主程序模塊主程序?qū)崿F(xiàn)的功能:與硬件相結(jié)合實(shí)現(xiàn)顯示時(shí)間,調(diào)整時(shí)間的各個(gè)功能。在主程序的軟件設(shè)計(jì)中,首先對(duì)定時(shí)器T0、74LS164等進(jìn)行初始化,對(duì)定時(shí)時(shí)間及中斷方式的進(jìn)行設(shè)置,然后調(diào)用按鍵瀏覽函數(shù),對(duì)按

22、鍵進(jìn)行檢測(cè),再對(duì)相應(yīng)的按鍵操作寫(xiě)入和讀出DS1302的值并且調(diào)用不同的顯示函數(shù),最后調(diào)用鈴聲函數(shù)如此循環(huán)往復(fù)。圖4.1為主程序的流程圖。圖4.1主程序流程圖4.3.2 DS1302時(shí)鐘模塊圖4.2顯示DS1302的實(shí)時(shí)時(shí)間流程。根據(jù)此流程框圖,不難采集實(shí)時(shí)時(shí)間。圖4.2 DS1302子程序流程圖4.3.3按鍵調(diào)整模塊判斷有無(wú)鍵按下,沒(méi)有繼續(xù)等待,有鍵信號(hào)是延時(shí)等待去抖,如果仍有按鍵信號(hào),則進(jìn)行按鍵處理,實(shí)現(xiàn)顯示或調(diào)整功能,沒(méi)有的話等待,再判斷。按鍵檢測(cè)程序流程圖如圖4.3所示。圖4.3 按鍵檢測(cè)程序流程圖4.3.4 74LS164驅(qū)動(dòng)數(shù)碼管顯示模塊單片機(jī)向74LS164傳送數(shù)據(jù),由74LS16

23、4按串入并出方式接受和發(fā)送數(shù)據(jù)。164向LED發(fā)送數(shù)據(jù),發(fā)送了LED就顯示,否則就繼續(xù)等待。接著判斷LED是否顯示完全,如果顯示完全就返回等待下一次數(shù)據(jù)發(fā)送,否則等待164送入新數(shù)據(jù)。74LS164驅(qū)動(dòng)LED顯示子程序如圖4.4所示。圖4.4顯示子程序流程圖第五章 總結(jié)該多功能電子鐘通過(guò)單片機(jī)STC89C52做CPU進(jìn)行核心控制,基于時(shí)鐘芯片DS1302產(chǎn)生時(shí)間,利用74LS164驅(qū)動(dòng)的LED進(jìn)行靜態(tài)顯示、鍵盤(pán)來(lái)修改時(shí)間的一個(gè)多功能的電子鐘。LED能夠?qū)δ?、月、日、時(shí)、分進(jìn)行計(jì)時(shí)、顯示及調(diào)整。通過(guò)本次設(shè)計(jì)使我對(duì)STC89C52、時(shí)鐘芯片DS1302、74LS164的各個(gè)引腳及功能都有所了解。在

24、本次課程設(shè)計(jì)中,使我們學(xué)到了很多很多,不僅鞏固了以前學(xué)過(guò)的很多課本知識(shí),如數(shù)電、模電、智能儀器、單片機(jī)和C語(yǔ)言等,而且學(xué)習(xí)使用了很多專(zhuān)業(yè)軟件,如:protelDXP、Keil、proteus等軟件的使用。在實(shí)踐過(guò)程中,培養(yǎng)了思考問(wèn)題、解決問(wèn)題的能力??傊?,這次智能儀器課程設(shè)計(jì)過(guò)程中艱難帶著喜悅,讓我有了很大的收獲,讓自己清晰地認(rèn)識(shí)到自己有哪些不足,哪些地方需要去彌補(bǔ),也讓自己學(xué)到了很多新的知識(shí)。它讓我們把理論設(shè)計(jì)和工程實(shí)踐相結(jié)合、鞏固了我們的基礎(chǔ)知識(shí)和培養(yǎng)了我們的創(chuàng)新意識(shí)等方面,這次課程設(shè)計(jì)全面的培養(yǎng)了學(xué)生的整體素質(zhì)。這次課程設(shè)計(jì)所學(xué)到的東西在我們今后的學(xué)習(xí)和工作當(dāng)中都會(huì)有很大的幫助!參考文獻(xiàn)

25、1張友德,涂時(shí)亮,趙志英.單片微型機(jī)原理、應(yīng)用與實(shí)驗(yàn)(C51版)M.上海:復(fù)旦大學(xué)出版社,20102潘永雄.新編單片機(jī)原理與應(yīng)用M西安:西安電子科技大學(xué)出版社,20073 李廣弟.單片機(jī)基礎(chǔ)M.北京:北京航空航天大學(xué)出版社,20014 譚浩強(qiáng).C程序設(shè)計(jì)(第二版)M.北京:清華大學(xué)出版社,19995 尹勇.Vision2單片機(jī)應(yīng)用程序開(kāi)發(fā)指南M.北京:科學(xué)出版社,20056 賈振國(guó),許琳.智能化儀器儀表原理及應(yīng)用:基于Proteus及C51程序設(shè)計(jì)語(yǔ)言M.北京:中國(guó)水利水電出版社,20117 沙占友.單片機(jī)外圍電路設(shè)計(jì)M.北京:電子工業(yè)出版社,20048 張?jiān)?智能儀表設(shè)計(jì)實(shí)用技術(shù)及實(shí)例M.

26、北京:機(jī)械工業(yè)出版社,20089 霍亮生.電子技術(shù)基礎(chǔ)M.北京:清華大學(xué)出版社,200610 夏寬理.程序設(shè)計(jì)M.上海:復(fù)旦大學(xué)出版社,200011 周潤(rùn)景.Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例M.北京:電子工業(yè)出版社,2007附錄1 多功能電子鐘硬件原理圖及PCB電路板ProtelDXP原理圖:ProtelDXP繪制的PCB板:附錄2 多功能電子鐘C程序#include#define uint unsigned int#define uchar unsigned charsbit DAT=P10;sbit CLK=P11;sbit io=P33;sbit sclk=P34;

27、sbit rst=P35;sbit k1=P14;sbit k2=P15;sbit k3=P16;sbit k4=P17;sbit key_out=P17; uchar miao,fen,shi,nian,shiji=0x20,yue,ri,week,s1num,flag,shu;uchar naos=0x07,naof=0x30,naom=0x00,qw=0;uchar time7;/uchar code led_tab16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,/ 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /

28、led段碼uchar code led_tab16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0;uchar showbuf04=0x3f,0x3f,0x3f,0x3f; /時(shí)間 顯示緩存uchar showbuf14=0x3f,0x3f,0x3f,0x3f; /日期 顯示緩存uchar showbuf24=0x3f,0x3f,0x3f,0x3f; uchar showbuf34=0x3f,0x3f,0x3f,0x3f; uchar disflag=0; /顯示標(biāo)志,用于指示顯示日期或時(shí)間bit miaoshan;void delay_

29、ms(int z)int x,y; for(x=z;x0;x-) for(y=150;y0;y-); void write_byte(uchar dat)/寫(xiě)1字節(jié)數(shù)據(jù)到1302,低位在前。uchar i;for(i=0;i1;sclk=0;sclk=1; sclk=0;uchar read_byte()/從DS1302中讀1字節(jié)數(shù)據(jù),讀出時(shí)高位在前。uchar i,dat;for(i=0;i1;if(io)dat=dat|0x80;sclk=1;sclk=0; sclk=0;return(dat);void write_ds1302(uchar add,uchar dat)/向DS1302的

30、add地址中寫(xiě)入dat數(shù)據(jù)rst=0;sclk=0;rst=1;write_byte(add);write_byte(dat);sclk=0;rst=0;uchar read_ds1302(uchar add)/從DS1302的add地址中讀出數(shù)據(jù)uchar time;rst=0;sclk=0;rst=1;write_byte(add);time=read_byte();sclk=0;rst=0;/temp=time/16;/temp1=time%16;/由于DS1302中數(shù)據(jù)時(shí)BCD碼,因此需要數(shù)據(jù)的轉(zhuǎn)換/time=temp*10+temp1; /將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù),便于在數(shù)碼管中顯示r

31、eturn(time);void init_1302()/時(shí)間初始化函數(shù),不進(jìn)行初始化DS1302不能正常工作write_ds1302(0x8e,0x00);write_ds1302(0x8c,time0);/寫(xiě)入年數(shù)據(jù)write_ds1302(0x88,time1);/寫(xiě)入月數(shù)據(jù)write_ds1302(0x86,time2);/寫(xiě)入日數(shù)據(jù)write_ds1302(0x84,time3);/寫(xiě)入時(shí)數(shù)據(jù)write_ds1302(0x82,time4);/寫(xiě)入分?jǐn)?shù)據(jù)write_ds1302(0x80,time5);/寫(xiě)入秒數(shù)據(jù)write_ds1302(0x8a,time6);/寫(xiě)入星期數(shù)據(jù)wri

32、te_ds1302(0x90,0xab);/通過(guò)實(shí)驗(yàn)證實(shí)只有在涓流充電寄存器中寫(xiě)入0xabwrite_ds1302(0x8e,0x80);/既使能兩個(gè)二極管接入8K電阻才能正常使用后備電源。void read_time()/時(shí)間讀取函數(shù)miao=read_ds1302(0x81);fen=read_ds1302(0x83);shi=read_ds1302(0x85);week=read_ds1302(0x8b);ri=read_ds1302(0x87);yue=read_ds1302(0x89);nian=read_ds1302(0x8d);time0=nian;time1=yue;time2

33、=ri;time3=shi;time4=fen;time5=miao;time6=week; void write164_byte(uchar date)uchar i;for(i=0;i8;i+)CLK=0;DAT=date&0x80;CLK=1;date=1;CLK=0;void show(uchar *p) /刷新顯示uchar i;for(i=0;i4;i+) write164_byte(pi);void keyscan() /鍵盤(pán)檢測(cè)函數(shù),用于時(shí)間的調(diào)節(jié)uchar ys,yg,mou,rg,rs,tian,fg,fs,sg,ss,sf,ff,nig,nis,tempfen,temps

34、hi,tempri,tempyue,tempnian;if(k1=0)delay_ms(1);if(k1=0)while(!k1);s1num+;flag=1;if(s1num=3)init_1302();flag=0;s1num=0;if(s1num!=0)if(k2=0)delay_ms(1);if(k2=0)while(!k2); switch(disflag) case 0: switch(s1num) case 1:tempfen=(fen/16)*10)+(fen%16); /BCD轉(zhuǎn)換成數(shù)字 tempfen+; if(tempfen=60) tempfen=0; fs=tempf

35、en/10; fg=tempfen%10; ff=(fs4)&0xf0)|(fg&0x0f); /轉(zhuǎn)換成BCD碼 time4=ff; time5=0; write_ds1302(0x8e,0x00); /使寄存器可寫(xiě) write_ds1302(0x82,ff); /寫(xiě)入寄存器 write_ds1302(0x8e,0x80);/使寄存器不可寫(xiě) break; case 2: tempshi=(shi/16)*10)+(shi%16); tempshi+; if(tempshi=24) tempshi=0; ss=tempshi/10; sg=tempshi%10; sf=(ss4)&0xf0)|(

36、sg&0x0f); time3=sf; write_ds1302(0x8e,0x00); write_ds1302(0x84,sf); write_ds1302(0x8e,0x80);break; break; case 1: switch(s1num) case 1:tempri=(ri/16)*10)+(ri%16); tempri+; if(tempri=32) tempri=1; rs=tempri/10; rg=tempri%10; tian=(rs4)&0xf0)|(rg&0x0f); time2=tian; write_ds1302(0x8e,0x00); write_ds130

37、2(0x86,tian); write_ds1302(0x8e,0x80); break; case 2:tempyue=(yue/16)*10)+(yue%16); tempyue+; if(tempyue=13) tempyue=1; ys=tempyue/10; yg=tempyue%10; mou=(ys99) tempnian=0;nis=tempnian/10; nig=tempnian%10; tempnian=(nis99) tempnian=0;nis=tempnian/10; nig=tempnian%10; shiji=(nis4)&0xf0)|(nig&0x0f); b

38、reak;break; case 3 : switch(s1num) case 1:tempnian=(naof/16)*10)+(naof%16); tempnian+; if(tempnian=60) tempnian=0;nis=tempnian/10; nig=tempnian%10; naof=(nis4)&0xf0)|(nig&0x0f); break; case 2:tempnian=(naos/16)*10)+(naos%16); tempnian+; if(tempnian=24) tempnian=0;nis=tempnian/10; nig=tempnian%10; na

39、os=(nis4)&0xf0)|(nig&0x0f); break;break; if(k3=0)delay_ms(1);if(k3=0)while(!k3); switch(disflag) case 0: switch(s1num) case 1:tempfen=(fen/16)*10)+(fen%16); tempfen-; if(tempfen=-1) tempfen=59; fs=tempfen/10; fg=tempfen%10; ff=(fs4)&0xf0)|(fg&0x0f); time4=ff; time5=0; write_ds1302(0x8e,0x00); write_

40、ds1302(0x82,ff); write_ds1302(0x8e,0x80); break; case 2:tempshi=(shi/16)*10)+(shi%16); tempshi-; if(tempshi=-1) tempshi=23; ss=tempshi/10; sg=tempshi%10; sf=(ss4)&0xf0)|(sg&0x0f); time3=sf; write_ds1302(0x8e,0x00); write_ds1302(0x84,sf); write_ds1302(0x8e,0x80); break; case 1: switch(s1num) case 1:t

41、empri=(ri/16)*10)+(ri%16); tempri-; if(tempri=0) tempri=31; rs=tempri/10; rg=tempri%10; tian=(rs4)&0xf0)|(rg&0x0f); time2=tian; write_ds1302(0x8e,0x00); write_ds1302(0x86,tian); write_ds1302(0x8e,0x80); break; case 2:tempyue=(yue/16)*10)+(yue%16); tempyue-; if(tempyue=0) tempyue=12; ys=tempyue/10; y

42、g=tempyue%10; mou=(ys4)&0xf0)|(yg&0x0f); time1=mou; time0=0x10; time6=0x01; write_ds1302(0x8e,0x00); write_ds1302(0x88,mou); write_ds1302(0x8e,0x80);break;break; case 2: switch(s1num) case 1:tempnian=(nian/16)*10)+(nian%16); tempnian-; if(tempnian0) tempnian=99;nis=tempnian/10; nig=tempnian%10; tempnian=(nis4)&0xf0)|(nig&0x0f); time0=tempnian; write_

溫馨提示

  • 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)論