logo资料库

段码式LCD屏幕驱动方法.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
段码式LCD屏幕驱动方法
段码式 LCD 屏幕驱动方法 (2015-02-09 11:02:08) 转载▼ 标签: it 教育 分类: 电子硬件 大家平常在生活中见到最多的就是段码是液晶屏幕了,他有普通的数码管的特 征,又有点阵 LCD 的特征,固定的图形,省成本而有好看,那么,我们今天来 一起玩玩! 首先,大家不要以为用单片机来驱动就以为断码屏是直流驱动 的,其实,段码屏是交流驱动,什么是交流?矩形波,正弦波等。大家可能会经 常用驱动芯片来玩,例 如 HT1621 等,但是有些段式屏 IO 口比较少,或者说 IO 口充足的情况下,也懒 得在去写控制器的驱动了。但是,IO 模拟驱动段式液晶有一个前提条件,就是 IO 必须是三态, 为什么?下面我们一起细细道来: 第一步,段码式液晶屏的重要参数:工作电压, 占空比, 偏压比。这三 个参数非常重要,必须都要满足。 第二步,驱动方式:根据 LCD 的驱动原理可知,LCD 像素点上只能加上 AC 电压,LCD 显示器的对比度由 COM 脚上的电压值减去 SEG 脚上的电压值 决定,当这个电压 差大于 LCD 的饱和电压就能打开像素点,小于 LCD 阈值电压就能关闭像素点, LCD 型 MCU 已经由内建的 LCD 驱动电路自动产生 LCD 驱动信号,因此只要 I/O 口能仿真输 出该驱动信号,就能完成 LCD 的驱动。 段码式液晶屏幕主要有两种引脚,COM,SEG,跟数码管很像,但是,压 差必须是交替变化,例如第一时刻是正向的 3V,那么第二时刻必须是反向的 3V, 注意一点,如果 给段码式液晶屏通直流电,不用多久屏幕就会废了,所以千万注意。下面我们来 考虑如何模拟 COM 口的波形,以 1/4D,1/2B 为例子:
只要模拟出以上波形,你的液晶屏已经成功了一大半了。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. void display_sub(u8 y) //lcd display subroutine { switch(y) //4*com,VDD and -VDD LCD display,so 8 timebase interrupt one sacn period { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: {com1_output_high();break;} {com1_output_low();break;} {com2_output_high();break;} {com2_output_low();break;} {com3_output_high();break;} {com3_output_low();break;} {com4_output_high();break;}
{com4_output_low();break;} default: {LCDPluseStep=0; get_display_code(AD_Value,KeyScanRetVal); break;} } 20. 21. 22. 23. 24. 25. 26. } 复制代码 入上图代码所示,定时 2ms,让 4 个 COM 交替输出波形即可。 同时我们要注意,在 COM 输出高的时候,如果要屏幕亮,SEG 就要输出低,那 么在 COM 输出低的时候,SEG 就要输出高,保证 COM 和 SEG 的压差大于 1/2B 工作电压就可以显示了 下面我们看其中一个 com 口输出时的函数 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. static void seg1_output(void) //seg1 output subroutine { if(1 == (LCDPluseStep%2)) //com_pulse is odd,com output high (VDD) { } else { } if(0 == (DisplayCode1&0x10)) {SEG1=1;} else {SEG1=0;} if(0 == (DisplayCode1&0x10)) {SEG1=0;} else {SEG1=1;} //com_pulse is even,com output low (VSS) 17. } 复制代码
分享到:
收藏