![12864LCD顯示倒計時程序_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/486ce2d5-de40-459d-966a-82b5acb2a9dc/486ce2d5-de40-459d-966a-82b5acb2a9dc1.gif)
![12864LCD顯示倒計時程序_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/486ce2d5-de40-459d-966a-82b5acb2a9dc/486ce2d5-de40-459d-966a-82b5acb2a9dc2.gif)
![12864LCD顯示倒計時程序_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/486ce2d5-de40-459d-966a-82b5acb2a9dc/486ce2d5-de40-459d-966a-82b5acb2a9dc3.gif)
![12864LCD顯示倒計時程序_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/486ce2d5-de40-459d-966a-82b5acb2a9dc/486ce2d5-de40-459d-966a-82b5acb2a9dc4.gif)
![12864LCD顯示倒計時程序_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/486ce2d5-de40-459d-966a-82b5acb2a9dc/486ce2d5-de40-459d-966a-82b5acb2a9dc5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、12864LCD顯示倒計時程序 簡介:第一行顯示,距離系統(tǒng)爆炸時間 第二行顯示,還剩 第三行顯示, 00 時,00分,00秒 第四行顯示,周林 按下旋鈕開關,開始設定秒,秒編輯位閃動。左右旋轉設定數(shù)值, 在按下開關,秒確定,設定分,分編輯位閃動左右調數(shù)值, 再按下,分確定,小時位閃動。左右轉調小時,再按一下。時間確定,開始倒計時。到達定 時時間后停止,并閃動。 #include #include /* #define LCD_data P0 定義 */ / 數(shù)據(jù)口 sbit LCD_RS = P2人0; /寄存器選擇輸入 sbit LCD_RW = P2人1; 液晶讀/寫控制 sbit LCD
2、_EN = P2八2; /液晶使能控制 sbit LCD_ PSB = P2 人 3; /串 / 并方式控制 sbit LCD_RST = P2人5; /液晶復位端口 sbit sset= P3M;/ 設置按鈕 sbit spk=P 1人4; sbit sadd=卩2人7; sbit sdel=卩2人6; signed char second=0,minute=0,hour=0,count=0,keycount=0; signed char key=0; unsigned char code DIS1 = 距離系統(tǒng)爆炸時間 ; unsigned char code DIS2 = 還剩: ; u
3、nsigned char code DIS31 = 時 ; unsigned char code DIS32 = 分 ; unsigned char code DIS33 = 秒 ; unsigned char code DIS4 = 周林 ; unsigned char code table2=0123456789; char code reserve3_at_ 0 x3b; / 保留 0 x3b 開始的 3 個字節(jié) /* 延時子函數(shù) */ void delayNOP()/us 延時子函數(shù) (4.34us) _nop_(); _nop_(); _nop_(); _nop_(); void d
4、elayms(unsigned int ms)/ms 延時子函數(shù) unsigned char y; while (ms-) for (y = 0; y 114; y+) LCD,忙狀* /* bit lcd_busy()/檢查LCD忙狀態(tài) 1忙,0閑 bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0 LCD_EN = 0; return (result); /* 寫指令數(shù)據(jù) * void lcd_wcmd(unsigned char cmd)/ 寫指令數(shù)據(jù)到 LCD while (lcd_
5、busy() LCD_RS = 0; LCD_RW = 0; LCD_EN = 1; P0 = cmd; delayNOP(); LCD_EN = 0; void lcd_wdat(unsigned char dat)/ 寫顯示數(shù)據(jù)到 LCD while (lcd_busy() LCD_RS = 1; LCD_RW = 0; LCD_EN = 1; P0 = dat; delayNOP(); LCD_EN = 0; void writesmh(unsigned char add,unsigned char date)/ 顯示個位和十位數(shù)據(jù) unsigned char shi,ge; shi=d
6、ate/10; ge=date%10; lcd_wcmd(0 x80+add); delayms(5); lcd_wdat(table2shi); delayms(5); lcd_wdat(table2ge); delayms(5); /* 初始化設定 * 3 / 12 12864LCD顯示倒計時程序 X = 0 x90; 5 / 12 void lcd_init() LCD_PSB = 1; /并口方式 LCD_RST = 0; /液晶復位 delayms(5); / 液晶復位 LCD_RST = 1; /液晶復位 delayms(5); / 液晶復位 lcd_wcmd(0 x34); /
7、擴充功能設定,擴充指令,選 delayms(5); lcd_wcmd(0 x30); / 功能設定,基本指令操作,選 delayms(5); 8 位數(shù)據(jù) 8 位數(shù)據(jù) lcd_wcmd(0 x0C); / 顯示開,關光標,關光標反白允許。 delayms(5); lcd_wcmd(0 x04); / 光標的移動方向 delayms(5); lcd_wcmd(OxO1); /清除LCD的顯示內容 delayms(5); TMOD=0 x01; TH0=0 x3C; TL0=0 xB0; EA=1; ET0=1; TR0=0; EXO=O; /外部中斷0允許 IT0=1; /外部中斷0為邊沿觸發(fā)方式
8、 /* 設定顯示位置子函數(shù) * void lcd_pos(unsigned char X, unsigned char Y)/ 設定顯示位置 unsigned char pos; if (X = 1) X = 0 x80; else if (X = 2) 12864LCD顯示倒計時程序 else if (X = 3) X = 0 x88; else if (X = 4) X = 0 x98; pos = X + Y; /確定顯示地址 lcd_wcmd(pos); / 寫顯示地址 /* 清屏子函數(shù) * 7 / 12 void clr_screen()/ 清屏子函數(shù) lcd_wcmd(0 x34)
9、; / delayms(5); lcd_wcmd(0 x30); / delayms(5); lcd_wcmd(0 x01); / delayms(5); 擴充指令操作 基本指令操作 清屏 /* 閃爍子函數(shù) * void lcdflag() lcd_wcmd(0 x08); / delayms(500); lcd_wcmd(0 x0c); / delayms(500); lcd_wcmd(0 x08); delayms(500); lcd_wcmd(0 x0c); delayms(500); lcd_wcmd(0 x08); delayms(500); lcd_wcmd(0 x0c); del
10、ayms(500); 關閉顯示 開啟顯示 /* 寫字符串子函數(shù) * 12864LCD顯示倒計時程序 9 / 12 void wr_string(unsigned char str)/ 寫字符串子函數(shù) unsigned char num = 0; while (strnum) lcd_wdat(strnum+); / 寫數(shù)據(jù) /*按鍵設置時間 * void keyscan()/ 按鍵設置時間 if(sset=0) delayms(10); if(sset=0) EX0=1; keycount+; while(sset=0) if(keycount=1) / 停止計時 TR0=0; key=1;
11、keycount=2; lcd_wcmd(0 x8e); lcd_wcmd(0 x0d);/ 秒位閃爍 if(keycount=2) if(keycount=3)keycount=4; 分位閃爍 光標左移一位 時位閃爍 lcd_wcmd(0 x8c); lcd_wcmd(0 x0d);/ /lcd_wcmd(0 x04); if(keycount=4) if(keycount=5) keycount=6; lcd_wcmd(0 x8a); lcd_wcmd(0 x0d);/ if(keycount=6) if(keycount=7) keycount=0; lcd_wcmd(0 x0c);/
12、停止閃爍 TR0=1;/ 開始計時 EX0=1; if(keycount!=0) if(keycount=2)/ 編輯秒 if(sadd=0)/ 數(shù)值加 1 delayms(10); if(sadd=0) second+; 12864LCD和引厘斗肆敲 if(secondHH60) 宀 second。- sadcM 八 wmesmh(oxoeysecond)八 -Cdlwc3d(ox8e)八 -Cdlwc3d(oxod)y/ |3拿 if(sde帀Ho)/、達血驀 宀 de-aymsuo= if(sde-HHO) 宀 if(secondHHO) 宀 secondH6q 1 second丄 sd
13、e-巴八 wmesmh(oxoeysecond)八 -Cdlwc3d(ox8e)八 -Cdlwc3d(oxod)y/ if(keycounfHH4)v 舒輸步霽 宀 if(saddHHO)/、蒲血莒 1 宀 de-aymsuo)八八 if(saddH0) 宀 3inufe+八 if(minufeHH60) 宀 minufeua saddur wmes3h(OXOG3inufe)八 -Cdlwc3d(ox8c)八 -Cdlwc3d(oxod)y/ 拿 jf(sde-HHO)w 達曲溥 1 宀 de-aymsuo)八 if(sde 帀 H0) 宀 if(3inufeHH0) 宀 minufeH60
14、 八 minufe!八 Sde-Hl 八 wmes3h(OXOG3inufe)八 -Cdlwcrnd(ox8c= 一Cdlwc3d(oxod)y、拿 if(keycounfHH6=/ 舒輸、4 宀 if(saddHHO)/、蒲血莒 宀 de-aymsuo)八 if(saddHHO) 宀 hour+八 if(hourHH24) 宀 RlinufeHa saddur wmesmh(oxophour)八 -Cdlwc3d(ox8a)八 -Cdlwc3d(oxod)y/ 肆3拿 12864LCD顯示倒計時程序 if(sdel=0)/ 數(shù)值減 1 delayms(10); if(sdel=0) if(h
15、our=0) hour=24; hour-; sdel=1; writesmh(0 x0a,hour); lcd_wcmd(0 x8a); lcd_wcmd(0 x0d);/ 時位閃爍 / 主函數(shù)主函數(shù)主函數(shù)主函數(shù)主函數(shù)主函數(shù)主函數(shù)主函數(shù)主函數(shù)主函數(shù)主函數(shù)主函數(shù)主函 數(shù)主函數(shù) void main() delayms(100); / 上電,等待穩(wěn)定 lcd_init(); / 初始化 LCD lcd_pos(1, 0); / 設置顯示位置為第一行 wr_string(DIS1); lcd_pos(2, 0); / 設置顯示位置為第二行 wr_string(DIS2); lcd_pos(3, 3)
16、; / 設置顯示位置為第四行 wr_string(DIS31); lcd_pos(3, 5); / 設置顯示位置為第四行 wr_string(DIS32); lcd_pos(3, 7); / 設置顯示位置為第四行 wr_string(DIS33); lcd_pos(4, 6); / 設置顯示位置為第四行 10 / 15 12864LCD顯示倒計時程序 wr_string(DIS4); writesmh(0 x0e,second); delayms(5); writesmh(0 x0c,minute); delayms(5); writesmh(0 x0a,hour); delayms(5);
17、while (1) keyscan(); 中斷 * /* void time0() interrupt 1 using 0/ 倒計時中斷 TH0=0 x3C; TL0=0 xB0; count+; if(count=20) count=0; second-; if(second0) second=59; minute-; if(minute0) minute=59; hour-; if(hour0) hour=24; lcd_pos(3, 2); / 設置顯示位置為第三行,第七列 writesmh(0 x0a,hour); 12864LCD顯示倒計時程序 lcd_pos(3, 4); / 設置顯示位置
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省日照市高三下學期3月模擬考試語文試題(含答案)
- 工程車運輸簡單合同
- 2025合同模板化工產品購銷合同范本
- 洗煤廠承包合同
- 商鋪個人租房合同
- 職稱聘任合同書
- 演講稿格式及范文二十-多篇
- 提升學習能力
- 農產品產銷對接合作合同
- 二手房獨家代理合同
- 《共情的力量》課件
- 2022年中國電信維護崗位認證動力專業(yè)考試題庫大全-上(單選、多選題)
- 《電氣作業(yè)安全培訓》課件
- 水平二(四年級第一學期)體育《小足球(18課時)》大單元教學計劃
- 《關于時間管理》課件
- 醫(yī)藥高等數(shù)學智慧樹知到課后章節(jié)答案2023年下浙江中醫(yī)藥大學
- 城市道路智慧路燈項目 投標方案(技術標)
- 水泥采購投標方案(技術標)
- 醫(yī)院招標采購管理辦法及實施細則(試行)
- 初中英語-Unit2 My dream job(writing)教學設計學情分析教材分析課后反思
- 廣州市勞動仲裁申請書
評論
0/150
提交評論