單片機(jī)原理課程設(shè)計(jì)基于AT89C52的電子時(shí)鐘設(shè)計(jì)說(shuō)明_第1頁(yè)
單片機(jī)原理課程設(shè)計(jì)基于AT89C52的電子時(shí)鐘設(shè)計(jì)說(shuō)明_第2頁(yè)
單片機(jī)原理課程設(shè)計(jì)基于AT89C52的電子時(shí)鐘設(shè)計(jì)說(shuō)明_第3頁(yè)
單片機(jī)原理課程設(shè)計(jì)基于AT89C52的電子時(shí)鐘設(shè)計(jì)說(shuō)明_第4頁(yè)
單片機(jī)原理課程設(shè)計(jì)基于AT89C52的電子時(shí)鐘設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩22頁(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、南或t船博單片機(jī)原理課程設(shè)計(jì)題 目:基于AT89C52的電子時(shí)鐘設(shè)計(jì)姓 名:學(xué) 院:專 業(yè):班 級(jí):學(xué) 號(hào):指導(dǎo)教師:年月日農(nóng)業(yè)大學(xué)教務(wù)處制aortiu目錄摘要 2關(guān)鍵詞2引言 21 設(shè)計(jì)要求與方案論證 21.1設(shè)計(jì)要求 21. 2系統(tǒng)方案選擇方案和論證 21.1.1 單片機(jī)芯片的選擇方案和論證 21.1.2 顯示模塊選擇方案和論證 31.1.3 時(shí)鐘芯片的選擇方案和論證 31.1.4 硬件設(shè)計(jì)與實(shí)現(xiàn)32. 1電路設(shè)計(jì)框圖32. 2系統(tǒng)硬件概述32. 3主要單元電路的設(shè)計(jì)42.1.1 單片機(jī)主控制模塊的設(shè)計(jì) 42.1.2 時(shí)鐘電路模塊的設(shè)計(jì) 42.1.3 鍵盤模塊設(shè)計(jì) 52.1.4 蜂鳴器模塊

2、的設(shè)計(jì) 52.1.5 顯示模塊的設(shè)計(jì) 52.1.6 軟件設(shè)計(jì) 63. 1程序流程框圖 63. 2程序的設(shè)計(jì)74. 系統(tǒng)調(diào)試 74.1軟件調(diào)試74.2硬件調(diào)試84.3實(shí)驗(yàn)箱調(diào)試結(jié)果 85.總結(jié)心得體會(huì) 9附錄一:系統(tǒng)程序9基于AT89C52的電子時(shí)鐘設(shè)計(jì)指導(dǎo)教師:呂成緒 胡飛摘要: 單片機(jī)在電子產(chǎn)品中的應(yīng)用越來(lái)越廣泛,特別是51 系列的單片機(jī),由于其使用方便、價(jià)格低廉等優(yōu)勢(shì),在市場(chǎng)上占有很大的份額。AT89C52就是51系列中的一個(gè)比較成熟的型號(hào)。本設(shè)計(jì)是一個(gè)多功能的實(shí)時(shí)時(shí)鐘,帶秒表、整點(diǎn)報(bào)時(shí)、鬧鈴、調(diào)整時(shí)間等功能??砂存I直接設(shè)置鬧鈴時(shí)間。由AT89C51單片機(jī)、DS1302、LCD1602等模

3、塊組成?,F(xiàn)代社會(huì),時(shí)間就是金錢,時(shí)鐘是每個(gè)人的必備品。本設(shè)計(jì)實(shí)現(xiàn)了所需功能,給大家?guī)?lái)方便,整體性好、人性化強(qiáng)、可靠性高,實(shí)現(xiàn)了時(shí)鐘的多功能應(yīng)用。關(guān)鍵詞: 電子時(shí)鐘;DS1302; LCD1602;引言:隨著科技的快速發(fā)展,時(shí)間的流逝, 從觀太陽(yáng)、擺鐘到現(xiàn)在電子鐘,人類不斷研究,不斷創(chuàng)新紀(jì)錄。美國(guó) DALLAS公司推出的具有涓細(xì)電流充電能的低功耗實(shí)時(shí)時(shí)鐘電路 DS1302它可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能, 而且DS1302的使用壽命長(zhǎng),誤差小。對(duì)于數(shù)字電子時(shí)鐘采用直觀的數(shù)字顯示,可以同 時(shí)顯示年、月、日、周日、時(shí)、分、秒和溫度等信息,還具有時(shí)間校準(zhǔn)等功能。該

4、設(shè)計(jì)以AT89C51i1片機(jī)作為核心,功耗小,能在3V的低壓工作,電壓可選用35V電壓供電 綜上所述,此電子時(shí)鐘具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。1 .設(shè)計(jì)要求與方案1.1 設(shè)計(jì)要求:(1) 啟動(dòng)時(shí)顯示制作的年、月、日、制作者的學(xué)號(hào)等信息。(2)24 小時(shí)計(jì)時(shí)功能(精確到秒)(3) 整點(diǎn)報(bào)時(shí)功能。(4) 秒表功能(5) 省電功能模式(未設(shè)計(jì))1.2 系統(tǒng)基本方案選擇1.2.1 單片機(jī)芯片的選擇方案和論證方案一 :采用89C51芯片作為硬件核心,采用 Flash ROM,部具有4KB ROM存儲(chǔ)空間,能于 3V的超低壓

5、工作,而且與MCS-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計(jì)中時(shí)由于不 具備ISP在線編程技術(shù),當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略?功能需要燒入程序時(shí),對(duì)芯片的多次拔插會(huì)對(duì)芯片造成一定的損壞。方案二 :采用AT89S52片ROMir者B采用Flash ROM能以3V的超底壓工作;同時(shí)也與MCS-51 系列單片機(jī)完全該芯片部存儲(chǔ)器為 8KBROh#儲(chǔ)空間,同樣具有89C51的功能,且具有 在線編程可擦除技術(shù),當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉?能需要燒入程序時(shí),不需要對(duì)芯片多次拔插,所以不會(huì)對(duì)芯片造成損壞。相比之下,我們?cè)趯?shí)驗(yàn)箱實(shí)際仿真時(shí)選擇采用AT8

6、9S52作為主控制系統(tǒng),由于proteus庫(kù)中沒(méi)有AT89S52在原理圖仿真時(shí)采用了 AT89C51.1.2.2 顯示模塊選擇方案和論證方案一:采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于 顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以也不用此種 作為顯示.方案二:采用LCD夜晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,顯示多樣,清晰可見(jiàn). 本設(shè)計(jì)采用LCD1602.1.2.3 時(shí)鐘芯片的選擇方案和論證萬(wàn)桑一:直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、時(shí)、分、秒計(jì) 數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。所

7、以 不采用此方案。方 ' :采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302K片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓 2.5V5.5V圍,2.5V時(shí)耗電小于300nA.綜上各方案所述,對(duì)此次作品的方案選定:采用AT89C52乍為主控制系統(tǒng),DS1302 提供時(shí)鐘計(jì)時(shí),LCD1602W幕顯示.2 .系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)2.1 電路設(shè)計(jì)框圖本電路是由AT89C5H1片機(jī)為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;時(shí)鐘電路由DS130的供,它是一種高性能、低功耗、帶 RAM勺實(shí)時(shí)時(shí)鐘電

8、路,它可以對(duì)年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V 5.5V。采用三線接口與CPU!行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘 信號(hào)或RAMft據(jù)。DS1302部有一個(gè)31*8的用于臨時(shí)性存放數(shù)據(jù)的RAMff存器??僧a(chǎn)生 年、月、日、周日、時(shí)、分、秒,具有使用壽命長(zhǎng),精度高和低功耗等特點(diǎn),同時(shí)具有掉電自動(dòng)保存功能;顯示部份由LCD160幽成.2.3 主要單元電路的設(shè)計(jì)2.3.1單片機(jī)主控制模塊的設(shè)計(jì)13RW-.n X2 .CH-rarr,圖-1主控制系統(tǒng)C2Hk,尹,,gCLKHSTwcz VCQ1Ml. a-L .D0 1皿-=TE-:TT=i-XTML

9、IXTALZFQITADI ra.iADi T口 "工 rajrADS 叩口 且/口 W0TFZL IfflB PSi'AlCPS4EMALEFZA-ni rz.KAizEAnjuKUPia p i.iF2WA1S中口繪F3.ir?KBP US PO P 1.4P3J1HT13 njmTt p 工!tonPisP3LST1ri.amPITFMifM工J73szi任1:1P u 13 口AT89C51單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O 口 P0,P1,P2,P3。單片機(jī)的最小系統(tǒng)如上圖所示,18引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和微 調(diào)電容的一端,在片它是振

10、蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一 端,在片它是振蕩器倒相放大器的輸出.第9引腳為復(fù)位輸入端,接上電容,電阻及開(kāi)關(guān)后 夠上電復(fù)位電路.如圖-1所示.2.3.1 時(shí)鐘電路模塊的設(shè)計(jì)圖-2 DS1302的引腳圖圖-2示出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晶振。RS

11、T是復(fù)位/片選線,通過(guò)把RST俞入 驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。 RST俞入有兩種功能:首先,RST接通控制邏輯, 允許地址/命令序列送入移位寄存器;其次,RSTS供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手 段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì) DS1302進(jìn)行操作。如果在 傳送過(guò)程中RSTSS為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動(dòng)行 時(shí),在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLKM氐電平時(shí),才能 將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。SCLK!臺(tái)終是輸入端。2.3.2 鍵盤模塊設(shè)計(jì)圖-3鍵盤模塊如圖-3, K1、K2、

12、K3 K4均為多功能鍵。K1為秒表設(shè)置鍵,按K4鍵時(shí)為時(shí)鐘確定 鍵;K2在K4按下時(shí)為時(shí)鐘下調(diào)鍵,在 K3按下時(shí)為鬧鐘確定鍵,在 K1按下時(shí)為秒表開(kāi) 始鍵;K3為鬧鐘設(shè)置鍵,在K4按下時(shí)為時(shí)鐘上調(diào)鍵,在 K1按下時(shí)為秒表暫停鍵;K4 為時(shí)鐘設(shè)置鍵,在K3按下時(shí)為鬧鐘移位鍵,在 K1按下時(shí)為秒表退出鍵。2.3.3 蜂鳴器模塊的設(shè)計(jì)圖-4聲音輸出模塊鬧鈴時(shí)間到和整點(diǎn)時(shí),P3_7給低電平,蜂鳴器響2.3.4 顯示模塊的設(shè)計(jì)LQLHLdkhsl' 8 ' ATfem' ' 'naN或 hW1D1112 2心11底13"悟 fl S圖-5 LCD顯示輸出

13、模塊如圖一5, 1腳VS*口 3腳VEE為電源接地,第2管腳VDDg電源,第4管腳RS為 寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器;RW的讀寫信號(hào) 線,高電平1時(shí)進(jìn)行讀操作,低電平0時(shí)進(jìn)行寫操作;E(或EN調(diào)為使能(enable)端; 第714腳DAD7為8位雙向數(shù)據(jù)端??刂坪蛿?shù)據(jù)端都接了上拉電阻用來(lái)驅(qū)動(dòng)。3 .系統(tǒng)的軟件設(shè)計(jì)3.1 程序流程框圖產(chǎn)始定時(shí)器。初始化進(jìn)入正常顯示搐式港昌巳示器LCD16初始圖-A主程序流程圖時(shí)間調(diào)整程序流程圖圖-B3.2 程序的設(shè)計(jì) 見(jiàn)附錄4 .系統(tǒng)調(diào)試4.1 軟件調(diào)試結(jié)果用戶時(shí)鐘主界面秒表界面設(shè)置鬧鈴界面-1rn.UALl!r * y* *

14、 "時(shí)鐘仿真圖U3:m 一1116C2-.- , i口 HlFMl 事FsE , 1 1 <hV, Q=-MH:'rEP"FUJHJU miffin 而乖:巾i±”下:mAiit FZJMII ,工網(wǎng)RF7 ,MAirSir3im4叫JU©P3;Hm4m p31smFJTE4.2 硬件調(diào)試結(jié)果起初蜂鳴器有點(diǎn)問(wèn)題不響,后來(lái)發(fā)現(xiàn)是定義錯(cuò)端口引起的。其他功能正常。4.3 實(shí)驗(yàn)箱調(diào)試結(jié)果實(shí)現(xiàn)功能的具體方法:時(shí)鐘主界面時(shí)按下K1鍵進(jìn)入秒表功能,按K2秒表開(kāi)始,再按K3秒表停,按鍵K4 返回時(shí)間顯示;按K4開(kāi)始調(diào)試(移位“年一秒”),接著按K2、K3調(diào)

15、節(jié)時(shí)間增減;按K2 開(kāi)啟鬧鐘,K3調(diào)節(jié)時(shí)間,K4(移位“時(shí)分”);按“年一秒”的順序移位,按鍵 K2進(jìn)行 減運(yùn)算,按鍵K3進(jìn)行加運(yùn)算,按鍵K1返回到主界面并顯示設(shè)置值。按下K3鍵,實(shí)現(xiàn)鬧鐘定時(shí)調(diào)整,按鍵 K4進(jìn)行“分-秒”移位,按鍵K3進(jìn)行上調(diào), 按鍵K2返回到主界面。主界面K2實(shí)現(xiàn)開(kāi)啟/關(guān)閉鬧鐘的功能。按下K1鍵進(jìn)入秒表,按鍵K2開(kāi)始計(jì)時(shí),K3暫停計(jì)時(shí),K4返回到主界面。5 .總結(jié)心得體會(huì):這次實(shí)習(xí)我們組選擇的是電子時(shí)鐘設(shè)計(jì)。實(shí)習(xí)任務(wù)包括理論設(shè)計(jì)、調(diào)試與仿真、撰 寫設(shè)計(jì)報(bào)告等。其中理論設(shè)計(jì)又包括選擇總體方案,硬件系統(tǒng)設(shè)計(jì)、軟件系統(tǒng)設(shè)計(jì);硬 件設(shè)計(jì)包括單元電路,選擇元器件及計(jì)算參數(shù)等;軟件設(shè)計(jì)

16、包括模塊化層次結(jié)構(gòu)圖,程 序流程圖。程序設(shè)計(jì)是課程設(shè)計(jì)的關(guān)鍵環(huán)節(jié),開(kāi)始以為時(shí)鐘會(huì)很簡(jiǎn)單,就算遇到問(wèn)題應(yīng) 該也很好解決,但當(dāng)自己真正去做的時(shí)候,發(fā)現(xiàn)了好多困難。于是查資料,問(wèn)同學(xué)。經(jīng) 過(guò)和同學(xué)的探討,通過(guò)調(diào)試進(jìn)一步完善程序設(shè)計(jì),最后雖然省電模式?jīng)]實(shí)現(xiàn)但其他基本達(dá)到課題所要求的指標(biāo)。完成了實(shí)習(xí)任務(wù)。這次實(shí)習(xí)我更加了解了單片機(jī)的應(yīng)用,更加 牢牢的掌握了書(shū)本知識(shí)與現(xiàn)實(shí)的結(jié)合,總之這是實(shí)習(xí)收獲很大,以后還需多動(dòng)手實(shí)踐, 多練習(xí)編程,才能熟練掌握單片機(jī)。附錄一:程序:#include<reg52.h>#include<INTRINS.H>#include<lcd1602.h&

17、gt;#include<ds18b20.h>#define uchar unsigned char#define uint unsigned int#define TIME (0X10000-50000)#define FLAG 0xf4 / 鬧鐘標(biāo)志sbit rst=P1A2;/DSsbit clk=P1A0;sbit dat=P1A1;sbit rs=P2A0; /LCDsbit rw=P2A1;sbit e=P2A2;sbit beep=P1A3;sbit mbkey=P1A4;uchar k;uchar flag;uchar i=20,j,time116;uchar ala

18、rm2,time215,time3;time53;個(gè)月的最大日期/ms 秒表進(jìn)數(shù),uchar code Day=31,28,31,30,31,30,31,31,30,31,30,31; /12( 非閏年 )uchar key2num,ms=0,mbmiao=0,mbfen=0,mbkeynum,num;mbmiao.mbfen秒表的秒.分,key2num是key5的計(jì)數(shù) uchar code table=" 32210324 GYY"uchar code table1=" 32210326 GLQ"uchar code table4=" 00:

19、00:00 MB "void delay(uint z) uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);delay1ms(uchar time) / 延時(shí) 1ms uchar i,j;for(i=0;i<time;i+) for(j=0;j<250;j+);/LCD 驅(qū)動(dòng)部分 enable() rs=0;rw=0; e=0; delay1ms(3); e=1;write2(uchar i) P0=i;rs=1; rw=0; e=0; delay1ms(2); e=1;write1(uchar data *address,m

20、) uchar i,j;for(i=0;i<m;i+,address+) j=*address;write2(j);/LCD 顯示 lcdshow() P0=0XC;/ 顯示器開(kāi)、光標(biāo)關(guān)enable();P0=0x80;/ 第一行 015enable(); write1(time1,16);P0=0xc1;/ 第二行 114enable(); write1(time2,15);/DS1302 讀寫子程序 write(uchar address) uchar i;clk=0;_nop_();rst=1;_nop_();for(i=0;i<8;i+) dat=address&1

21、;_nop_();clk=1;address>>=1;clk=0;uchar read() uchar i,j=0;for(i=0;i<8;i+) j>>=1;_nop_();clk=0;_nop_();if(dat)j|=0x80;_nop_();clk=1;return(j);/ 部分顯示數(shù)據(jù)初始化timestart()time16=time19='-'time12='2',time13='0'time22=time25=':'write(0xc1);alarm0=read();rst=0;wri

22、te(0xc3);alarm1=read();rst=0;write(0xc5);time10=read();rst=0;/ 讀取時(shí)間readtime() uchar i,m,n;write(0x8d);/ 讀取年份m=read();rst=0;time14=m/16+0x30;time15=m%16+0x30;time115=m+0x30;for(i=7,n=0x89;i<11;i+=3,n-=2)/ 讀取月份和日期 write(n);m=read();rst=0;time1i=m/16+0x30;time1i+1=m%16+0x30;for(m=0,i=0,n=0x85;i<7

23、;i+=3,n-=2,m+)/ 讀取時(shí), 分, 秒 write(n);timem=read();/ 將實(shí)時(shí)的時(shí)分秒給timerst=0;time2i=timem/16+0x30;time2i+1=timem%16+0x30;baoshi()/ 整點(diǎn)報(bào)時(shí) beep=1;if(time1=0)if(time2=0)beep=0;delay(10);beep=1;/ 鬧鐘部分showalarm() uchar i;for(i=1;i<10;i+)beep=0;delay(1000);beep=1;/ 根據(jù)日期的變動(dòng)自動(dòng)調(diào)整星期/ 設(shè)置時(shí)間settime()uchar i=0x85,year,m

24、onth,day,n;time26=time27=0x30,time114=time115=0x20;lcdshow();while(1)P0=0x0e;/ 顯示器開(kāi)顯示、開(kāi)光標(biāo)enable();P0=i;/ 定光標(biāo)enable();P1=0xf0;/ 有按鈕按下/ 延時(shí) 0.1s 去抖動(dòng)/K1 ,設(shè)置時(shí)鐘/K2 ,上調(diào)if(P1!=0Xf0)delay1ms(100);if(P1!=0Xf0)j=7;if(P1=0X70)i+=3;if(i=0x8e)i=0xc2;else if(i>0xc5) i=0x85;else if(P1=0xb0) year=(time14&0xf)

25、*10+(time15&0xf);month=(time17&0xf)*10+(time18&0xf); day=(time110&0xf)*10+(time111&0xf); if(i=0x85)year+;if(year>99)year=0;if(year%4)!=0)if(month=2&&day=29) day=28;else if(i=0x88)month+;if(month>12)month=1;if(day>Daymonth-1)day=Daymonth-1;if(month=2&&(yea

26、r%4)=0)day=29;else if(i=0x8b)day+;if(day>Daymonth-1)if(month=2&&(year%4)=0)if(day>29)day=1;if(month!=2) day=1;else if(i=0xc2)n=(time20&0xf)*10+(time21&0xf);n+;if(n>23)n=0;time20=n/10+0x30;time21=n%10+0x30;elsen=(time23&0xf)*10+(time24&0xf);n+;if(n>59)n=0;time23=n/

27、10+0x30;time24=n%10+0x30;time14=year/10+0x30;time15=year%10+0x30;time17=month/10+0x30;time18=month%10+0x30;time110=day/10+0x30;time111=day%10+0x30;lcdshow();/K3 ,下調(diào)else if(P1=0xd0) year=(time14&0xf)*10+(time15&0xf);month=(time17&0xf)*10+(time18&0xf); day=(time110&0xf)*10+(time111

28、&0xf); if(i=0x85)year-;if(year<1)year=99;if(year%4)!=0)if(month=2&&day=29) day=28;else if(i=0x88)month-;if(month<1)month=12;if(day>Daymonth-1)day=Daymonth-1;if(month=2&&(year%4)=0) day=29;else if(i=0x8b)day-;if(day<1)if(month=2&&(year%4)=0)day=29;if(month!=2)

29、day=Daymonth-1;else if(i=0xc2)n=(time20&0xf)*10+(time21&0xf);n-;if(n<0)n=23;time20=n/10+0x30;time21=n%10+0x30;elsen=(time23&0xf)*10+(time24&0xf);n-;if(n<0)n=59;time23=n/10+0x30;time24=n%10+0x30;time14=year/10+0x30;time15=year%10+0x30;time17=month/10+0x30;time18=month%10+0x30;ti

30、me110=day/10+0x30;time111=day%10+0x30;lcdshow();else if(P1=0xe0)/K4, 確定設(shè)置 delay1ms(1000);write(0x8c);write(time14&0xf)*16+(time15&0xf);rst=0;write(0x8a);rst=0;for(i=7,n=0x88;i<11;i+=3,n-=2)write(n);write(time1i&0xf)*16+(time1i+1&0xf); rst=0;for(i=0;i<7;i+=3,n-=2)write(n);write(

31、time2i&0xf)*16+(time2i+1&0xf); rst=0;TR0=0;return; else TR0=0; return; if(j=0) TR0=0; return; / 設(shè)置鬧鐘 setalarm() uchar i,n; for(i=1;i<16;i+) time1i=0x20;time20=alarm0/16+0x30;time21=(alarm0&0x0f)+0x30;time23=alarm1/16+0x30;time24=(alarm1&0x0f)+0x30;time26=time27=0x30;lcdshow();i=0x

32、c2;while(1) P0=0xe;/ 顯示器開(kāi)、光標(biāo)開(kāi)enable(); P0=i;/ 定光標(biāo)enable(); P1=0xf0; if(P1!=0Xf0)/ 有按鈕按下 delay1ms(100);/ 延時(shí) 0.1s 去抖動(dòng)if(P1!=0Xf0) j=7; if(P1=0X70)i+=3;if(i>0xc5)i=0xc2;else if(P1=0xb0)/ 按 K2,設(shè)鬧鐘if(i=0xc2)n=(time20&0xf)*10+(time21&0xf);n+;if(n>23)n=0;time20=n/10+0x30;time21=n%10+0x30;else

33、n=(time23&0xf)*10+(time24&0xf);n+;if(n>59)n=0;time23=n/10+0x30;time24=n%10+0x30;lcdshow();確定鬧鐘設(shè)置else if(P1=0xd0)/write(0xc0);write(time20&0x0f)*16+(time21&0x0f);rst=0;write(0xc2);write(time23&0xf)*16+(time24&0xf);rst=0;time10=FLAG;write(0xc4);write(time10);rst=0;TR0=0;time

34、start();return;elseTR0=0;timestart(); return;if(j=0)TR0=0;timestart();return;/lcdwrite() LCD 寫指令void lcdwrite(uchar write)rs=0;P0=write;delay(1);e=1;delay(1);e=0;/lcdshuju() LCD 寫數(shù)據(jù)void lcdshuju(uchar shuju)rs=1;P0=shuju;delay(1);e=1;delay(1);e=0;/ 秒表部分秒顯示函數(shù)void write_sfm(uchar add ,uchar date)/ uch

35、ar shi,ge;shi=date/10;ge=date%10;lcdwrite(0x80+0x40+add);lcdshuju(0x30+shi);lcdshuju(0x30+ge); void mbiao( ) lcdwrite(0x80+0x40);for(num=0;num<16;num+) lcdshuju(table4num);start:while(1) if(P1!=0Xf0) delay1ms(100);if(P1!=0Xf0) if(P1=0xd0) TR1=1;ET1=1;else if(P1=0xb0) TR1=0;else if(P1=0x70) return;goto start;/ 秒表函數(shù)/ 延時(shí) 0.1

溫馨提示

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