万年历实物图单片机单片机万年历函数(万年历简易制作)
单片机万年历中的问题(附图)
排阻,外部上拉用的,提高单片机驱动能力,一般P0口做驱动才需要上拉,它内部没有上拉电阻
单片机万年历
今天碰到了N个白痴问题。万年历是能够显示年月日、24节气、阴历之类的东西,单片机是一块芯片。万年历可以 使用单片机来做,不过我真不晓得“万年历单片机”怎么做。我想你应该想问的是如何用单片机来做万年历,我提供思路。 1。单片机最小系统一块。可以 使用STC89C52芯片+外围电路。可以烧入用户创作的流程,实现万年历需要的逻辑。 2。实时时钟电路一块,可以 使用DS1302芯片。提供年月日、时分秒数据给单片机。 3。显示器电路一块。用以显示这几个数据。 4。一些必要的按键,用以调整数据。
基于单片机的万年历怎么做啊只要求显示日期和时间?电路图、流程有谁。。。
是什么单片机控制万年历的啊?记得把邮箱留下哦!!!#include <reg52、h>#include<stddef。h>#define uchar unsigned char#define uint unsigned int#define LCD1602_FLAG#define LCD1602_PORT P0sbit lcd1602_rs=P2^0;sbit lcd1602_e=P2^2;sbit lcd1602_rw=P2^1;sbit lcd1602_busy=P0^7;sbit key_ch=P3^5;sbit key_add=P3^6;sbit key_minus=P3^7;uchar i,sec,min,h,date,month,flag;uint year;uchar *chgstr⓻={" ","sec","min","hour","date","min","year"};uchar j,k,m,n,o,p;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar timestr⓾,datestr⓾;void init();void delay(uint);void time_display();void date_display();void control();void time();/************************************** 函数名称:lcd1602_CheckBusy()* 函数功能:状态查询*************************************/void lcd1602_CheckBusy(){do{lcd1602_busy=1;lcd1602_rs=0;lcd1602_rw=1;lcd1602_e=0;lcd1602_e=1;}while(lcd1602_busy);}/***************************************** 函数名称: lcd1602_WriteCmd()* 函数功能:写命令* 入口参数:命令字* 出口参数:无****************************************/void lcd1602_WriteCmd(const uchar cmd){lcd1602_CheckBusy();lcd1602_rs=0;lcd1602_rw=0;lcd1602_e=1;LCD1602_PORT=cmd;lcd1602_e=0;}/********************************************* 函数名称:lcd1602_WriteData()* 函数功能:写数据* 入口参数:c--待写数据* 出口参数:无**********************************************/void lcd1602_WriteData(const uchar c){lcd1602_CheckBusy();lcd1602_rs=1;lcd1602_rw=0;lcd1602_e=1;LCD1602_PORT=c;lcd1602_e=0;}/************************************************* 函数名称:lcd1602_Init()* 函数功能:初始化LCD* 入口参数:无* 出口参数:无************************************************/void lcd1602_Init(){lcd1602_WriteCmd(0x38); //显示模式为8位2行5*7点阵lcd1602_WriteCmd(0x0c); //display enable,flag enable,flash enable,lcd1602_WriteCmd(0x06); //flag move to right,screen don't movelcd1602_WriteCmd(0x01); //clear screen}/************************************************** 函数名称:lcd1602_Display()* 函数功能: 字符显示* 入口参数:ptr--字符或字符串指针* 出口参数:无* 说 明:用户可通过以下方式来调用:* 1)lcd1602_Display("Hello,world!");* 2) INT8U 存储类型 txt[]="要显示的字符串";* 或者 INT8U 存储类型 txt[]={'t','x','t',。。,'\0'};* INT8U *ptr;* ptr=&txt;* lcd1602_Display(ptr);* 或 lcd1602_Display(txt);* 或 lcd1602_Display(&txt);*************************************************/void lcd1602_Display(const uchar *ptr,uchar line,uchar xaddr){uchar data i=0;uchar *data q;q=ptr;switch(line){case 0:lcd1602_WriteCmd(0x80+xaddr);while(q!=NULL && (*q!='\0') && i<16){lcd1602_WriteData(*q);q++;i++;}break;case 1:lcd1602_WriteCmd(0xc0+xaddr);while(q!=NULL && (*q!='\0') && i<16){lcd1602_WriteData(*q);q++;i++;}break;}}void main(){lcd1602_Init();init();while(1){time_display();date_display();control();}}void init(){i=0;sec=0;min=30;h=7;date=17;month=10;year=2017;flag=0;EA=1;ET0=1;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void time_display(){timestr⓻=0x30+sec%10;timestr⓺=0x30+sec/10;timestr⓹=':';timestr⓸=0x30+min%10;timestr⓷=0x30+min/10;timestr⓶=':';timestr⓵=0x30+h%10;timestr[0]=0x30+h/10;timestr⓼=0;lcd1602_Display(timestr,1,3);}void date_display(){datestr⓽=0x30+date%10;datestr⓼=0x30+date/10;datestr⓻=':';datestr⓺=0x30+month%10;datestr⓹=0x30+month/10;datestr⓸=':';datestr⓷=0x30+year%10;datestr⓶=0x30+year/10%10;datestr⓵=0x30+year/100%10;datestr[0]=0x30+year/1000;lcd1602_Display(datestr,0,2);}void control(){if(!key_ch){delay(5);if(!key_ch){flag++;TR0=0;if(flag==7){flag=0;TR0=1;lcd1602_Init();}lcd1602_Display(chgstr[flag],1,12);}}while(!key_ch);if(flag==1&&key_add==0){while(!key_add);sec++;if(sec==60)sec=0;}if(flag==1&&key_minus==0){while(!key_minus);sec--;if(sec==-1)sec=59;}if(flag==2&&key_add==0){while(!key_add);min++;if(min==60)min=0;}if(flag==2&&key_minus==0){while(!key_minus);min--;if(min==-1)min=59;}if(flag==3&&key_add==0){while(!key_add);h++;if(h==二十四)h=0;}if(flag==3&&key_minus==0){while(!key_minus);h--;if(h==-1)h=23;}if(flag==4&&key_add==0){while(!key_add);date++;if(date==29)if((year%4!=0)&&(month==2))date=1;if(date==30)if((year%4==0)&&(month==2))date=1;if(date==31)if((month==4)||(month==6)||(month==9)||(month==11))date=1;if(date==32)if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))date=1; }if(flag==4&&key_minus==0){while(!key_minus);if(date>1)date--;}if(flag==5&&key_add==0){while(!key_add);month++;if(month==13)month=1;}if(flag==5&&key_minus==0){while(!key_minus);month--;if(month==0)month=12;}if(flag==6&&key_add==0){while(!key_add);year++;if(year==99)year=1;}if(flag==6&&key_minus==0){while(!key_minus);year--;if(year==0)year=99;} }void T0_rpt() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;i++;time();}void time(){if(i==20){i=0;sec++;if(sec==60){sec=0;min++;if(min==60){min=0;h++;if(h==二十四){h=0;min=0;sec=0;date++;if(date==29)if((year%4!=0)&&(month==2)){date=1;month++;if(month==13){month=1;year++;}}if(date==30)if((year%4==0)&&(month==2)){date=1;month++;if(month==13){month=1;year++;}}if(date==31)if((month==4)||(month==6)||(month==9)||(month==11)){date=1;month++;if(month==13){month=1;year++;}}if(date==32)if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12)){date=1;month++;if(month==13){month=1;year++;}}}}}} }基于单片机的万年历通常是用单片机读写时钟芯片来完成的,这一个方法简单又节省单片机资源,时钟芯片许多种,也不晓得你用什么单片机,无法详尽解读了,文库里有430读写DS1302及020读写8563的两个流程,这两个都是过去做设备是用过的读写时钟流程,你不妨参考, 要显示什么就读什么数据,不用的就跳过就能够了,
用excel制作万年历的公式问题
不了解你的公式是在哪个单元格输入。“m_day-(WEEKDAY(m_day)-1)+(ROW()-5)*7”——m_day……是个自定义区域名称,可以直接引用一个单元格区域,可以是数值或日期格式。(WEEKDAY(m_day)-1)……是借用星期函数,返回星期几(表现为:星期日=1。星期一=2。……),其实也就是说公式可以简化:WEEKDAY(m_day,2)(ROW()-5)*7……这一步才是关键。利用行号*7,与公式中的COLUMN()配合,使向右每格增添1(天),至第7天(增添6天)后向下填充,使上下行相差“7”,就是上下间隔一个星期。看他的附图,公式应该在第五行输入,故日期第1行=(5-5)*7=0,日期不增减。随着公式向下填充,每行增添7(天)。至于该段公式要用引用原数据的单元格m_day减去星期表现形式的1~7,再加上0~7~14~21……,使数据在所给定的数值(或日期),逐格显示顺序日期。这个很好理解,有用过日历的人都明白知道。不明白!!!
哪个软件可以把自己照片生成万年历上,还带一些励志语录?
Digilabs Calendar Pro 是Digilabs公司推出的一款专业的日历制作软件,流程内置了19种精美的日历模板,支持包括美国,中国,德国,法国等在内的10个国家的传统性节日,并且允许你增添自己定义的节日事件如爸妈家人的生日,出嫁纪念日,孩子的生日等,且可以允许你在节日的旁边添加漂亮的卡通图片,另外经过对所制作日历的熟悉设置,可以帮助你精确定义日历的大小,尺寸,高度,宽度,图片的尺寸和位置,日历显示的边框的样式,字体显示的样式等!支持添加自己热爱的图片作为日历中的图片或者封面。还有:人生日历也可以