单片机中不带字库LCD液晶屏显示少量汉字

发布者:快乐的天使最新更新时间:2020-09-23 来源: eefocus关键字:单片机  不带字库  LCD液晶屏 手机看文章 扫描二维码
随时随地手机看文章

单片机中不带字库LCD液晶屏如何显示少量汉字,一般显示汉字的方法有1.使用带字库的LCD屏,2.通过SD卡或者外挂spi flash存中文字库,3.直接将需要的汉字取模存入mcu的flash中。


第一种方式最方便,带字库的液晶屏价格稍贵,第二种方式电路复杂价格也不便宜,第三种方法可以存储少量必要的汉字,经济实用。将汉字字模数据存储到大数组中,通过偏移值来取出需要的汉字显示。



typedef struct _GB16  // 汉字字模数据结构

{

  char Index[2];  // 汉字内码索引

  char Msk[32];             // 点阵码数据

}GB16_Typedef;



const GB16_Typedef GB16x16[] = {//创建字库,阴码,顺向,逐行式取模


  {"天",0x00,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,

        0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,

        0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,

        0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06},


  {"地",0x10,0x20,0x10,0x20,0x10,0x20,0x11,0x20,

        0x11,0x2C,0xFD,0x34,0x11,0x64,0x13,0xA4,

        0x11,0x24,0x11,0x34,0x11,0x28,0x1D,0x22,

        0xE1,0x22,0x41,0x02,0x00,0xFE,0x00,0x00},


  {"不",0x00,0x00,0x7F,0xFC,0x00,0x80,0x00,0x80,

        0x01,0x00,0x01,0x00,0x03,0x40,0x05,0x20,

        0x09,0x10,0x11,0x08,0x21,0x04,0x41,0x04,

        0x81,0x00,0x01,0x00,0x01,0x00,0x01,0x00},


  {"仁",0x08,0x00,0x08,0x00,0x08,0x00,0x13,0xFC,

        0x10,0x00,0x30,0x00,0x30,0x00,0x50,0x00,

        0x90,0x00,0x10,0x00,0x10,0x00,0x10,0x00,

        0x17,0xFE,0x10,0x00,0x10,0x00,0x10,0x00},


}


/*

其中定义的汉字结构体元素中Index[2]存放汉字,而Msk用于存放点阵码。

具体程序如下:

*/


void show_chinese(uint16_t x, uint16_t y, uint8_t *pstr, uint16_t pointColor, uint16_t backColor)

{

  

  uint8_t bit_cnt, byte_cnt, wordNum;

  uint16_t color, word_index;

  const GB16_Typedef* p_tab;

  

  p_tab = GB16x16; 

  wordNum = sizeof(GB24x24) / sizeof(GB24_Typedef);//汉字的个数


  while(*pstr != '')

  {

    for(word_index=0; word_index    {

      if(*pstr==p_tab[word_index].Index[0] && *(pstr+1)==p_tab[word_index].Index[1])

      { 

        tft_set_window(x, y, x+15, y+15);//设置要操作的窗口范围

         

        for(byte_cnt=0; byte_cnt<32; byte_cnt++)

        {

          uint8_t color = p_tab[word_index].Msk[byte_cnt];

          for (bit_cnt=0; bit_cnt<8; bit_cnt++) 

          {

            if((color&0x80) == 0x80)

            {

              tft_wrdat(pointColor);//LCD写数据

            } 

            else

            {

              tft_wrdat(backColor);//LCD写数据

            } 

            color = color<<1;

          }

         

        }

        pstr+=2;

        x += 16;

        if(x > 225)   

        {

          x = 0;

          y += 16; 

        }

      } 

    }

  }

}




int main()

  TFT_Init();  //TFT彩屏初始化 

  LED_Init();  //LED初始化

  tft_clear_screen(BLACK); //清屏

  show_chinese(6, 20, "天地不仁", MAGENTA, YELLOW);//YELLOW

  

  while(1)

  { 

    KeyTask();//按键扫描

  } 


}


关键字:单片机  不带字库  LCD液晶屏 引用地址:单片机中不带字库LCD液晶屏显示少量汉字

上一篇:IAR配置ICF到项目的实现方法
下一篇:IAR FOR STM8S 错误 An error occurred while retrieving GDI features: gdi-error

推荐阅读最新更新时间:2024-11-17 14:11

基于89C52单片机的微电压信号源设计
1 设计原理   被测设备要求提供0.5~50mV的可调直流模拟电压,分辨率达10微伏,精度达±0.01mV,温度跟随性要好,即要求提供高精度的微电压信号。   如果采用单片机通过D/A转换器输出所需电压,输出范围0~5V,LSB=0.01mV,则D/A转换器的位数:   X=lg2(5000/0.01)≈19(Bit)   考虑D/A转换器的量化误差、温漂、噪声和其他各种误差的影响,至少选择21Bit以上的D/A转换器,但目前尚无适合本系统设计的D/A转换器。因此,在考虑系统分辨率和输出电压范围的前提下,采用如下方案:先将小于50 mV的电压数值扩大100倍,再用 16Bit D/A转换器输出,然后通过200倍的高精密分
[单片机]
基于89C52<font color='red'>单片机</font>的微电压信号源设计
用pic16f630 MCU实现的315MHZ无线软件解码和编码.代替PT2272和pt2262
#include pic.h //#include pic16630.h #define uchar unsigned char #define uint unsigned int #define PORTAIT(adr,bit) ((unsigned)(&adr)*8+(bit)) ///絕對尋址位操作指令 #define PORTCIT(adr,bit)((unsigned)(&adr)*8+(bit)) ///絕對尋址位操作指令 static bit KEY1 @ PORTAIT(PORTA,0); static bit KEY2 @ PORTAIT(PORTA,1); static b
[单片机]
基于单片机的智能仪器监控平台设计应用
引言   工业燃烧过程所释放出的烟气是现代城市大气污染源,烟气检测是大气环境检测中必要的项目,它是确定重点污染源并对污染源进行检测和控制的基本手段。为了控制燃烧过程的燃烧空气比,提高燃烧效率,节约能源,减少大气污染,必须可靠地测量烟气中各种气体的含量。本文针对烟气分析,介绍了一种基于Intel单片机的智能仪器监控平台。   2 监控平台的硬件结构设计   硬件配置应针对分析检测器的不同组合方式可在各模块中选择,如该平台用于二组分分析时,则只接入两路的操作回路和信号回路,其他两路不接,由于硬件模块的独立特性,配合软件的系统参数设置功能,系统完全可以正常工作,未接入的回路对工作回路不产生影响。监控平台的硬件结构如图1所示。
[单片机]
基于<font color='red'>单片机</font>的智能仪器监控平台设计应用
德州仪器收购Luminary Micro 强化微控制器业务
美国芯片厂商Texas Instruments近日宣布收购微控制器供应商 Luminary Micro Inc.,惟收购的价码条件并未公佈。 德仪先进嵌入式(ACE)部门副总Brian Crutcher表示,收购 Luminary Micro 之后,将可补强公司微控制器的产品组合,并可趁此进军主流 32 位元微控制器市场。 交易完成后,Luminary Micro将隶属于TI先进嵌入式控制器部门之下,总部仍将设于德州奥斯汀,全名改为TI AEC Austin。 Luminary Micro前执行长 Jim Reinhart 表示,依媒合程度来说,业界应没有互补性更强的搭配,其Stellaris 系列微
[单片机]
基于单片机的系统外扩展的存贮器
一、实验目的 1、学习片外存贮器扩展方法。 2、学习数据存贮器不同的读写方法。 3、学习片外程序存贮器的读方法。 二、实验内容 1.实验原理图: 2、实验内容 (1)使用一片2764EPROM,作为片外扩展的程序存贮器,对其进行读。 (2)使用一片6264RAM,作为片外扩展的数据存贮器,对其进行读写(使用键盘监控命令和程序运行两种方法)。 3、实验说明 (1)在使用键盘监控命令读片外扩展的程序存贮器2764中内容时,由于本系统中该程序存贮器作为用户目标系统的程序存贮器,因此DVCC系统必须处于仿真2状态,即“H.....”态,用MEM键即可读出。 (2)在使用键盘监控命令读写片外扩展的数据存贮器
[单片机]
基于<font color='red'>单片机</font>的系统外扩展的存贮器
51单片机动态数码管
主要区分位选和段选 段选数据 unsigned char code DIG_CODE = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码 位选数据 0xfe,0xfd,0xfb,0xf7, 1111_1110 1111_1101 1111_1011 1111_0111 0xef,0xdf,0xbf,0x7f
[单片机]
51<font color='red'>单片机</font>动态数码管
基于51单片机的DHT11温湿度控制系统
单片机驱动DHT11获取环境温湿度并在1602显示,同时可以调整温湿度的各自的上下限,有提示降温除湿功能。程序实测可用 单片机源程序如下: //http://www.51hei.com/bbs/dpj-51190-1.html #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */ typedef signed cha
[单片机]
基于51<font color='red'>单片机</font>的DHT11温湿度控制系统
你了解GD32 MCU上下电要求吗
你了解GD32 MCU的上下电要求吗?MCU的上下电对于系统的稳定运行非常重要。 以GD32F30X为例,上电/掉电复位波形如如下图所示。 上电过程中,VDD/VDDA电压上电爬坡,当电压高于VPOR(上电复位电压)MCU开始启动,之后内部逻辑电路延迟2ms后NRST引脚拉高,MCU正式启动,此为上电过程。上电过程中,对于上电爬坡斜率没有要求,对于电源稳定性有要求,上电过程中尽量避免电源波动以及突然的跌落,比如上电到2.6V以后再次跌落到POR附近,但没有跌破PDR,则有可能造成MCU加载代码异常进而导致启动失败。 掉电过程中,当电压低于VPDR后,NRST拉低,MCU完成掉电。掉电电压需要跌落到VPDR以下,尽量跌落到0V
[单片机]
你了解GD32 <font color='red'>MCU</font>上下电要求吗
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved