51单片机lcd12864显示图片代码怎么写
时间: 2023-07-29 22:12:24 浏览: 343
要在51单片机LCD12864液晶屏上显示图片,需要完成以下步骤:
1. 将图片转换为点阵数据
2. 定义点阵数据数组
3. 编写LCD12864液晶屏的初始化程序
4. 编写LCD12864液晶屏显示点阵数据的函数
5. 调用函数,在LCD12864液晶屏上显示图片
下面是一个简单的示例代码:
```
#include <reg51.h>
#include <intrins.h>
#define LCD12864_RS P2_0
#define LCD12864_RW P2_1
#define LCD12864_EN P2_2
#define LCD12864_CS1 P2_3
#define LCD12864_CS2 P2_4
#define LCD12864_RST P2_5
unsigned char code picture[] = { // 图片点阵数据
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
...
};
void delay(unsigned int t) { // 延时函数
while(t--);
}
void lcd12864_init() { // 初始化函数
LCD12864_RST = 0;
delay(100);
LCD12864_RST = 1;
delay(100);
LCD12864_RW = 0;
LCD12864_CS1 = 1;
LCD12864_CS2 = 1;
LCD12864_EN = 1;
delay(100);
LCD12864_EN = 0;
delay(100);
LCD12864_RS = 0;
LCD12864_RW = 0;
LCD12864_EN = 1;
P0 = 0x3f;
delay(100);
LCD12864_EN = 0;
delay(100);
LCD12864_EN = 1;
P0 = 0xc0;
delay(100);
LCD12864_EN = 0;
delay(100);
LCD12864_EN = 1;
P0 = 0x01;
delay(100);
LCD12864_EN = 0;
delay(100);
LCD12864_EN = 1;
P0 = 0x06;
delay(100);
LCD12864_EN = 0;
delay(100);
}
void lcd12864_show(unsigned char *p) { // 显示函数
unsigned int i, j;
for(i = 0; i < 8; i++) {
LCD12864_RS = 0;
LCD12864_RW = 0;
LCD12864_EN = 1;
if(i < 4) LCD12864_CS1 = 0;
else LCD12864_CS2 = 0;
P0 = 0xb8 + i;
delay(100);
LCD12864_EN = 0;
delay(100);
for(j = 0; j < 64; j++) {
LCD12864_RS = 1;
LCD12864_RW = 0;
LCD12864_EN = 1;
P0 = p[i * 64 + j];
delay(100);
LCD12864_EN = 0;
delay(100);
}
}
LCD12864_CS1 = 1;
LCD12864_CS2 = 1;
}
void main() {
lcd12864_init();
lcd12864_show(picture);
while(1);
}
```
注意,这只是一个简单的示例代码,实际应用中还需要根据具体的液晶屏型号和点阵数据格式进行相应的修改。另外,在实际使用中需要注意LCD12864液晶屏的电压和电流等参数,以免出现损坏或显示不正常的情况。
阅读全文