基于51单片机的LCD1602简单数字时钟

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档