案例11_1:液晶应用实例LCD1602(1)
9.1.2 LCD1602液晶应用实例P171在液晶LCD1602上显示两行字符第一行“I LOVE MCU!第二行"BEST 2021。
·
0 文章介绍
9.1.2 LCD1602液晶应用实例P171
1 效果图
2 仿真图
2.1 放置元器件
放置LM016L
放置POT-HG
3 代码
P173 写好注释
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table1[] = "I LOVE MCU! "; // 字符串数组
uchar code table2[] = "BEST 2021 ^_^"; // 字符串数组
uchar num;
sbit lcrs = P1^0; // 液晶控制引脚,RS
sbit lcden = P1^1; // 液晶控制引脚,EN
sbit wela = P1^6; // 仿真用不到,注释掉
// 延时函数
void delay(uint z)
{
uint x, y;
for (x = z; x > 0; x--)
for (y = 110; y > 0; y--);
}
// 写命令函数
void write_com(uchar com) // 写命令(command)函数,向 LCD1602 发送指令
{
lcden = 0; // E 置低,准备触发上升沿
lcrs = 0; // RS 置低,表示写入的是命令
P0 = com; // 将命令字节放入数据总线(P0 连接 LCD 的 D0-D7)
delay(5); // 延时,确保数据稳定
lcden = 1; // E 置高,产生上升沿,LCD 读取命令
delay(5); // 延时,等待命令被锁存
lcden = 0; // E 置低,结束写操作
}
// 写数据函数
void write_date(uchar date)
{
lcden = 0;
lcrs = 1;
P0 = date;
delay(5);
lcden = 1;
delay(5);
lcden = 0;
}
// 液晶初始化
void lcdinit()
{
wela = 0; // 仿真用不到,可注释掉
write_com(0x38); // 8位数据总线, 2行显示, 5x7点阵
write_com(0x0c); // 开显示,不显示光标
write_com(0x06); // 写入新数据后地址指针加1
write_com(0x01); // 清屏
}
// 显示函数
void LCD1602_Display()
{
write_com(0x80); // 第一行第0列
for (num = 0; table1[num] != '\0'; num++)
{
write_date(table1[num]);
delay(5);
}
write_com(0x80 + 14); // 第一行第14列(移动光标以显示星期)
// 三种显示'1'的方法任选一种:
// write_date('0' + 1);
// write_date(48 + 1);
write_date(0x30 + 5); // 显示当前的星期
write_com(0x80 + 0x40); // 第二行第0列
for (num = 0; table2[num] != '\0'; num++)
{
write_date(table2[num]);
delay(5);
}
}
// 主函数
void main()
{
lcdinit(); // 初始化液晶
LCD1602_Display(); // 显示内容
while (1); // 程序停在这里
}
更多推荐
所有评论(0)