LCD顯示的定時鬧鐘_第1頁
LCD顯示的定時鬧鐘_第2頁
LCD顯示的定時鬧鐘_第3頁
LCD顯示的定時鬧鐘_第4頁
LCD顯示的定時鬧鐘_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、西南科技大學(xué)單片機原理及接口技術(shù)課程設(shè)計報告課題名稱LCD顯示的定時鬧鐘姓 名劉XX學(xué) 號2011XXXX學(xué) 院制造科學(xué)與工程學(xué)院班 級機械11XX指導(dǎo)教師張XX 2014年 06 月 12 日 目錄 1.設(shè)計要求.1 2.設(shè)計方案.1 2.1原理12.2系統(tǒng)總框圖22.3原理及工作過程說明23.元器件介紹23.1AT89C5123.2 1602LCD液晶顯示器53.3 其他重要元件64.軟件設(shè)計84.1系統(tǒng)流程圖84.2 源代碼105.系統(tǒng)仿真205.1系統(tǒng)總圖205.2設(shè)定時間時LCD顯示20 5.3設(shè)定鬧鐘時LCD顯示.215.4顯示鬧鐘時LCD顯示215.5待機時LCD顯示21 6.實

2、物圖.227.實驗總結(jié)及心得體會23 8.參考資料.241.設(shè)計要求 使用AT89C51單片機結(jié)合字符型LCD顯示器設(shè)計一個簡易的定時鬧鐘LCD時鐘,若LCD選擇有背光顯示的模塊,在夜晚或黑暗的場合中也可使用。定時鬧鐘的基本功能如下:n 顯示格式為“時時:分分”。n 由LED閃動來做秒計數(shù)表示。n 一旦時間到則發(fā)出聲響,同時繼電器啟動,可以擴充控制家電開啟和關(guān)閉。n 程序執(zhí)行后工作指示燈LED閃動,表示程序開始執(zhí)行,LCD顯示“00:00”, 按下操作鍵K1K4動作如下: (1) K1設(shè)置現(xiàn)在的時間。 (2) K2顯示鬧鐘設(shè)置的時間。 (3) K3設(shè)置鬧鈴的時間。 (4) K4鬧鈴ON/OFF

3、的狀態(tài)設(shè)置,設(shè)置為ON時連續(xù)三次發(fā)出“嘩”的一聲,設(shè)置為OFF發(fā)出“嘩”的一聲。 設(shè)置當(dāng)前時間或鬧鈴時間如下。 (1) K1時調(diào)整。 (2) K2分調(diào)整。 (3) K3設(shè)置完成。 (4) K4鬧鈴時間到時,發(fā)出一陣聲響,按下本鍵可以停止聲響。本項目的難點在于4個按鍵每個都具有兩個功能,以最終實現(xiàn)菜單化的輸入功能。采用通過逐層嵌套的循環(huán)掃描,實現(xiàn)嵌套式的鍵盤輸入。2. 設(shè)計方案2.1原理本LCD定時鬧鐘,是以單片機及外圍接口電路為核心硬件,輔以其他外圍硬件電路,用匯編語言設(shè)計的程序來實現(xiàn)的。根據(jù)C51單片機的外圍接口特點擴展相應(yīng)的硬件電路,然后根據(jù)單片機的指令設(shè)計出數(shù)字鐘相應(yīng)的軟件,再利用軟件執(zhí)

4、行一定的程序來實現(xiàn)數(shù)字鐘的功能。由于采用集成芯片性的單片機來制作電子鐘,這樣設(shè)計制作簡單而且功能多、精確度高,也可方便擴充其他功能,實現(xiàn)也十分簡單。本設(shè)計是利用AT89C51單片機為主控芯片,由LCD、晶振、電阻、電容、發(fā)光二極管、開關(guān)、喇叭等元件組成硬件電路,通過編寫軟件程序來實現(xiàn)和控制的數(shù)字定時鬧鐘2.2系統(tǒng)總框圖2.3原理及工作過程說明(1)定時鬧鐘的基本功能如下 :(a)啟動仿真軟件,使用LCD液晶顯示器來顯示現(xiàn)在的時間 。(b)程序執(zhí)行之后顯示“00:00”,并且LED閃爍,表示開始已經(jīng)計時。(c)由LED閃動來做秒計數(shù)表示。(d)當(dāng)設(shè)定的鬧鐘時間到達后,鬧鈴開始發(fā)出聲音。并且繼電器

5、導(dǎo)通。(2)按鍵功能如下 :按鍵K1設(shè)置現(xiàn)在的時間和時調(diào)整;按鍵K2顯示鬧鐘設(shè)置的時間和分調(diào)整;按鍵K3設(shè)置鬧鈴的時間和設(shè)置完成;按鍵K4鬧鈴ON/OFF的狀態(tài)設(shè)置,設(shè)置為ON時連續(xù)三次發(fā)出“嘩”的一聲,設(shè)置為OFF發(fā)出“嘩”的一聲和鬧鐘時間到時,發(fā)出一陣聲響,按下本鍵可以停止聲響。(3)調(diào)整計時器時間如下 :按下K1鍵,然后按K1調(diào)整小時,K2調(diào)整分鐘,按下K3表示時間設(shè)置完成。(4)調(diào)整鬧鐘時間設(shè)置如下 :按下K3鍵,然后按K1調(diào)整小時,K2調(diào)整分鐘,按下K3表示鬧鐘設(shè)置完成。3.元器件介紹3.1AT89C51本設(shè)計的核心硬件就是89C51芯片,AT89C51是一種帶4K字節(jié)閃爍可編程可擦

6、除只讀存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。3.1.1引腳圖3.1.2引腳功能介紹P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序

7、數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被

8、外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。當(dāng)P2口用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:P3口管腳 備選功

9、能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。保持RST腳兩個機器周期以上的高電平時間即可復(fù)位。ALE/PROG:ALE為CPU訪問外部程序存儲器或外部數(shù)據(jù)存儲器提供一個地址鎖存信號,將低8位地址鎖存在片外的地址鎖存器中。PROG為該引腳第二功能,在對片內(nèi)FLASH存儲器編程時,此引腳作為編程脈沖輸入

10、端。 PSEN:片外程序存儲器的讀選通信號。低電平有效。 EA/VPP:當(dāng)EA為低電平時,只讀取外部的程序存儲器中的內(nèi)容;當(dāng)EA為高電平時,在PC值不超過0FFFH時,單片機讀片內(nèi)程序存儲器的程序,但PC超過時,自動轉(zhuǎn)向片外60KB程序存儲器中的程序。 XTAL1:片內(nèi)振蕩器反向放大器和時鐘發(fā)生器電路的輸入端。 XTAL2:片內(nèi)振蕩器反向放大器的輸出端。3.2 1602LCD液晶顯示器3.2.1引腳圖3.2.2引腳功能第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個1

11、0K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7,數(shù)據(jù)總線,與單片機的數(shù)據(jù)總線相連,三態(tài)。第15腳:背光板電源,通常+5V。第16腳:背光板電源地。3.3 其他重要元件3.3.1獨立式鍵盤的接口電路在單片機應(yīng)用系統(tǒng)中,有時只需要幾個簡單的按鍵向系統(tǒng)輸入信息。這時,可將每個按鍵接在一根I/O接口線上,這種方式的連接稱為獨立式鍵盤。每個獨立式按鍵單獨占有一根 I/O接口線,每根I/O接口線的工

12、作狀態(tài)不 會影響到其他 I/O接口線 。這種按鍵接口電路配置靈活,硬件結(jié)構(gòu)簡單,但每個按鍵必須占用一根I/O接口線,I/O接口線浪費較大。故只在按鍵數(shù)量不多時采用這種按鍵電路。在此電路中,按鍵輸入都采用低電平有效。上拉電阻保證了按鍵斷開時,I/O接口線有確定的高電平。當(dāng)I/O接口內(nèi)部有上拉電阻時,外電路可以不配置上拉電阻。3.3.2電磁繼電器電磁繼電器一般由鐵芯、線圈、銜鐵、觸點簧片等組成的。只要在線圈兩端加上一定的電壓,線圈中就會流過一定的電流,從而產(chǎn)生電磁效應(yīng),銜鐵就會在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,從而帶動銜鐵的動觸點與靜觸點(常開觸點)吸合。當(dāng)線圈斷電后,電磁的吸力也隨

13、之消失,銜鐵就會在彈簧的反作用力返回原來的位置,使動觸點與原來的靜觸點(常閉觸點)釋放。這樣吸合、釋放,從而達到了在電路中的導(dǎo)通、切斷的目的。具有動作快、工作穩(wěn)定、使用壽命長、體積小等優(yōu)點。3.3.2 PNP三極管 PNP型三極管由2塊P型半導(dǎo)體中間夾著1塊N型半導(dǎo)體所組成,電流從發(fā)射極E流入的三極管.PNP型三極管發(fā)射極電位最高,集電極電位最低,UBE0.4.軟件設(shè)計4.1系統(tǒng)流程圖4.2 源代碼#include #define uint unsigned int#define uchar unsigned charuchar code table1=NOW TIME; uchar code

14、 table2=SHOW ALRAM; uchar code table3=SET TIME; uchar code table4=SET ALRAM;sbit lcden=P34;sbit lcdrs=P35;sbit lcdrw=P36;sbit K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit be=P25;sbit dula=P26;sbit wala=P27;sbit jdq=P23;sbit LED =P24;uchar flag,num,count,k1num,k2num,k3num,k4num;char miao,shi,fen,a

15、shi,afen;/延時函數(shù)void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=100;y0;y-);/蜂鳴器子程序void di()be=0;delay(100);be=1;/寫命令函數(shù)void write_com(uchar com)lcdrs=0;lcdrw=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;/寫數(shù)據(jù)函數(shù)void write_date(uchar date)lcdrs=1;lcdrw=0;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcde

16、n=0;/寫時間函數(shù)void write_sfm(uchar add,uchar date)uchar dateshi,datege;dateshi=date/10;datege=date%10;write_com(0x80+0x40+add);write_date(0x30+dateshi);write_date(0x30+datege); /顯示時間函數(shù)void TimeInit() write_com(0x01);write_com(0x80+2);for(num=0;num8;num+)write_date(table1num);delay(5); write_com(0x80+0x4

17、0+4);write_date(:);delay(5);write_sfm(2,shi);write_com(0x80+0x40+2);write_sfm(5,fen);write_com(0x80+0x40+5); /顯示鬧鐘函數(shù)void DisplayAlarmTime()write_com(0x01);write_com(0x80+2); for(num=0;num10;num+)write_date(table2num);delay(5);write_com(0x80+0x40+4);write_date(:);delay(5);write_sfm(2,ashi);write_com(

18、0x80+0x40+2);write_sfm(5,afen);write_com(0x80+0x40+5);/設(shè)置當(dāng)前時間void SetNowTime() write_com(0x80+2);for(num=0;num8;num+)write_date(table3num);delay(5);write_com(0x80+0x40+4);write_date(:); delay(5);write_sfm(2,shi);write_com(0x80+0x40+2);write_sfm(5,fen);write_com(0x80+0x40+5);if(K1=0)delay(5);if(K1=0)

19、while(!K1);di();shi+;if(shi=24)shi=0; write_sfm(2,shi);write_com(0x80+0x40+2);if(K2=0)delay(5);if(K2=0)while(!K2);di();fen+;if(fen=60)fen=0;write_sfm(5,fen);write_com(0x80+0x40+5);if(K3=0)delay(5);if(K3=0)while(!K3);di();k1num=0;TR0=1;TimeInit(); /設(shè)置鬧鐘時間void SetAlarmTime() write_com(0x80+2);for(num=

20、0;num9;num+)write_date(table4num);delay(5);write_com(0x80+0x40+4);write_date(:); delay(5);write_sfm(2,ashi);write_com(0x80+0x40+2);write_sfm(5,afen);write_com(0x80+0x40+5);if(K1=0)delay(5);if(K1=0)while(!K1);di();ashi+;if(ashi=24)ashi=0;write_sfm(2,ashi);write_com(0x80+0x40+2);if(K2=0)delay(5);if(K2

21、=0)while(!K2);di();afen+;if(afen=60)afen=0;write_sfm(5,afen);write_com(0x80+0x40+5);if(K3=0)delay(5);if(K3=0)while(!K3);di();k3num=0;EA=1;flag=1;TimeInit();/鍵盤掃描函數(shù)void keyscan()if(K1=0)delay(5);if(K1=0)TR0=0;while(!K1);di();k1num+;if(k1num!=0)SetNowTime();elseif(K2=0)delay(5);if(K2=0)while(!K2);di()

22、;k2num+;if(k2num=1)DisplayAlarmTime();k2num=2;if(k2num=3)k2num=0;EA=1;TimeInit();elseif(K3=0)delay(5);if(K3=0)while(!K3);di();k3num+;if(k3num=1)write_com(0x80+0x40+2); write_date( );delay(100); write_com(0x80+0x40+3); write_date( ); delay(100); write_com(0x80+0x40+5); write_date( ); delay(100); writ

23、e_com(0x80+0x40+6); write_date( ); SetAlarmTime();elseif(K4=0)delay(5);if(K4=0)while(!K4);di();k4num+;if(k4num=1)di();k4num=2;flag=0;if(k4num=3)k4num=0;di();delay(500);di();delay(500);di();flag=1; if(flag=1&shi=ashi&fen=afen)jdq=0;be=be;delay(500);if(K4=0&flag=1)delay(5);if(K4=0&flag=1)while(!K4);di

24、();flag=0;k4num=0;/lcd1602初始化void init()lcden=0;shi=00;fen=00;miao=0;ashi=12;afen=00;count=0;k1num=0;dula=0;wala=0; /write_com(0x38);/設(shè)置16X2顯示,5X7點陣,8位數(shù)據(jù)接口write_com(0x08);write_com(0x01); /顯示清0,數(shù)據(jù)指針清0write_com(0x06);/寫一個字符后地址指針加1write_com(0x0c);/設(shè)置開顯示,不顯示光標 TimeInit();TMOD=0x01;TH0=0x4c;TL0=0x00;EA=1;ET0=1;TR0=1;/主函數(shù)void main()init();write_com(0x80);while(1)keyscan();/中斷服務(wù)子程序void timer0() interrupt 1TH0=0x4c;TL0=0x00;count+;LED=0;if(count=20)count=0;miao+;LED=LED;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;write_sfm(2,shi);write_sfm(5,fe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論