发布时间 : 星期一 文章51单片机实现电子时钟功能 - 1602液晶显示更新完毕开始阅读ee34e83443323968011c92cd
图2.6 1602与单片机连线图
第三章 程序设计及其调试
3.1 程序设计 程序设计如下: #include
#define uchar unsigned char #define uint unsigned int sbit lcdrs=P2^0; sbit lcswr=P2^1; sbit lcden=P2^2; sbit s1=P1^0; sbit s2=P1^1;
9
sbit s3=P1^2; sbit rd=P3^7; uchar count,s1num; char miao,shi,fen;
uchar code table[]=%uchar code table1[]=\void delay(uint z) { uint x,y; for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) { lcdrs=0; lcswr=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }
void write_date(uchar date) { lcdrs=1; lcden=0; P0=date; delay(5);
lcden=1; 10
delay(5); lcden=0;
}
void init() {
uchar num;
lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<15;num++) { write_date(table[num]); delay(5);
}
write_com(0x80+0x40); for(num=0;num<12;num++) { write_date(table1[num]); delay(5);
}
TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1;
TR0=1;
11
}
void write_sfm(uchar add,uchar date) { uchar shi,ge; shi=date/10; ge=date;
write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);
}
void keyscan() { rd=0; if(s1==0) { delay(5); if(s1==0) { s1num++; while(!s1); if(s1num==1) { TR0=0;
write_com(0x80+0x40+10); write_com(0x0f);
}
} if(s1num==2) {
write_com(0x80+0x40+7);
12