#include<reg52.h>unsigned char code table[] ={" "};unsigned char code table1[]={" : "};sbit rs=P1^2;sbit lcden=P1^0;unsigned char flag,m;void delay(int xms) { int i,j; for(i=xms;i>0;i--) //i=xms即延时约xms毫秒 for(j=110;j>0;j--);}void write_com(unsigned char com){//写液晶命令函数 rs=0; lcden=0; P2=com; delay(3); lcden=1; delay(3); lcden=0; }void write_date(unsigned char date){//写液晶数据函数 rs=1; lcden=0; P2=date; delay(3); lcden=1; delay(3); lcden=0; }void init(){//初始化函数 unsigned char num; lcden=0; rs=0; write_com(0x38);//1602液晶初始化 write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<15;num++)//写入液晶固定部分显示 { write_date(table[num]); delay(3); } write_com(0x80+0x40); for(num=0;num<5;num++) { write_date(table1[num]); delay(3); }}void write_dianya(unsigned char add,unsigned char date){//1602液晶刷新时分秒函数4为时,7为分,10为秒 unsigned char bai,shi,ge; bai=date/100; shi=date%100/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+bai); write_date(0x30+shi); write_date(0x30+ge);}void main (){ init(); TMOD=0x20; //设置定时器1工作方式2 TH1=0xfd; TL1=0xfd; TR1=1; REN=1; //设置串行口工作方式 SM0=0; SM1=1; EA=1; //中断设置 ES=1; while(1) { if(flag==1) { ES=0; SBUF=m; while(!TI); TI=0; ES=1; } }}void ser() interrupt 4{ RI=0; m=SBUF; write_dianya(5,m); flag=1;}
#include<reg52.h>unsignedcharcodetable[]={""};unsignedcharcodetable1[]={":"};sbitrs=P1^2;sbitlcden=P1^0;unsignedcharflag,m;voiddelay(intxms){inti,j;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒for(j=110;j>0;j--);}voidwrite_com(unsignedcharcom){//写液晶命令函数rs=0;lcden=0;P2=com;delay(3);lcden=1;delay(3);lcden=0;}voidwrite_date(unsignedchardate){//写液晶数据函数rs=1;lcden=0;P2=date;delay(3);lcden=1;delay(3);lcden=0;}voidinit(){//初始化函数unsignedcharnum;lcden=0;rs=0;write_com(0x38);//1602液晶初始化write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<15;num++)//写入液晶固定部分显示{write_date(table[num]);delay(3);}write_com(0x80+0x40);for(num=0;num<5;num++){write_date(table1[num]);delay(3);}}voidwrite_dianya(unsignedcharadd,unsignedchardate){//1602液晶刷新时分秒函数4为时,7为分,10为秒unsignedcharbai,shi,ge;bai=date/100;shi=date%100/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+bai);write_date(0x30+shi);write_date(0x30+ge);}voidmain(){init();TMOD=0x20;//设置定时器1工作方式2TH1=0xfd;TL1=0xfd;TR1=1;REN=1;//设置串行口工作方式SM0=0;SM1=1;EA=1;//中断设置ES=1;while(1){if(flag==1){ES=0;SBUF=m;while(!TI);TI=0;ES=1;}}}voidser()interrupt4{RI=0;m=SBUF;write_dianya(5,m);flag=1;}