完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`
PF2AxxH_Program.rar
(81.52 KB, 下载次数: 1
)
LCD资料.rar
(4.42 MB, 下载次数: 2
)
我对LCD液晶驱动还是朦朦胧胧的时候,遇上了这个刚硬的task。 所以,写下这个帖子,为后面的同学填坑! 说一下遇到问题的时候啊,不应该张口就问(我感觉我有时候就是,自己不动脑): 首先,你要知道自己的问题在哪儿,把问题罗列清楚,就已经解决一半了。 其次,查资料,百度,Google,必应等搜索引擎;发烧友,21IC,51黑,CSDN,开源电子网,野火电子论坛等各种论坛。 最后,运用官方手册,咨询(液晶)厂家官方,配合程序代码的配置,看了又看,翻译之后再翻译,捋一捋清楚;示波器、程序调试仿真,来了又来!我敢保证问题就解决了。 进入正题: 1、状态描述,LCD段码液晶屏幕驱动,我写这个驱动的时候,还不太清楚原理,就网上找了一下,大楷了解了,就是用方波信号驱动,如下图: 2、波形分析,3channel和4channel是COM信号,2channel是SEG信号,我是点亮所有段的程序,所以这里呢,SEG信号对应的两个COM也就是2段都会亮,在段码的任意一个高(低)电平,2个COM都 会有与之对应的相反电平且各占一半,这里又要插入一份液晶屏厂家提供的液晶资料,如下图: 这是由2个COM口,25个段码组成的屏,参数的话主要就是看驱动模式和电压,图上的5V电压有误(应该是3.3V),可以看到占空比是1/2,偏压也是1/2, 然后驱动频率>128Hz,从波形中看出来我们的配置没有问题,其他的参数可以自行了解。这里再插入一张STM8的LCD_CR1寄存器的图: 初始化如下: void LCD_init(void) { /* 系统时钟HSI=16MHz , LSI=38KHz 1、LSI clock used as RTC clock source 2、RTC clock source / 2 */ CLK_CRTCR = 0x24;//RTC_CLK = 38KHz/2= 19KHz CLK_PCKENR2 = 0x08;//开启LCD时钟 /* 19KHz = RTCCLK / 2 to LCD 19KHz = (Halt) LCDCLK */ LCD_FRQ=0x10;//这里 2PS[3:0]=2^1=2 ; DIV[3:0]+16=? 1.8ms*4=5.2 192.3Hz 7ms 142.86Hz LCD_CR1=0x03;// 1/2duty 1/2bias 0x03 /* 高驱动使能 该位永久启用低电阻分压器。 内阻高的显示器可能 需要更长的驱动时间才能获得令人满意的对比度,因此如果存在 没有强大的功率约束。 */ LCD_CR2=0x1E;//PON调节对比度 将高性能驱动打开就OK LCD_CR3=0x03;//1-phase period dead time LCD_CR4=0x00;// //Configures the LCD Port Mask. LCD_PM0=0xFF; LCD_PM1=0xFF; LCD_PM2=0xFF; LCD_PM3=0x01; LCD_PM4=0x00; LCD_PM5=0x00; LCD_CR3|=0x40;//LCD enable //点亮所有的段 /*LCD_RAM0=0xff;LCD_RAM1=0xff;LCD_RAM2=0xff;LCD_RAM3=0xff; LCD_RAM4=0xff;LCD_RAM5=0xff;LCD_RAM6=0xff;LCD_RAM7=0xff; LCD_RAM8=0xff;LCD_RAM9=0xff;LCD_RAM10=0xff;LCD_RAM11=0xff; LCD_RAM12=0xff;LCD_RAM13=0xff;LCD_RAM14=0xff;LCD_RAM15=0xff; LCD_RAM16=0xff;LCD_RAM17=0xff;LCD_RAM18=0xff;LCD_RAM19=0xff; LCD_RAM20=0xff;LCD_RAM21=0xff; */ } 3、问题现象,我之前配置出来的现象是COM2端口的所有SEG段比COM1端口的所有SEG暗,应该是驱动能力不够! 后面打开LCD_CR2的bit4,就感觉好很多了,功能描述如下: High drive enable This bit permanently enables the low resistance divider. Displays with a high internal resistance may need longer drive time to achieve a satisfactory contrast, so the software can set the HD bit if there is 高驱动使能 该位永久启用低电阻分压器。 内阻高的显示器可能 需要更长的驱动时间才能获得令人满意的对比度,因此如果存在 没有强大的功率约束。
看起来整体暗了一点, 有点怀疑液晶屏内阻较大,单片机的驱动能力不够,but , it looks much better ,isn't? ~~~ 4、段码如何和显存地址对应起来 可以从手册中看出来STM8L152是高密度型器件,那么他就有8个COM,44个SEG,但是我这里呢,只用了2个COM,25个SEG,看网上说的用4个COM还是8个COM会有问题( 没有试过,不知道!) 那么液晶厂家给的PIN脚和COM脚对应的单片机引脚怎么和液晶的显示缓存地址对应起来,实现把数据写到缓存对应的SEG段就会亮呢? 我们的COM脚和SEG脚在STM8L152数据手册上已经给出了
我们就是对应这里的LCD_COMx和LCD_SEGx,然后再看一张显存表,一张SEGx段对应的COMx[y]口关系图和一张中高密度器件如果要用8个COM的控制寄存器LCD_CR4: |
|
相关推荐
|
|
我来评论一下!哈哈,调节液晶屏的鬼影和字淡的问题,主要是调节驱动电压,方法可以LCD_CR1和LCD_CR2,这两个寄=寄存器是调节偏压和对比度的;再不行去调节死区时间或者延时时间,方法是设置LCD_CR3。
|
|
|
|
|
|
拓展一下小知识,FSTN类型的屏可以看得穿,VA屏看不穿。所以在点亮背光灯的时候,FSTN屏不点亮任何段也可以看到背光颜色,但是VA的不可以,所以选择的时候根据应用场合决定。
|
|
|
|
|
|
好,很不错,好好学习下先,谢谢分享啊!
|
|
|
|
|
|
好,很不错,好好学习下先,谢谢分享啊!
|
|
|
|
|
|
好,很不错,好好学习下先,谢谢分享啊!
|
|
|
|
|
|
好,很不错,好好学习下先,谢谢分享啊!
|
|
|
|
|
|
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 14:56 , Processed in 0.583497 second(s), Total 51, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号