写出使用51单片机时当输入11位数字后lcd清屏的代码
时间: 2024-03-17 21:43:30 浏览: 14
以下是使用51单片机,当输入11位数字后LCD清屏的代码示例:
```
#include <reg52.h>
#define LCD_DB P0 // 定义LCD1602数据总线端口
sbit RS = P2^0; // 定义LCD1602 RS端口
sbit EN = P2^1; // 定义LCD1602 EN端口
void LcdInit(); // LCD1602初始化函数
void LcdWriteCmd(unsigned char cmd); // LCD1602写入指令函数
void LcdWriteData(unsigned char dat); // LCD1602写入数据函数
void LcdClear(); // LCD1602清屏函数
void main() {
LcdInit(); // 初始化LCD1602
while(1) {
unsigned char input[12] = {0}; // 定义一个字符数组,用于存储串口输入的数字
unsigned char i = 0; // 定义计数器变量i
while(i < 11) { // 当输入数字不足11位时
while(!RI); // 等待串口接收数据
input[i] = SBUF; // 读取串口接收的数据
RI = 0; // 重置串口接收标志位
if(input[i] >= '0' && input[i] <= '9') { // 如果是数字
i++; // 计数器加1
}
}
LcdClear(); // 清屏
}
}
void LcdInit() {
LcdWriteCmd(0x38); // 16*2显示,5*7点阵,8位数据接口
LcdWriteCmd(0x0c); // 显示开,不显示光标,不闪烁
LcdWriteCmd(0x06); // 光标右移,字符不移动
LcdWriteCmd(0x01); // 清屏
}
void LcdWriteCmd(unsigned char cmd) {
RS = 0; // RS置0,选择指令寄存器
LCD_DB = cmd; // 将指令写入数据总线
EN = 1; // 使能,上升沿写入指令
EN = 0;
}
void LcdWriteData(unsigned char dat) {
RS = 1; // RS置1,选择数据寄存器
LCD_DB = dat; // 将数据写入数据总线
EN = 1; // 使能,上升沿写入数据
EN = 0;
}
void LcdClear() {
LcdWriteCmd(0x01); // 清屏指令
}
```
上述代码中,使用了51单片机的串口通信模块来读取串口输入的数字,并使用LCD1602的8位数据接口连接单片机。在主函数中,先初始化LCD1602,然后进入循环,不断接收串口输入的数字,直到输入的数字达到11位时,调用LcdClear()函数清除显示屏上的所有字符。LcdInit()函数用于初始化LCD1602,LcdWriteCmd()和LcdWriteData()函数用于向LCD1602写入指令和数据,LcdClear()函数用于清屏。