用C语言写出单片机AT89C52连接LCD12864显示中国这两个汉字的代码
时间: 2024-02-21 15:57:00 浏览: 21
以下是AT89C52单片机连接LCD12864显示“中国”汉字的代码:
```
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
// 定义LCD12864的引脚连接
sbit RS=P2^0; // RS
sbit RW=P2^1; // RW
sbit E=P2^2; // E
sbit PSB=P2^3; // PSB
sbit RST=P2^4; // RST
sbit LED=P2^5; // LED
// 定义汉字点阵数据
uchar code hanzi[]={
// '中'的点阵数据
0x00,0x00,0x0F,0xF8,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,
0x0F,0xF8,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x0F,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
// '国'的点阵数据
0x00,0x00,0x1F,0xF8,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,
0xFF,0xF8,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,
0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0xFF,0xF8,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
// 延时函数
void delay(uint i){
while(i--);
}
// 写命令到LCD12864
void write_cmd(uchar cmd){
RS=0; // 选择命令
RW=0; // 写入操作
E=1; // 使能
P0=cmd; // 写入命令
delay(5);
E=0; // 禁能
}
// 写数据到LCD12864
void write_data(uchar dat){
RS=1; // 选择数据
RW=0; // 写入操作
E=1; // 使能
P0=dat; // 写入数据
delay(5);
E=0; // 禁能
}
// 初始化LCD12864
void init_lcd(){
PSB=0; // 并行接口
RST=0; // 复位
delay(100);
RST=1; // 恢复
delay(100);
write_cmd(0x30); // 基本指令集
delay(5);
write_cmd(0x0C); // 显示开,光标关闭,闪烁关闭
delay(5);
write_cmd(0x01); // 清屏
delay(5);
}
// 显示汉字
void display_hanzi(uchar x, uchar y, uchar addr){
uchar i;
write_cmd(0x34); // 扩展指令集
delay(5);
write_cmd(0x30); // 扩展指令集
delay(5);
write_cmd(0x36); // 扩展指令集,扩大显示
delay(5);
write_cmd(0x80 | (x*16+addr)); // 设置显示位置
write_cmd(0x80 | y); // 设置显示位置
for(i=0;i<32;i++){
write_data(hanzi[i]); // 写入汉字点阵数据
}
write_cmd(0x30); // 恢复基本指令集
delay(5);
write_cmd(0x34); // 恢复基本指令集
delay(5);
}
// 主函数
void main(){
init_lcd(); // 初始化LCD12864
display_hanzi(0,0,0); // 在第一行显示“中”字
display_hanzi(0,1,0); // 在第二行显示“国”字
while(1);
}
```
需要注意的是,汉字点阵数据需要根据具体的字库制作方式进行修改。此外,程序中使用的是并行方式传输数据,如果需要使用串行方式传输数据,需要参考LCD12864的具体规格说明进行修改。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)