文档详情

8051-与-LCD1602-液晶显示时钟编译并仿真成功.docx

发布:2019-09-22约3.18千字共6页下载文档
文本预览下载声明
8051 与 LCD1602 液晶显示时钟 电路仿真图 Keil C51源程序 #include reg52.h #define uchar unsigned char #define uint unsigned int sbit rs=P2^0; sbit rw=P2^1; sbit en=P2^2; sbit K1=P1^0; sbit K2=P1^1; sbit K3=P1^2; sbit K4=P1^3; uchar Count,s1num; char shi,fen,miao; uchar code table[]= 2014-4-23 Wed; uchar code table1[]= 00:00:00 ; //延时函数 void delay(uint z) { uchar i; while(z--) for(i=0;i120;i++); } //LCD1602写命令函数 void write_com(uchar com) { rs=0; rw=0; en=0; P0=com; delay(5); en=1; delay(5); en=0; } //LCD1602 写数据函数 void write_date(uchar dat) { rs=1; rw=0; en=0; P0=dat; delay(5); en=1; delay(5); en=0; } //LCD1602初始化函数 void init() { uchar num; write_com(0x38); delay(1); write_com(0x0c); delay(1); write_com(0x06); delay(1); write_com(0x01); delay(1); write_com(0x80); for(num=0;num15;num++) { write_date(table[num]); delay(2); } write_com(0x80+0x40); for(num=0;num15;num++) { write_date(table1[num]); delay(2); } TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } //LCD1602写时分秒函数 void write_sfm(uchar add, uchar date) { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } //时钟调整按键扫描函数 void keyscan() { if (K1==0) { delay(5); if(K1==0) { s1num++; while(!K1); if(s1num) { TR0=0; write_com(0x80+0x40+10); write_com(0x0f); } if(s1num==2) { write_com(0x80+0x40+7); } if(s1num==3) { write_com(0x80+0x40+4); } if(s1num==4) { s1num=0; write_com(0x0c); TR0=1; } } } if(s1num!=0) { if(K2==0) { delay(5); if(K2==0) { while(!K2); if(s1num==1) { miao++; if(miao==60) miao=0; write_sfm(10,miao); write_com(0x80+0x40+10); } if(s1num==2) { fen++; if(fen==60)
显示全部
相似文档