《基于51单片机的LCD1602简单数字时钟.docx》由会员分享,可在线阅读,更多相关《基于51单片机的LCD1602简单数字时钟.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、原理图:源程序:/* 标题:LCD1602 时钟 效果:在 LCD1602 屏上显示时分秒,能调节时间 作者:皖绩小挺 说明:RS:P1.0 RW:P1.1 E:P1.3 数据端口:P0key1:P3.7 key2:P3.6 key3:P3.5 key4:P3.6key5;P3.3 */ #include#define uchar unsigned char /宏定义#define uint unsigned intsbit lcdrs=P10; /定义 LCD1602 端口sbit lcdrw=P11; sbit lcden=P12;sbit key1=P37; /定义按键端口sbit ke
2、y2=P36; sbit key3=P35; sbit key4=P34;sbit key5=P33;uchar tt;/设置全局变量uchar hour,minute,second;uchar table=“HELLO WORLD“ ; /第一行字符(11 个) uchar table1=“00:00:00“;/第二行字符(8 个)/*延时函数*/ void delay(uint z)/delay(1)约 1ms uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /*LCD1602 写命令*/ void write_lcdcom(uchar lcd_com
3、) lcdrs=0; /rs 低电平为选择指令寄存器 lcdrw=0; /rw 低电平进行写操作P0=lcd_com; delay(5); lcden=1; delay(5); lcden=0; /* LCD1602 写数据*/ void write_lcddata(uchar lcd_data) lcdrs=1; /rs 高电平为选择数据寄存器lcdrw=0; P0=lcd_data; delay(5); lcden=1; delay(5); lcden=0; /*LCD1602 读命令*/ void read_lcdcom(uchar lcd_com) lcdrs=0; lcdrw=1;
4、/rw 高电平进行读操作P0=lcd_com; delay(5); lcden=1; delay(5); lcden=0; /*LCD1602 读数据*/ void read_lcddata(uchar lcd_data) lcdrs=1; lcdrw=1; P0=lcd_data; delay(5); lcden=1; delay(5); lcden=0; /*系统初始化*/ void lcdinit() uchar i; lcden=0; write_lcdcom(0x01); /清屏delay(5); write_lcdcom(0x38); /4 位,双行显示,5X7 点阵delay(5
5、); write_lcdcom(0x06); /光标右移,不整屏移动delay(5); write_lcdcom(0x0c); /显示屏幕,光标不显示delay(5);hour=0; /赋系统时间初值minute=0; second=0;key1=1; key2=1; key3=1; key4=1; key5=1;write_lcdcom(0x80+2);/显示第一行for(i=0;i24) /当减到 00 时再减的数不是24) minute=59; write_hms(7,minute); delay(200); TR0=1; if(key5=0) /秒钟清零 delay(5); if(key5=0) TR0=0; second=0; write_hms(10,second); TR0=1; /*主函数*/ void main(void) lcdinit();/调用系统初始化程序while(1) keyscan();