




已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
信息工程學院課程設(shè)計 信息工程學院課程設(shè)計報告書 題 目: 可編程作息時間控制器設(shè)計 專 業(yè): 電子信息科學與技術(shù) 班 級: 學 號: 學生姓名 指導教師: 2013 年 5 月 13日 信息工程學院課程設(shè)計任務(wù)書學 號學生姓名專業(yè)(班級)設(shè)計題目 可編程作息時間控制器設(shè)計設(shè)計技術(shù)參數(shù) 0.5v低電壓驅(qū)動蜂鳴器 5V外部穩(wěn)壓電源供電 1602LCD顯示日期和時間 LED提示鬧鐘到來設(shè)計要求(1)按照給定的時間模擬控制,實現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示)。(2)具備日期和時鐘顯示。工作量 文字報告字數(shù)大約在2000字,頁數(shù)在20頁左右工作計劃 (1)整體設(shè)計構(gòu)思(2)查閱有關(guān)資料(3)編寫調(diào)試程序(4)畫出電路圖(5)裝載程序,查看結(jié)果參考資料1單片機原理及應(yīng)用(第二版) 張毅剛 彭喜元 彭宇 北京 高等教育出版社2劉和平. 單片機編程與入門.重慶大學出版社,2002.68-99,111-1223陳明熒. 89C51單片機課程設(shè)計實訓教材.清華大學出版社,2003.38-67,102-118指導教師簽字教研室主任簽字 年 月 日 學生姓名: 學號: 專業(yè)(班級): 電子 課程設(shè)計題目: 可編程作息時間控制器設(shè)計 指導教師評語: 成績: 指導教師: 年 月 日信息工程學院課程設(shè)計成績評定表摘要本設(shè)計是可編程作息時間控制器設(shè)計,由單片機AT89C51芯片和LCD、LED顯示器,輔以必要的電路,構(gòu)成一個單片機四路可調(diào)鬧鐘。電子鐘可采用數(shù)字電路實現(xiàn),也可以采用單片機來完成。LCD顯示“時”,“分”,LED亮燈來表示鬧鐘的到來,定時時間到能發(fā)出警報聲?,F(xiàn)在是自動化高度發(fā)達的時代,特別是電子類產(chǎn)品都是靠內(nèi)部的控制電路來實現(xiàn)對產(chǎn)品的控制,達到自動運行的目的,這就需要我們這里要做的設(shè)計中的電器元件及電路的支持。在這次設(shè)計中主要是用AT89S51來進行定時,也結(jié)合著其他輔助電路實施控制,在定時的時候,按一下控制小時的鍵對小時加一;按一下控制分鐘的鍵對分鐘加一;到達預設(shè)的時間,此電路就會發(fā)出報警聲音提示已經(jīng)到點。關(guān)鍵字:四路可調(diào)鬧鐘 AT89C51 LCD目 錄1 任務(wù)提出與方案論證11.1 單片機型號的選擇11.2 按鍵的選擇11.3 顯示器的選擇11.4 計時部分的選擇12 總體設(shè)計22.1系統(tǒng)總框圖22.2原理及工作過程說明22.3系統(tǒng)電路圖33詳細設(shè)計43.1主程序部分的設(shè)計43.2獨立式鍵盤的接口電路43.3 1602LCD液晶顯示器53.4鬧鐘子函數(shù)104總結(jié)11參考文獻12 1 任務(wù)提出與方案論證 1.1 單片機型號的選擇通過對多種單片機性能的分析,最終認為AT89C51是最理想的電子時鐘開發(fā)芯片。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器,器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,而且它與MCS-51兼容,且具有4K字節(jié)可編程序存儲器和1000次擦寫循環(huán),數(shù)據(jù)保留時間為10年,是最好的選擇。1.2 按鍵的選擇 本次設(shè)計按照題目要求使用獨立式按鍵。由于按鍵較少,在修改時間或設(shè)置鬧鈴時間時就不能直接輸入,只能通過加或減完成,稍為麻煩一些,但其程序簡單。 1.3 顯示器的選擇選用1602LCD液晶顯示器。1.4 計時部分的選擇如果使用時鐘芯片,系統(tǒng)就不怕掉電且時間精確。但這種芯片比較貴,況且,設(shè)計本系統(tǒng)主要是為了學習單片機程序的編寫和調(diào)試以及設(shè)計硬件電路的一些方法,因此采用軟件的方法來計時而沒有采用價格較高的時鐘芯片。2 總體設(shè)計2.1系統(tǒng)總框圖2.2原理及工作過程說明制作一個可編程作息時間控制器鬧鐘,當4路鬧鐘中的任一路到時,均會點亮燈、打鈴。如有需求,可對程序進行調(diào)整,增加鬧鐘的路數(shù)及到時后的處理方式。定時鬧鐘的基本功能如下。(1)顯示時鐘時間,格式為“時時:分分”,并可重新設(shè)置。(2)顯示鬧鈴時間,格式為“時時:分分”,且顯示閃爍以便與時鐘時間相區(qū)分。鬧鈴時間可重新設(shè)置。(3)程序執(zhí)行后工作指示燈LED閃爍,表示時鐘工作為時鐘顯示模式LCD顯示的初始時間為“23:58”。按下K2,閃爍顯示的“00:00”為鬧鈴的時間,單擊K3又返回時鐘顯示模式。時鐘從“23:58”開始計時,定時時間“00:00”到時,繼電器開關(guān)接通,控制電器的開啟,且可發(fā)出聲響(可控)。時鐘與鬧鈴時問的設(shè)置可通過4個功能按鍵KlK4實現(xiàn),具體說明如下。(1)時鐘時間的設(shè)置:首先單擊Kl進入時鐘設(shè)置模式。此時每單擊一下Kl,則小時增l,單擊一下K2,則分鐘增1,再單擊K3則設(shè)置完成,返回時鐘顯示模式。此時小時和分鐘均已發(fā)生變化。(2)鬧鈴的時間設(shè)置:首先單擊,K3進入鬧鈴的設(shè)置模式。此時每單擊一下Kl,則小時增1,單擊一下K2,則分鐘增l,最后單擊K3則設(shè)置完成,返回鬧鈴顯示模式。此時鬧鈴的小時和分鐘均已發(fā)生變化。(3) K4的功能:鬧鐘更換。(4) K2單獨的功能:顯示鬧鈴時間。2.3系統(tǒng)電路圖3詳細設(shè)計3.1主程序部分的設(shè)計程序部分主要采用了程序結(jié)構(gòu)的模塊化設(shè)計,避免了一些函數(shù)的不必要的重復書寫,使程序變得單間易懂。程序在執(zhí)行時,主程序要須通過調(diào)用子函數(shù)就可完成相應(yīng)的功能 。主程序流程圖如下圖3-1。 圖3-1主程序流程圖3.2獨立式鍵盤的接口電路在單片機應(yīng)用系統(tǒng)中,有時只需要幾個簡單的按鍵向系統(tǒng)輸入信息。這時,可將每個按鍵接在一根I/O接口線上,這種方式的連接稱為獨立式鍵盤。每個獨立式按鍵單獨占有一根 I/O接口線,每根I/O接口線的工作狀態(tài)不 會影響到其他 I/O接口線 。這種按鍵接口電路配置靈活,硬件結(jié)構(gòu)簡單,但每個按鍵必須占用一根I/O接口線,I/O接口線浪費較大。故只在按鍵數(shù)量不多時采用這種按鍵電路。在此電路中,按鍵輸入都采用低電平有效。鬧鈴2時間到?定時計數(shù)器時間顯示日期顯示鬧鈴4時間到?鬧鈴3時間到?鬧鈴1時間到?3.3 1602LCD液晶顯示器1602LCD的基本參數(shù)及引腳功能1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如下圖3-3-1所示:圖3-3-11602LCD尺寸圖1602LCD主要技術(shù)參數(shù):顯示容量:162個字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.954.35(WH)mm引腳功能說明1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表3-1所示:表3-1:引腳接口說明表編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。10823 1602LCD的指令說明及時序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3-2所示:表3-2:控制命令表序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標復位到地址00H位置。指令2:光標復位,光標返回到地址00H。指令3:光標和顯示模式設(shè)置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標的開與關(guān),高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。指令6:功能設(shè)置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。與HD44780相兼容的芯片時序表如下:表3-3:基本操作時序表讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無讀寫操作時序如圖3-3-2和3-3-3所示:圖3-3-3 讀操作時序圖3-3-3寫操作時序1602LCD的RAM地址映射及標準字庫表液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖3-3-4是1602的內(nèi)部顯示地址。圖3-3-4 1602LCD內(nèi)部顯示地址例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標是自動右移的,無需人工干預。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如圖3-3-5所示,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”圖3-3-5字符代碼與圖形對應(yīng)圖 1602LCD的一般初始化(復位)過程延時15mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標移動設(shè)置寫指令0CH:顯示開及光標設(shè)置3.4鬧鐘子函數(shù)鬧鐘時間的判別主要是通過設(shè)定時間與實時時間對逐位對比確定是否進行鬧鈴。其工作流程圖如下圖3-4。YYY鬧鐘4到?鬧鐘3到?鬧鐘1到?鬧鐘2 到?顯示時間和日期YNN鬧鐘打開 中斷NN 圖3-44總結(jié) 通過自己的不懈努力,我終于完成了設(shè)計的任務(wù)要求。功能上基本達標:時鐘的顯示,日期顯示,調(diào)時功能、校時功能、鬧鈴功能、鬧鐘設(shè)功能。其精確可以滿足日常生活顯示時間的需要。在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前沒有做過這樣的設(shè)計但通過這次設(shè)計我學會了很多東西,單片機課程設(shè)計重點就在于軟件算法的設(shè)計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個程序并不是一件簡單的事,比如寫一個程序看其功能很少認為編寫程序簡單,但到編程的時候才發(fā)現(xiàn)一些細微的知識或低級錯誤經(jīng)常犯做不到最后常常失敗,所以有些東西只有學精弄懂并且要細心才行,只學習理論有些東西是很難理解的,更談不上掌握。從這次的課程設(shè)計中,我們真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的練習的過程中才能提高,我想這就是我在這次課程設(shè)計中的最大收獲。參考文獻1單片機原理及應(yīng)用(第二版) 張毅剛 彭喜元 彭宇 北京 高等教育出版社2劉和平. 單片機編程與入門.重慶大學出版社,2002.68-99,111-1223陳明熒. 89C51單片機課程設(shè)計實訓教材.清華大學出版社,2003.38-67,102-118附錄#include#define uint unsigned int#define uchar unsigned charsbit key1=P10;sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit lcden=P34;sbit lcdrs=P35;sbit lcdrw=P36;sbit led=P22; sbit sound=P27;int a,b,i,min,hour,minge,minshi,hourge,hourshi,sec,secge,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;uchar code table1=0,1,2,3,4,5,6,7,8,9;uchar code table2=Time:00:00 ;uchar code Alarm_1=Alar1:00:00 ;uchar code Alarm_2=Alar2:00:00 ;uchar code Alarm_3=Alar3:00:00 ;uchar code Alarm_4=Alar4:00:00 ;uchar code riqi=2013-05-06 ;uchar num1,num2,alarm1,alarm2,alarm3,alarm4;bit flag=0;void delay(unsigned int z)/延時程序uint i,j;for(i=z;i0;i-)for(j=110;j0;j-);void write_com(uchar com) /LCD命令控制,寫指令函數(shù)delay(5) ;lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date) /LCD數(shù)據(jù)控制,寫數(shù)據(jù)函數(shù)delay(5);lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;void write_nian(uchar add , uint date) /年顯示函數(shù) uchar qian,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); void write_yue(uchar add , uchar date) /月顯示函數(shù) uchar shi,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ù) uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_data(0x30+shi); write_data(0x30+ge); void qi() write_nian(0,nian); write_yue(5,yue); write_ri(8,ri); write_com(0x80+0x40+7); write_data(-); write_com(0x80+0x40+4); write_data(-); void time()/設(shè)置時間函數(shù)while(1)if(key1=0) delay(10);if(key1=0)if(hour=23) /時設(shè)置hour=0;elsehour+;hourge=hour%10;hourshi=hour/10;write_com(0x0f);delay(2);write_com(0x80+6);write_data(table1hourge); /時個位寫入LCD第1行第6位delay(5);write_com(0x80+5);delay(2);write_data(table1hourshi); /時十位寫入LCD第1行第5位while(!key1);if(key2=0)delay(10);if(key2=0)if(min=59)/分設(shè)置min=0;elsemin+;minge=min%10;minshi=min/10;write_com(0x0f);write_com(0x80+9);write_data(table1minge); /分個位寫入LCD第二行第9位delay(1);write_com(0x80+8);write_data(table1minshi); /分十位寫入LCD第二行第8位delay(1);while(!key2);if(key3=0)delay(10);if(key3=0)write_com(0x0c); /整體顯示,關(guān)光標,不閃爍TR1=1; /定時計數(shù)器1啟動while(!key3);break; /key3松開時,顯示時間時分位均已設(shè)置完畢void display1()/設(shè)置鬧鐘1時間函數(shù)while(1)if(key1=0)delay(10);if(key1=0)if(ahour1=23)/鬧鐘時設(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);if(key2=0) /鬧鐘分設(shè)置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_com(0x0c);write_com(0x80+0x40);for(i=0;i11;i+)write_data(riqii);while(!key3);break; /設(shè)置結(jié)束,此時LCD第二行無數(shù)據(jù)顯示,只有第一行有時間顯示 void display2()/設(shè)置鬧鐘2時間函數(shù)while(1)if(key1=0)delay(10);if(key1=0)if(ahour2=23)/鬧鐘時設(shè)置ahour2=0;elseahour2+;ahourge2=ahour2%10;ahourshi2=ahour2/10;write_com(0x0f);write_com(0x80+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_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;i11;i+)write_data(riqii);while(!key3);break; /設(shè)置結(jié)束,此時LCD第二行無數(shù)據(jù)顯示,只有第一行有時間顯示void display3()/設(shè)置鬧鐘3時間函數(shù)while(1)if(key1=0)delay(10);if(key1=0)if(ahour3=23)/鬧鐘時設(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(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);if(key3=0) alarm3=alarm3;delay(10);if(key3=0)write_com(0x0c);write_com(0x80+0x40);for(i=0;i11;i+)write_data(riqii);while(!key3);break; /設(shè)置結(jié)束,此時LCD第二行無數(shù)據(jù)顯示,只有第一行有時間顯示void display4()/設(shè)置鬧鐘4時間函數(shù)while(1)if(key1=0)delay(10);if(key1=0)if(ahour4=23)/鬧鐘時設(shè)置ahour4=0;elseahour4+;ahourge4=ahour4%10;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+;aminge4=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;i11;i+)write_data(riqii);while(!key3);break; /設(shè)置結(jié)束,此時LCD第二行無數(shù)據(jù)顯示,只有第一行有時間顯示void keyscan()/鍵盤掃描if(key1=0) delay(10);if(key1=0)while(!key1); /key1鍵松開后執(zhí)行下一行程序time(); /調(diào)用time()函數(shù),即時間設(shè)置 else if(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_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;i11;+i)write_data(Alarm_1i); /顯示鬧鐘設(shè)置的時間write_com(0x80+0x40);for(i=0;i11;i+)write_data(riqii); /key2松開后,LCD只有第一行顯示時間,鬧鐘設(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(table1aminge2);delay(5);write_com(0x80+0x40+9);delay(2);write_data(table1aminshi2);write_com(0x80+0x40);for(i=0;i11;+i)write_data(Alarm_2i); /顯示鬧鐘設(shè)置的時間write_com(0x80+0x40);for(i=0;i11;i+)write_data(riqii); /key2松開后,LCD只有第一行顯示時間,鬧鐘設(shè)置時間不顯示 if(cnt1=3)while(!key2)ahourge3=ahour3%10;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_com(0x80+0x40);for(i=0;i11;+i)write_data(Alarm_3i); /顯示鬧鐘設(shè)置的時間write_com(0x80+0x40)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025國網(wǎng)電力工程研究院有限公司高校畢業(yè)生招聘約5人(第二批)筆試參考題庫附帶答案詳解
- 草地管理學試題及答案
- 動物油煉油行業(yè)未來趨勢與市場潛力深度解析
- 設(shè)計思路與紡織品實踐的結(jié)合試題及答案
- 紡織品設(shè)計師應(yīng)考準備建議試題及答案
- 農(nóng)務(wù)合同協(xié)議書
- 工廠產(chǎn)品合同協(xié)議書
- 解除合同協(xié)議書收費標準
- 合同糾紛協(xié)議書
- 店面解約合同協(xié)議書
- 07FD02 防空地下室電氣設(shè)備安裝
- 專題八 概率與統(tǒng)計(2020-2024)五年高考《數(shù)學》真題分類匯編(解析版)
- Module 10 Unit 1 We are going to different school(教案)外研版(三起)英語六年級下冊
- 物聯(lián)網(wǎng)技術(shù)概論智慧樹知到期末考試答案章節(jié)答案2024年西安交通大學
- 湖南省建設(shè)工程竣工驗收備案表
- 2024年山東省濟南市市中區(qū)中考二模地理試卷
- 人教版一年級《天地人你我他》課件
- 村委會地震演練方案及流程
- 脫甲烷塔結(jié)構(gòu)及工藝流程
- 學校餐飲服務(wù)應(yīng)急預案
- 高強泵送混凝土應(yīng)用技術(shù)標準 DG-TJ08-503-2018
評論
0/150
提交評論