微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于DSP的液晶模块的显示原理

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

时间:05-05 来源:互联网 点击:

46); //写入光标地址指令

  data(csd); //光标地址的低8位

  data(csrh); //光标地址的高8位

  command(0x4c); //光标自动右移指令

  command(0x42); //数据写入命令

  for(i=0;i《240;i++)

  {

  for(j=0;j《320;j++)

  data(datal); //向液晶显示区写人数据

  }

  }

  液晶显示屏的初始化程序如下:

  void init()

  {

  uint i;

  command(0x40); //系统设置指令

  for(i=0;i《8;i++)

  {

  data(SYSTAB[i]);

  }

  command(0x44); //设置SCROLL.指令

  for(i=0;i++;i《10)

  {

  data(SCROLLTAB[i]);

  }

  command(Ox5a); //设置点单元卷动位置

  data(0x00); //无卷动参数

  command(0x5b); //设置双层合成显示方式

  data(0x00); //光标显示不闪烁

  delay(2);

  cleardata(0,0,0x00); //第一显示区清0

  cleardata(Ox80,Ox04,Ox00); //第二显示区清0

  comnland(Ox46); //设置光标地址指令

  data(0x00); //第一显示区首地址

  data(0x00);

  command(0x5d); //设置光标形状

  data(0x04); //光标长度5

  data(0x86); //光标宽度7

  command(0x4c); //设置光标自动右移

  command(0x59);

  data(Oxl6); /第一、二显示区开显示

  }

  程序经过编译,汉字将以内码的形式表示。要在液晶屏上正确显示16X16点阵的汉字,必须将之转换成区位码,算出偏移量,从硬件汉字库中找到相应的位置,取出其后连续32个字节的字模。

  将内码转换成区位码的方法如下:

  qh=c1-0xa0,wh=c2-OxaO,

  其区位码就是:

  qw=qhxOxff+wh,

  该汉字在字库中离起点的位置是:

  offset=(94x(qh-1)+(wh-1))x32;

  汉字定位显示的汇编源程序如下:

  .mmregs

  .global_zimotake

  .ref_offset

  .def_buffer

  _zimotake:

  mar *,ar2

  lar ar2,#_buffer

  rpt #031

  blpd #_offset,*+;将汉字字模存人缓冲区buffer[32]

  ret

  在图形方式下显示连续汉字的程序如下:

  void displayhanzi(uint x,uint y,char*s)

  {

  uint i,j,csl,csh,k;

  uint cs;

  long qh,wh;

  command(0x4f); //设置光标向下移动

  cs=0x04bO+2*x*Oxl40+y*Ox02;

  //设置汉字显示的光标地址

  while(*s)

  {

  qh=*(s)-0xa0; //汉字区位码

  wh=*(s+1)-OxaO;

  offset=(94*(qh-1)+(wh-1))*32;

  //计算该汉字在字库中的偏移量

  ASPCR=0x100f; //异步串口的初始化

  IOSR=0x1800+((offset&0x38000)》》15);

  offset&=0xfffff;

  if(offset《0x8000)

  offset+=Ox8000;

  s=s+2; //s为要显示的连续汉字

  zimotake(); 似字模库中读取相应字模

  cel=(cs&Ox00ff); //显示文字的地址低8位

  csh=((cs&0xff00)》》8);//显示文字的地址高8位

  command(0x46); //CSRW代码

  data(csl); //设置光标地址CSR

  data(csh);

  command(0x42); //MWRITE代码

  for(j=0;j《16;J++)

  {

  data(buger[j*2]); //写人数据

  }

  cs=cs+0x01;

  csl=(cs&0x00ff); //显示文字的地址低8位

  csh=((cs&0xff00)》》8);//显示文字的地址高8位

  command(Ox46); //CSRW代码

  data(csl); //设置光标地址

  data(csh);

  command(Ox42); //MWRITE代码

  for(i=0;i《16;i++)

  {

  data(buffer[2*i+1]);

  }

  cs=cs+0x01;

  }

  }

  以上程序均在TMS320C2X系列的软件环境CCS下调试通过。液晶屏能够正常显示连续的汉字、字符以及图形,在语言教学系统中得到了实际的应用。通过移植本文的程序,修改其中的一些指令,可以完成更加复杂的功能,并且具有缩短开发周期、加快产品上市等优点,因此非常适用于便携式设备的界面显示系统,如PDA、示波器、手机的界面开发等。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top