LCD1602簡單時鐘程序講課稿_第1頁
LCD1602簡單時鐘程序講課稿_第2頁
LCD1602簡單時鐘程序講課稿_第3頁
LCD1602簡單時鐘程序講課稿_第4頁
LCD1602簡單時鐘程序講課稿_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精品文檔按 4X4 鍵盤的 F 鍵 進入設定狀態/E D 鍵是前后移動鍵/C 按鍵是調整數值按鍵#include reg52.h#define uchar unsigned charsbit RS=P10;sbit RW=P11;sbit E=P12;bit at=0;uchar code shen=CLOCK!;uchar code word=0 x30,0 x31,0 x32,0 x33,0 x34,0 x35,0 x36,0 x37,0 x38,0 x39,0 x3a,0 x20; uchar dispbuf8,h,m,s,counter;void delay()uchar i;for(

2、i=0;i255;i+);/*寫命令 */void lcd_wmc(uchar i)P0=i;RS=0;RW=0;E=0;delay();E=1;/*寫數據 */void lcd_wmd(uchar i)P0=i;RS=1;RW=0;E=0;精品文檔精品文檔delay();E=1;/*初始化液晶 */void lcd_init()uchar i;lcd_wmc(0 x01);lcd_wmc(0 x38);lcd_wmc(0 x0c);lcd_wmc(0 x06);lcd_wmc(0 xc9);for(i=0;i6;i+)lcd_wmd(sheni);lcd_wmc(0 xc0);/*更新緩沖區

3、子程序*/void newbuf()dispbuf0=s%10;dispbuf1=s/10;dispbuf3=m%10;dispbuf4=m/10;dispbuf6=h%10;dispbuf7=h/10;/*顯示子程序 */void disp(uchar dispadd)uchar tmp;lcd_wmc(dispadd);tmp=dispbuf7;精品文檔精品文檔tmp=wordtmp;lcd_wmd(tmp);tmp=dispbuf6;tmp=wordtmp;lcd_wmd(tmp);tmp=dispbuf5;tmp=wordtmp;lcd_wmd(tmp);tmp=dispbuf4;tm

4、p=wordtmp;lcd_wmd(tmp);tmp=dispbuf3;tmp=wordtmp;lcd_wmd(tmp);tmp=dispbuf2;tmp=wordtmp;lcd_wmd(tmp);tmp=dispbuf1;tmp=wordtmp;lcd_wmd(tmp);tmp=dispbuf0;tmp=wordtmp;lcd_wmd(tmp);/*鍵盤子程序 */uchar keypro(void)uchar scanl,scanh;P2=0 x0f;/ 先將所有行線拉低if(P2&0 x0f)!=0 x0f) /如果列線有變化delay();/ 延遲一段時間。if(P2&0 x0f)!=

5、0 x0f)/ 如果此時此刻列線還有變化,說明確實有按鍵按下scanl=0 xfe;while(scanl&0 x10)!=0)P2=scanl; / 給 P1 口賦掃描碼 ,每次只拉低一行精品文檔精品文檔if(P2&0 xf0)!=0 xf0) / 如果判斷為真 ,則說明找到了按鍵按下的行scanh=(P2&0 xf0)|0 x0f; / 計算識別碼return (scanh)+(scanl);else scanl=(scanl1)|0 x01; / 否則依次將第二,第三,第四行拉低return 0;/ 沒有按鍵按下返回 0/*時間調整子程序*/void adjustime()uchar k

6、;static uchar add;k=keypro();switch(k)case 0 x88: if(!at)add=0 xc1;EA=0;lcd_wmc(0 xc1);lcd_wmc(0 x0f);at=1; else lcd_wmc(0 xc0);lcd_wmc(0 x0c);at=0;EA=1; break;case 0 x48:if(at)if(add=0 xc1)add=0 xc7; lcd_wmc(add);else add=add-3;lcd_wmc(add);break;case 0 x28:if(at)if(add=0 xc7) add=0 xc1;lcd_wmc(add

7、);else add=add+3;lcd_wmc(add);break;case 0 x18: if(at)if(add=0 xc1) h+;if(h=24)h=0;精品文檔精品文檔if(add=0 xc4) m+;if(m=60)m=0;if(add=0 xc7) s+;if(s=60)s=0;newbuf();disp(0 xc0);lcd_wmc(add);break;default: break;if(k!=0)while(P1&0 xf0)!=0 xf0)P1=0 xf0;/*初始化子程序*/void init()TMOD=0 x01;TH0=0 x4c;TL0=0 x00;EA=1

8、;ET0=1;TR0=1;counter=0;h=12;m=0;s=0;dispbuf2=10;dispbuf5=10;精品文檔精品文檔/*主程序 */void main(void)init();lcd_init();while(1)adjustime();if(!at)閃爍if(counter10)dispbuf2=10;dispbuf5=10;elsedispbuf2=11;dispbuf5=11;更新顯示緩沖區及調用顯示程序if(counter=0)newbuf();disp(0 xc0);else if(counter=10)disp(0 xc0);精品文檔精品文檔/*定時器 0 的中斷 */void Time0() interrupt 1 using 2/ 再次強調中斷子程序執行時間越短

溫馨提示

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

評論

0/150

提交評論