当前位置:文档之家› 时钟程序基本走时功能加流水灯

时钟程序基本走时功能加流水灯

#include<reg52.h>#include<stdio.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar a;uchar XPOS,YPOS;sbit RS = P2^5; //Pin4sbit RW = P2^6; //Pin5sbit E = P2^7; //Pin6sbit CLK=P3^6; //txdsbit DA TA=P3^5; //RXDsbit SH_LD=P3^7; //sbit buz=P3^4;#define Data P0 //数据端口uchartime,shi,fen,miao,shi11,shi12,fen11,fen12,miao11,miao12,miao1,fen1,shi1,y ue1,r1,nian11,nian12,nian13,nian14,yue,yue11,yue12,r,r11,r12;uchar Time1[]={'0','1','2','3','4','5','6','7','8','9'};uint nian,nian1;/************************************************************* *****//* 函数声明*//************************************************************* *****//******************************************************* ********/void DelayUs(unsigned char us)//delay us{unsigned char uscnt;uscnt=us>>1;/* Crystal frequency in 12MHz*/while(--uscnt);}/******************************************************************/void DelayMs(unsigned char ms)//delay Ms{while(--ms){DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250);}}void WriteCommand(unsigned char c){DelayMs(5);//short delay before operationE=0;RS=0;RW=0;_nop_();E=1;Data=c;E=0;}/************************************************************* ***/void WriteData(unsigned char c){DelayMs(5); //short delay before operationE=0;RS=1;RW=0;_nop_();E=1;Data=c;E=0;RS=0;}/************************************************************* ********/void ShowChar(unsigned char pos,unsigned char c){unsigned char p;//p=pos+0x80; //是第二行则命令代码高4位为0x8 p=pos;WriteCommand (p);//write commandWriteData (c); //write data}void Writer_zfc(uchar cspos,uchar*s){WriteCommand (cspos);while(*s!='\0'){WriteData (*s);s++;}}void InitLcd(){DelayMs(15);WriteCommand(0x38); //display mode WriteCommand(0x38); //display mode WriteCommand(0x0f); //display mode WriteCommand(0x06); //显示光标移动位置WriteCommand(0x0c); //显示开及光标设置WriteCommand(0x01); //显示清屏}void Wenzi_yiwei(int z){int i;for(i=0;i<z;i++){DelayMs(1000);WriteCommand(0x18);}}void Liushui_d(){P1=_crol_(P1,1);DelayMs(1000);}void initiatejs0(void){time=0;//全局变量随计数器而加一TMOD=0X01;//js0工作于方式一下16位的,外部中断不起作用TH0=0x4b;TL0=0xff;ET0=1;//ET0源允许EA=1;//EA总允许TR0=1;//启动js0}void sufas(uchar shi0)//得到时分秒,各位{shi11=shi0/10;shi12=shi0%10;}void sufaf(uchar fen0){fen11=fen0/10;fen12=fen0%10;}void sufam(uchar miao0){miao11=miao0/10;miao12=miao0%10;}void sufan(uint nian0){nian11=nian0/1000;nian12=(nian0%1000)/100;nian13=((nian0%1000)%100)/10;nian14=((nian0%1000)%100)%10;}void sufay(uchar yue0){yue11=yue0/10;yue12=yue0%10;}void sufar(uchar r0){r11=r0/10;r12=r0%10;}void SJ_intial(){nian=2013;sufan(nian);yue=1;sufay(yue);r=7;sufar(r);shi=23;sufas(shi);fen=59;sufaf(fen);miao=40;sufam(miao);Writer_zfc(0x80,"TIME : : ");Writer_zfc(0xC0,"DA TE >-__-< ");ShowChar(0xc5,Time1[nian11]);ShowChar(0xc6,Time1[nian12]);ShowChar(0xc7,Time1[nian13]);ShowChar(0xc8,Time1[nian14]);ShowChar(0xca,Time1[yue11]);ShowChar(0xcb,Time1[yue12]);ShowChar(0xcd,Time1[r11]);ShowChar(0xce,Time1[r12]);ShowChar(0x86,Time1[shi11]);ShowChar(0x87,Time1[shi12]);ShowChar(0x89,Time1[fen11]);ShowChar(0x8a,Time1[fen12]);ShowChar(0x8c,Time1[miao11]);ShowChar(0x8d,Time1[miao12]);}void SJ_xianshi(uchar shi,uchar fen,uchar miao) {if(miao!=miao1){sufam(miao);ShowChar(0x8c,Time1[miao11]);ShowChar(0x8d,Time1[miao12]);miao1=miao;}if(fen!=fen1){sufaf(fen);ShowChar(0x89,Time1[fen11]);ShowChar(0x8a,Time1[fen12]);fen1=fen;}if(shi!=shi1){sufas(shi);ShowChar(0x86,Time1[shi11]);ShowChar(0x87,Time1[shi12]);shi1=shi;}if(r!=r1){sufar(r);ShowChar(0xcd,Time1[r11]);ShowChar(0xce,Time1[r12]);r1=r;}if(yue!=yue1){sufay(yue);ShowChar(0xca,Time1[yue11]);ShowChar(0xcb,Time1[yue12]);yue1=yue;}if(nian!=nian1){sufan(nian);ShowChar(0xc5,Time1[nian11]);ShowChar(0xc6,Time1[nian12]);ShowChar(0xc7,Time1[nian13]);ShowChar(0xc8,Time1[nian14]);nian1=nian;}}void SJ_xz(){if(miao==60){fen++;miao=0;if(fen==60){shi++;fen=0;if(shi==24){r++;shi=0;if((yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)&&r> 31){r=1;yue++;if(yue>12){nian++;yue=1;}}else{if((yue==4||yue==6||yue==9||yue==11)&&r>30){r=1;yue++;}else{if((yue==2||nian%100==0)&&r>29&&nian%400==0){yue++;r=1;}else{if((yue==2||nian%100==0)&&(nian%400!=0)&&(r>28)){yue++;r=1;}else{if((yue==2||nian%100!=0)&&(nian%4==0)&&r>29){yue++;r=1;}}}}}}}}}void FM_baoshi(){if(fen==0&&(miao==1||miao==2||miao==3||miao==4||miao==5)){buz=~buz;DelayMs(500);}buz=1;}void main(){InitLcd();WriteCommand(0x01);SJ_intial();initiatejs0();P1=0XEE;while(1){FM_baoshi();SJ_xz();SJ_xianshi(shi,fen,miao);//Wenzi_yiwei(1);Liushui_d();}}void js0(void) interrupt 1{TH0=0x4b;//一次中断50毫秒TL0=0xff;time++;if(time==20){//P1=0Xfe;time=0;miao++;}}。

相关主题