電子時鐘(LED顯示)_第1頁
電子時鐘(LED顯示)_第2頁
電子時鐘(LED顯示)_第3頁
電子時鐘(LED顯示)_第4頁
電子時鐘(LED顯示)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、題目: 電子時鐘(LCD顯示)設(shè)計要求以AT89C51單片機為核心的時鐘,在LCD顯示器上顯示當前的時間: 使用字符型LCD顯示器顯示當前時間。 顯示格式為“時時:分分:秒秒”。 用4個功能鍵操作來設(shè)置當前時間,4個功能鍵接在P1.0P1.3引腳上。功能鍵K1K4功能如下。 K1進入設(shè)置現(xiàn)在的時間。 K2設(shè)置小時。 K3設(shè)置分鐘。 K4確認完成設(shè)置。程序執(zhí)行后工作指示燈LED閃動,表示程序開始執(zhí)行,LCD顯示“00:00:00”,然后開始計時。原理圖:仿真圖:程序:#include"reg51.h"#include"intrins.h"#define u

2、char unsigned int#define DelayNOP()_nop_();_nop_();_nop_();sbit K1=P10; /選擇調(diào)整小時,分鐘sbit K2=P11; /增加sbit K3=P12; /減少sbit K4=P13;sbit SPK=P30;sbit RS=P20;sbit RW=P21;sbit E=P22;uchar code Str1=" Current Time " /以下兩個字符串的串長均為16 uchar code Str2="Set New Time. "uchar HMS String=" 0

3、0:00:00 " /待顯示的時間串bit Settime=0; /是否修改時間bit Change_H_or_M=1; /1表示修改時,0表示修改分uchar Millisecond,Hour=0,Minute=0,Second=0;/-/延時函數(shù)/-void DelayMS(uint x)uchar i;while(x-) for (i=0;i<120;i+);/- /LCD忙狀態(tài)檢測/-bit LCD_Busy_check()bit result;RS=0; RW=1; E=1; DelayNOP(); result=(bit)(PO&0x80); E=0; re

4、turn result;/-/寫LCD命令/-void LCD_Write_Command(Uchar cmd)while( LCD_Busy_Check(); /判斷LCD是否忙碌RS=0; RW=0; E=0; nop_(); nop_(); P0=cmd; DelayNOP(); E=1; DelayNOP():E=0;/-/設(shè)置LCD顯示位置/-void LCD_Set_Pos(uchar pos)LCD_Write_Command(pos | 0x80);/-/寫LCD數(shù)據(jù)/-void LCD_Write_Data(uchar dat)while(LCD_Busy_Check();

5、/判斷LCD是否忙碌 RS=1;RW=0;E=0;P0=dat; DelayNOP();E=1;DelayNOP();E=0;/- /LCD初始化/-void LCD_Initialize()LCD_Write_Command(0x38);DelayMS(1);LCD_Write_Command(0x0c);DelayMS(1);LCD_Write_Command(0x06);DelayMS(1);LCD_Write_Command(0x01);DelayMS(1);/- /顯示函數(shù),在LCD指定的行上顯示字符/- void Display_String(uchar * str,uchar L

6、ineNo)uchar k;LCD_Set_Pos(LineNo);for(k=0;k<16;k+) LCD_Write_Data(strk); /- /蜂鳴函數(shù)/- void Beep()uchar i,j=70;for(i=0;i<200;i+)while (-j); SPK=SPK;DelayMS(300); SPK=0;/- /時分秒顯示/- void Display_HMS(uchar h,m,s)if(Settime) HMS_String3='>' /顯示修改標志 else HMS_String3='' /不顯示修改標志 HMS_

7、String4=h/10+'0' /時HMS_String5=h%10+'0'HMS_String7=m/10+'0' /分HMS_String8=m%10+'0'HMS_String10=s/10+'0' /秒HMS_String11=s%10+'0'Display_String(HMS_String,0x40);/- /設(shè)置時間/-void Change_Time()Settime=0;if(K1=0|K2=0|K3=0) /按下K1,K2,K3中的任何一 個鍵即進入修改狀態(tài)TRO=0;Disp

8、lay_String(Str2,0x00); /第一行提示修改時間Settime=1;while (Settime)if(K1=0) /確定調(diào)整小時還是分鐘Beep();while (K1=0)Change_H_or_M= !Change_H_or_M;else if (K2=0) /增加Beep();while (K2=0);if (Change_H_or_M=1)if (+Hour=24) Hour=0;elseif (+Minute=60) Minute=0;else if (K3=0) /減少Beep();while (K3=0);if (Change_H_or_M=1) if (-H

9、our=0xff) Hour=23;else if (-Minute=0xff) Minute=59;else if (K4=0) /確定Beep();while (K4=0);Display_String(Str1,0x00); /第一行還原顯示Str1Settime=0;TRO=1; /外層While在這里結(jié)束/- /定時器0中斷/-void Time() interrupt 1THO=(65536-50000)/256;TLO=(65536-50000)%256; /重新裝入50MS定時 if (+MilliSecond=20) /50*20=1sMilliSecond=0;if (+Second=60)Second=0;if (+Minute=60)Minute=o;if (+Hour=24)Hour=0;Minute=0;Second=0;/-/主函數(shù)/-void main()TMOD=0x01;THO =(65536-50000)/256;TLO =(65536-50000)%256;IE=0x82;SPK=0;LCD_I

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論