簡(jiǎn)易萬(wàn)年歷的設(shè)計(jì)說(shuō)明_第1頁(yè)
簡(jiǎn)易萬(wàn)年歷的設(shè)計(jì)說(shuō)明_第2頁(yè)
簡(jiǎn)易萬(wàn)年歷的設(shè)計(jì)說(shuō)明_第3頁(yè)
簡(jiǎn)易萬(wàn)年歷的設(shè)計(jì)說(shuō)明_第4頁(yè)
簡(jiǎn)易萬(wàn)年歷的設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩14頁(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)介

..目錄TOC\o"1-3"\h\u第一部分設(shè)計(jì)任務(wù)1.1設(shè)計(jì)題目及要求11.2.1方案一11.2.2方案二1第二部分系統(tǒng)硬件平臺(tái)的設(shè)計(jì)2.1總體設(shè)計(jì)方案說(shuō)明22.2單片機(jī)最小系統(tǒng)22.2.1STC89C52單片機(jī)介紹22.2.2時(shí)鐘電路42.2.3復(fù)位電路42.31602液晶模塊52.4時(shí)鐘芯片DS13026第三部分系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)3.1主程序8Protues仿真軟件介紹8仿真電路圖9第四部分安裝調(diào)試4.1系統(tǒng)軟、硬件調(diào)試104.1.1調(diào)試步驟104.1.2故障及處理10課程設(shè)計(jì)總結(jié)12參考文獻(xiàn)12..第一部分設(shè)計(jì)任務(wù)1.1設(shè)計(jì)題目及要求設(shè)計(jì)一個(gè)基于單片機(jī)的簡(jiǎn)易萬(wàn)年歷?!?可以在LCD液晶上顯示秒、分、時(shí)、星期、日、月、年;〔2能夠判斷平年、潤(rùn)年;〔3秒、分、時(shí)、星期、日、月、年可調(diào);〔4具有單片機(jī)斷電記憶功能,在單片機(jī)掉電后無(wú)需重新設(shè)置。1.2備選方案設(shè)計(jì)與比較1.2.1方案一直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù),并用程序判斷平年和閏年,用數(shù)碼管顯示時(shí)、分、秒、年、月、日、星期。由于需要顯示的數(shù)字比較多,則需要的數(shù)碼管個(gè)數(shù)比較多,采用數(shù)碼管顯示顯得太浪費(fèi),并且多的數(shù)碼管焊接時(shí)也比較復(fù)雜,此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大,最主要的問(wèn)題是些方法在單片機(jī)主電源斷電后,計(jì)時(shí)將恢復(fù)初始值。所以不采用此種方法作為顯示。1.2.2方案二采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,用1602LCD液晶顯示屏顯示時(shí)、分、秒、年、月、日、星期。DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),不需要在程序中采用定時(shí),而且精度高,工作電壓2.5V~5.5V范圍內(nèi),2.5V時(shí)耗電小于300nA,此芯片最主要的特點(diǎn)是具有備用電源引腳,在單片機(jī)主電源掉電后,備用電源供電,使得DS1302繼續(xù)工作,時(shí)鐘繼續(xù)運(yùn)行,即具備掉電記憶功能,符合課程設(shè)計(jì)要求,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量數(shù)字和英文字母,以及一些特殊字符,并且顯示多樣,清晰可見(jiàn),且價(jià)格適中,固采用此方案。第二部分系統(tǒng)硬件平臺(tái)的設(shè)計(jì)2.1總體設(shè)計(jì)方案說(shuō)明本電路以STC89C52單片機(jī)系統(tǒng)為控制核心,時(shí)鐘電路由高精度低功耗的DS1302提供,采用三線接口與CPU進(jìn)行同步通信,輸入部分采用四個(gè)獨(dú)立式按鍵S1、S2、S3、S4,即單片機(jī)的P2.1、P2.2、P2.3、P2.4。1602液晶顯示部分,D0-D7口與單片機(jī)P1口相連,系統(tǒng)原理圖如圖2-1所示。圖1系統(tǒng)原理圖當(dāng)?shù)谝淮伟聪耂1時(shí),1602液晶顯示器上光標(biāo)在秒地址上閃爍,液晶顯示器是時(shí)間停止,表示秒可調(diào);當(dāng)?shù)诙伟聪耂1時(shí),1602液晶顯示器上光標(biāo)在分地址上閃爍,表示分可調(diào);當(dāng)?shù)谌伟聪耂1時(shí),1602液晶顯示器上光標(biāo)在時(shí)地址上閃爍,表示時(shí)可調(diào);依次類推,當(dāng)?shù)诎舜伟聪耂1時(shí),液晶顯示器是時(shí)間啟動(dòng),光標(biāo)不出現(xiàn)。當(dāng)按一下S2時(shí),可對(duì)時(shí)、分、秒、年、月、日、星期加一。當(dāng)按一下S3時(shí),可對(duì)時(shí)、分、秒、年、月、日、星期減一。當(dāng)按一下S4時(shí),1602液晶顯示初始化時(shí)間。2.2單片機(jī)最小系統(tǒng)2.2.1STC89C52單片機(jī)介紹STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在線系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。圖2STC89C52接口電路P0口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫"1"時(shí),引腳用作高阻抗輸入。P1口:P1口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,p1輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P1端口寫"1"時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入〔P1.0/T2和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入〔P1.1/T2EX,具體如下表所示。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。引腳號(hào)第二功能P1.0T2〔定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入,時(shí)鐘輸出P1.1T2EX〔定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制P1.5MOSI〔在線系統(tǒng)編程用P1.6MISO〔在線系統(tǒng)編程用P1.7SCK〔在線系統(tǒng)編程用P2口:P2口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P2端口寫"1"時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。在訪問(wèn)外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器〔例如執(zhí)行MOVXDPTR時(shí),P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址〔如MOVXRI訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。P3口:P3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,p2輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P3端口寫"1"時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流〔IIL。P3口亦作為STC89C52特殊功能〔第二功能使用,如下表所示。在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。端口引腳第二功能P3.0RXD<串行輸入口>P3.1TXD<串行輸出口>P3.2INTO<外中斷0>P3.3INT1<外中斷1>P3.4TO<定時(shí)/計(jì)數(shù)器0>P3.5T1<定時(shí)/計(jì)數(shù)器1>P3.6WR<外部數(shù)據(jù)存儲(chǔ)器寫選通>P3.7RD<外部數(shù)據(jù)存儲(chǔ)器讀選通>此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。2.2.2時(shí)鐘電路單片機(jī)引腳18和引腳19外接晶振及電容,STC89C52芯片的工作頻率可在2~33MHz范圍之間選,單片機(jī)工作頻率取決于晶振XT的頻率,通常選用11.0592MHz晶振。兩個(gè)小電容通常取值30pF,以保證振蕩器電路的穩(wěn)定性及快速性。圖3單片機(jī)時(shí)鐘電路2.2.3復(fù)位電路一般若在引腳RST上保持24個(gè)工作主頻周期的高電平,單片機(jī)就可以完成復(fù)位,但為了保證系統(tǒng)可靠地復(fù)位,復(fù)位電路應(yīng)使引腳RST保持10ms以上的高電平。如圖復(fù)位電路帶有上電自動(dòng)復(fù)位功能,當(dāng)電路上電時(shí),由于C3電容兩端電壓值不能突變,電源+5V會(huì)通過(guò)電容向RST提供充電電流,因此在RST引腳上產(chǎn)生一高電平,使單片機(jī)進(jìn)入復(fù)位狀態(tài)。隨著電容C3充電,它兩端電壓上升使得RST電位下降,最終使單片機(jī)退出復(fù)位狀態(tài)。正常運(yùn)行時(shí),可按復(fù)位按鈕對(duì)單片機(jī)復(fù)位。圖4單片機(jī)復(fù)位電路2.31602液晶模塊1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為電源地第2腳:VDD接5V電源正極第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高〔對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生"鬼影",使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。第5腳:RW為讀寫信號(hào)線,高電平<1>時(shí)進(jìn)行讀操作,低電平<0>時(shí)進(jìn)行寫操作。第6腳:E<或EN>端為使能<enable>端。第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。主要參數(shù)及RAM地址映射圖如圖5和圖6所示。顯示內(nèi)容16×2個(gè)字符芯片工作電壓4.5~5.5工作電流2.0MA〔5.0V模塊最佳工作電壓5.0V字符尺寸2.95×4.35〔WXHmm圖5控制器內(nèi)部帶有80*8〔80字節(jié)的RAM緩沖區(qū)。圖62.4時(shí)鐘芯片DS1302DS1302是美國(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ù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。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ù)位/片選線,通過(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置為高電平。I/O為串行數(shù)據(jù)輸入輸出端<雙向>,SCLK始終是輸入端。圖7時(shí)鐘芯片DS1302的引腳圖其中:X1、X2:32.768KHz晶振接入引腳。GND:地。RST:復(fù)位引腳,低電平有效,操作時(shí)高電平。I/O:數(shù)據(jù)輸入/輸出引腳,具有三態(tài)功能。SCLK:串行時(shí)鐘輸入引腳。Vcc1:工作電源引腳。Vcc2:備用電源引腳。圖8時(shí)鐘芯片DS1302的內(nèi)部結(jié)構(gòu)DS1302在每次進(jìn)行讀、寫程序前都必須初始化,先把SCLK端置"0",接著把RST端置"1",最后才給予SCLK脈沖;DS1302中與時(shí)間、日期有關(guān)的寄存器共有12個(gè),其中7個(gè)存放數(shù)據(jù)的格式為BCD碼格式。第三部分系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)3.1主程序主程序負(fù)責(zé)系統(tǒng)的初始化,數(shù)據(jù)由液晶顯示器輸出顯示,同時(shí)檢測(cè)按鍵是否按下,沒(méi)有按鍵按下就進(jìn)入DS1302中的時(shí)間來(lái)日期。主程序的流程圖如圖9所示:圖9主程序流程圖程序進(jìn)入主函數(shù),就對(duì)LCD1602進(jìn)行初始化,顯示初始化時(shí)間,然后進(jìn)入WHILE循環(huán),判斷是否有按鍵按下,若有則進(jìn)入調(diào)節(jié)模式,時(shí)間停止運(yùn)行,可以通過(guò)按鍵對(duì)時(shí)間進(jìn)行效對(duì),若沒(méi)有鍵按下,那么時(shí)間繼續(xù)運(yùn)行,時(shí)刻對(duì)DS1302的有關(guān)時(shí)間的寄存器進(jìn)行讀操作,將時(shí)間顯示在LCD上。3.2簡(jiǎn)易萬(wàn)年歷電路仿真3.2.1Protues仿真軟件介紹Proteus是一種功能強(qiáng)大的電子設(shè)計(jì)自動(dòng)化軟件,提供智能原理圖設(shè)計(jì)系統(tǒng)、SPICE模擬電路、數(shù)字電路及MCU器件混合仿真系統(tǒng)和PCB設(shè)計(jì)系統(tǒng)功能。其不僅可以仿真?zhèn)鹘y(tǒng)的電路分析實(shí)驗(yàn)、模擬電子線路實(shí)驗(yàn)、數(shù)字電路實(shí)驗(yàn)等,而且可以仿真嵌入式系統(tǒng)的實(shí)驗(yàn),其最大的特色在于可以提供嵌入式系統(tǒng)〔單片機(jī)應(yīng)用系統(tǒng)、ARM應(yīng)用系統(tǒng)的仿真實(shí)驗(yàn),這也是其它任何仿真軟件無(wú)力所及的。例如,其支持單片機(jī)和周邊設(shè)備,可以仿真51系列、8086、AVR、PIC、Motorola的68系列等常用的MCU,并提供周邊設(shè)備的仿真,例如373、led、示波器等。Proteus提供了大量的元件庫(kù),有RAM、ROM、鍵盤、馬達(dá)、LED、LCD、AD/DA、部分SPI器件、部分IIC器件等。在編譯方面,它也支持Keil和MPLAB等多種編譯器。3.2.2仿真電路圖單片機(jī)模擬的簡(jiǎn)易萬(wàn)年歷仿真圖如下:圖10系統(tǒng)仿真電路圖在LCD液晶上顯示秒、分、時(shí)、星期、日、月、年如圖10單片機(jī)的P1.0~P1.7對(duì)應(yīng)于液晶顯示器的D0~D7;四個(gè)按鍵對(duì)應(yīng)于單片機(jī)的P2.1~P2.4的作用分別是:從秒開始,P2.1對(duì)應(yīng)的按鍵每按下一次,光標(biāo)就移動(dòng)一次;P2.2對(duì)應(yīng)的按鍵每按下一次,則光標(biāo)所在的數(shù)值加一;P2.3對(duì)應(yīng)的按鍵每按下一次,光標(biāo)所在的數(shù)值減一;P2.4對(duì)應(yīng)的按鍵按下,液晶顯示器上的時(shí)間恢復(fù)程序中設(shè)定的初值。第四部分安裝調(diào)試4.1系統(tǒng)軟、硬件調(diào)試判斷單片機(jī)芯片及時(shí)鐘系統(tǒng)是否正常工作有一個(gè)簡(jiǎn)單的辦法,就是用萬(wàn)用表測(cè)量單片機(jī)晶振引腳〔18、19腳的對(duì)地電壓,以正常工作的單片機(jī)用數(shù)字萬(wàn)用表測(cè)量為例:18腳對(duì)地約2.24V,19腳對(duì)地約2.09V。對(duì)于懷疑是復(fù)位電路故障而不能正常工作的單片機(jī)也可以采用模擬復(fù)位的方法來(lái)判斷,單片機(jī)正常工作時(shí)第9腳對(duì)地電壓為零,可以用導(dǎo)線短時(shí)間和+5V連接一下,模擬一下上電復(fù)位,如果單片機(jī)能正常工作了,說(shuō)明這個(gè)復(fù)位電路有問(wèn)題。把焊接好的LCD液晶顯示器的顯示電路,用線引出接口連接至單片機(jī)的I/O口。實(shí)物連接如圖11、圖12所示。圖11圖124.1.1調(diào)試步驟1、按圖連接好線路,為了確保液晶顯示器能夠?qū)?yīng)顯示,實(shí)驗(yàn)時(shí),對(duì)P1口的接線做了調(diào)整。P1口接液晶顯示器的D0~D7,P2.1~P2.4接四個(gè)按鍵,還有一個(gè)按鍵接單片機(jī)的復(fù)位鍵RST。2、從主函數(shù)單元開始連續(xù)運(yùn)行,觀察液晶顯示器的顯示情況,如果有偏差,則單步運(yùn)行或斷點(diǎn)運(yùn)行,進(jìn)行調(diào)試,直至滿足設(shè)計(jì)要求。3、調(diào)試完顯示后,從主函數(shù)開始連續(xù)運(yùn)行,觀察液晶顯示器顯示的是否正常,如果不正常,則運(yùn)用單步運(yùn)行或斷點(diǎn)運(yùn)行進(jìn)行分析和調(diào)試,直至滿足要求。4、整體運(yùn)行,觀察時(shí)間顯示是否都符合要求,如果不符合,則再調(diào)試。直至滿足要求。5、時(shí)間顯示滿足要求后,通過(guò)調(diào)節(jié)四個(gè)按鍵來(lái)設(shè)定時(shí)間;通過(guò)調(diào)節(jié)萬(wàn)能板上的可變電阻器來(lái)調(diào)節(jié)液晶顯示器的亮度;4.1.2故障及處理〔1液晶顯示器1602出現(xiàn)亂碼處理方法:在時(shí)鐘芯片1302的I/0上加一個(gè)10K的電阻?!?液晶顯示器上顯示的時(shí)間不清楚處理方法:調(diào)節(jié)變阻器?!?按鍵不靈處理方法:消抖,在程序的按鍵子程序處加延時(shí)程序。課程設(shè)計(jì)總結(jié)通過(guò)近一個(gè)月的課程設(shè)計(jì),我感觸頗深,對(duì)抽象的理論有了更深刻的認(rèn)識(shí)。使我加深了對(duì)單片機(jī)的認(rèn)識(shí),并且熟悉了單片機(jī)系統(tǒng)的設(shè)計(jì)流程,收獲豐碩。功能上基本達(dá)標(biāo):時(shí)鐘的顯示,調(diào)時(shí)功能。時(shí)鐘顯示功能,精確度完全可以滿足日常生活顯示時(shí)間的需要;調(diào)時(shí)功能,方便快捷。硬件設(shè)施基本合乎要求,軟件設(shè)計(jì)可以配合硬件實(shí)現(xiàn)其功能。這次課程設(shè)計(jì)還使我認(rèn)識(shí)到了,電路設(shè)計(jì)需要耐心,需要一種整體的思維,而且遇到點(diǎn)問(wèn)題是很正常的,關(guān)鍵是要學(xué)會(huì)分析問(wèn)題,解決問(wèn)題,不斷積累經(jīng)驗(yàn)。技術(shù)在不斷進(jìn)步,機(jī)械式時(shí)鐘已經(jīng)被淘汰,取而代之的是具有高度準(zhǔn)確性和直觀性且無(wú)機(jī)械裝置,具有更長(zhǎng)的使用壽命等優(yōu)點(diǎn)的電子時(shí)鐘。電子時(shí)鐘更具人性化,更能提高人們的生活質(zhì)量,更受人們歡迎。機(jī)械時(shí)代已經(jīng)遠(yuǎn)去,電子時(shí)代已經(jīng)到來(lái)。做為新時(shí)代的我們,更應(yīng)該提高自身能力,適應(yīng)新時(shí)代的發(fā)展。知識(shí)來(lái)自實(shí)踐,多從生活中探尋所需要的。從這次的論文設(shè)計(jì)中,我真正的體會(huì)到,知識(shí)的重要性,特別是要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)運(yùn)用到實(shí)際生活當(dāng)中,要用知識(shí)改變一切。參考文獻(xiàn)[1]張迎新.單片機(jī)初級(jí)教程——單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2006,08.[2]周興華.手把手教你學(xué)單片機(jī)C語(yǔ)言程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2007,10.[3]張毅剛,彭喜元,董繼承.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2009,11.[4]余錫存,曹國(guó)華.單片機(jī)原理及接口技術(shù)[M].XX:XX電子科技大學(xué)出版社,2000,7.[5]王暉,薛永存.基于MCS-51單片機(jī)的復(fù)位電路抗干擾分析與設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2006,<08>.[6]侯坤,徐志永.MCS—51控制的LED顯示系統(tǒng)[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2006,<14>.[7]黎暉,魏光輝,湯小慷.單片機(jī)復(fù)位電路的可靠性與抗干擾分析[J].兵工自動(dòng)化,2007,<02>.[8]史艷瓊,楊國(guó)詩(shī).常見(jiàn)的幾種單片機(jī)復(fù)位電路分析[J].XX師范學(xué)院學(xué)報(bào),2004,<03>.[9]皇禎平.微機(jī)控制系統(tǒng)的抗干擾技術(shù)應(yīng)用[J].電腦與信息技術(shù),2000,<05>.[10]庫(kù)志強(qiáng),張錫兵,楊揚(yáng).基于單片機(jī)的溫濕度控制系統(tǒng)[J].機(jī)電信息,2006,<12>.[11]包國(guó)彬,張建民,劉嬴.單片機(jī)復(fù)位電路的設(shè)計(jì)與分析[J].光電技術(shù)應(yīng)用,2005,<03>.原程序#include<reg51.h> #defineucharunsignedchar #defineuintunsignedint sbitlcden=P3^6; sbitlcdrs=P3^5; sbitanj1=P2^1; sbitanj2=P2^2; sbitanj3=P2^3;uintcount,anxia,xq,ri,yue,nian,nian1,nian2,i,a,miao,shi,fen;ucharcodetable[]="2011-02-011"; //初始化液晶顯示ucharcodetable1[]="00:00:00";ucharcodeyue1[]={31,28,31,30,31,30,31,31,30,31,30,31}; //平年月的天數(shù)ucharcodeyue2[]={31,29,31,30,31,30,31,31,30,31,30,31}; //潤(rùn)年月的天數(shù) voiddelay<uintz> //延時(shí)函數(shù) { uintx,y; for<x=0;x<z;x++> { for<y=0;y<121;y++> {;}; }; } voidwrite_com<uintcom> //寫命令函數(shù) { lcdrs=0; P1=com; delay<5>; lcden=1; delay<5>; lcden=0; } voidwrite_data<uintdate>//寫數(shù)據(jù)函數(shù) { lcdrs=1; P1=date; delay<5>; lcden=1; delay<5>; lcden=0; } voidinit<> //初始化 { lcden=0; write_com<0x38>; //8位數(shù)據(jù)轉(zhuǎn)移雙行顯示 write_com<0x0c>; //顯示屏開光標(biāo)不出現(xiàn)不閃 write_com<0x06>; //光標(biāo)右移一格,AC加1,字符全部不動(dòng) write_com<0x01>; //清屏 for<a=0;a<16;a++>//顯示數(shù)組table { write_data<table[a]>; delay<1>; }; write_com<0x80+0x40>;//寫地址液晶第2行首位 for<a=0;a<11;a++> //顯示數(shù)組table1 { write_data<table1[a]>; delay<1>; }; TMOD=0x01; //工作方式1 選擇定時(shí)器 TH0=<65536-50000>/256; //設(shè)置計(jì)數(shù)初值 TL0=<65536-50000>%256; EA=1; //CPU開中斷 ET0=1; //T/C0開中斷 TR0=1; //T/C0 啟動(dòng) } voidwrite_sfm<uintadd,uintdate> //寫時(shí)分秒 { uintshi,ge; shi=date/10; ge=date%10; write_com<0x80+0x40+add>; write_data<0x30+shi>; write_data<0x30+ge>; } voidwrite_xq<uintxqj> //寫星期 { ucharxxqj; xxqj=xqj%10; write_com<0x80+13>; write_data<0x30+xxqj>; } voidwrite_yri<uintadd,uintdate> //寫月日 { uintshi,ge; shi=date/10; ge=date%10; write_com<0x80+add>; write_data<0x30+shi>; write_data<0x30+ge>; } voidwrite_nian<uintadd,uintdate> //寫年 { uintqian,bai,shi,ge;qian=date/1000; bai=<date/100>%10; shi=<date/10>%10; ge=date%10; write_com<0x80+add>; write_data<0x30+qian>; write_data<0x30+bai>; write_data<0x30+shi>; write_data<0x30+ge>; } voidanjian<> //按鍵判斷{ if<anj1==0> { delay<100>;if<anj1==0>{anxia++; if<anxia==1>{ while<!anj1>; TR0=0; //停止計(jì)數(shù) write_com<0x0f>;//顯示開光標(biāo)現(xiàn)并閃 write_com<0x80+0x40+10>;//光標(biāo)位置秒鐘 } if<anxia==2>{ while<!anj1>; write_com<0x80+0x40+7>;//光標(biāo)位置 } if<anxia==3>{ while<!anj1>; write_com<0x80+0x40+4>;//光標(biāo)位置 } if<anxia==4> { while<!anj1> write_com<0x80+13>; } if<anxia==5> { while<!anj1>; write_com<0x80+10>; } if<anxia==6> { while<!anj1>; write_com<0x80+7>; } if<anxia==7> { while<!anj1>; write_com<0x80+4>; } if<anxia==8> { while<!anj1>; write_com<0x80+2>; } if<anxia==9> { while<!anj1>; anxia=0; TR0=1; //啟動(dòng)計(jì)數(shù) write_com<0x0c>; } } } if<anxia!=0> { if<anj2==0> { delay<100>; if<anj2==0> { while<!anj2>; if<anxia==1> {miao++;if<miao==60>miao=0;write_sfm<9,miao>;write_com<0x80+0x40+10>;} if<anxia==2> {fen++;if<fen==60>fen=0;write_sfm<6,fen>;write_com<0x80+0x40+7>;} if<anxia==3> {shi++;if<shi==24>shi=0;write_sfm<3,shi>;write_com<0x80+0x40+4>;} if<anxia==4> {xq++;if<xq==8>xq=1;write_xq<xq>;write_com<0x80+13>;} if<anxia==5> {ri++;if<ri==32>ri=1;write_yri<9,ri>;write_com<0x80+10>;} if<anxia==6> {yue++;if<yue==13>yue=1;write_yri<6,yue>;write_com<0x80+7>;} if<anxia==7> {nian1++;if<nian1==100>nian1=0;write_yri<3,nian1>;write_com<0x80+4>;} if<anxia==8> {nian2++;if<nian2==100>nian2=0;write_yri<1,nian2>;write_com<0x80+2>;} } } } if<anxia!=0> { if<anj3==0> { delay<100>; if<anj3==0> {while<!anj3>; if<anxia==1> {if<miao==0>miao=60;miao--;write_sfm<9,miao>;write_com<0x80+0x40+10>;} if<anxia==2> {if<fen==0>fen=60;fen--;write_sfm<6,fen>;write_com<0x80+0x40+7>;} if<anxia==3> {if<shi==0>shi=24;shi--;write_sfm<3,shi>;write_com<0x80+0x40+4>;} if<anxia==4> {if<xq==0>xq=8;xq--;write_xq<xq>;write_com<0x80+13>;} if<anxia==5> {;if<ri==0>ri=31;ri--;write_yri<9,ri>;write_com<0x80+10>;} if<anxia==6> {if<yue==0>yue=12;yue--;write_yri<6,yue>;write_com<0x80+7>;} if<anxia==7> {if<nian1==0>nian1=100;nian1--;write_yri<3,nian1>;write_com<0x80+4>;} if<anx

溫馨提示

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