




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于51單片機控制的1602液晶電子時鐘顯示程序 2007-05-31 13:31:45 | By: kevin 剛寫好的基于51單片機控制的1602液晶電子時鐘顯示程序,整理了一下,并盡量加上的注釋,放出來大家共享及交流。有興趣的可以參考一下,各管腳定義都比較明顯,有一定基礎(chǔ)的可稍作修改即可進行實驗。/基于51單片機控制的1602液晶電子時鐘顯示程序i nclude <intrins.h>i nclude <at89x51.h>#define uchar unsigned char#define LCM_RS P2_2 /定義引腳#define LCM_R
2、W P2_1#define LCM_E P2_0#define LCM_Data P0#define Busy 0x80 /用于檢測LCM狀態(tài)字中的Busy標識uchar i, j, k, second, tcount, minute, hour;void WriteDataLCM(unsigned char WDLCM);void WriteCommandLCM(unsigned char WCLCM,BuysC);unsigned char ReadDataLCM(void);unsigned char R
3、eadStatusLCM(void);void LCMInit(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);void DisplayqListChar(unsigned char X, unsigned char Y, unsigned char code *DData);void Delay5Ms(void);vo
4、id Delay400Ms(void);unsigned char code table='0','1','2','3','4','5','6','7','8','9'/數(shù)碼管數(shù)字編碼unsigned char code MyNo = "NAME:Who_am_I?"/* 函數(shù)名稱:delay()* 功能描述:延時子程序,大約延時 n MS* 輸 入:* 輸
5、 出:* 全局變量:* 調(diào)用模塊:* 作者: kevin * 日期: 2007年5月31日*/delay(uchar n)uchar i,j,k; for(i=2;i>0;i-) for(j=n;j>0;j-) for(k=125;k>0;k-);2 / 14/* 函數(shù)名稱:lcd()* 功能描述:液晶初始化,然后在液晶屏第二行顯示提示信息* 輸 入:*
6、輸 出:* 全局變量:* 調(diào)用模塊:Delay400Ms(),LCMInit(),DisplayListChar()* 作者: kevin * 日期: 2007年5月31日*/void lcd(void) Delay400Ms(); /啟動等待,等LCM講入工作狀態(tài) LCMInit(); /LCM初始化 Delay5Ms(); /延時片刻(可不要) DisplayListChar(0, 1, MyNo);/* 函數(shù)名稱:Wr
7、iteDataLCM()* 功能描述:寫數(shù)據(jù)* 輸 入: WDLCM* 輸 出:* 全局變量:* 調(diào)用模塊:* 作者: kevin * 日期: 2007年5月31日*/void WriteDataLCM(unsigned char WDLCM) ReadStatusLCM(); /檢測忙 LCM_Data = WDLCM; LCM_RS = 1; LCM_RW =
8、0; LCM_E = 0; /若晶振速度太高可以在這后加小的延時 LCM_E = 0; /延時 LCM_E = 1;/* 函數(shù)名稱:WriteCommandLCM()* 功能描述:寫指令* 輸 入:* 輸 出:* 全局變量:* 調(diào)用模塊:* 作者: kevin * 日期: 2007年5月31日*/void WriteCommandLCM(unsigned char WCLCM
9、,BuysC) /BuysC為0時忽略忙檢測 if (BuysC) ReadStatusLCM(); /根據(jù)需要檢測忙 LCM_Data = WCLCM; LCM_RS = 0; LCM_RW = 0; LCM_E = 0; LCM_E = 0; LCM_E = 1;/* 函數(shù)名稱:ReadDataLCM()* 功能描述:讀數(shù)據(jù)* 輸 入:* 輸 出:* 全局變量:* 調(diào)用模塊:* 作者: ke
10、vin * 日期: 2007年5月31日*/unsigned char ReadDataLCM(void) LCM_RS = 1; LCM_RW = 1; LCM_E = 0; LCM_E = 0; LCM_E = 1; return(LCM_Data);/* 函數(shù)名稱:ReadStatusLCM()* 功能描述:讀狀態(tài)* 輸 入:* 輸 出:* 全局變量:* 調(diào)用模塊:*
11、0; 作者: kevin * 日期: 2007年5月31日*/unsigned char ReadStatusLCM(void) LCM_Data = 0xFF; LCM_RS = 0; LCM_RW = 1; LCM_E = 0; LCM_E = 0; LCM_E = 1; while (LCM_Data & Busy); /檢測忙信號 return(LCM_Data);/* 函數(shù)名稱:LCMInit()*
12、160; 功能描述:LCM初始化* 輸 入:* 輸 出:* 全局變量:* 調(diào)用模塊:* 作者: kevin * 日期: 2007年5月31日*/void LCMInit(void) LCM_Data = 0; WriteCommandLCM(0x38,0); /三次顯示模式設(shè)置,不檢測忙信號 Delay5Ms(); WriteCommandLCM(0x38,0); Delay5M
13、s(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,1); /顯示模式設(shè)置,開始要求每次檢測忙信號 WriteCommandLCM(0x08,1); /關(guān)閉顯示 WriteCommandLCM(0x01,1); /顯示清屏 WriteCommandLCM(0x06,1); / 顯示光標移動設(shè)置 WriteCommandLCM(0x0C,1); / 顯示開及光標設(shè)置/* 函數(shù)名稱:DisplayOneChar()* 功能描述:按指
14、定位置顯示一個字符* 輸 入:* 輸 出:* 全局變量:* 調(diào)用模塊:* 作者: kevin * 日期: 2007年5月31日*/void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) Y &= 0x1; X &= 0xF; /限制X不能大于15,Y不能大于1 if (Y) X |= 0x4
15、0; /當要顯示第二行時地址碼+0x40; X |= 0x80; / 算出指令碼 WriteCommandLCM(X, 0); /這里不檢測忙信號,發(fā)送地址碼 WriteDataLCM(DData);/* 函數(shù)名稱:DisplayListChar()* 功能描述:按指定位置顯示一串字符* 輸 入:* 輸 出:* 全局變量:* 調(diào)用模塊:* 作者: kevin * 日期: 20
16、07年5月31日*/void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) unsigned char ListLength; ListLength = 0; Y &= 0x1; X &= 0xF; /限制X不能大于15,Y不能大于1 while (DDataListLength>0x20) /若到達字串尾則退出 if (X <= 0xF) /X坐標應小于0xF
17、; DisplayOneChar(X, Y, DDataListLength); /顯示單個字符 ListLength+; X+; /* 函數(shù)名稱:Delay5Ms()* 功能描述:5ms延時* 輸 入:* 輸 出:* 全局變量:* 調(diào)用模塊:* 作者:
18、60; kevin * 日期: 2007年5月31日*/void Delay5Ms(void) unsigned int TempCyc = 5552; while(TempCyc-);/* 函數(shù)名稱:Delay400Ms()* 功能描述:400ms延時* 輸 入:* 輸 出:* 全局變量:* 調(diào)用模塊:* 作者: kevin * 日期:
19、 2007年5月31日*/void Delay400Ms(void) unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-); /* 函數(shù)名稱:timer0()* 功能描述:中斷子程序,1秒重寫一次液晶,以此實現(xiàn)60秒計數(shù)* 輸 入:* 輸 出:* 全局變量:* 調(diào)用模塊
20、:* 作者: kevin * 日期: 2007年5月31日*/void timer0() interrupt 1 using 0int i; TH0=(65536-50000)/256*3; /中斷設(shè)置初始化
21、; TL0=(65536-50000)%256*3; tcount+; if(tcount=60)
22、; /滿1秒 i=0; DisplayOneChar(i+, 0, 'T'); /在第1行第1個坐標顯示 DisplayOneChar(i+, 0, 'I'); /在第1行第2個坐標顯示 DisplayOneChar(i+, 0, 'M'); /在第1行第3個坐標顯示 DisplayOneChar(i+, 0,
23、 'E'); /在第1行第4個坐標顯示 DisplayOneChar(i+, 0, ':'); /在第1行第5個坐標顯示 DisplayOneChar(i+, 0, tablehour/10); /在第1行第6個坐標顯示 DisplayOneChar(i+, 0, tablehour%10); /在第1行第7個坐標顯示 DisplayOneChar(i+, 0, ':'); /在第
24、1行第1個坐標顯示 DisplayOneChar(i+, 0, tableminute/10); /在第1行第8個坐標顯示 DisplayOneChar(i+, 0, tableminute%10); /在第1行第9個坐標顯示 DisplayOneChar(i+, 0, ':'); /在第1行第10個坐標顯示 DisplayOneChar(i+, 0, tablesecond/10); /在第1行第11個坐標顯示 Displ
25、ayOneChar(i+, 0, tablesecond%10); /在第1行第12個坐標顯示 tcount=0;second+; if(second=60) /滿1分 second=0;minute+; /分數(shù)加1,秒數(shù)歸零 if(minute=60)
26、0; /滿1小時 minute=0;hour+; /小時數(shù)加1,分數(shù)歸零 if(hour=24) hour=0; /* 函數(shù)名稱:main()* 功能描述:主程序,設(shè)置初始時間,中斷設(shè)置初始化,液晶顯示,等待中斷* 輸&
27、#160; 入:* 輸 出:* 全局變量:* 調(diào)用模塊:* 作者: kevin * 日期: 2007年5月31日*/void main()uchar i; second=0;minute=0;hour=0; /設(shè)置初始時間 TH0=(65536-50000)/256; /中斷設(shè)置
28、初始化 TL0=(65536-50000)%256; EA=1;ET0=1;TMOD=0x21;TR0=1; lcd(); i=0; DisplayOneChar(i+, 0, 'T'); /在第1行第1個坐標顯示 DisplayOneChar(i+, 0, 'I');
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 探索化學奧秘的互動游戲?qū)W習軟件設(shè)計
- 電解鋁固廢的循環(huán)經(jīng)濟模式與應用
- 從全球化視角看工匠精神的跨文化影響與借鑒
- 產(chǎn)業(yè)轉(zhuǎn)型升級的金融支持與投資機制
- 山東省青島市南區(qū)2025屆物理八年級第一學期期末達標檢測試題含解析
- 浙江省臺州市三門縣2024年數(shù)學七年級第一學期期末綜合測試試題含解析
- 重慶實驗學校2025屆化學九上期末教學質(zhì)量檢測試題含解析
- 新興技術(shù)行業(yè)的職業(yè)發(fā)展趨勢與選擇
- 美食烹飪師職業(yè)生涯發(fā)展路徑
- 2025至2030陶罐行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 截肢術(shù)患者圍手術(shù)期護理
- (正式版)HGT 6277-2024 甲醇制烯烴(MTO)級甲醇
- vcm音圈馬達制造工藝
- 喘息性肺炎護理查房
- 暖氣片購銷合同
- 【特崗】2017-2019年云南省特崗教師化學真題全解析版
- 夏季防暑降溫科普課件
- 背膠作業(yè)指導書
- 農(nóng)村小學基于國家中小學智慧教育平臺下的雙師課堂研究
- 遙感地質(zhì)學復習題(完整版)
- 中藥濕敷技術(shù)
評論
0/150
提交評論