12864有字库不用字库直接用字模显示汉字,基于51和C语言如何实现
时间: 2024-03-26 18:34:56 浏览: 18
要在基于51单片机和C语言的12864液晶显示屏上显示汉字,可以采用以下步骤:
1. 创建汉字字模。使用字模制作工具创建汉字的字模,将其保存为二进制文件。
2. 将字模文件存储到单片机中。使用编程器将字模文件烧录到单片机的存储器中。
3. 编写C语言程序。使用C语言编写程序,读取字模文件,将汉字像素点的状态写入到12864液晶显示屏的对应位置上。
以下是示例代码:
```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS = P2^0; // 连接到12864液晶屏的RS引脚
sbit LCD_RW = P2^1; // 连接到12864液晶屏的RW引脚
sbit LCD_EN = P2^2; // 连接到12864液晶屏的EN引脚
void delay_ms(uint ms)
{
uint i;
while (ms--)
{
for (i = 0; i < 120; i++);
}
}
void LCD_WriteCmd(uchar cmd)
{
LCD_RS = 0; // 选择命令寄存器
LCD_RW = 0; // 写入模式
LCD_EN = 1; // 使能
P0 = cmd; // 写入命令
_nop_(); // 等待一段时间
LCD_EN = 0; // 禁止
}
void LCD_WriteData(uchar dat)
{
LCD_RS = 1; // 选择数据寄存器
LCD_RW = 0; // 写入模式
LCD_EN = 1; // 使能
P0 = dat; // 写入数据
_nop_(); // 等待一段时间
LCD_EN = 0; // 禁止
}
void LCD_Init()
{
LCD_WriteCmd(0x30); // 初始化
delay_ms(5);
LCD_WriteCmd(0x0c); // 开启显示,光标关闭
LCD_WriteCmd(0x01); // 清屏
}
void LCD_ShowChar(uchar x, uchar y, uchar ch)
{
uchar i, j;
uchar *p = (uchar *)(0x8000 + ch * 16); // 读取字模文件
LCD_WriteCmd(0x34); // 拓展指令集,选择扩充指令集
LCD_WriteCmd(0x30); // 拓展指令集,选择扩充指令集
LCD_WriteCmd(0x80 + x); // 设置X坐标
LCD_WriteCmd(0x40 + y); // 设置Y坐标
for (i = 0; i < 16; i++)
{
j = *p++;
LCD_WriteData(j);
}
LCD_WriteCmd(0x36); // 拓展指令集,关闭扩充指令集
}
void main()
{
LCD_Init(); // LCD初始化
LCD_ShowChar(0, 0, 0); // 显示第一个汉字
while (1);
}
```
需要注意的是,汉字字模文件需要使用字模制作工具手动创建,并且每个汉字需要占用16个字节的存储空间。