基于51单片机的LCD1602简单数字时钟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
原理图:
源程序:
/***************************************************************
标题:LCD1602时钟
效果:在LCD1602屏上显示时分秒,能调节时间
作者:皖绩小挺
说明:RS:P1.0 RW:P1.1 E:P1.3 数据端口:P0
key1:P3.7 key2:P3.6 key3:P3.5 key4:P3.6
key5;P3.3
******************************************************************/ #include
#define uchar unsigned char //宏定义
#define uint unsigned int
sbit lcdrs=P1^0; //定义LCD1602端口
sbit lcdrw=P1^1;
sbit lcden=P1^2;
sbit key1=P3^7; //定义按键端口
sbit key2=P3^6;
sbit key3=P3^5;
sbit key4=P3^4;
sbit key5=P3^3;
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;x>0;x--)
for(y=110;y>0;y--);
}
/*******************************************************
LCD1602写命令
*******************************************************/ void write_lcdcom(uchar lcd_com)
{
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; //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);
write_lcdcom(0x06); //光标右移,不整屏移动
delay(5);
write_lcdcom(0x0c); //显示屏幕,光标不显示
delay(5);
hour=0; //赋系统时间初值
minute=0;
second=0;