【正文】
e,month,year。void ds1302_task()。void write_byte(uchar Clock_Add,uchar Clock_Data)。void sendbyte()。 uchar clk_hour=14。uchar date=12。void ds1302_task()。void write_byte(uchar Clock_Add,uchar Clock_Data)。 //延時(shí); beeper=1。 //掃描鍵盤子程序; ds1302_task()。c++)。a++) for(b=0。void alarm_clock(void)。void ds1302_task()。void write_byte(uchar Clock_Add,uchar Clock_Data)。 void sendbyte()。 //定義全局變量(標(biāo)志位);extern uchar function_count。 //;sbit beeper= P2^0。sbit UP=P2^4。 //;sbit Calendar=P2^7。本文采用51單片機(jī)C語(yǔ)言進(jìn)行編程,當(dāng)然也可以應(yīng)用匯編語(yǔ)言編程。所以多功能電子時(shí)鐘在今后的應(yīng)用也會(huì)越來(lái)越廣泛。}在調(diào)用鬧鈴子程序時(shí),鬧鈴標(biāo)志位為“1”,則開啟鬧鈴,否則關(guān)閉鬧鈴。在硬件調(diào)試部分,已經(jīng)將實(shí)時(shí)時(shí)鐘日歷子程序調(diào)試完畢了,只需在主程序中調(diào)用按鍵子程序即可,源程序見附錄A,這里不再贅述。當(dāng)K7彈出后,數(shù)碼管1~6位有顯示日期轉(zhuǎn)為顯示實(shí)時(shí)時(shí)間[20]。觀察32分鐘之后,數(shù)碼管顯示“150000”,證明DS1302電路正確。燒錄進(jìn)單片機(jī),檢查電路電源正負(fù)極連接是否正確。3. 。 }} DS1302電路調(diào)試該電路包含DS1302芯片、主電源、備用電源、晶振等部分。CLK=1。0x1。gsb++) { led=disp_buffer[gsb]。 disp_buffer[5]=tab[5]。 disp_buffer[1]=tab[1]。j0。 void delay_50ms(unsigned int t) //延時(shí)子程序 { unsigned int j。sbit DAT=P1^0。檢查無(wú)誤后上電,檢查顯示電路是否正確。3. 明確單片機(jī)管腳功能。 }}} 顯示電路調(diào)試本設(shè)計(jì)的顯示電路使用了共陰LED和74LS164。 //初始化P1口 for(n=0。i)。i)for(j=50。5. 編輯一個(gè)使一組發(fā)光二極管循環(huán)點(diǎn)亮的程序并燒錄到單片機(jī)內(nèi),上電運(yùn)行,檢查單片機(jī)是否正常工作,復(fù)位電路是否正確。AT89C51的31號(hào)引腳是外部程序存儲(chǔ)器選擇信號(hào)端,當(dāng)該引腳為高電平時(shí),單片機(jī)會(huì)一直從片內(nèi)程序存儲(chǔ)器內(nèi)取指令。硬件調(diào)試需要萬(wàn)用表、示波器等,軟件調(diào)試一般需要諸如Keil等仿真編輯器。例如:本設(shè)計(jì)是在單片機(jī)系統(tǒng)基礎(chǔ)上建立起來(lái)的,所以必須先確定單片機(jī)基礎(chǔ)電路能否正常工作。如果電路出錯(cuò),可以在計(jì)算機(jī)上方便的修改電路,程序出錯(cuò)可以重新編輯程序,這種方法節(jié)時(shí)、省力,經(jīng)濟(jì)、方便。但應(yīng)用此方法,仍需要十分了解所使用元器件的工作方式和管腳連接方式。硬件調(diào)試比較費(fèi)時(shí),需要細(xì)心和耐心,也需要熟練掌握電路原理。源程序見附錄一。由于本設(shè)計(jì)中AT89C51單片機(jī)在系統(tǒng)中的主要任務(wù)是接受DS1302和DS18B20的數(shù)據(jù)并送出顯示,完成時(shí)鐘/日歷校對(duì)和日期/溫度顯示控制。在執(zhí)行鍵盤按鍵規(guī)定的功能中不理睬鍵盤輸入。為了方便實(shí)現(xiàn)按鍵顯示,程序中調(diào)用的都是各個(gè)標(biāo)志位,通過判斷標(biāo)志位的“真”、“假”來(lái)決定顯示的內(nèi)容。源程序見附錄一。 實(shí)時(shí)時(shí)鐘日歷子程序流程圖DS1302每次上電時(shí)自動(dòng)處于暫停狀態(tài),必須把秒寄存器的位7置位0,時(shí)鐘才開始計(jì)時(shí)。單片機(jī)依次開始調(diào)用鍵盤掃描子程序、DS1302子程序、DS18B20子程序、鬧鈴子程序,經(jīng)過延時(shí),返回程序開頭循環(huán)運(yùn)行。C語(yǔ)言程序可讀性高,更便于理解。出于應(yīng)用方便,本設(shè)計(jì)采用按鍵電平復(fù)位電路。上電自動(dòng)復(fù)位是利用電容儲(chǔ)電來(lái)實(shí)現(xiàn)的,(a)所示。單片機(jī)復(fù)位后不影響內(nèi)部RAM的狀態(tài)[17]。 鬧鈴電路 復(fù)位電路設(shè)計(jì)復(fù)位是單片機(jī)的初始化操作,以便使CPU和系統(tǒng)中其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。此類集成電路體積較小,使用方便,不足的是音樂簡(jiǎn)單、單一。還有一種方法是采用錄音放音芯片1420做鬧鈴,先對(duì)錄放音設(shè)備錄入一段音樂,當(dāng)?shù)皆O(shè)定時(shí)間時(shí),單片機(jī)控制錄放音設(shè)備放音。 鬧鈴電路設(shè)計(jì)鬧鈴音樂可以直接采用蜂鳴器鬧鈴,如當(dāng)前時(shí)刻與鬧鈴時(shí)間相同,單片機(jī)向蜂鳴器送出高電平,蜂鳴器發(fā)聲。調(diào)分、秒、年、月、日與皆之相同,只是各位最高值不同。 按鍵功能表按鍵鍵名功能屬性K1Calendar顯示日歷自鎖K3FUN功能選擇自動(dòng)復(fù)位K4UP數(shù)值加一操作自動(dòng)復(fù)位K5DOWN數(shù)值減一操作自動(dòng)復(fù)位K6Enter/Snooze確認(rèn)鍵/貪睡自動(dòng)復(fù)位K7Alarm鬧鈴開關(guān)自鎖按鍵操作說明如下:K1鍵:該鍵為帶自鎖按鍵,在正常顯示時(shí)間狀態(tài)下,每次將按鍵按下, LED數(shù)碼管將顯示日期;再次按下,按鍵彈出,重新顯示時(shí)間。只有再次按下,按鍵彈出,與之連接的單片機(jī)管腳才會(huì)重新被拉回高電平。矩陣式鍵盤適合按鍵較多時(shí)使用。 顯示面板LED分布圖 按鍵電路設(shè)計(jì)根據(jù)功能需要,本時(shí)鐘需要設(shè)置以下功能鍵:校對(duì)選擇鍵,加1操作鍵,減1操作鍵,顯示日期鍵,鬧鈴開關(guān)鍵。靜態(tài)顯示驅(qū)動(dòng)程序簡(jiǎn)單,且CPU占用率低,但每個(gè)LED數(shù)碼管需要一個(gè)鎖存器來(lái)鎖存每一個(gè)顯示位的筆段代碼,硬件開銷大,僅適合顯示位數(shù)較少的場(chǎng)合。但設(shè)計(jì)上如果處理不當(dāng),易造成亮度低,閃爍問題。另外,AT89C51本身沒有專門的液晶驅(qū)動(dòng)接口。DS1302采用雙電源供電,平時(shí)由+5V電源供電,當(dāng)+5V掉電之后,由圖中BT1(+3V備用電池)供電。具體電路圖請(qǐng)參見附錄C。整個(gè)電路使用了兩種電源,+5V電源將為整個(gè)電路供電。該系統(tǒng)使用AT89C51單片機(jī)作為核心,通過讀取時(shí)鐘日歷芯片DS1302和溫度傳感器DS18B20的數(shù)據(jù),完成此電子時(shí)鐘的主要功能——時(shí)鐘/日歷和環(huán)境溫度采集。其操作方法與前述相同[9][10][11]。: I充電=(V0VDVE)/R ()式中:V0——;VD——二極管壓降,;R——慢速充電控制寄存器0和1位編碼決定的電阻值;VE——VCC1腳所接入的電池電壓。如果編碼DS是01,選擇一個(gè)二極管;如果編碼是10,選擇兩個(gè)二極管;其他編碼將不允許充電。另外,還有慢速充電控制寄存器和RAM寄存器??刂萍拇嫫鳎?FH、8EH)的位7是寫保護(hù)位(WP),其它7位均置為0。 DS1302有關(guān)日歷、時(shí)間的寄存器共有10個(gè),時(shí)鐘/日歷包含在其中的7個(gè)寫/讀寄存器內(nèi),這7個(gè)寄存器分別是秒、分、小時(shí)、日、月、星期和年。對(duì)于單字節(jié)操作,包括命令字節(jié)在內(nèi),每次為2個(gè)字節(jié),需要16個(gè)時(shí)鐘;對(duì)于時(shí)鐘/日歷多字節(jié)模式操作,每次為7個(gè)字節(jié),需要72個(gè)時(shí)鐘;而對(duì)于RAM多字節(jié)模式操作,每次則為32字節(jié),需要多達(dá)256個(gè)時(shí)鐘。為了啟動(dòng)數(shù)據(jù)的傳輸,CE引腳信號(hào)應(yīng)由低變高,當(dāng)把CE驅(qū)動(dòng)至邏輯1的狀態(tài)時(shí),SCLK必須為邏輯0,數(shù)據(jù)在SCLK的上升沿串行輸入。每次僅寫入或讀出一個(gè)字節(jié)數(shù)據(jù)稱為單字節(jié)操作,每次對(duì)時(shí)鐘/日歷的8字節(jié)或31字節(jié)RAM進(jìn)行全體寫入或讀出的操作,稱其為多字節(jié)操作方式??刂谱挚偸菑淖畹臀婚_始輸出。當(dāng)A4~A0=8,為慢速充電參數(shù)選擇寄存器。2. BIT 6:如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);3. BIT 5至BIT 1(A4~A0):用A4~A0表示,定義片內(nèi)寄存器和RAM的地址。要想與DS1302通信,首先要先了解DS1302的控制字。 DS1302芯片引腳圖。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。故而從性價(jià)比和貨源上考慮,本設(shè)計(jì)采用實(shí)時(shí)時(shí)鐘日歷芯片DS1302。每種芯片的主要時(shí)鐘功能基本相同,只是在引腳數(shù)量、備用電池的安裝方式、計(jì)時(shí)精度和擴(kuò)展功能等方面略有不同。在空閑方式中,CPU停止工作,而RAM、定時(shí)器/計(jì)數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。片內(nèi)的FLASH存儲(chǔ)器允許在系統(tǒng)內(nèi)可改編程序或用常規(guī)的非易失性存儲(chǔ)器編程器來(lái)編程。擁有15條可編程I/O引腳,2個(gè)16位定時(shí)器/計(jì)數(shù)器,6個(gè)中斷源,可編程串行UART通道,并能直接驅(qū)動(dòng)LED輸出。第三章 基于單片機(jī)的電子時(shí)鐘硬件設(shè)計(jì)在比較了第二章的三種實(shí)現(xiàn)方案之后,考慮單片機(jī)貨源充足、價(jià)格低廉,可軟硬件結(jié)合使用,能夠較方便的實(shí)現(xiàn)系統(tǒng)的多功能性,故采用單片機(jī)作為本設(shè)計(jì)的硬件基礎(chǔ)。利用單片機(jī)的智能性,可方便地實(shí)現(xiàn)具有智能的電子鐘設(shè)計(jì)。所以單片機(jī)的應(yīng)用非常廣泛,在智能儀表、機(jī)電一體化、實(shí)時(shí)控制、分布式多機(jī)系統(tǒng)以及人們的生活中均有用武之地。多時(shí)鐘系統(tǒng)能夠包括上述四種時(shí)鐘類型的任意組合[2][3][4]。由于EDA技術(shù)擁有系統(tǒng)的模擬和仿真功能,可讀性、可重復(fù)性、可測(cè)性非常好,所以利用EDA開發(fā)FPGA是目前比較流行的方式。交流供電為主,直流電源為后備輔助電源,并能自動(dòng)切換。當(dāng)今市場(chǎng)上的電子時(shí)鐘品類繁多,外形小巧別致。由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。想知道時(shí)間,手表當(dāng)然是一個(gè)很好的選擇,但是,在忙碌當(dāng)中,我們還需要一個(gè)“助理” 及時(shí)的給我們提醒時(shí)間。 時(shí)間對(duì)人們來(lái)說總是那么寶貴,工作的忙碌性和繁雜容易使人忘記當(dāng)前的時(shí)間。從古代的水漏、十二天干地支,到后來(lái)的機(jī)械鐘表以及當(dāng)今的石英鐘,都充分顯現(xiàn)出了時(shí)間的重要,同時(shí)也代表著科技的進(jìn)步。關(guān)鍵詞:電子時(shí)鐘;多功能;AT89C51;時(shí)鐘日歷芯片The Design with Investigation of the Multifunction Electron Clock -The Design of the Hardware AbstractThe electronic clock mainly uses the electronic technology make the clock puterization, the digitization, with the clock precision, small size, friendly interface, scalable performance and other characteristics, was widely used in life and work. The design for the main implementing a clock/calendar can be displayed normal, collecting personal ambient temperature, with the timing alarm of the multifunction electronic clock.Comparing and analysising the development technology of the electron clock, the design determines to use the MCU technology to realize the multifunctional electron clock. This design application AT89C51 as a core chips, 7 LED digital displaying, using DS1302 realtime clock chip to plete the basic function of the clock/calendar. The method has the advantage of being simple circuit, reliable performance, good realtime, high precision of the time, simply operation, easy programming.The electronic clock can be applied to the general living and working ,can also be modified to improve performance, add new functions, and brings more convenient to people’s life and work.Key words: Electronic clock。本文對(duì)當(dāng)前電子鐘開發(fā)手段進(jìn)行了比較和分析,最終確定了采用單片機(jī)技術(shù)實(shí)現(xiàn)多功能電子時(shí)鐘。本設(shè)計(jì)主要為實(shí)現(xiàn)一款可正常顯示時(shí)鐘/日歷、帶有定時(shí)鬧鈴的多功能電子時(shí)鐘。該電子時(shí)鐘可以應(yīng)用于一般的生活和工作中,也可通過改裝,提高性能,增加新功能,從而給人們的生活和工作帶來(lái)更多的方便。 DS1302 第一章 緒 論時(shí)間是人類生活必不可少的重要元素,如果沒有時(shí)間的概念,社會(huì)將不會(huì)有所發(fā)展和進(jìn)步。在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透到了社會(huì)的各個(gè)領(lǐng)域