① 用51单片机无字库的12864显示汉字怎么办
网络上下一个汉字取模软件,设置好汉字取模方式,输入汉字,得到字模数据(数组),将数组编入程序,按照取模设置的方式写显示输出函数,而后就顺理成章了,这些字模数据数组就是程序内建的字库数据,而对于待显示的汉字的提取方法,需要根据数组的结构设计,如果数组做成普通的数组模式,则应该按照数组顺序进行调用,如果数组做成结构体模式,则可以如同有字库的模块一样,通过字符串调用。
② 单片机控制320240图形点阵液晶屏 显示汉字问题
您好,此模块是由深圳市卓立恩科技公司研发的新型液晶,主控芯片是RA8806,此芯片功能十分强大,不仅自带中文字库,还自带电阻式触摸驱动功能,非常适合广大单片机爱好者学习编程,废话不多说,现在来介绍这款液晶显示屏的点亮.
芯片资料见附件(只有英文的),首先我们应该知道怎么样去看液晶驱动IC的资料,重点在哪里?我的经验是1.读写时序,这个要小心,一般液晶控制芯片的时序分为8080,6800,根据规格书写出读写子程序,我们在写液晶程序时有时候没有显示,程序检查半天发现是读写子程序错误.2.数据和命令指令写入规则.3.显示存储器的写入规则.4.指令内容和作用,要点亮屏一般只要用到几个关键的指令就好了.
③ 电脑串口发送中文到单片机,单片机通过带字库的12864显示出来,如何做到
电脑和单片机的串口都无法收发任何文字,它们只能收发高低电平(高电平为1,低电平为0),当收到8位高低电平后便可以组成了一个字节,显示一个汉字要2个字节。当单片机正确地接收到2个字节后,通过硬件端口将数据写入12864,便可以显示出来。以上只能简单说明一下,实际实用时还要考虑到12864的硬件接口、和软件协议等等。
如果你会单片机,我建议你这么做:先写一个程序,用单片机显示一句固定的文字,显示的内容从ROM里面读取。然后再调试通信,当通信成功后将接收到的数据复制到显示所占的地址上便可,这样可以节省很多时间。
另外我可以给你提供一些例程,要给分才好,呵呵
④ 单片机点阵汉字显示需要用汉字取模软件吗
通常,用汉字取模软件生成工程所需所有汉字点阵信息。也可利用字库芯片,根据汉字内码计算字模地址,并从字库芯片中导出相关汉字的点阵信息。前者容易简单,适合汉字信息固定的场合应用。后者灵活,适合任意标准字库,方便接收汉字内码直接生成画面。根据界面要求,向点阵图形缓冲区依次写入相关汉字信息,这个步骤是相同的。
注意选择字库芯片时,同样需要考虑字模的横向和纵向取模要求。写画面缓冲程序要结合硬件电路的左右高位特征,以及共阴共阳数据。
⑤ 怎么在stm32f429 单片机显示中文文字
不管何种 单片机显示中文文字,首先要看液晶屏是否自带字库
如果带字库只管送中文文字的Uinicode编码就行(编译软件会自选查找)
如果不带字库,就要制作或复制字模(库)文件,显示时计算好要显示的汉字在字库中的位置,读出该字字模后,逐位判断是1还是0,从而决定是画黑点还是白点(当然彩屏还可以是多种颜色)这些在野火和正点原子的STM32教程中都有
⑥ 我用的是带字库的LCD,请问如何用单片机程序显示汉字我用过的是12864液晶,怎样让它显示五行。
我这有代码,但不知道与你的12864液晶是不是一个型号
#include "lcd_12864.h"
void LCD_Delayt(unsigned int dtime) {
unsigned int itemp;
for(itemp=0;itemp<dtime;itemp++);
}
void LCD_Init(void) {
SN74LVC_DIR_DIR |= SN74LVC_DIR;
SN74LVC_DIR_LO;
//SN74LVC_OE_DIR |= SN74LVC_OE;
//SN74LVC_OE_LO;
LCD_PSB_DIR |= LCD_PSB; //PSB -> 并行模式
LCD_PSB_HI;
LCD_RST_DIR |= LCD_RST; //RST -> 复位输出
LCD_RST_LO; //复位状态
LCD_Delayt(1000);
LCD_DI_DIR |= LCD_DI;
LCD_DI_LO;
LCD_RW_DIR |= LCD_RW;
LCD_RW_LO;
LCD_EN_DIR |= LCD_EN;
LCD_EN_LO;
LCD_Delayt(1000);
LCD_RST_HI; //正常状态
LCD_WriteComm(0x30);
LCD_WriteComm(0x0c);
LCD_WriteComm(0x01);
LCD_WriteComm(0x02);
LCD_WriteComm(0x06);
}
void LCD_CheckBusy(void) {
unsigned char Flag;
LCD_DI_LO;
LCD_RW_HI;
do {
LCD_EN_HI;
LCD_DATA_DIR = 0x00;
SN74LVC_DIR_HI;
_NOP();
Flag = LCD_DATA_IN;
_NOP();
SN74LVC_DIR_LO;
LCD_DATA_DIR = 0xFF;
LCD_EN_LO;
} while(Flag & 0x80);
}
void LCD_WriteComm(unsigned char wdata) {
LCD_CheckBusy();
LCD_DI_LO;
LCD_RW_LO;
LCD_EN_HI;
LCD_DATA_OUT = wdata;
LCD_EN_LO;
}
void LCD_WriteByte(unsigned char wdata) {
LCD_CheckBusy();
LCD_DI_HI;
LCD_RW_LO;
LCD_EN_HI;
LCD_DATA_OUT = wdata;
LCD_EN_LO;
}
void LCD_SetXY(unsigned char X, unsigned char Y) {
switch(Y) {
case 1:
LCD_WriteComm(0x7F + X);
break;
case 2:
LCD_WriteComm(0x8F + X);
break;
case 3:
LCD_WriteComm(0x87 + X);
break;
case 4:
LCD_WriteComm(0x97 + X);
}
}
void LCD_WriteDEC(unsigned char X, unsigned char Y, unsigned char wdata) {
LCD_SetXY(X,Y);
LCD_WriteByte(wdata);
}
void LCD_WriteString(unsigned char X, unsigned char Y, unsigned char *String) {
unsigned char temp;
LCD_SetXY(X,Y);
temp = *String;
while(temp!=0) {
LCD_WriteByte(temp);
temp = *(++String);
}
}
void Clr_Screen(void)
{
LCD_WriteComm(0x00);
}