液晶显示DS实时时钟程序.doc
《液晶显示DS实时时钟程序.doc》由会员分享,可在线阅读,更多相关《液晶显示DS实时时钟程序.doc(30页珍藏版)》请在咨信网上搜索。
1、个人收集整理 勿做商业用途include reg51。h #include unsigned char code dis_week=SUN,MON,TUE,WED,THU,FRI,SAT; unsigned char code para_month13=0,0,3,3,6,1,4,6,2,5,0,3,5; /星期月参变数 unsigned char data dis_buf116; /lcd上排显示缓冲区 unsigned char data dis_buf216; /lcd下排显示缓冲区 unsigned char data year,month,date,week;/年、月、日、星期 un
2、signed char data armhour,armmin,armsec;/闹钟时、分、秒 unsigned char data hour,min,sec,sec100; /时、分、秒、百分之一秒 unsigned char data flag,vkey,skey;/设置状态计数标志、按键先前值、按键当前值 bit alarm; /标识是否启用闹钟,1-启用,0关闭 sbit rs = P20; /LCD数据/命令选择端(H/L) sbit rw = P21; /LCD读/写选择端(H/L) sbit ep = P22; /LCD使能控制 sbit PRE = P16; /调整键(k3)
3、sbit SET = P17; /调整键(k4) sbit SPK = P37; void delayms(unsigned char ms); /延时程序 bit lcd_busy(); /测试LCD忙碌状态程序 void lcd_wcmd(char cmd); /写入指令到LCD程序 void lcd_wdat(char dat); /写入数据到LCD程序 void lcd_pos(char pos); /LCD数据指针位置程序 void lcd_init(); /LCD初始化设定程序 void pro_timedate(); /时间日期处理程序 void pro_display(); /
4、显示处理程序 void pro_key(); /按键处理程序 void time_alarm(); /定时报警功能(闹钟) unsigned char scan_key(); /按键扫描程序 unsigned char week_proc(); /星期自动计算与显示函数 bit leap_year(); /判断是否为闰年 void lcd_sef_chr(); /LCD自定义字符程序 void update_disbuf(unsigned char t1,unsigned char t2,unsigned char dis_h,unsigned char dis_m,unsigned char
5、 dis_s); /更新显示缓冲区函数 / 延时程序 void delay(unsigned char ms) while(ms-) unsigned char i; for(i = 0; i 250; i+) _nop_(); /执行一条_nop_()指令为一个机器周期 _nop_(); _nop_(); _nop_(); /测试LCD忙碌状态 bit lcd_busy() bit result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result =(bit)(P00x80); /LCD的D0-D7中,D7=
6、1为忙碌,D7=0为空闲 ep = 0; return result; /写入指令到LCD void lcd_wcmd(char cmd) while(lcd_busy(); /当lcd_busy为1时,再次检测LCD忙碌状态,lcd-busy为0时,开始写指令 rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; /写入数据到LCD void lcd_wdat(char
7、 dat) while(lcd_busy(); /当lcd_busy为1时,再次检测LCD忙碌状态,lcdbusy为0时,开始写数据 rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; /LCD数据指针位置程序 void lcd_pos(char pos) lcd_wcmd(pos|0x80); /数据指针=80+地址码(00H27H,40H67H) /设定二个自定义字符,(注意:LCD1602中自定义字
8、符的地址为0x00-0x07,即可定义8个字符) /这里我们设定把一个自定义字符放在0x00位置(000),另一个放在0x01位子(001) void lcd_sef_chr() /第一个自定义字符 lcd_wcmd(0x40); /”01 000 000 第1行地址 (D7D6为地址设定命令形式D5D4D3为字符存放位置(07),D2D1D0为字符行地址(0-7) lcd_wdat(0x1f); /XXX 11111 第1行数据(D7D6D5为XXX,表示为任意数(一般用000),D4D3D2D1D0为字符行数据(1-点亮,0-熄灭) lcd_wcmd(0x41); /”01 000 001
9、” 第2行地址 lcd_wdat(0x11); /”XXX 10001 第2行数据 lcd_wcmd(0x42); /01 000 010 第3行地址 lcd_wdat(0x15); /”XXX 10101 第3行数据 lcd_wcmd(0x43); /”01 000 011 第4行地址 lcd_wdat(0x11); /”XXX 10001 第4行数据 lcd_wcmd(0x44); /”01 000 100” 第5行地址 lcd_wdat(0x1f); /”XXX 11111” 第5行数据 lcd_wcmd(0x45); /01 000 101 第6行地址 lcd_wdat(0x0a);
10、/XXX 01010” 第6行数据 lcd_wcmd(0x46); /”01 000 110 第7行地址 lcd_wdat(0x1f); /XXX 11111 第7行数据 lcd_wcmd(0x47); /”01 000 111 第8行地址 lcd_wdat(0x00); /”XXX 00000” 第8行数据 /第二个自定义字符 lcd_wcmd(0x48); /01 001 000 第1行地址 lcd_wdat(0x01); /XXX 00001 第1行数据 lcd_wcmd(0x49); /”01 001 001” 第2行地址 lcd_wdat(0x1b); /”XXX 11011 第2行
11、数据 lcd_wcmd(0x4a); /01 001 010” 第3行地址 lcd_wdat(0x1d); /XXX 11101” 第3行数据 lcd_wcmd(0x4b); /01 001 011 第4行地址 lcd_wdat(0x19); /XXX 11001 第4行数据 lcd_wcmd(0x4c); /”01 001 100” 第5行地址 lcd_wdat(0x1d); /XXX 11101 第5行数据 lcd_wcmd(0x4d); /01 001 101” 第6行地址 lcd_wdat(0x1b); /XXX 11011 第6行数据 lcd_wcmd(0x4e); /01 001
12、110” 第7行地址 lcd_wdat(0x01); /”XXX 00001 第7行数据 lcd_wcmd(0x4f); /”01 001 111” 第8行地址 lcd_wdat(0x00); /XXX 00000 第8行数据 /LCD初始化设定 void lcd_init() lcd_wcmd(0x38); /设置LCD为16X2显示,5X7点阵,八位数据借口 delay(1); lcd_wcmd(0x0c); /LCD开显示及光标设置(光标不闪烁,不显示) delay(1); lcd_wcmd(0x06); /LCD显示光标移动设置(光标地址指针加1,整屏显示不移动) delay(1);
13、lcd_wcmd(0x01); /清除LCD的显示内容 delay(1); /闰年的计算 bit leap_year() bit leap; if((year%4=0&year100!=0)|year400=0)/闰年的条件 leap=1; else leap=0; return leap; /星期的自动运算和处理 unsigned char week_proc() unsigned char num_leap; unsigned char c; num_leap=year/4year/100+year/400;/自00年起到year所经历的闰年数 if( leap_year()& month
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 液晶显示 DS 实时 时钟 程序
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。