DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 202|回复: 0
打印 上一主题 下一主题

基于DSP的液晶模块的显示原理及实现

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 14:25:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 硬件电路接口的设计
??? 图1给出了液晶显示模块的硬件电路接口设计框图,该系统采用TI公司的TMS320F206芯片(以下简称F206),其内部带有4Kb的FLASH存储器,可以根据系统需要外挂EEPROM作为外部程序存储区。
?




??? SED1335控制器是日本EPSON公司生产的一款液晶显示屏控制器,与同类产品相比,功能最强。主要特点有:
??? 有较强功能的I/O缓冲器;
??? 指令功能丰富;
??? 四位数据并行发送;
??? 图形和文本方式混合显示。
??? 可编程控制器芯片GAL16V8的输入端连接到DSP上,输出为硬件汉字库、液晶控制器、键盘扫描电路提供所需的片选和使能信号。该芯片编程实现容易,可以随时修改其逻辑关系,在一定程度上提高了开发的通用性。硬件汉字库的片选信号为

F206的外部程序空间起始地址为08000H。由于F206的程序寻址范围可以达到64Kb,要寻址256Kb的程序空间,需扩展外部的程序空间。为此,将F206的IO0~2与硬件汉字库AT27C020A的地址高三位相连,以达到扩展程序寻址的目的。在显示汉字时,可以实现分页管理,共分成8页,每页32Kb,占用DSP系统的程序空间的8000~FFFFH。
??? 为保证F206与SED1335能正常通信,SED1335的数据总线(D0~D7)直接连接到F206的低字节数据总线(D0~D7)上。SED1335片选信号由F206的A15(最高位地址线)、

共同决定,其逻辑关系为

且SED1335的A0接至F206的A0(最低位地址线)。
2 硬件汉字库的制作
??? 硬件汉字库使用了AT27C020A,该产品是ATMEL公司生产的256Kb的FLASH ROM,在具体电路设计时应注意引脚定义和逻辑关系,并在烧录时选择相应的型号。本设计采用UCDOS软件中的HZK16点阵文件,字模大小为16×16,在该文件中,按汉字区位码从小到大依次存有国标区位码中的所有汉字,每个汉字占用32个字节,每个区为94个汉字。如果显示其属性,可以看出其大小为262Kb。当写入AT27C020A时,可以将多于256Kb的部分截去。实际上,在国标汉字点阵字库中,二级汉字排到第87区,从第88区开始就是空白,所以将多余部分截去不会影响实际操作中硬件汉字库的制作,和普通的程序存储器的编程没什么不同。因此,从中截去87区后的字库,补上8×16的ASCII码点阵数据。烧写过程中采用通用编程器spectrum-48进行编写,将HZK16文件调入时要使用二进制方式打开,编程并校验成功后,即可将存储器取下备用。这样,一个硬件汉字库就制作好了。
??? 针对不同的应用,可以选用大容量存储器甚至是串行数据存储器,从而扩展硬件汉字库的使用范围。在此使用容量为512Kb的存储器,除了可以存储全部的国标汉字外,还可以存储8×16的ASCII码点阵数据以及汉字语句编码数据,使用起来非常方便。


3 DSP控制液晶显示的软件设计及实现
??? 通过初始化液晶显示屏以及调用硬件汉字库显示连续的汉字来具体说明DSP控制液晶显示屏的设计思想。从程序的可移植性和通用性方面考虑,选用了C语言进行软件模块的设计实现。
??? 液晶控制器指令的写入端口地址是C001H,写参数及显示数据端口地址为C000H,定义形式如下:
??? extern ioport uint portc000;//数据写入地址
??? extern ioport uint portc001;//指令写入地址
??? #define LCDCMD portc001//指令写入端口地址
??? #define LCDDATA portc000//写参数及显示数据地址
??? 系统硬件上电复位后,首先完成DSP的初始化,然后根据用户系统的需要对控制器的各项指令代码及其参数进行设置,以完成液晶模块的参数(如液晶的行数、列数、扫描频率、光标的位置等)以及显示方式等一系列过程的初始化。在MPU操作SED1335及其控制的液晶显示模块时,必须首先写入SYSTEM SET 40H指令。如果该指令设置出现错误,则显示必定不正常。液晶模块软件初始化设计的流程图如图2所示。
??? F206初始化程序如下:
??? asm(“clrc cnf”);
??? asm(“ldp? #0h”);
??? asm(“setc INTM”);
??? 设置液晶控制器的系统指令及参数的程序如下:
??? typedef unsigned int uint;
??? uint SYSTAb[8]={0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00};?//系统设置指令参数
??? uint? SCROLLTAb[10]={0,0,0xf0,0xb0,0x04,0xf0};//SCROLL指令参数
??? void command(uint m)
??? {
????? ??LCDCMD=m;??//向1335中写入指令代码
??? }
??? void data(uint n)
??? {
????? ??LCDDATA=n;??//向1335中写入数据及指令参数
??? }
?? ?//清除显示区数据
??? void cleardata(uint csrl,uint csrh,uint datal)
??? {
??? uint i,j;
??? command(0x46);???//写入光标地址指令
??? data(csrl);????//光标地址的低8位
??? data(csrh);????//光标地址的高8位
??? command(0x4c);???//光标自动右移指令
??? command(0x42);???//数据写入命令
??? for(i=0;i>15);
? ?? ?offset&=0xffff;
??????if(offset>8);?//显示文字的地址高8位
??? ??command(0x46);??//CSRW代码
??????data(csl);???//设置光标地址CSR
??? ??data(csh);
??? ??command(0x42);??//MWRITE代码
??? ??for(j=0;j>8);?//显示文字的地址高8位
??? ??command(0x46);??//CSRW代码
??? ??data(csl);???//设置光标地址
??? ??data(csh);
??? ??command(0x42);??//MWRITE代码
??? ??for(i=0;i<16;i++)
??? ??{
??? ??data(buffer[2*i+1]);
??? ??}
??? ??cs=cs+0x01;
??? ??}
??? }
??? 以上程序均在TMS320C2X系列的软件环境CCS下调试通过。液晶屏能够正常显示连续的汉字、字符以及图形,在语言教学系统中得到了实际的应用。通过移植本文的程序,修改其中的一些指令,可以完成更加复杂的功能,并且具有缩短开发周期、加快产品上市等优点,因此非常适用于便携式设备的界面显示系统,如PDA、示波器、手机的界面开发等。

                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-11-11 07:32 , 耗时 0.104682 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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