STC12C5A60S2 LCD1602显示
时间: 2024-02-05 12:02:53 浏览: 144
LCD1602显示
4星 · 用户满意度95%
STC12C5A60S2是一款8051单片机,可以通过其IO口控制LCD1602的显示。以下是基本的连接方式和代码实现:
### 连接方式
STC12C5A60S2 | LCD1602
:-:|:-:
P2.0 | RS
P2.1 | RW
P2.2 | EN
P0 | D0-D7
其中,P2口连接LCD1602的RS、RW和EN引脚,P0口连接LCD1602的D0-D7引脚。
### 代码实现
```c
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2;
void delay(uint i) // 延时函数
{
while(i--);
}
void write_com(uchar com) // 写入指令
{
RS = 0; // RS为0,表示写入指令
RW = 0; // RW为0,表示写入操作
P0 = com; // 将指令写入P0口
EN = 1; // 使能
delay(10); // 延时
EN = 0; // 失能
}
void write_data(uchar dat) // 写入数据
{
RS = 1; // RS为1,表示写入数据
RW = 0; // RW为0,表示写入操作
P0 = dat; // 将数据写入P0口
EN = 1; // 使能
delay(10); // 延时
EN = 0; // 失能
}
void init_lcd() // 初始化LCD
{
write_com(0x38); // 8位数据总线,2行显示,5x7点阵字符
write_com(0x0c); // 显示开,光标关,光标位置不变
write_com(0x06); // 光标右移,字符不移
write_com(0x01); // 清屏
}
void main()
{
init_lcd(); // 初始化LCD
while(1)
{
write_com(0x80); // 设置显示位置为第一行第一列
write_data('H'); // 在第一行第一列显示'H'
write_data('e'); // 在第一行第二列显示'e'
write_data('l'); // 在第一行第三列显示'l'
write_data('l'); // 在第一行第四列显示'l'
write_data('o'); // 在第一行第五列显示'o'
write_com(0xc0); // 设置显示位置为第二行第一列
write_data('W'); // 在第二行第一列显示'W'
write_data('o'); // 在第二行第二列显示'o'
write_data('r'); // 在第二行第三列显示'r'
write_data('l'); // 在第二行第四列显示'l'
write_data('d'); // 在第二行第五列显示'd'
delay(1000); // 延时1s
write_com(0x18); // 移动光标,使得第一行向左移动一格
}
}
```
以上代码实现了在LCD1602上显示"Hello World"和"World",并且每隔1秒钟让第一行向左移动一格,实现了滚动显示的效果。
阅读全文