7126|5

3

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

基于STM8/32的LCD GB2312点阵汉字显示 [复制链接]

本方案主控采用STM8S207C8T61.7128*64LCD显示屏,LCD驱动芯片采用UC1701(可兼容ST7565),字库显示采用高通GT20L16S1Y字库芯片, 以实现LCD界面上的显示。详细资料及代码可查看附件。
以下分别是STM8S207C8T6UC1701GT20L16S1Y在原理图中的模块电路。
原理图是依据datasheet中的阐述所绘制,其中主控电路是使用了stm8s207c8t6芯片绘制的最小系统,显示屏部分是根据设置BM0BM1来选择总线模式绘制的电路。这里我使用了SPI总线模式。而字库芯片本身就是SPI总线模式通信,直接根据规格书的电路例子使用即可。完成了电路部分,知道了总线模式,再结合数据手册就可以对改设备编写程序代码了。首先是LCD液晶屏的驱动,要液晶屏显示你想要的数据,主要是LCD初始化成功,下面是LCD初始化程序,根据指令列表编写的程序代码:
  1. void Lcd_Init(void)
  2. {
  3.   Lcd_Reset();
  4.   Delay(10);
  5.   LcdWriteCmd(0xFA);
  6.   LcdWriteCmd(0x92);
  7.   LcdWriteCmd(0xA1);//Set SEG Direction
  8.   LcdWriteCmd(0xC8);//Set COM Direction
  9.   LcdWriteCmd(0xA2);//Set LCD Bias Ratio      
  10.   LcdWriteCmd(0x23);//Set Vlcd Resistor Ratio
  11.   Delay(10);
  12.   LcdWriteCmd(0x81);//Set Electronic Volume
  13.   LcdWriteCmd(0x3A);//Set Electronic Volume  
  14.   Delay(10);
  15.   LcdWriteCmd(0x2F);//set boost
  16.   LcdWriteCmd(0xAF);//Set Display Enable
  17.   LcdWriteCmd(0x40);//Set Scroll Line
  18.   LcdWriteCmd(0xE0);//Set Cursor Update Mode
  19. }
复制代码
初始化显示屏之前必须对引脚的模式进行相对应的配置
  1. void GPIOConfiguration(void)
  2. {  
  3.   /* 显示屏配置引脚模式 */
  4.   GPIO_Init(GPIOE, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);  //PE0高速推挽输出低电平[SDA]
  5.   GPIO_Init(GPIOE, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST);  //PE1高速推挽输出低电平[SCLK]
  6.   GPIO_Init(GPIOC, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST);  //PC1高速推挽输出低电平[CS0]
  7.   GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_FAST); //PC2高速推挽输出高电平[RET]
  8.   GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);  //PC3高速推挽输出低电平[CD]
  9.       
  10.   /* GT20L16S1Y 引脚配置 */
  11.   GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);  //高速推挽输出低电平[SCLK]
  12.   GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);  //高速推挽输出低电平[CS]
  13.   GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);  //高速推挽输出低电平[SI]
  14.   GPIO_Init(GPIOD, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);      //上拉输入[SO]
  15.   
  16.   /* 按键引脚配置上拉输入模式 */
  17.   GPIO_Init(GPIOE, GPIO_PIN_5, GPIO_MODE_IN_PU_NO_IT);
  18.   GPIO_Init(GPIOE, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT);
  19.   GPIO_Init(GPIOE, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);  
  20. }
复制代码
显示驱动成功后则接着是对字库芯片的文字数据获取进行编程调试,以下是获取GB2312文字的函数代码。
  1. void S1Y_gt16_GetData (u8 MSB,u8 LSB,u8 *S1YDZ_Data)
  2. {
  3.   u32 temp=(MSB-0xB0)*94+LSB-0xA1;
  4.   u32 BaseAdd=0,Address;
  5.   if(MSB == 0xA9 && LSB >=0xA1)
  6.      Address = (282 + (LSB - 0xA1))*32+BaseAdd;
  7.   else if(MSB >=0xA1 && MSB <= 0xA3 && LSB >=0xA1)
  8.          Address =( (MSB - 0xA1) * 94 + (LSB - 0xA1))*32+ BaseAdd;  
  9.   
  10.   else if(MSB >=0xB0 && MSB <= 0xF7 && LSB >=0xA1)
  11.           Address = (846+temp)*32+ BaseAdd;
  12.   S1Y_rdat_bat(Address,32,S1YDZ_Data);
  13. }
复制代码
PCB实物图
实际效果图
以下有三个界面,分别是门禁显示,行驶记录仪和一个图形页面。文字显示采用GT20L16S1Y字库芯片,这款芯片包含最常用的GB2312汉字,字型符合国家标准。
门禁界面中的数字采用字库芯片内的24点阵不等宽时钟体字库。
图形LOGO可存储至字库芯片中的64K可擦写空间。







下载资料.rar

6.54 MB, 下载次数: 2015

此帖出自stm32/stm8论坛

最新回复

虽然很小的屏,但是挺精致的   详情 回复 发表于 2019-9-18 13:28
点赞 关注(1)
 

回复
举报

466

帖子

0

TA的资源

版主

沙发
 
GT20L16挺方便啊
此帖出自stm32/stm8论坛
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
作为一个刚入门的小白,谢谢楼主分享
此帖出自stm32/stm8论坛
 
 

回复

137

帖子

0

TA的资源

一粒金砂(中级)

4
 
基于STM8/32的LCD GB2312点阵汉字显示,很好
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 

此帖出自stm32/stm8论坛
 
 
 

回复

291

帖子

0

TA的资源

一粒金砂(高级)

6
 

虽然很小的屏,但是挺精致的

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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