OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2927|回复: 1

LCD汉字显示

[复制链接]

41

主题

242

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2016-1-11
在线时间
132 小时
发表于 2018-5-2 15:17:37 | 显示全部楼层 |阅读模式
最近搞个一下汉字显示,虽然这样的文章很多,但这毕竟是自己写的意义不一样。本例程实用显示字数不多的情况,本例程是基于蓝桥杯嵌入式开发板。字模逆向取,话不多说上代码。
unsigned cha rconst hanzi[3][72]={{0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x10,0xE0,0x7F,0x0C,0x20,0x40,0x04,0x20,0x40,0x00,0xE0,0x7F,0x01,0x20,0x40,0x41,0x20,0x40,0x32,0x20,0x40,0x12,0xE0,0x7F,0x12,0x20,0x40,0x04,0x00,0x00,0x04,0xF8,0xFF,0x04,0x10,0x89,0x04,0x10,0x89,0x08,0x10,0x89,0x78,0x10,0x89,0x18,0x10,0x89,0x18,0x10,0x89,0x18,0x14,0x89,0x18,0xFE,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00},/*"温",0*/
{0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0C,0x00,0x08,0x0C,0x00,0xFC,0xFF,0x0F,0x80,0x40,0x08,0xC0,0x20,0x08,0x88,0x20,0x08,0xFC,0xFF,0x0F,0x80,0x20,0x08,0x80,0x20,0x08,0x80,0x3F,0x08,0x80,0x20,0x08,0x00,0x00,0x08,0xE0,0xFF,0x19,0x40,0x20,0x18,0x80,0x20,0x10,0x00,0x11,0x10,0x00,0x0A,0x10,0x00,0x0E,0x20,0xC0,0x31,0x20,0x7E,0xC0,0x40,0x08,0x00,0x07,0x00,0x00,0x00},/*"度",1*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x80,0x1F,0x12,0x68,0x30,0x12,0x18,0x60,0x12,0x18,0xC0,0x0C,0x08,0x80,0x00,0x08,0x80,0x01,0x00,0x80,0x01,0x00,0x80,0x01,0x00,0x80,0x01,0x00,0x80,0x01,0x00,0x80,0x01,0x00,0x80,0x00,0x00,0xC0,0x00,0x10,0xC0,0x00,0x20,0x60,0x00,0xC0,0x38,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};
void Show_Font(u16 x,u16 y)
{
        u16 y0=y;
        u16 x0=x;//保存原始坐标
       
        u32 index = 0, i = 0;
  u8 temp,m;
        for( m = 0 ; m < 3 ; m++ )//3个汉字
        {
                        for( index = 0; index < 72; index++ )//每个汉字72个数据  24*24的
            {
                                LCD_SetCursor(x, y);//设置光标
                                temp = hanzi[m][index];
                                LCD_WriteRAM_Prepare(); /* Prepare to write GRAM *///写入寄存器
                                for(i = 0; i < 8; i++)//8位一个
                                {
                                        if(temp&0x80)//按位读取
                                        {
                                                LCD_WriteRAM(Blue);//字体颜色
                                        }
                                        else
                                        {
                                                LCD_WriteRAM(White);//背景颜色  
                                        }
                                        temp<<=1;//位移   
                                        y++;//纵坐标加1 计数
                                        if((y-y0)==24)//24*24字体
                                        {
                                                y=y0;
                                                x++;
                                                break;
                                        }
                   }
           }
/////////////下面代码是改变下一个汉字的纵坐标沿着Y轴向上显示。        去掉下面汉字会沿着x轴显示
                  x = x0;
                  y0 = y-24;//
                  y = y0;
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2015-2-7
在线时间
4 小时
发表于 2019-2-22 19:05:12 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 19:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表