版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*/Name of this design: LCD show Electric Clock/Author: Huangxiang/Date: 2008-12-21/proteus仿真论坛:/*/#include #include #include #define uchar unsigned char#define uint unsigned int#define BUSY 0x80 /lcd忙检测标志,0x08第七位就是1#define DATAPORT P0 /定义P0口为LCD通讯端口sbit light=P13;sbit LCD_RS=P20; /数
2、据/命令端sbit LCD_RW=P21; /读/写选择端sbit LCD_EN=P22;uchar second; /定义并初始化时钟变量: 秒 分 时uchar minite;uchar hour;uchar mstcnt=0; /?uchar t,set=0; /?uchar code str0=DATE :2008-12-21;/定义两个一直显示的字符串uchar code str1=TIME : : : ;void delay_LCD(uint); /LCD延时子程序void initLCD( void); /LCD初始化子程序void lcd_wait(void); /LCD检测忙
3、子程序void WriteCommandLCD(uchar WCLCD,uchar BusyC); /写指令到ICD子函数void WriteDataLCD(uchar WDLCM); /写数据到LCD子函数void DisplayOneChar(uchar X,uchar Y,uchar DData); /显示指定坐标的一个字符子函数void DisplayListChar(uchar X,uchar Y,uchar code *DData); /显示指定坐标的一串字符子函数void init_timer0(void); /定时器初始化void displayfun1(void);void
4、displayfun2(void);void displayfun3(void);void keyscan(void ); /键盘扫描子程序void set_adj(void);void inc_key(void);void dec_key(void);/*延时K*1ms,12.000mhz*/void delay_LCD(uint k) uint i,j; for(i=0;ik;i+) for(j=0;j60;j+) ; /*写指令到LCD子函数*/void WriteCommandLCD(uchar WCLCM,uchar BusyC) if(BusyC)lcd_wait();DATAPO
5、RT=WCLCM; LCD_RS=0; / 选中指令寄存器 LCD_RW=0; / 写模式 LCD_EN=1;_nop_();_nop_();_nop_(); LCD_EN=0;/*写数据到LCD子函数*/void WriteDataLCD(uchar WDLCM) if(BusyC) lcd_wait( ); /检测忙信号DATAPORT=WDLCM; LCD_RS=1; / 选中数据寄存器 LCD_RW=0; / 写模式 LCD_EN=1; _nop_();_nop_();_nop_(); LCD_EN=0;/*lcm内部等待函数*/void lcd_wait(void) DATAPORT
6、=0xff;LCD_EN=1; LCD_RS=0; LCD_RW=1; _nop_(); while(DATAPORT&BUSY) LCD_EN=0; _nop_(); _nop_(); LCD_EN=1; _nop_(); _nop_(); LCD_EN=0;/*LCD初始化子函数*/void initLCD( )DATAPORT=0;delay_LCD(15);WriteCommandLCD(0x38,0); /三次显示模式设置,不检测忙信号 delay_LCD(5); WriteCommandLCD(0x38,0); delay_LCD(5); WriteCommandLCD(0x38,
7、0); delay_LCD(5); WriteCommandLCD(0x38,1); /8bit数据传送,2行显示,5*7字型,检测忙信号 WriteCommandLCD(0x08,1); /关闭显示,检测忙信号 WriteCommandLCD(0x01,1); /清屏,检测忙信号 WriteCommandLCD(0x06,1); /显示光标右移设置,检测忙信号 WriteCommandLCD(0x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号/*显示指定坐标的一个字符子函数*/void DisplayOneChar(uchar X,uchar Y,uchar DData) Y&=
8、1; X&=15; if(Y)X|=0x40; /若y为1(显示第二行),地址码+0X40 X|=0x80; /指令码为地址码+0X80 WriteCommandLCD(X,0); WriteDataLCD(DData);/*显示指定坐标的一串字符子函数*/void DisplayListChar(uchar X,uchar Y,uchar code *DData) uchar ListLength=0; Y&=0x01; X&=0x0f; while(X2) set=0;/*按键加法子函数*/void inc_key(void)delay_LCD(150); if(set=1) hour+;
9、 if(hour=23) hour=23; else if(set=2) minite+; if(minite=59) minite=59; else displayfun1();/*按键减法子函数*/void dec_key(void)delay_LCD(150); if(set=1) hour-; if(hour=0) hour=0; else if(set=2) minite-; if(minite=20 ) second+; mstcnt=0; if(second=60) minite+; second=0; if(minite=60) hour+; minite=0; light=0
10、; delay_LCD(200); light=1; if(hour=24) hour=0; keyscan( ); /按键扫描/*the main funtion*/void main(void) P1=0xff; /初始化p1口,全设为1delay_LCD(500); /延时500ms启动initLCD( ); /LCD初始化init_timer0( ); /时钟定时器0初始化DisplayListChar(0,0,str0);DisplayListChar(0,1,str1); while (1) keyscan(); /按键扫描 switch(set) /LCD根据工作模式显示case 0:displ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 减脂期烧仙草课件
- 2026年社区网格员中级工理论试题及核心考点
- 26年数据科研应用指引
- 26年TTR统计操作规范
- 医学26年老年心梗护理查房课件
- 2026 减脂期墨鱼滑课件
- 食管癌治疗过程中的健康教育
- 老年公寓护理案例分析
- 多元化产品及软件销售合同样本合同二篇
- 2026年环保设施运行维护合同二篇
- 6.2《三位数加三位数(不进位)的笔算》教案(表格式) 2025-2026学年小学数学二年级下册 苏教版
- 分支机构登记(备案)申请书(2026年版)
- (2026年)糖尿病患者饮食健康宣教课件
- 医院改造工程施工方案投标文件(技术标)
- TCPIA 0085-2024《废弃晶体硅光伏组件回收的包装、运输、贮存技术规范》
- GB/T 47048-2026自然保护地标识通用要求
- 财政局财会监督制度
- 水泥生产质量追溯制度
- 煤矿雨季三防培训课件
- 学位考试真题及答案
- 2025年江苏淮安市初中学业水平考试地理试卷真题(含答案详解)
评论
0/150
提交评论