【正文】
//;sbit Calendar=P2^7。所以多功能電子時(shí)鐘在今后的應(yīng)用也會(huì)越來(lái)越廣泛。在硬件調(diào)試部分,已經(jīng)將實(shí)時(shí)時(shí)鐘日歷子程序調(diào)試完畢了,只需在主程序中調(diào)用按鍵子程序即可,源程序見(jiàn)附錄A,這里不再贅述。觀察32分鐘之后,數(shù)碼管顯示“150000”,證明DS1302電路正確。3. 。CLK=1。gsb++) { led=disp_buffer[gsb]。 disp_buffer[1]=tab[1]。 void delay_50ms(unsigned int t) //延時(shí)子程序 { unsigned int j。檢查無(wú)誤后上電,檢查顯示電路是否正確。 }}} 顯示電路調(diào)試本設(shè)計(jì)的顯示電路使用了共陰LED和74LS164。i)。5. 編輯一個(gè)使一組發(fā)光二極管循環(huán)點(diǎn)亮的程序并燒錄到單片機(jī)內(nèi),上電運(yùn)行,檢查單片機(jī)是否正常工作,復(fù)位電路是否正確。硬件調(diào)試需要萬(wàn)用表、示波器等,軟件調(diào)試一般需要諸如Keil等仿真編輯器。如果電路出錯(cuò),可以在計(jì)算機(jī)上方便的修改電路,程序出錯(cuò)可以重新編輯程序,這種方法節(jié)時(shí)、省力,經(jīng)濟(jì)、方便。硬件調(diào)試比較費(fèi)時(shí),需要細(xì)心和耐心,也需要熟練掌握電路原理。由于本設(shè)計(jì)中AT89C51單片機(jī)在系統(tǒng)中的主要任務(wù)是接受DS1302和DS18B20的數(shù)據(jù)并送出顯示,完成時(shí)鐘/日歷校對(duì)和日期/溫度顯示控制。為了方便實(shí)現(xiàn)按鍵顯示,程序中調(diào)用的都是各個(gè)標(biāo)志位,通過(guò)判斷標(biāo)志位的“真”、“假”來(lái)決定顯示的內(nèi)容。 實(shí)時(shí)時(shí)鐘日歷子程序流程圖DS1302每次上電時(shí)自動(dòng)處于暫停狀態(tài),必須把秒寄存器的位7置位0,時(shí)鐘才開(kāi)始計(jì)時(shí)。C語(yǔ)言程序可讀性高,更便于理解。上電自動(dòng)復(fù)位是利用電容儲(chǔ)電來(lái)實(shí)現(xiàn)的,(a)所示。 鬧鈴電路 復(fù)位電路設(shè)計(jì)復(fù)位是單片機(jī)的初始化操作,以便使CPU和系統(tǒng)中其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作。還有一種方法是采用錄音放音芯片1420做鬧鈴,先對(duì)錄放音設(shè)備錄入一段音樂(lè),當(dāng)?shù)皆O(shè)定時(shí)間時(shí),單片機(jī)控制錄放音設(shè)備放音。調(diào)分、秒、年、月、日與皆之相同,只是各位最高值不同。只有再次按下,按鍵彈出,與之連接的單片機(jī)管腳才會(huì)重新被拉回高電平。 顯示面板LED分布圖 按鍵電路設(shè)計(jì)根據(jù)功能需要,本時(shí)鐘需要設(shè)置以下功能鍵:校對(duì)選擇鍵,加1操作鍵,減1操作鍵,顯示日期鍵,鬧鈴開(kāi)關(guān)鍵。但設(shè)計(jì)上如果處理不當(dāng),易造成亮度低,閃爍問(wèn)題。DS1302采用雙電源供電,平時(shí)由+5V電源供電,當(dāng)+5V掉電之后,由圖中BT1(+3V備用電池)供電。整個(gè)電路使用了兩種電源,+5V電源將為整個(gè)電路供電。其操作方法與前述相同[9][10][11]。如果編碼DS是01,選擇一個(gè)二極管;如果編碼是10,選擇兩個(gè)二極管;其他編碼將不允許充電??刂萍拇嫫鳎?FH、8EH)的位7是寫保護(hù)位(WP),其它7位均置為0。DS1302有關(guān)日歷、時(shí)間的寄存器共有10個(gè),時(shí)鐘/日歷包含在其中的7個(gè)寫/讀寄存器內(nèi),這7個(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的上升沿串行輸入??刂谱挚偸菑淖畹臀婚_(kāi)始輸出。2. BIT 6:如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);3. BIT 5至BIT 1(A4~A0):用A4~A0表示,定義片內(nèi)寄存器和RAM的地址。 DS1302芯片引腳圖。故而從性價(jià)比和貨源上考慮,本設(shè)計(jì)采用實(shí)時(shí)時(shí)鐘日歷芯片DS1302。在空閑方式中,CPU停止工作,而RAM、定時(shí)器/計(jì)數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。擁有15條可編程I/O引腳,2個(gè)16位定時(shí)器/計(jì)數(shù)器,6個(gè)中斷源,可編程串行UART通道,并能直接驅(qū)動(dòng)LED輸出。利用單片機(jī)的智能性,可方便地實(shí)現(xiàn)具有智能的電子鐘設(shè)計(jì)。多時(shí)鐘系統(tǒng)能夠包括上述四種時(shí)鐘類型的任意組合[2][3][4]。交流供電為主,直流電源為后備輔助電源,并能自動(dòng)切換。由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過(guò)老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。 時(shí)間對(duì)人們來(lái)說(shuō)總是那么寶貴,工作的忙碌性和繁雜容易使人忘記當(dāng)前的時(shí)間。關(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。本設(shè)計(jì)主要為實(shí)現(xiàn)一款可正常顯示時(shí)鐘/日歷、帶有定時(shí)鬧鈴的多功能電子時(shí)鐘。 DS1302 第一章 緒 論時(shí)間是人類生活必不可少的重要元素,如果沒(méi)有時(shí)間的概念,社會(huì)將不會(huì)有所發(fā)展和進(jìn)步。所以說(shuō)能隨時(shí)準(zhǔn)確的知道時(shí)間并利用時(shí)間,是我們生活和工作中必不可少的[1]。 電子時(shí)鐘的功能電子時(shí)鐘主要是利用電子技術(shù)將時(shí)鐘電子化、數(shù)字化,擁有時(shí)間精確、體積小、界面友好、可擴(kuò)展性能強(qiáng)等特點(diǎn),被廣泛應(yīng)用于生活和工作當(dāng)中。可編程邏輯器件的設(shè)計(jì)過(guò)程是利用EDA開(kāi)發(fā)軟件和編程工具對(duì)器件進(jìn)行開(kāi)發(fā)的過(guò)程。單片機(jī)具有如下特點(diǎn):有優(yōu)異的性能價(jià)格比;1 集成度高、體積小、有很高的可靠性;2 控制功能強(qiáng);3 低功耗、低電壓,便于生產(chǎn)便攜式產(chǎn)品;4 外部總線增加了I2C、SPI等串行總線方式,進(jìn)一步縮小了體積,簡(jiǎn)化了結(jié)構(gòu);5 單片機(jī)的系統(tǒng)擴(kuò)展、系統(tǒng)配置較典型、規(guī)范,容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng)。另外很多功能不同的單片機(jī)是兼容的,這就更便于實(shí)現(xiàn)產(chǎn)品的多功能性。AT89C51單片機(jī)是一款低功耗,低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4KB(可經(jīng)受1000次擦寫周期)的FLASH可編程可反復(fù)擦寫的只讀程序存儲(chǔ)器(EPROM),器件采用CMOS工藝和ATMEI公司的高密度、非易失性存儲(chǔ)器(NURAM)技術(shù)制造,其輸出引腳和指令系統(tǒng)都與MCS51兼容。時(shí)鐘日歷芯片選擇在電子時(shí)鐘設(shè)計(jì)中,常用的實(shí)時(shí)時(shí)鐘芯片有DS1288DS121DS164DS1302?!?。它不僅要向寄存器寫入控制字,還需要讀取相應(yīng)寄存器的數(shù)據(jù)。當(dāng)A4~A0=7,為芯片寫保護(hù)寄存器地址。 DS1302數(shù)據(jù)讀寫時(shí)序DS1302的數(shù)據(jù)讀寫方式有兩種,一種是單字節(jié)操作方式,一種是多字節(jié)操作方式。所有寫入或讀出操作都是先向芯片發(fā)送一個(gè)命令字節(jié)。在24小時(shí)制式下,位5是第二個(gè)10小時(shí)位(20~23時(shí))。因此,通過(guò)置寫保護(hù)位,可以提高數(shù)據(jù)的安全性。因此,根據(jù)慢速充電寄存器的不同編碼可得到不同的充電電流。另外,本設(shè)計(jì)要求該電子鐘能夠采集環(huán)境溫度,所以還需要溫度采集芯片。當(dāng)+5V電源恢復(fù)供電,LED依舊顯示當(dāng)前時(shí)間,而不會(huì)因?yàn)閿嚯娛瓜到y(tǒng)復(fù)位到初始化時(shí)間,避免了重新校時(shí)的麻煩。對(duì)于一般的段式LCD,需要專門的驅(qū)動(dòng)電路,而且LCD顯示的可視性較差;對(duì)于具有驅(qū)動(dòng)電路和微處理器接口的液晶顯示模塊(字符或點(diǎn)陣),一般采用并行接口,對(duì)微處理器的接口要求較高,占用資源多。靜態(tài)顯示,是由微型計(jì)算機(jī)一次輸出顯示模型后,就能保持該顯示結(jié)果,直到下次發(fā)送新的顯示模型為止。獨(dú)立式鍵盤電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O口,在按鍵數(shù)量較多時(shí),I/O口線浪費(fèi)較大,且電路結(jié)構(gòu)復(fù)雜。單片機(jī)管腳只有在按鍵按下時(shí)為低電平,按鍵彈出后重新恢復(fù)高電平。K7鍵:該鍵為帶自鎖按鍵,按下后鬧鈴開(kāi)啟,彈出后鬧鈴關(guān)閉。另外,也可以購(gòu)置一塊音樂(lè)集成電路,加置在單片機(jī)和蜂鳴器之間,當(dāng)單片機(jī)連接鬧鈴電路的管腳送出高電平時(shí),音樂(lè)集成電路會(huì)給蜂鳴器特定脈沖,使蜂鳴器發(fā)聲。單片機(jī)復(fù)位后,除了PC之外,還對(duì)片內(nèi)的特殊功能寄存器有影響。按鍵電平復(fù)位是相當(dāng)于RST端通過(guò)電阻接高電平,(b)所示;按鍵脈沖復(fù)位,利用RC微分電路產(chǎn)生正脈沖,(c)所示[12]。初始日期為2008年5月12日,此刻若按K1鍵,LED顯示“080512”。當(dāng)用多字節(jié)模式進(jìn)行操作時(shí),必須寫夠8字節(jié)。在隨機(jī)掃描方式中,CPU完成某特定任務(wù)后,即執(zhí)行鍵盤掃描程序,以確定鍵盤有無(wú)按鍵輸入,然后根據(jù)按鍵功能轉(zhuǎn)去執(zhí)行相應(yīng)的操作。如果沒(méi)有按鍵按下,則程序掃描到Key=FFH,將鍵值Key清零,返回主程序。通過(guò)編譯、運(yùn)行,可以檢查程序錯(cuò)誤。在調(diào)試過(guò)程中,首先必須明確調(diào)試順序。2. 單片機(jī)電源要連接正確,并且保證AT89C51的31號(hào)引腳接高電平。i0。 while(1) { P1=0xFFH。2. 因?yàn)槭且莆伙@示,所以需要注意前一位74LS164的QH腳要與下一位74LS164的A、B腳連接。 void sendbyte()。t) for(j=6245。 disp_buffer[4]=tab[4]。jj++) { led1=ledamp。 delay_50ms(10)。4. 編寫DS1302的時(shí)鐘/日歷程序,只要求能夠正確顯示時(shí)間。}日歷顯示子程序原理與時(shí)鐘顯示子程序原理相同,源程序見(jiàn)附錄A該程序的功能是:當(dāng)按下K7時(shí),第1~6位LED數(shù)碼管馬上由時(shí)間顯示日期。例如:If(K7==0){alarm_flag= true。所以多功能電子時(shí)鐘有多種實(shí)現(xiàn)方案,能夠?qū)崿F(xiàn)的功能也很多,筆者已經(jīng)通過(guò)仿真和調(diào)試,實(shí)現(xiàn)了時(shí)間日歷顯示和校對(duì)、鬧鈴等功能。 //。extern bit flash_flag。uchar rbyte_3w()。void ds18b20()。c120。 //時(shí)間顯示子程序; delay(55)。void ds1302_init()。uchar day_of_week。uchar rbyte_3w()。 //定義管腳I/Osbit RST = P3^7。 for(i = 0。 }}uchar rbyte_3w() //讀字節(jié)子程序{ uchar i。 SCLK = 0。 wbyte_3w(Clock_Data)。 wbyte_3w(hex2bcd[month])。 Clock_Data = rbyte_3w()。 wbyte_3w(0x90)。 month = bcd2hex[read_byte(READ_MONTH_ADD)]。uchar key。l) //延時(shí); for(a=50。 if(function_count=9) function_count=1。 //寫入分寄存器; } else if(function_count==3) //function_count=3,則小時(shí)加1操作; { hour++。 if(year99) year=0。 } break。