




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、信息工程學(xué)院課程設(shè)計(jì)報(bào)告書(shū)題目:可編程作息時(shí)間控制器設(shè)計(jì)專業(yè):電子信息科學(xué)與技術(shù)班級(jí):學(xué)號(hào):學(xué)生姓名指導(dǎo)教師:2013年5月13日信息工程學(xué)院課程設(shè)計(jì)成績(jī)?cè)u(píng)定表信息工程學(xué)院課程設(shè)計(jì)任務(wù)書(shū)學(xué)號(hào)學(xué)生姓名專業(yè)(班級(jí))設(shè)計(jì)題目可編程作息時(shí)間控制器設(shè)計(jì)設(shè)計(jì)技術(shù)參數(shù)低電壓驅(qū)動(dòng)蜂鳴器5V外部穩(wěn)壓電源供電1602LCD顯示日期和時(shí)間LED提示鬧鐘到來(lái)設(shè)計(jì)要求(1)按照給定的時(shí)間模擬控制,實(shí)現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示)。(2)具備日期和時(shí)鐘顯示。工作量文字報(bào)告字?jǐn)?shù)大約在2000字,頁(yè)數(shù)在20頁(yè)左右工作計(jì)劃(1)整體設(shè)計(jì)構(gòu)思(2)查閱有關(guān)資料(3)編寫(xiě)調(diào)試程序(4)畫(huà)出電路圖(5)裝載程序,查看結(jié)果參
2、考資料1單片機(jī)原理及應(yīng)用(第二版)張毅剛彭喜元彭宇北京高等教育出版社2劉和平.單片機(jī)編程與入門(mén).重慶大學(xué)出版社,111-1223陳明熒.89C51單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材.清華大學(xué)出版社,,102-118指導(dǎo)教師簽字教研室主任簽字學(xué)生姓名:學(xué)號(hào):專業(yè)(班級(jí)):電子課程設(shè)計(jì)題目:可編程作息時(shí)間控制器設(shè)計(jì)指導(dǎo)教師評(píng)語(yǔ):成績(jī):指導(dǎo)教師:月 日摘要本設(shè)計(jì)是可編程作息時(shí)間控制器設(shè)計(jì),由單片機(jī)AT89C51芯片和LCQLED顯示器,輔以必要的電路,構(gòu)成一個(gè)單片機(jī)四路可調(diào)鬧鐘。電子鐘可采用數(shù)字電路實(shí)現(xiàn),也可以采用單片機(jī)來(lái)完成。LCD顯示“時(shí)”,“分”,LED亮燈來(lái)表示鬧鐘的到來(lái),定時(shí)時(shí)間到能發(fā)出警報(bào)聲?,F(xiàn)在是
3、自動(dòng)化高度發(fā)達(dá)的時(shí)代,特別是電子類產(chǎn)品都是靠?jī)?nèi)部的控制電路來(lái)實(shí)現(xiàn)對(duì)產(chǎn)品的控制,達(dá)到自動(dòng)運(yùn)行的目的,這就需要我們這里要做的設(shè)計(jì)中的電器元件及電路的支持。在這次設(shè)計(jì)中主要是用AT89S51來(lái)進(jìn)行定時(shí),也結(jié)合著其他輔助電路實(shí)施控制,在定時(shí)的時(shí)候,按一下控制小時(shí)的鍵對(duì)小時(shí)加一;按一下控制分鐘的鍵對(duì)分鐘加一;到達(dá)預(yù)設(shè)的時(shí)間,此電路就會(huì)發(fā)出報(bào)警聲音提示已經(jīng)到點(diǎn)。關(guān)鍵字:四路可調(diào)鬧鐘AT89C51LCD1任務(wù)提出與方案論證單片機(jī)型號(hào)的選擇通過(guò)對(duì)多種單片機(jī)性能的分析,最終認(rèn)為AT89C51是最理想的電子時(shí)鐘開(kāi)發(fā)芯片。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS航微處理器,器
4、件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPUW閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL勺AT89C51是一種高效微控制器,而且它與MCS-51兼容,且具有4K字節(jié)可編程序存儲(chǔ)器和1000次擦寫(xiě)循環(huán),數(shù)據(jù)保留時(shí)間為10年,是最好的選擇。按鍵的選擇本次設(shè)計(jì)按照題目要求使用獨(dú)立式按鍵。由于按鍵較少,在修改時(shí)間或設(shè)置鬧鈴時(shí)間時(shí)就不能直接輸入,只能通過(guò)加或減完成,稍為麻煩一些,但其程序簡(jiǎn)單。顯示器的選擇選用1602LCD夜晶顯示器。計(jì)時(shí)部分的選擇如果使用時(shí)鐘芯片,系統(tǒng)就不怕掉電且時(shí)間精確。但這種芯片比較貴,況且,設(shè)計(jì)本系統(tǒng)主要是為了
5、學(xué)習(xí)單片機(jī)程序的編寫(xiě)和調(diào)試以及設(shè)計(jì)硬件電路的一些方法,因此采用軟件的方法來(lái)計(jì)時(shí)而沒(méi)有采用價(jià)格較高的時(shí)鐘芯片。2總體設(shè)計(jì)系統(tǒng)總框圖原理及工作過(guò)程說(shuō)明制作一個(gè)可編程作息時(shí)間控制器鬧鐘,當(dāng)4路鬧鐘中的任一路到時(shí),均會(huì)點(diǎn)亮燈、打鈴。如有需求,可對(duì)程序進(jìn)行調(diào)整,增加鬧鐘的路數(shù)及到時(shí)后的處理方式。定時(shí)鬧鐘的基本功能如下。(1)顯示時(shí)鐘時(shí)間,格式為“時(shí)時(shí):分分”,并可重新設(shè)置。(2)顯示鬧鈴時(shí)間,格式為“時(shí)時(shí):分分”,且顯示閃爍以便與時(shí)鐘時(shí)間相區(qū)分。鬧鈴時(shí)間可重新設(shè)置。(3)程序執(zhí)行后工作指示燈LED閃爍,表示時(shí)鐘工作為時(shí)鐘顯示模式.LCD顯示的初始時(shí)間為“23:58"。按下K2,閃爍顯示的“00
6、:00”為鬧鈴的時(shí)間,單擊K3又返回時(shí)鐘顯示模式。時(shí)鐘從“23:58”開(kāi)始計(jì)時(shí),定時(shí)時(shí)間“00:00”到時(shí),繼電器開(kāi)關(guān)接通,控制電器的開(kāi)啟,且可發(fā)出聲響(可控)。時(shí)鐘與鬧鈴時(shí)問(wèn)的設(shè)置可通過(guò)4個(gè)功能按鍵KlK4實(shí)現(xiàn),具體說(shuō)明如下。(1)時(shí)鐘時(shí)間的設(shè)置:首先單擊Kl進(jìn)入時(shí)鐘設(shè)置模式。此時(shí)每單擊一下Kl,則小時(shí)增1,單擊一下K2,則分鐘增1,再單擊K3則設(shè)置完成,返回時(shí)鐘顯示模式。此時(shí)小時(shí)和分鐘均已發(fā)生變化。(2)鬧鈴的時(shí)間設(shè)置:首先單擊,K3進(jìn)入鬧鈴的設(shè)置模式。此時(shí)每單擊一下Kl,則小時(shí)增1,單擊一下K2,則分鐘增1,最后單擊.K3則設(shè)置完成,返回鬧鈴顯示模式。此時(shí)鬧鈴的小時(shí)和分鐘均已發(fā)生變化。(
7、3) K4的功能:鬧鐘更換。(4) K2單獨(dú)的功能:顯示鬧鈴時(shí)間。系統(tǒng)電路圖LCD1LM016LC1U1X119XTAL1CRYSTALC218XTAL29 RST145P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.723PSENALE29 .30 vdd31-,0PFAT89C51工P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/IN
8、T0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938 373433 3221FF-24-sT16- FVDD牌S d E-7SDES W0 12 34 56 7V V VRREDDDDDDDDNmwT4R3BUZ1SW1SW-SPSTNGOVCC十 16 15 14 13二11二 10 9VCC小主程序部分的設(shè)計(jì)3詳細(xì)設(shè)計(jì)程序部分主要采用了程序結(jié)構(gòu)的模塊化設(shè)計(jì), 避免了一些函數(shù)的不必要的重復(fù)書(shū)寫(xiě), 使 程序變得單間易懂。程序在執(zhí)行時(shí),主程序要須通過(guò)調(diào)用子函數(shù)就可完成相應(yīng)的功能 。主 程序流程圖如下圖 3-1。開(kāi)始獨(dú)立式鍵盤(pán)的接口電路19189U1XTXT初始見(jiàn)
9、總量0犍盤(pán), 1P0.2/AD2P0.3/AD3P0.4/AD4圖3-1主程序魏/AD河RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A1029PSENP2.3/A1130ALEP2.4/A1231EAP2.5/A13P2.6/A141 2 3 4 _5 二6 ""7T8 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51.hex3938373635343332P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD21222324252627281
10、011121314151617在單片機(jī)應(yīng)用系統(tǒng)中,有時(shí)只需要幾個(gè)簡(jiǎn)單的按鍵向系統(tǒng)輸入信息。這時(shí),可將每個(gè)按鍵接在一根I/O接口線上,這種方式的連接稱為獨(dú)立式鍵盤(pán)。每個(gè)獨(dú)立式按鍵單獨(dú)占有一根I/O接口線,每根I/O接口線的工作狀態(tài)不會(huì)影響到其他I/O接口線。這種按鍵接口電路配置靈活,硬件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O接口線,I/O接口線浪費(fèi)較大。故只在按鍵數(shù)量不多時(shí)采用這種按鍵電路。在此電路中,按鍵輸入都采用低電平有效。1602LCD液晶顯示器LCD1LM016LDNG7D 6D 5D 4D 3d 2d 1D ODER R EEV DDV SSV1602LCD的基本參數(shù)及引腳功能1602
11、LCD分為帶背光和不帶背光兩種,基控制器大部分為 光的厚,是否帶背光在應(yīng)用中并無(wú)差別,兩者尺寸差別如下圖HD4478Q帶背光的比不帶背3-3-1所示:圖3-3-11602LCD尺寸圖1602LCD主要技術(shù)參數(shù):顯示容量:16X2個(gè)字符芯片工作電壓:一工作電流:模塊最佳工作電壓:字符尺寸:x(W/xH)mm引腳功能說(shuō)明1602LCD采用標(biāo)準(zhǔn)的14腳(無(wú)背光)或16腳(帶背光)接口,各引腳接口說(shuō)明如表3-1所示:表3-1:引腳接口說(shuō)明表編P符號(hào)引腳說(shuō)明r編符號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫(xiě)選擇
12、13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極第1腳:VSS為地電源。第2腳:VDD5V正電源。第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。第6腳:E端為使能端
13、,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:DO-D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。10.8.2.31602LCD的指令說(shuō)明及時(shí)序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3-2所示:表3-2:控制命令表序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開(kāi)/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器
14、地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫(xiě)數(shù)至UCGRA賊DDRAM10要寫(xiě)的數(shù)據(jù)內(nèi)容11從CGRA喊DDRA瞰數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶模塊的讀寫(xiě)操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。指令4:顯示開(kāi)關(guān)控制。D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示
15、無(wú)光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示F:低電平日顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RA例址設(shè)置。指令8:DDRAMfe址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫(xiě)數(shù)據(jù)。指令11:讀數(shù)據(jù)。與HD44780相兼容的芯片時(shí)序表如下:表3-3:基本操作時(shí)序表。陽(yáng)出7RW圖3-3-3讀操作時(shí)
16、序Va(dOataDBO-DB7ValidData讀狀態(tài)輸入RS=L,R/W=HE=H輸出D0-D7=犬態(tài)字寫(xiě)指令輸入RS=LR/W=L,D0-D7=旨令碼,E=高脈沖輸出無(wú)讀數(shù)據(jù)輸入RS=HR/W=HE=H輸出D0-口7嗷據(jù)寫(xiě)數(shù)據(jù)輸入RS=HR/W=L,D0D7至據(jù),E=高脈沖輸出無(wú)讀寫(xiě)操作時(shí)序如圖3-3-2和3-3-3所示:圖3-3-3寫(xiě)操作時(shí)序1602LCD的RA例址映射及標(biāo)準(zhǔn)字庫(kù)表液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖3-3-4是1602的內(nèi)部顯示地
17、址。圖3-3-41602LCD內(nèi)部顯示地址例如第二行第一個(gè)字符的地址是40H,那么是否直接寫(xiě)入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷?xiě)入顯示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫(xiě)入的數(shù)據(jù)應(yīng)該是01000000B(40H)+B(80H)=B(C0H)。在對(duì)液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無(wú)需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如圖3-3-5所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每
18、一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”囊1梟4CGROM和CGRAM中庠料代碼與字樣國(guó)后臂底關(guān)不oooo00100011。100oliooil:il。101011HM】|1H»mixXXXOOWCGRAMCHG*PppXXXX0001C2)I*1Aqn7Aa5XXXXOOIO1BRbrr4hi,Jp白XX內(nèi)皿1«3C|'SetJ1號(hào)J不Ic*4J口IdIrjj工>_-taxxxxowi;Eutu才十工H0XXXX01L0&6FVf*
19、f力號(hào)PxXXX>7Cw.7*(<XXXX1WHXhX夕耳JXJXXXX100191Y1rJJU-1ykxmmina_)1JZj1XV平XXXXIOi)(4)+ftKEk:才:廿tuB萬(wàn)X辦乂1187<L¥11七7quKMXXHgiM工m工p2L.7£+xxxXU10>N-np弋小八工xxxnn(«)"/01-01-F7卜p:二>:圖3-3-5字符代碼與圖形對(duì)應(yīng)圖1602LCD的一般初始化(復(fù)位)過(guò)程延時(shí)15mS寫(xiě)指令38H(不檢測(cè)忙信號(hào))延時(shí)5mS寫(xiě)指令38H(不檢測(cè)忙信號(hào))延時(shí)5mS寫(xiě)指令38H(不檢測(cè)忙信號(hào))以后每次寫(xiě)
20、指令、讀/寫(xiě)數(shù)據(jù)操作均需要檢測(cè)忙信號(hào)寫(xiě)指令38H:顯示模式設(shè)置寫(xiě)指令08H:顯示關(guān)閉寫(xiě)指令01H:顯示清屏寫(xiě)指令06H:顯示光標(biāo)移動(dòng)設(shè)置寫(xiě)指令0CH顯示開(kāi)及光標(biāo)設(shè)置鬧鐘子函數(shù)鬧鐘時(shí)間的判別主要是通過(guò)設(shè)定時(shí)間與實(shí)時(shí)時(shí)間對(duì)逐位對(duì)比確定是否進(jìn)行鬧鈴。其工作流程圖如下圖3-4。中斷N顯示時(shí)間和日期圖3-44總結(jié)通過(guò)自己的不懈努力,我終于完成了設(shè)計(jì)的任務(wù)要求。功能上基本達(dá)標(biāo):時(shí)鐘的顯示,日期顯示,調(diào)時(shí)功能、校時(shí)功能、鬧鈴功能、鬧鐘設(shè)功能。其精確可以滿足日常生活顯示時(shí)間的需要。在本次設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)很多的問(wèn)題,雖然以前沒(méi)有做過(guò)這樣的設(shè)計(jì)但通過(guò)這次設(shè)計(jì)我學(xué)會(huì)了很多東西,單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的
21、設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫(xiě)過(guò)幾次程序,但我覺(jué)的寫(xiě)好一個(gè)程序并不是一件簡(jiǎn)單的事,比如寫(xiě)一個(gè)程序看其功能很少認(rèn)為編寫(xiě)程序簡(jiǎn)單,但到編程的時(shí)候才發(fā)現(xiàn)一些細(xì)微的知識(shí)或低級(jí)錯(cuò)誤經(jīng)常犯做不到最后常常失敗,所以有些東西只有學(xué)精弄懂并且要細(xì)心才行,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。從這次的課程設(shè)計(jì)中,我們真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的練習(xí)的過(guò)程中才能提高,我想這就是我在這次課程設(shè)計(jì)中的最大收獲。參考文獻(xiàn)1 單片機(jī)原理及應(yīng)用(第二版)張毅剛彭喜元彭宇北京高等教育出版社2 劉和平.單片機(jī)編程與入門(mén)
22、.重慶大學(xué)出版社,111-1223 陳明熒.89C51單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材.清華大學(xué)出版社,102-118附錄#include<>#defineuintunsignedint#defineucharunsignedcharsbitkey1=P1A0;sbitkey2=P1Al;sbitkey3=P1A2;sbitkey4=P1A3;sbitlcden=P3A4;sbitlcdrs=P3A5;sbitlcdrw=P3A6;sbitled=P2A2;sbitsound=P2A7;inta,b,i,min,hour,minge,minshi,hourge,hourshi,sec,sec
23、ge,secshi,cnt,cnt1,nian=2013,yue=5,ri=5,amin1=1,ahour1,aminge1,aminshi1,ahourge1,ahourshi1,amin2=1,ahour2,aminge2,aminshi2,ahourge2,ahourshi2,amin3=1,ahour3,aminge3,aminshi3,ahourge3,ahourshi3,amin4=1,ahour4,aminge4,aminshi4,ahourge4,ahourshi4;ucharcodetable1='0','1','2','
24、;3','4','5','6','7','8','9'ucharcodetable2="Time:00:00"ucharcodeAlarm_1="Alar1:00:00"ucharcodeAlarm_2="Alar2:00:00"ucharcodeAlarm_3="Alar3:00:00"ucharcodeAlarm_4="Alar4:00:00"ucharcoderiqi="201
25、3-05-06"ucharnum1,num2,alarm1,alarm2,alarm3,alarm4;bitflag=0;voiddelay(unsignedintz)/延時(shí)程序uinti,j;for(i=z;i>0;i-)for(j=110;j>0;j-);delay(5);lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;voidwrite_data(uchardate)/LCD數(shù)據(jù)控制,寫(xiě)數(shù)據(jù)函數(shù)delay(5);lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;voi
26、dwrite_nian(ucharadd,uintdate)/年顯示函數(shù)ucharqian,bai,shi,ge;qian=date/1000;bai=(date-1000*qian)/100;shi=(date-qian*1000-bai*100)/10;ge=date%10;write_com(0x80+0x40+add);write_data(table1qian);write_data(table1bai);write_data(table1shi);write_data(table1ge);voidwrite_yue(ucharadd,uchardate)/月顯示函數(shù)ucharshi
27、,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);void write_ri(uchar add , uchar date)/日顯示函數(shù)ucharshi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);voidqi()write_nian(0,nian);write_yue(5,yue);write_ri(8,ri);writ
28、e_com(0x80+0x40+7);write_data('-');write_com(0x80+0x40+4);write_data('-');voidtime()/設(shè)置時(shí)間函數(shù)while(1)if(key1=0)delay(10);if(key1=0)if(hour=23)/"時(shí)"設(shè)置hour=0;elsehour+;hourge=hour%10;hourshi=hour/10;write_com(0x0f);delay(2);write_com(0x80+6);write_data(table1hourge);/"時(shí)&quo
29、t;個(gè)位寫(xiě)入LCD第1行第6位delay(5);write_com(0x80+5);delay(2);write_data(table1hourshi);while(!key1);/"時(shí)"十位寫(xiě)入LCD第1行第5位if(key2=0)delay(10);if(key2=0)if(min=59)min=0;elsemin+;minge=min%10;minshi=min/10;write_com(0x0f);write_com(0x80+9);write_data(table1minge);二行第9位delay(1);write_com(0x80+8);write_data(
30、table1minshi);行第8位delay(1);while(!key2);if(key3=0)delay(10);if(key3=0)write_com(0x0c);TR1=1;while(!key3);break;置完畢voiddisplay1()/設(shè)置鬧鐘1時(shí)間函數(shù)/"分"設(shè)置/"分"個(gè)位寫(xiě)入LCD第/"分"十位寫(xiě)入LCD第二/整體顯示,關(guān)光標(biāo),不閃爍/定時(shí)計(jì)數(shù)器1啟動(dòng)/key3松開(kāi)時(shí),顯示時(shí)間"時(shí)""分"位均已設(shè)while(1)if(key1=0)delay(10);if(key1=
31、0)if(ahour1=23)/鬧鐘"時(shí)"設(shè)置ahour1=0;elseahour1+;ahourge1=ahour1%10;ahourshi1=ahour1/10;write_com(0x0f);write_com(0x80+0x40+8);write_data(':');write_com(0x80+0x40+7);write_data(table1ahourge1);delay(1);write_com(0x80+0x40+6);write_data(table1ahourshi1);delay(1);while(!key1);/ 鬧鐘 "分
32、"設(shè)置if(key2=0)delay(10);if(key2=0)if(amin1=59)amin1=0;elseamin1+;aminge1=amin1%10;aminshi1=amin1/10;write_com(0x0f);write_com(0x80+0x40+10);write_data(table1aminge1);delay(1);write_com(0x80+0x40+9);write_data(table1aminshi1);delay(1);while(!key2);if(key3=0)alarm1=alarm1;delay(10);if(key3=0)write
33、_com(0x0c);write_com(0x80+0x40);for(i=0;i<11;i+)write_data(riqii);while(!key3);break;/設(shè)置結(jié)束,此時(shí)LCD第二行無(wú)數(shù)據(jù)顯示只有第一行有時(shí)間顯示voiddisplay2()/設(shè)置鬧鐘2時(shí)間函數(shù)while(1)if(key1=0)delay(10);if(key1=0)if(ahour2=23)/鬧鐘"時(shí)"設(shè)置ahour2=0;elseahour2+;ahourge2=ahour2%10;ahourshi2=ahour2/10;write_com(0x0f);write_com(0x80
34、+0x40+8);write_data(':');write_com(0x80+0x40+7);write_data(table1ahourge2);delay(1);write_com(0x80+0x40+6);write_data(table1ahourshi2);delay(1);while(!key1);if(key2=0)/鬧鐘"分"設(shè)置delay(10);if(key2=0)if(amin2=59)amin2=0;elseamin2+;aminge2=amin2%10;aminshi2=amin2/10;write_com(0x0f);write
35、_com(0x80+0x40+10);write_data(table1aminge2);delay(1);write_com(0x80+0x40+9);write_data(table1aminshi2);delay(1);while(!key2);if(key3=0)alarm2=alarm2;delay(10);if(key3=0)write_com(0x0c);write_com(0x80+0x40);for(i=0;i<11;i+)write_data(riqii);while(!key3);break;/設(shè)置結(jié)束,此時(shí)LCD第二行無(wú)數(shù)據(jù)顯示只有第一行有時(shí)間顯示voiddisp
36、lay3()/設(shè)置鬧鐘3時(shí)間函數(shù)while(1)if(key1=0)delay(10);if(key1=0)if(ahour3=23)/鬧鐘"時(shí)"設(shè)置ahour3=0;elseahour3+;ahourge3=ahour3%10;ahourshi3=ahour3/10;write_com(0x0f);write_com(0x80+0x40+8);write_data(':');write_com(0x80+0x40+7);write_data(table1ahourge3);delay(1);write_com(0x80+0x40+6);write_data
37、(table1ahourshi3);delay(1);while(!key1);if(key2=0)/鬧鐘"分"設(shè)置delay(10);if(key2=0)if(amin3=59)amin3=0;elseamin3+;aminge3=amin3%10;aminshi3=amin3/10;write_com(0x0f);write_com(0x80+0x40+10);write_data(table1aminge3);delay(1);write_com(0x80+0x40+9);write_data(table1aminshi3);delay(1);while(!key2)
38、;if(key3=0)alarm3=alarm3;delay(10);if(key3=0)write_com(0x0c);write_com(0x80+0x40);for(i=0;i<11;i+)write_data(riqii);while(!key3);break;/設(shè)置結(jié)束,此時(shí)LCD第二行無(wú)數(shù)據(jù)顯示只有第一行有時(shí)間顯示voiddisplay4()/設(shè)置鬧鐘4時(shí)間函數(shù)while(1)if(key1=0)delay(10);if(key1=0)if(ahour4=23)/鬧鐘"時(shí)"設(shè)置ahour4=0;elseahour4+;ahourge4=ahour4%10;
39、ahourshi4=ahour4/10;write_com(0x0f);write_com(0x80+0x40+8);write_data(':');write_com(0x80+0x40+7);write_data(table1ahourge4);delay(1);write_com(0x80+0x40+6);write_data(table1ahourshi4);delay(1);while(!key1);if(key2=0)/鬧鐘"分"設(shè)置delay(10);if(key2=0)if(amin4=59)amin4=0;elseamin4+;aminge
40、4=amin4%10;aminshi4=amin4/10;write_com(0x0f);write_com(0x80+0x40+10);write_data(table1aminge4);delay(1);write_com(0x80+0x40+9);write_data(table1aminshi4);delay(1);while(!key2);if(key3=0)alarm4=alarm4;delay(10);if(key3=0)write_com(0x0c);write_com(0x80+0x40);for(i=0;i<11;i+)write_data(riqii);while(
41、!key3);break;/設(shè)置結(jié)束,此時(shí)LCD第二行無(wú)數(shù)據(jù)顯示只有第一行有時(shí)間顯示voidkeyscan()/鍵盤(pán)掃描if(key1=0)delay(10);if(key1=0)/key1 鍵松開(kāi)后執(zhí)行下一行程序/調(diào)用time() 函數(shù),即時(shí)間設(shè)置while(!key1);time();elseif(key2=0)cnt1+;delay(10);if(cnt1=1)while(!key2)ahourge1=ahour1%10;ahourshi1=ahour1/10;write_com(0x80+0x40+7);write_data(table1ahourge1);delay(5);write
42、_com(0x80+0x40+6);delay(2);write_data(table1ahourshi1);aminge1=amin1%10;aminshi1=amin1/10;write_com(0x80+0x40+10);write_data(table1aminge1);delay(5);write_com(0x80+0x40+9);delay(2);write_data(table1aminshi1);write_com(0x80+0x40);for(i=0;i<11;+i)write_data(Alarm_1i);write_com(0x80+0x40);for(i=0;i&
43、lt;11;i+)write_data(riqii);時(shí)間,鬧鐘設(shè)置時(shí)間不顯示if(cnt1=2)while(!key2)ahourge2=ahour2%10;ahourshi2=ahour2/10;write_com(0x80+0x40+7);write_data(table1ahourge2);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi2);aminge1=amin1%10;aminshi1=amin1/10;write_com(0x80+0x40+10);write_data(table1aming
44、e2);delay(5);write_com(0x80+0x40+9);delay(2);write_data(table1aminshi2);write_com(0x80+0x40);for(i=0;i<11;+i)write_data(Alarm_2i);write_com(0x80+0x40);for(i=0;i<11;i+)write_data(riqii);時(shí)間,鬧鐘設(shè)置時(shí)間不顯示if(cnt1=3)while(!key2)ahourge3=ahour3%10;/顯示鬧鐘設(shè)置的時(shí)間/key2松開(kāi)后,LCD只有第一行顯示/顯示鬧鐘設(shè)置的時(shí)間/key2松開(kāi)后,LCD只有第一行
45、顯示ahourshi3=ahour3/10;write_com(0x80+0x40+7);write_data(table1ahourge3);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi3);aminge1=amin1%10;aminshi1=amin1/10;write_com(0x80+0x40+10);write_data(table1aminge3);delay(5);write_com(0x80+0x40+9);delay(2);write_data(table1aminshi3);write_
46、com(0x80+0x40);/顯示鬧鐘設(shè)置的時(shí)間/key2 松開(kāi)后, LCD 只有第一行顯示for(i=0;i<11;+i)write_data(Alarm_3i);write_com(0x80+0x40);for(i=0;i<11;i+)write_data(riqii);時(shí)間,鬧鐘設(shè)置時(shí)間不顯示if(cnt1=4)while(!key2)ahourge4=ahour4%10;ahourshi4=ahour4/10;write_com(0x80+0x40+7);write_data(table1ahourge4);delay(5);write_com(0x80+0x40+6);
47、delay(2);write_data(table1ahourshi4);aminge1=amin1%10;aminshi1=amin1/10;write_com(0x80+0x40+10);write_data(table1aminge4);delay(5);write_com(0x80+0x40+9);delay(2);write_data(table1aminshi4);write_com(0x80+0x40);for(i=0;i<11;+i)write_data(Alarm_4i);/顯示鬧鐘設(shè)置的時(shí)間write_com(0x80+0x40);for(i=0;i<11;i+
48、)write_data(riqii);/key2松開(kāi)后,LCD只有第一行顯示時(shí)間,鬧鐘設(shè)置時(shí)間不顯示if(cnt1>4)cnt1=0;elseif(key3=0)cnt+;delay(10);if(cnt=1)while(!key3);/表示鬧鐘時(shí)間設(shè)置退出ahourge1=ahour1%10;ahourshi1=ahour1/10;write_com(0x80+0x40+7);write_data(table1ahourge1);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi1);aminge1=am
49、in1%10;aminshi1=amin1/10;write_com(0x80+0x40+10);write_data(table1aminge1);delay(5);write_com(0x80+0x40+9);delay(2);write_data(table1aminshi1);write_com(0x80+0x40);for(i=0;i<11;+i)write_data(Alarm_1i);display1();if(cnt=3)while(!key3);/表示鬧鐘時(shí)間設(shè)置退出ahourge2=ahour2%10;ahourshi2=ahour2/10;write_com(0x80+0x40+7);write_data(table1ahourge2);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi2);amin
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)酒杯(酒具)市場(chǎng)運(yùn)營(yíng)現(xiàn)狀及投資前景規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)西樂(lè)器制造市場(chǎng)發(fā)展?fàn)顩r及前景趨勢(shì)分析報(bào)告
- 岳西事業(yè)編招聘年考試真題及答案解析事業(yè)單位真題
- 長(zhǎng)江大學(xué)文理學(xué)院《區(qū)域分析方法計(jì)量地理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025甘肅省建筑安全員《A證》考試題庫(kù)及答案
- 常州工程職業(yè)技術(shù)學(xué)院《化工環(huán)保與安全概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊城市經(jīng)濟(jì)職業(yè)學(xué)院《第二語(yǔ)言教學(xué)法》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南安全技術(shù)職業(yè)學(xué)院《商業(yè)倫理與會(huì)計(jì)職業(yè)操守》2023-2024學(xué)年第二學(xué)期期末試卷
- 汕頭大學(xué)《財(cái)政與金融》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江師范大學(xué)行知學(xué)院《公共部門(mén)績(jī)效評(píng)估》2023-2024學(xué)年第二學(xué)期期末試卷
- 全隱框玻璃幕墻施工方案
- 十八項(xiàng)醫(yī)療核心制度詳解培訓(xùn)課件
- 五年級(jí)上冊(cè)信息技術(shù)教學(xué)計(jì)劃華科版
- 機(jī)器人傳感器PPT完整全套教學(xué)課件
- 初一語(yǔ)文下冊(cè):閱讀理解知識(shí)點(diǎn)整理
- 營(yíng)銷部安全生產(chǎn)責(zé)任制
- CSM工法雙輪銑水泥土攪拌墻專項(xiàng)施工方案
- 定點(diǎn)醫(yī)療機(jī)構(gòu)接入驗(yàn)收申請(qǐng)表
- 小羊詩(shī)歌大全1479首(小羊喝水?dāng)U句)
- 2022-2023學(xué)年遼寧省鞍山市普通高中高一年級(jí)下冊(cè)學(xué)期第一次月考數(shù)學(xué)(A卷)試題【含答案】
- 中國(guó)農(nóng)村居民儲(chǔ)蓄行為研究共3篇
評(píng)論
0/150
提交評(píng)論