下载此文档

上显示阳历转换阴历.docx


文档分类:通信/电子 | 页数:约28页 举报非法文档有奖
1/28
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/28 下载此文档
文档列表 文档介绍
在1602上显示阳历转换阴历功能介绍:在MIAN函数中输入阳历日期如2010-10-4就是c_sun=0;//“0”2000以后,“1”2000以前year_sun=0x10;month_sun=0x10;day_sun=0x4;或day_sun=0x04;范围是1901-2089。由于89c52存储空间的限制,不然可以到2099年的。哈哈(下一目标加时间,换一种算法可能继续缩范围)。图片中上面是阳历,下面是农历。星期自动显示。编程中遇到问题:没有阳历转换阴历的直接公式,所以采用直接法。数组567就是。(公历年对应的农历数据,每年三字节,格式第一字节BIT7-4位表示闰月月份,值为0为无闰月,BIT3-0对应农历第1-4月的大小第二字节BIT7-0对应农历第5-12月大小,第三字节BIT7表示农历第13个月大小月份对应的位为1表示本农历月大(30天),为0表示小(29天)第三字节BIT6-5表示春节的公历月份,BIT4-0表示春节的公历日期)2)由于单片机程序存储空间的限制,不得已要压缩程序。在1602写入数据时一定要两个机器周期。不然系统会发生紊乱。程序代码如下:#include<>#include<>#defineucharunsignedchar#defineuintunsignedintUnsignedcharcodedis_week[]={"SUN,MON,TUE,WED,THU,FRI,SAT"};unsignedchardatadis_buf1[16];unsignedchardatadis_buf2[16];sbit rs=P3^0; //LCD数据/命令选择端(H/L)sbit rw=P3^1; //LCD读/写选择端(H/L)sbit ep=P2^2; //LCD使能控制voiddelayms(unsignedcharms); //延时程序bitlcd_busy(); //测试LCD忙碌状态程序voidlcd_wcmd(charcmd); //写入指令到LCD程序voidlcd_wdat(chardat); //写入数据到LCD程序voidlcd_pos(charpos); //LCD数据指针位置程序voidlcd_init(); //LCD初始化设定程序voidpro_display(); //显示处理程序voidupdate_disbuf(); //更新显示缓冲区函数unsignedcharConver_week(bitc,ucharyear,ucharmonth,ucharday);//调用week函数让下面函数能够调用bitc_moon;dataucharyear_moon,month_moon,day_moon,week;ucharc_sun,year_sun,month_sun,day_sun;//延时程序voiddelay(unsignedcharms){ while(ms--) { unsignedchari; for(i=0;i<250;i++) { _nop_(); //执行一条_nop_()指令为一个机器周期_nop_(); _nop_(); _nop_(); } }} //测试LCD忙碌状态bitlcd_busy(){ bitresult; rs=0; rw=1; ep=1; _nop_(); result=(bit)(P0&0x80); //LCD的D0--D7中,D7=1为忙碌,D7=0为空闲 ep=0; returnresult; }//写入指令到LCDvoidlcd_wcmd(charcmd){ while(lcd_busy()); //当lcd_busy为1时,再次检测LCD忙碌状态,lcd-busy为0时,开始写指令 rs=0; rw=0; ep=0; _nop_(); P0=cmd; _nop_(); ep=1; _nop_(); ep=0; }//写入数据到LCDvoidlcd_wdat(chardat) { while(lcd_busy()); //当lcd_busy为1时,再次检测LCD忙碌状态,lcd-busy为0时,开始写数据 rs=1; rw=0; ep=0; P0=dat; _nop_(); ep=1; _nop_(); _nop_(); ep=0; }//LCD数据指针位置程序voidlcd_pos(charpos){ lcd_wcmd(pos|0x80); //数据指针=80+地址码(00H~27H,40H~67H)}//LCD初始化设定voidlcd_init(){ lcd_wcmd(0x38); //设置LCD为16X2显示,5X7点阵,八位数据借口 delay(1); lcd_wcmd(0x0c); //LCD开显

上显示阳历转换阴历 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数28
  • 收藏数0 收藏
  • 顶次数0
  • 上传人jiaoyuan2014
  • 文件大小102 KB
  • 时间2020-07-09