#include <reg52.h> // 包含8051寄存器的头文件
// 定义液晶屏的指令和数据寄存器地址
#define LCD_RS 0x38
#define LCD_RW 0x39
#define LCD_E 0x3A
#define LCD_DATA 0x3B
// 定义中文字符常量数组
unsigned char Chinese[] = {
0x38, 0x0C, 0x06, 0x01, 0x81, 0x41, 0x81, 0x41, 0x81, 0x41, 0x81, 0x41, 0x81, 0x41, 0x81, 0x41,
0x81, 0x41, 0x81, 0x41, 0x81, 0x41, 0x81, 0x41, 0x81, 0x41, 0x81, 0x41, 0x81, 0x41, 0x81, 0x41,
// ... 中文字符常量数组继续 ...
};
// 定义英文字符常量数组
unsigned char English[] = {
// ... 英文字符常量数组继续 ...
};
void displayChinese(unsigned char* data) {
unsigned char i;
for (i = 0; i < sizeof(Chinese); i++) {
SBUF = data[i]; // 将数据写入串口缓冲区
while (!TI); // 等待串口发送完成标志位TI置位
TI = 0; // 清零TI标志位
}
}
void displayEnglish(unsigned char* data) {
unsigned char i;
for (i = 0; i < sizeof(English); i++) {
SBUF = data[i]; // 将数据写入串口缓冲区
while (!TI); // 等待串口发送完成标志位TI置位
TI = 0; // 清零TI标志位
}
}
void main() {
unsigned char i;
unsigned char* data;
// 中文显示循环
for (i = 0; i < sizeof(Chinese); i++) {
data = Chinese + i; // 数据指针指向中文字符常量数组下标i处元素
displayChinese(data); // 显示中文字符
delay(5); // 延时一段时间,以实现滚动效果
}
// ... 中文显示循环继续 ...
// ... 英文字符显示、滚动等操作类似,不再赘述 ...
while (1); // 让程序一直循环执行下去,防止程序退出
}