中华万年历历LED闪烁

还没有帐号? 赶紧
用户版块帖子
1到第8) ? 8 :
location='read.php?tid=215457&page='+page+'';}">页8) ? 8 :
location='read.php?tid=215457&page='+page+'';">确认
用32*64LED点阵屏做的时钟万年历,可以显示公历,农历,以及星期。
UID:790574
在线时间1959小时
M币1064专家16
&&&& 近来购了二块二手的32*64双色LED点阵屏折腾,天天在研究中51单片机驱动,搞得废寝忘食!&&& 终于搞定了51单片机的16X16汉字,32X32汉字在这屏上的驱动,不管是静态的还是左移流动的,真是很点小小成就感!&&& 于是想着用这个做一个时钟万年历,当然,为了简单,还是用51的中断来计时,计日期,农历,星期等,经过一周的完善,终于可以正常工作了。经过两天运行,一天慢个2秒左右,基本可以用了,也没有在程序中调整了。等到下次网购购个DS1302时钟芯片,加个电池,就可以断电保持了!&& 屏是20个接口的16扫非标08接口,自己加了个51最小系统驱动。爽YY啊。不说那么多了。上图和视频,如果有人要程序,可以楼下上传。
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
我也有这些不过没有程序和不知怎么接线
高手,实在是高手!
UID:790574
在线时间1959小时
M币1064专家16
视频上传,不知如何搞的,传上优酷后,质量很差,也可看到有一点闪,但是实际上却不闪,传个视频文件,效果较好。可以下载下面的压缩包中的视频,比交清楚。
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
UID:814498
在线时间6小时
M币59专家0
辛苦了,支持一下
UID:790574
在线时间1959小时
M币1064专家16
为了共同提高,还是把原程序发上来,原来打算发在“一乐社区”的,因为屏是在那里买的,手上有这个屏的朋友可能多点。但人气没有这里的多。每个屏蔽的接口和驱动结构都是大同小异,但是只要知道接口定义和电路结构都可以修改下就可以运行的。如果手上有和我一样的屏的朋友,可以试下。我的屏接口上这样的。1是上半屏16行,2是下半屏16行,上下行扫描ABCD连在一起,16扫。锁存共用。其它是分开的。===============================================================屏接口A&&& CB&&& D地&& R1地&& G1地&& R2地&& G2地&& CLK1地&& CLK2地&& STRE1&& E2===================================================================屏与单片机连接在程序中有,单片机是一个最小的系统,在P2^0,P2^1接两个按扭调时间,日期等.农历星期自动函数计算所等.用STC12C5A60S2单片机,12M晶振,如用89C52单片的,要用到24M晶振,在中断中调下秒计数值.=============================================================源程序如下:/*本程序是用32*64双色点阵LED屏显示时钟,公历日期,农历日期.& 用STC12C5A60S2的1T单片机,12M晶振,也可以用普通的STC89C52的6T单片机,但是要用24M晶振,还要改下中断计时数据.使秒计时准确.& 用中断计时(50ms)和计公历日期,用到农历转换函数计算农历日期&分两行显示,第一行显示: 时:分:秒;& 第二行分时4秒轮流显示公历日期\农历日期,&公历日期显示从2000年~2099年.&农历转换函数来源于网上,作者不详.其它部分自编.&作者:桃源客,& 编写日期:日&& */#include &AT89x52.H&&&&&&&&&&&&&&& #include &intrins.h&#define uchar unsigned char#define uint unsigned intuchar second,minute=14,hour=23,day=22,month=11,year=10;&&&&&&& //定义秒、分、时、日、月、年变量并初始sbit KEYM=P2^0;&&&&&&&&&&& //调整键,按一次设置状态位加1,轮流切换到设置时,分,年,月,日,正常状态.sbit KEYH=P2^1;&&&&&&&&&&& //增加键,在设置状态时按一次相应设置位加1 bit KEYM_S,KEYH_S;&&&&&&&&&& //相应按键按下状态指示 uchar KCODE,set_S;&&&&&&&& //键盘代码,设置状态位置指示bit& SHAN,dip_&&&&&&&&&&&&&& //闪烁标志位,分时显示公农历&&&&&&&&&&&&&&&&&&&&&& //秒计数器,用于4秒轮显公农历日期uchar col,&&&&&&&&&&&&&&&&&&&&& //col为位移变量,disrow为行变量uchar code tab[][16];&&&&&&&&&& //时间及公历日期显示用的数字字模uchar code NLmonth_tab[][32];& //农历月份字模uchar code NLday_S[][32];&&&&& //农历月10位字模uchar code WEEK_S[][32];&&&&&& //用于星期显示字模uchar BUFF1[8];uchar BUFF2[8];& //下半屏缓冲sbit R1=P3^3;&&&&&& //LED屏接口与单片机硬件接法。sbit G1=P3^4;sbit CLK1=P3^5;sbit R2=P3^0;sbit G2=P3^2;sbit CLK2=P3^1;sbit STB=P1^7;void loadoneline1(void);&& //装上半屏时间数据void loadoneline2(void);&&&& //装下半屏公历数据void loadoneline3(void);&&& //装下半屏农历数据void loadoneline4(void);&&&& //装下半屏星期数据void sendoneline1(void);&&&& //发送上半屏 void sendoneline2(void);&&&& //发送下半屏/**************************以下是公历转农历函数,来源于网上,直接引用*****************///C51语言公历转农历及星期转换函数//农历, 公历//现在发一份C51的公历转农历及星期源代码,来源于网上下载,作者不详。/* 获取当前日期的农历及星期 *//****************************************************//*==================================================*//*公历年对应的农历数据,每年三字节, 格式: *///0x0A,0x95,0x4e,/*第一字节BIT7-4 位表示闰月月份,值为0 为无闰月, *//*BIT3-0 对应农历第1-4 月的大小 *//*第二字节BIT7-0 对应农历第5-12 月大小, *//*第三字节BIT7 表示农历第13个月大小月份对应的位 *//*为1表示本农历月大(30 天),为0 表示小(29 天) *//*第三字节BIT6-5 表示春节的公历月份,BIT4-0 表示春节的公历日期 *//* *//*本代码中Tim[0]/Tim[1]/Tim[2]分别为当前年月日数据 *//*其中Tim[0]Bit7表示世纪,1为20世纪19xx,0为21世纪20xx*//*Tim[6]为周数据/Tim[7]/Tim[8]/Tim[9]为农历数据,根据需要自行更换*///程序通过测试/*==================================================*/#define uchar unsigned char#define uint unsigned intunsigned char code year_code[597]={0x04,0xAe,0x53,0x0A,0x57,0x48,0x55,0x26,0xBd, // 0x0d,0x26,0x50,0x0d,0x95,0x44,0x46,0xAA,0xB9, // 0x05,0x6A,0x4d,0x09,0xAd,0x42,0x24,0xAe,0xB6, // 0x04,0xAe,0x4A,0x6A,0x4d,0xBe,0x0A,0x4d,0x52, // 0x0d,0x25,0x46,0x5d,0x52,0xBA,0x0B,0x54,0x4e, // 0x0d,0x6A,0x43,0x29,0x6d,0x37,0x09,0x5B,0x4B, // 0x74,0x9B,0xC1,0x04,0x97,0x54,0x0A,0x4B,0x48, // 0x5B,0x25,0xBC,0x06,0xA5,0x50,0x06,0xd4,0x45, // 0x4A,0xdA,0xB8,0x02,0xB6,0x4d,0x09,0x57,0x42, // 0x24,0x97,0xB7,0x04,0x97,0x4A,0x66,0x4B,0x3e, //90// 0x0d,0x4A,0x51,0x0e,0xA5,0x46,0x56,0xd4,0xBA, // 0x05,0xAd,0x4e,0x02,0xB6,0x44,0x39,0x37,0x38, // 0x09,0x2e,0x4B,0x7C,0x96,0xBf,0x0C,0x95,0x53, // 0x0d,0x4A,0x48,0x6d,0xA5,0x3B,0x0B,0x55,0x4f, // 0x05,0x6A,0x45,0x4A,0xAd,0xB9,0x02,0x5d,0x4d, // 0x09,0x2d,0x42,0x2C,0x95,0xB6,0x0A,0x95,0x4A, // 0x7B,0x4A,0xBd,0x06,0xCA,0x51,0x0B,0x55,0x46, // 0x55,0x5A,0xBB,0x04,0xdA,0x4e,0x0A,0x5B,0x43, // 0x35,0x2B,0xB8,0x05,0x2B,0x4C,0x8A,0x95,0x3f, // 0x0e,0x95,0x52,0x06,0xAA,0x48,0x7A,0xd5,0x3C, //180// 0x0A,0xB5,0x4f,0x04,0xB6,0x45,0x4A,0x57,0x39, // 0x0A,0x57,0x4d,0x05,0x26,0x42,0x3e,0x93,0x35, // 0x0d,0x95,0x49,0x75,0xAA,0xBe,0x05,0x6A,0x51, // 0x09,0x6d,0x46,0x54,0xAe,0xBB,0x04,0xAd,0x4f, // 0x0A,0x4d,0x43,0x4d,0x26,0xB7,0x0d,0x25,0x4B, // 0x8d,0x52,0xBf,0x0B,0x54,0x52,0x0B,0x6A,0x47, // 0x69,0x6d,0x3C,0x09,0x5B,0x50,0x04,0x9B,0x45, // 0x4A,0x4B,0xB9,0x0A,0x4B,0x4d,0xAB,0x25,0xC2, // 0x06,0xA5,0x54,0x06,0xd4,0x49,0x6A,0xdA,0x3d, // 0x0A,0xB6,0x51,0x09,0x37,0x46,0x54,0x97,0xBB, //270// 0x04,0x97,0x4f,0x06,0x4B,0x44,0x36,0xA5,0x37, // 0x0e,0xA5,0x4A,0x86,0xB2,0xBf,0x05,0xAC,0x53, // 0x0A,0xB6,0x47,0x59,0x36,0xBC,0x09,0x2e,0x50, // 0x0C,0x96,0x45,0x4d,0x4A,0xB8,0x0d,0x4A,0x4C, // 0x0d,0xA5,0x41,0x25,0xAA,0xB6,0x05,0x6A,0x49, // 0x7A,0xAd,0xBd,0x02,0x5d,0x52,0x09,0x2d,0x47, // 0x5C,0x95,0xBA,0x0A,0x95,0x4e,0x0B,0x4A,0x43, //333// 0x4B,0x55,0x37,0x0A,0xd5,0x4A,0x95,0x5A,0xBf, // 0x04,0xBA,0x53,0x0A,0x5B,0x48,0x65,0x2B,0xBC, // 0x05,0x2B,0x50,0x0A,0x93,0x45,0x47,0x4A,0xB9, //360// 0x06,0xAA,0x4C,0x0A,0xd5,0x41,0x24,0xdA,0xB6, // 0x04,0xB6,0x4A,0x69,0x57,0x3d,0x0A,0x4e,0x51, // 0x0d,0x26,0x46,0x5e,0x93,0x3A,0x0d,0x53,0x4d, // 0x05,0xAA,0x43,0x36,0xB5,0x37,0x09,0x6d,0x4B, // 0xB4,0xAe,0xBf,0x04,0xAd,0x53,0x0A,0x4d,0x48, // 0x6d,0x25,0xBC,0x0d,0x25,0x4f,0x0d,0x52,0x44, // 0x5d,0xAA,0x38,0x0B,0x5A,0x4C,0x05,0x6d,0x41, // 0x24,0xAd,0xB6,0x04,0x9B,0x4A,0x7A,0x4B,0xBe, // 0x0A,0x4B,0x51,0x0A,0xA5,0x46,0x5B,0x52,0xBA, // 0x06,0xd2,0x4e,0x0A,0xdA,0x42,0x35,0x5B,0x37, //450// 0x09,0x37,0x4B,0x84,0x97,0xC1,0x04,0x97,0x53, // 0x06,0x4B,0x48,0x66,0xA5,0x3C,0x0e,0xA5,0x4f, // 0x06,0xB2,0x44,0x4A,0xB6,0x38,0x0A,0xAe,0x4C, // 0x09,0x2e,0x42,0x3C,0x97,0x35,0x0C,0x96,0x49, // 0x7d,0x4A,0xBd,0x0d,0x4A,0x51,0x0d,0xA5,0x45, // 0x55,0xAA,0xBA,0x05,0x6A,0x4e,0x0A,0x6d,0x43, // 0x45,0x2e,0xB7,0x05,0x2d,0x4B,0x8A,0x95,0xBf, // 0x0A,0x95,0x53,0x0B,0x4A,0x47,0x6B,0x55,0x3B, // 0x0A,0xd5,0x4f,0x05,0x5A,0x45,0x4A,0x5d,0x38, // 0x0A,0x5B,0x4C,0x05,0x2B,0x42,0x3A,0x93,0xB6, //540// 0x06,0x93,0x49,0x77,0x29,0xBd,0x06,0xAA,0x51, // 0x0A,0xd5,0x46,0x54,0xdA,0xBA,0x04,0xB6,0x4e, // 0x0A,0x57,0x43,0x45,0x27,0x38,0x0d,0x26,0x4A, // 0x8e,0x93,0x3e,0x0d,0x52,0x52,0x0d,0xAA,0x47, // 0x66,0xB5,0x3B,0x05,0x6d,0x4f,0x04,0xAe,0x45, // 0x4A,0x4e,0xB9,0x0A,0x4d,0x4C,0x0d,0x15,0x41, //594// 0x2d,0x92,0xB5, // 2099};//公历月份天数数据表uint code day_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3};uint code day_code2[3]={0x111,0x130,0x14e};//月修正数据表uchar code week_code[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //输入输出数据组uchar data Tim[10]={0,0,0,0,0,0,0,0,0,0};/*=======获取当前日期的星期======通过==============================*/void Conver_week(void){&uchar temp1,temp2,year,month,&year =Tim[0]&0x7f; //加载年月日数据1-199(即1900+),如为BCD则需转为十进制&month=Tim[1];&day =Tim[2];&if(Tim[0]&&7==0)& year+=100; //如果为21世纪,年份数加100&temp1=year/4;//所过闰年数只算1900年之后的&temp2=(year+temp1)%7; //为节省资源,先进行一次取余,避免数大于0xff&temp2=temp2+day+week_code[month-1];&if(year%4==0&&month&3)&&temp2-=1; //如果是闰年但不到3月则减一天&Tim[6]=temp2%7; //将星期数据写到指定星期变量Tim[6],星期日数值为0}/*读取数据表中农历月的大月或小月,如果该月大返回1,小返回0*/bit get_moon_day(uint month_p,uint code_addr){&uchar temp,temp1;&temp1=(month_p+3)/8;//当要查询的月份小于5,temp1=0,月份大于4,temp1=1&temp=0x80&&((month_p+3)%8);//temp值由0x80()右移((month_p+3)%8)位&temp=year_code[code_addr+temp1]&//&if(temp==0)& return(0);&else& return(1);}/*==转换当前农历信息============0x0A,0x95,0x4e,========================*/void Conversion(void){ &uchar year,month,&uchar temp0,temp1,temp2,temp3,month_p;&uint temp4,code_//unsigned long char&bit flag2,flag_y;&&year =Tim[0]&0x7f; //加载年月日数据,如为BCD则需转为十进制 ,a=&month=Tim[1];//9&day =Tim[2];//22&code_addr=year-1; //定位数据表地址//9&if(Tim[0]&&7==0)& code_addr+=100;//如果为21世纪,年份数加100//109&code_addr*=3;//数据表地址=年份值乘3//327&temp0=year_code[code_addr+2]&0x60; //取当年春节所在的公历月份,temp1=year_code[327+2]&0x60=0x4e&0x60=0x40&temp0=_cror_(temp0,5);//将数值0x40(1000000)右移5位。得到(十进制值2)&temp2=year_code[code_addr+2]&0x1f; //取当年春节所在的公历日,temp2=year_code[code_addr+2]&0x1f=0x4e&0x1f=0x0e(十进制值14)&temp3=temp2-1; //计算当年春节离当年元旦的天数,春节只会在公历1月或2月//13&if(temp0!=1)&& temp3+=31;//如果不在元月,再加31天//44&if(month&10)//公历十月前的天数//9&& temp4=day_code1[month-1]+//=243(0xf3)+22=265&else//公历十月后的天数&& temp4=day_code2[month-10]+&if((month&2)||(year%4!=0))&& temp4-=1; //264.如果公历月小于2月或者该年的2月非闰月,天数减1&if (temp4&=temp3) //公历日在春节后或就是春节当日使用下面代码进行运算//判断公历当前日在春节前还是春节后&{&temp4 -=temp3;//264-44=220(当前公历日的天数)减去(当年春节离当年元旦的天数)后的值给temp4.&month = 1; //月份值为1&flag_y = 0;&month_p= 1; //month_p为月份指向,公历日在春节前或就是春节当日month_p指向首月&flag2=get_moon_day(month_p,code_addr); //1,检查该农历月为大小还是小月,大月返回1,小月返回0&if(flag2==0)&& temp1=29;&else&& temp1=30;//小月29天、大月30天!&temp2=year_code[code_addr]&0xf0;//=0X0a&0xf0=0x00,获取该年的闰月数据&temp2=_cror_(temp2,4); //0,从数据表中取该年的闰月月份,如为0则该年无闰月&while(temp4&=temp1)//如果当前公历天数不小于月份值,退出&&&& {&&temp4-=temp1;//=220-30=190&&month_p+=1;//2&&if(month==temp2)//如果当月有闰月&& {&&&flag_y=~flag_y;&&&if(flag_y==0)&&&& month+=1;&&&&&&&&& }&&else &&&month+=1;//2&&flag2=get_moon_day(month_p,code_addr);//检查该农历月为大小还是小月,大月返回1,小月返回0&&if(flag2==0)&&&temp1=0x1d;//如果是小月,temp1值为29&&else &&&temp1=0x1e;//如果是大月,temp1值为30& }&day=temp4+1;//288&}&else//公历日在春节前使用下面代码进行运算&{ &temp3-=temp4;&if(year==0)&& year=0xe3;//1999年&else&& year-=1;&&code_addr-=3;&month = 0//12月&temp2 = year_code[code_addr]&0xf0;//读取当年闰月数据&temp2 = _cror_(temp2,4);//数据右移4位得闰月月份&flag_y = 0;&if(temp2==0)//如果当年有闰月,一年有十三个月,月指向13,无闰月指向12 &&month_p=12;&else&&month_p=13; &flag2=get_moon_day(month_p,code_addr);//检查该农历月为大小还是小月,大月返回1,小月返回0&&& if(flag2==0)&&temp1=29;&else&&temp1=30;&while(temp3&temp1)& {&&temp3-=temp1;&&month_p-=1;&&if(flag_y==0)&&& month-=1;&&if(month==temp2)&&&flag_y=~flag_y;&&flag2=get_moon_day(month_p,code_addr);&&if(flag2==0)&&&temp1=0x1d;//29&&else&&&temp1=0x1e;//30& }&day=temp1-temp3+1;&}&Tim[7] = year|(Tim[0]&0x80); //将农历信息写进指定变量&Tim[8] =&Tim[9] =&Conver_week(); //最后进行星期转换(根据需要自行选用)}&/***************************************函 数 名:init功&&& 能:初始化函数说&&& 明:初始化定时器及中断入口参数:无返 回 值:无 ***************************************/void init(){&TMOD=1;TH0=0X3C;TL0=0XB0;&&&&&& &//定时器0模式1,50毫秒,12M晶振,用的是STC12C5A60S2,1T单片机,要是89C52的,晶振要24M以上。相应初值要调整。&ET0=1;TR0=1;EA=1;&&&&&&&&&& //开定时器0中断、启动定时器0、开总中断}/****************************主函数***************************/void main(void){R1=0;//R2=0;&& //用串口方式时,不能对P3.0口赋值G1=0;G2=0;init();set_S=0;while(1){ &&& Conversion();&&& //转农历&& Conver_week(); &&if(KEYM==0) KEYM_S=1;& //+按键按下, &if(KEYM==1&KEYM_S==1)& { KCODE=0x01;KEYM_S=0;} //加键按下后放开,键代码为1 &if(KEYH==0) KEYH_S=1;& //-按键按下, &if(KEYH==1&KEYH_S==1)& { KCODE=0x02;KEYH_S=0;} //减键按下后放开,键代码为2 & //以下的键值调时间处理&& &&& if(KCODE==0x01) { set_S++; if(set_S==6) set_S=0;KCODE=0;} // 按一次,键值设置位进1.&&& &&if(KCODE==0x02) { &&&&& switch(set_S)&& {& case 1:&&&&& hour++;&&& if(hour==24) hour=0;&&&&& case 2:&&&&& minute++;& second=0;&&& if(minute==60)& minute=0; &&&&& case 3:&&&&& year++;&&& if(year==99) year=0;&&& //日历从2000年~2099年&&&&& case 4:&&&&& month++;&&& if(month==13) month=1;&&&&&case 5:&&&&& day++;&&& switch(day)&&&&{ case 29: if(month==2 && year%4)&&& { day=1; }&&& //判断是否平年2月。&&&&&&&&&&&&&& &&&&& case 30: if(month==2 && year%4==0) { day=1; }&&&& //判断是否润年2月。&&&&&&&&&&&&&& &&&&& case 31: if(month==4 || month==6 || month==9 || month==11)& //小月份只有30日&&&&&&&&&&&&&& { day=1;& }&&&&&&&&&&& &&&&& case 32: day=1;&&&&&&& &&&& }&&&&&&&& }&& KCODE=0;&& }//--------------------键处理结束-------------------------------&&&&for(disrow=0;disrow&16;disrow++)//扫描16行&&& &&&{&&&loadoneline1();//装载一线点阵数据&&&& &&& sendoneline1();//发送上半屏一线点阵数据&&&&&&&&&&&&&&&&&&&&& &&&if(con&3) loadoneline2(); &&&&&&&&&&&&& else if(con&=3&con&5)&& loadoneline3(); &&&&&&&&&&&&&& else if(con&=5) loadoneline4();&&& //装载下半屏一线点阵数据,轮显公历,农历,星期&&& &sendoneline2();//发送下半屏一线点阵数据&&&&&&&&&&&&&&&&&&&&& &&&P1=// 扫描行&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&& &&&&&&&& STB= 1;&& // 点亮屏幕&&&&&&&&&&&&&& &&&}&}}/**************装载上半屏一线点阵时间数据****************/void loadoneline1(void){&&&&&&& &{&&&&&&&& BUFF1[0]=tab[hour/10][disrow];//~&&&&&&& if(SHAN&set_S==1) BUFF1[1]=tab[15][disrow]; else BUFF1[1]=tab[hour%10][disrow];//调时状态时字闪.&&&&&&& BUFF1[2]=tab[10][disrow];//~&&&&&&& BUFF1[3]=tab[minute/10][disrow];//~&&&&&&& if(SHAN&set_S==2) BUFF1[4]=tab[15][disrow]; else BUFF1[4]=tab[minute%10][disrow];//调时状态分字闪.&&&&&&& BUFF1[5]=tab[10][disrow];//~&&&&&&& BUFF1[6]=tab[second/10][disrow];//~&&&&&&& BUFF1[7]=tab[second%10][disrow];//~&&&&& &}}/**************装载下半屏一线点阵数据公历****************/void loadoneline2(void){&&&&&&& &{&&&&&&&& BUFF2[0]=tab[year/10][disrow];//~&&&&&&& if(SHAN&set_S==3) BUFF2[1]=tab[15][disrow]; else BUFF2[1]=tab[year%10][disrow];//调年状态时年闪&&&&&&& BUFF2[2]=tab[13][disrow];//~&&&&&&& BUFF2[3]=tab[month/10][disrow];//~&&&&&&& if(SHAN&set_S==4) BUFF2[4]=tab[15][disrow]; else BUFF2[4]=tab[month%10][disrow];//调月状态时月闪&&&&&&& BUFF2[5]=tab[14][disrow];//~&&&&&&& BUFF2[6]=tab[day/10][disrow];//~&&&&&&& if(SHAN&set_S==5) BUFF2[7]=tab[15][disrow]; else BUFF2[7]=tab[day%10][disrow];//调日状态时日闪&&&&& &}}/**************装载下半屏一线点阵数据农历****************/void loadoneline3(void){&&&&&&& &{&&&&&&&& BUFF2[0]=NLmonth_tab[Tim[8]][disrow*2];//~&&&&&&& BUFF2[1]=NLmonth_tab[Tim[8]][disrow*2+1];&&&&&&& BUFF2[2]=NLmonth_tab[13][disrow*2];&&&&&&& BUFF2[3]=NLmonth_tab[13][disrow*2+1];&&&&&& &&& if(Tim[9]==10) {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //如农历日为10,显示&初十&,不显&十十&&&& BUFF2[4]=NLday_S[0][disrow*2];&&&&&&& BUFF2[5]=NLday_S[0][disrow*2+1];&&& BUFF2[6]=NLday_S[1][disrow*2];&&&&&&& BUFF2[7]=NLday_S[1][disrow*2+1];&&&&&&&&&&&&&&&&&&& }& else& if(Tim[9]==20) {&&&&&&&&&& //如农历日为20,显示为&二十&,不显&廿十& &&& BUFF2[4]=NLmonth_tab[2][disrow*2];&&&&&&& BUFF2[5]=NLmonth_tab[2][disrow*2+1];&&& BUFF2[6]=NLday_S[1][disrow*2];&&&&&&& BUFF2[7]=NLday_S[1][disrow*2+1];&&&&&&&&&&&&&&&&&&& } else&&&&&&&&{&&&&&& BUFF2[4]=NLday_S[Tim[9]/10][disrow*2];&&&&&&&&&&&&& //其它日期显示: &初一,十一,廿一&等农历习惯.&&&&&&& BUFF2[5]=NLday_S[Tim[9]/10][disrow*2+1];&&&&&&& BUFF2[6]=NLmonth_tab[Tim[9]%10][disrow*2];&&&&&&& BUFF2[7]=NLmonth_tab[Tim[9]%10][disrow*2+1];&&&&&&&&&&&&&&&&&&&&&&&& }&}}/**************装载下半屏一线点阵星期数据****************/void loadoneline4(void){&&&&&& &{&&&& BUFF2[0]=tab[15][disrow];&&&&&&& BUFF2[1]=WEEK_S[7][disrow*2];//~&&&&&&& BUFF2[2]=WEEK_S[7][disrow*2+1];//~&&&&&&& BUFF2[3]=WEEK_S[8][disrow*2];//~&&&&&&& BUFF2[4]=WEEK_S[8][disrow*2+1];//~&&&&&&& BUFF2[5]=WEEK_S[Tim[6]][disrow*2];//~&&&&&&& BUFF2[6]=WEEK_S[Tim[6]][disrow*2+1];//~&&&&&&& BUFF2[7]=tab[15][disrow];//~&&&&&& &}}/***************发送上半屏一线点阵数据*******************/void sendoneline1(void){uchar TEMP,i;&&&&&&&&& for(s=0;s&8;s++) &&{&TEMP=BUFF1[s];&&for(i=0;i&8;i++)&&&&&& {&&&&&&& e=(TEMP&&i)&0x01;&& //取出最高位。&&&&&& //R1=e;&&&&&&&&&&&& //发送数据&&&&&& G1=e;&& CLK1=1;&&&&&&&&&&&&& //发送时钟&&&&&& CLK1=0;&&&&& }&}}/***************发送下半屏一线点阵数据*******************/void sendoneline2(void){&&&&&&&&& for(s=0;s&8;s++) &&{&SBUF=BUFF2[s];&&while(!TI);TI=0;&&& }&}/***************************************函 数 名:timer0功&&& 能:定时器0中断函数说&&& 明:入口参数:无返 回 值:无 ***************************************/void timer0() interrupt 1&&&&&&& //定时器0(中断1){&uchar tim1,tim2;&&&&&&&&&& //定义临时变量 &TL0=TL0+0XB0;TH0=0X3C;&&&&&&& //重装定时器初值,这里要根据单片机晶振频频率及分频系数调整数据.&tim1++;&&&&&&&&&&&&&&& //每中断一次tim1加1&if(tim1==10)&&&&&&&&&&&& //中断10(0.5秒)&{&&&&&&&&&&&&&&&&&& & SHAN=!SHAN;&&&&&&&&&&&& //闪烁标志取反& tim1=0;tim2++;&&&&&&&&&& //tim1清零,tim2加1& if(tim2==2)&&&&&&&&&&&& //到了1秒& {&& tim2=0;second++; con++;&&&&&&& //tim2清零,秒加1,显示计数加1.&if(con==7) {dip_flag=~dip_ con=0;}&& //7秒公农历星期期轮流显示.&& if(second==60)&&&&&&&&& //如果秒到60&& {&&&&&&&&&&&&&&&& &&& second=0;minute++;&&&&&& //秒变0,分加1&&& if(minute==60)&&&&&&&& //如果分到60&&& {&&&& minute=0;hour++;&&&&&& //分变0,时加1&&&& if(hour==24)&&&& //如果时到24,时变0,日期加1&&&&&& { hour=0;&& day++;&&&&&&&&&& &&&&switch(day)&&&&{ case 29: if(month==2 && year%4)&&& { day=1; month=3; }& //非润年,2月只有28日&&&&&&&&&&&&&& &&&&& case 30: if(month==2 && year%4==0) { day=1; month=3; }& //润年,2月有29日&&&&&&&&&&&&&& &&&&& case 31: if(month==4 || month==6 || month==9 || month==11) //小月份,有30日&&&&&&&&&&&&&& { day=1; month++; }&&&&&&&&&&& &&&&& case 32: day=1;&&&&&&&&& month++;&&&& //大月份,31日&&&&&&&&&&&& if(month==13) { month=1; year++; if(year==99) year=0;}&&& //年份从年.&&&& }&&&&&&& }&&& }&& }& }&}Tim[0] = //加载公历年月日数据,用于转换成农历日期 ,Tim[0]最高位是世纪标志,1为20世纪,0为21世纪,本程序只用到21世纪数据.Tim[1] =//Tim[2] = //&}/***********************汉字点阵码******取码方式:阴码\逐行\逆向*******************/uchar code tab[][16]={//========================用于时钟和公历日期显示的数字字模===========================0x00,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0x00,//&0&,0/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0x18,0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,//&1&,1/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0x60,0x60,0x30,0x18,0x0C,0xC6,0xFE,0x00,0x00,//&2&,2/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0x7C,0xC6,0xC6,0x60,0x38,0x60,0xC0,0xC0,0xC6,0x66,0x3C,0x00,0x00,//&3&,3/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0x60,0x70,0x78,0x6C,0x6C,0x66,0x66,0xFE,0x60,0x60,0xF8,0x00,0x00,//&4&,4/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0xFE,0x06,0x06,0x06,0x3E,0x6E,0xC0,0xC0,0xC6,0x66,0x3C,0x00,0x00,//&5&,5/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0x78,0x6C,0x06,0x06,0x3E,0x6E,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0x00,//&6&,6/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0xFE,0x66,0x66,0x30,0x30,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,//&7&,7/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0x6C,0x38,0x6C,0xC6,0xC6,0xC6,0x7C,0x00,0x00,//&8&,8/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xEC,0xF8,0xC0,0xC0,0x6C,0x3C,0x00,0x00,//&9&,9/* (8 X 16 , 宋体, 加粗 )*/0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,//&冒号:&,10, 作时:分:秒间隔0x00,0x00,0x20,0x27,0xFD,0x25,0x25,0x2D,0x37,0x25,0x25,0x35,0x27,0x00,0x00,0x00,//&时&,110x00,0x10,0x18,0x34,0x66,0x42,0x00,0x78,0x46,0x50,0x48,0x44,0x42,0x60,0x00,0x00,//&分&,120x00,0x00,0x00,0x08,0x7C,0x12,0x10,0x7C,0x14,0x14,0x7E,0x10,0x10,0x10,0x00,0x00,/*&年&,13*/0x00,0x00,0x00,0x7C,0x44,0x44,0x7C,0x44,0x44,0x7C,0x44,0x44,0x62,0x40,0x00,0x00,/*&月&,14*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//&空白& 15,作调整状态时数字闪烁用};//====================用于农历日期月份显示的汉字字模===============================uchar code NLmonth_tab[][32]={0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0xFF,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,/*&十&,0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*&一&,1*/0x00,0x00,0x00,0x18,0xFC,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,/*&二&,2*/0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,/*&三&,2*/0x00,0x00,0xFE,0x7F,0x66,0x63,0x66,0x63,0x66,0x63,0x66,0x63,0x66,0x63,0x66,0x63,0x36,0x63,0x36,0x7E,0x1E,0x60,0x0E,0x60,0x06,0x60,0xFE,0x7F,0x06,0x60,0x00,0x00,/*&四&,4*/0x00,0x00,0xFE,0x3F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x0C,0xFC,0x1F,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x6C,0xFF,0xFF,0x00,0x00,0x00,0x00,/*&五&,5*/0x60,0x00,0xC0,0x01,0x80,0x03,0x80,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x60,0x03,0xE0,0x06,0x60,0x0C,0x30,0x18,0x30,0x38,0x18,0x70,0x0C,0x70,0x06,0x30,0x00,0x00,/*&六&,6*/0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0xFF,0xFE,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x61,0x80,0x61,0x80,0x61,0x00,0x3F,0x00,0x00,/*&七&,7*/0x00,0x00,0x00,0x06,0x60,0x0E,0xE0,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x30,0x0C,0x30,0x0C,0x18,0x18,0x18,0x18,0x0C,0x30,0x06,0xF0,0x03,0x60,0x00,0x00,0x00,0x00,/*&八&,7*/0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x0C,0xFE,0x1F,0xC0,0x0C,0xC0,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x30,0x0C,0x30,0x6C,0x18,0x6C,0x0C,0xEC,0x06,0x7C,0x00,0x00,/*&九&,9*/0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0xFF,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,/*&十&,10*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x48,0x40,0x7F,0x7E,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*&十一&,11*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x3E,0x08,0x00,0x48,0x00,0x7F,0x00,0x08,0x00,0x08,0x7F,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*&十二&,12*/0xE0,0x1F,0x60,0x18,0x60,0x18,0x60,0x18,0xE0,0x1F,0x60,0x18,0x60,0x18,0x60,0x18,0xE0,0x1F,0x60,0x18,0x30,0x18,0x30,0x18,0x18,0x18,0x0C,0x1E,0x06,0x0C,0x00,0x00,/*&月&,13*/};//====================================用于农历日期&日&中十位显示的汉字字模====================uchar code NLday_S[][32]={0x18,0x00,0x30,0x00,0x30,0x60,0xFE,0xFF,0x60,0x6C,0x30,0x6C,0xD8,0x6C,0x7C,0x6C,0x3E,0x6C,0x7B,0x6C,0xD8,0x66,0x18,0x66,0x18,0x63,0x98,0x79,0xD8,0x30,0x00,0x00,/*&初&,0*/0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0xFF,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,/*&十&,1*/0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0xFF,0xFF,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0xF0,0x0F,0x30,0x0C,0x00,0x00,/*&廿&,2*/0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,/*&三&,3*/};//====================================用于星期显示的汉字字模====================uchar code WEEK_S[][32]={0x00,0x00,0xF8,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x1F,0x18,0x18,0x00,0x00,0x00,0x00,/*&日&,0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*&一&,1*/0x00,0x00,0x00,0x18,0xFC,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,/*&二&,2*/0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,/*&三&,3*/0x00,0x00,0xFE,0x7F,0x66,0x63,0x66,0x63,0x66,0x63,0x66,0x63,0x66,0x63,0x66,0x63,0x36,0x63,0x36,0x7E,0x1E,0x60,0x0E,0x60,0x06,0x60,0xFE,0x7F,0x06,0x60,0x00,0x00,/*&四&,4*/0x00,0x00,0xFE,0x3F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x0C,0xFC,0x1F,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x6C,0xFF,0xFF,0x00,0x00,0x00,0x00,/*&五&,5*/0x60,0x00,0xC0,0x01,0x80,0x03,0x80,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x60,0x03,0xE0,0x06,0x60,0x0C,0x30,0x18,0x30,0x38,0x18,0x70,0x0C,0x70,0x06,0x30,0x00,0x00,/*&六&,6*/0x00,0x00,0xF8,0x3F,0x18,0x30,0xF8,0x3F,0x18,0x30,0xF8,0x3F,0x80,0x01,0x98,0x01,0xF8,0x7F,0x8C,0x01,0x8C,0x01,0xF6,0x3F,0x80,0x01,0x80,0x01,0xFE,0xFF,0x00,0x00,/*&星&,7*/0xCC,0x00,0xCC,0x7E,0xFE,0x67,0xCC,0x66,0xFC,0x66,0xCC,0x7E,0xFC,0x66,0xCC,0x66,0xCC,0x66,0xFF,0x7F,0x00,0x66,0x6C,0x63,0xCC,0x63,0xC6,0x79,0x83,0x31,0x00,0x00,/*&期&,8*/};============================================================================
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
大无私的奉献精神啊!
不错不错&&加油努力
真的很不错!
UID:799145
在线时间794小时
M币7107专家5
UID:775099
在线时间12小时
M币418专家1
好资料啊,就是没有M币了啊。。。。。。。。。。。。。。
UID:815181
在线时间8小时
M币989专家0
表示支持~哈哈哈
UID:780846
在线时间421小时
M币255专家0
多谢分享 这个成本不低吧?楼主留言:二手屏32元,一个STC12C5A60S2,7元,其它的没有什么元件,用一个旧的1A5V的MOTO手机充电源供电.共计不到40元.
UID:694378
在线时间1833小时
M币3041专家9
楼主你好像用我修改的农历转换程序http://bbs.mydigit.cn/read.php?tid=202369&fpage=9楼主留言:看了你的帖子,都没有源程序上来。!!!农历是在网上找的,不知是那里出处,要是你的,可能也是别人引用,我再引用的.多谢了.
UID:812501
在线时间80小时
不错&&&&&&佩服一下,这个我也做过,用的1302。
1到第8) ? 8 :
location='read.php?tid=215457&page='+page+'';}">页8) ? 8 :
location='read.php?tid=215457&page='+page+'';">确认
访问内容超出本站范围,不能确定是否安全
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
您目前还是游客,请
&回复后跳转到最后一页
Code by , Time now is:02-04 23:06, Total 0.194383(s) query 11,
Gzip enabled&}

我要回帖

更多关于 中华万年历 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信