这是我毕业论文中的一小节,就是用DSP来驱动液晶,贴出来大家可以看看。有什么问题大家一起来讨论。
目前液晶主要分为:通用型段式液晶、通用型汉字图形点阵式液晶、通用型图形点阵式液晶。常说的LCD(liquid crystal display)为液晶显示屏,而嵌入式设计时为简化开发常用LCM(liquid crystal modul)液晶显示模块。LCM实际上包含LCD及显示控制芯片、RAM、ROM等,模块只对外提供相应接口,由外部提供电源和逻辑电平进行驱动。
根据显示波形和多个参数的要求,选用了北京青云创新公司生产的320×240的图形点阵式液晶模块,内含EPSON生产的SED1335驱动器,具有最大640×256的驱动能力。本文用Motorola公司<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />56F803和TI公司的TMS320F2812均实现了驱动,但由于二者结构型能上的不同,所以实现方法也不尽相同。下面结合SED1335驱动器适于嵌入式开发的优势,比较两款DSP在实现上的区别:
① SED1335有丰富的指令集,软件编程时先写入指令,再写入指令对应的参数,即可完成初始化设置或描点。所以接口也相应的分为数据和控制接口,特别注意的是要满足时序要求。
② 微处理器和液晶的接口可以采用直接访问或间接访问方式,不同的地方在于使用总线还是I/O口对液晶的数据、控制接口进行设置。由于56F803的I/O口资源不丰富,仅有的16个I/O还与地址、数据线复用。考虑系统扩展需要,其接口只能使用数据总线与数据引脚液晶相连,部分地址总线逻辑运算后与控制引脚相连的直接访问方式。而TMS320F2812有丰富的I/O口资源,所以采用全部用I/O引脚连接的间接访问方式,由软件控制时序。
③ SED1335外接10M晶振,可通过软件设置驱动器工作频率,所以可以和大部分单片机配合使用。但对DSP工作频率而言,液晶仍属于低速设备,需要解决时序上的配合问题。56F803采用将总线设成最长的12个等待周期,延长数据、地址总线和读写电平输出时间,将时序降到满足液晶要求。而TMS320F2812的时序完全靠软件来调节,增加延时时间满足时序。
④ 内含DC-DC电源,可产生负电压驱动液晶,所以外部只需单一电源即可点亮液晶。SED1335的动作电压为3~5V,所以DSP 3.3V的输出可以直接与液晶接口相连。但为了保证液晶可靠工作,和降低时序的要求,56F803采用总线电平转换芯片74ALVC164245将所有接口信号由3.3V转到5V,并用5V供电。而TMS320F2812由于时序很容易满足时序,不再进行转换。
⑤ 微处理器访问SED1335不需判其忙。随时准备接收微处理器的访问并在内部时序下,及时地把发来的指令数据传输就位。
⑥ SED1335在接口部设置了适配8080系列和M6800系列两种操作时序电路,通过引脚的电平设置可选择二者之一。这两款DSP均属于适配8080系列。
⑦ 可管理64K的显示RAM,可设置成文字或图形区,并可设置逻辑关系。
综上所述,驱动液晶关键的是选用合适的接口方式,和采用合适的方法满足时序。两款DSP均可以实现液晶显示,但是56F803固有性能决定了只能满足液晶最低时序要求,调试过程出现众多问题;而TMS320F2812实现的自由度更大,且容易满足时序要求。
用户1631176 2007-6-4 17:59
对不起,这个不能全部放出来。
另一篇里有部分程序,你可以参考。
用户84397 2007-5-29 19:13
用户1631176 2007-5-27 22:09
你的液晶不能接受3.3V?
随便找一个就可以
输出数据指令前,先用这个IO控制OE
用户84397 2007-5-27 20:36
液晶和2812之间有个芯片74lvc4245,用2812哪个管脚控制它的OE啊?
用户1631176 2007-5-27 20:17
对不起,图纸不可以给。设计
原理就是IO口去连接每一个液晶的接口,无论是数据还是指令接口。
然后配置IO口的输出就可以了。
有什么具体问题再说吧。
用户84397 2007-5-27 19:07
那太好了,你能把图纸给我发过来吗?我给你我的邮箱。shzjz369@tom.com,谢谢非常!
用户1631176 2007-5-26 22:59
我换用2812时就使用的通用IO口驱动
用户84397 2007-5-26 15:13
我用的是通用io口,这个你懂吗?
用户1631176 2007-5-25 21:58
接线图不方便放上来。
你有问题可以问我。
我使用的是总线连接方式。
568346那个,如果真想复用,可以在合适的时候重新配置IO口
用户11737 2007-5-25 17:59
我用的是dsp568346,和807差不太多。我现在gpio—f,出了点问题,它是和data bus共用的,只是初始化之后无法再改变gpio_f_dr,想询问解决方法。 初始化:
asm(bfset #$113e,X:$F341);//GPIO_F_DR
asm(bfclr #$FFff,X:$F343);//GPIO_F_PER
asm(bfset #$FFff,X:$F342);//GPIO_F_DDR
yanlu820814@163.com