问答题 点阵型LCD显示模块显示英文字符串。
【正确答案】下面是显示字符串WELCOME!的程序welc.c。该程序包括显示字符串函数disstr、写指令函数wcode和写数据函数wdata。
   程序如下:
   #include<reg51 . h>
   #include<absacc. h>
   #define uchar unsigned char
   #define  uint unsigned int
   #define  PA  XBYTE[0x8000]
   #define  PB  XBYTE[0x8001]
   #define  PC  XBYTE[0x8002]
   #define COM  XBYTE[0x8003]
   #define DELAY 3
   uchar idata welc[11]=
           {0x20, 0x57, 0x45, 0x4c, 0x43, 0x4f, 0x4d, 0x45, 0x21, 0x20, 0x00};
   /*WELCOME1*/
   uchar idata sadl, sadh;
   uchar idata addl, addh;
   void wcode (uchar c);
   void wdata (uchar d);
   void disstr (uchar idata  *str);
   void main (void)
   {
       COM=0x81;
       PB=ox00;
       PB=0xf0;                             //MGLS-2 4128 模块复位
       disstr (welc);                       //显示符串
       while (1);
   }
   void wcode (uchar c)                     //写指令代码
   {
       uchar i=DELAY;
       while (i)
           i--;
       PC=0x9f;
       PA=c;
       PC=0xdf;
       PC=0x5f;
       PC=0x1f;
       PC=0x9f;
   }
   void comd (x, y)                          //写指令参数
   uchar x, y;
   {
       wcode (x);
       wdata (y);
   }
   void disstr (uchar idata *str)
   {
       uchar i,j;
       comd (0x00,0x3c);       //方式设置,主方式显示,光标闪烁,文本方式,选用CGROM
       comd (0x01,0x77);      //字体设置,VP=8,HP=8,8×8字体
       comd (0x02,0x1d);      //显示域设置,HN=30,一行显示30个字符
       comd (0x03,0x7f);      //帧设置,NX=128,占空比为1:128
       comd (0x04,0x07);      //光标设置,CP=8,光标位于字符的最下端
       sadl=0x00;
       sadh=0x00;
       comd (0x08, sadl);
       comd (0x09,sadh);       //设置缓冲区起始地址
       comd (0x08, 0x00);
       comd (0x0b, 0x00);
       wcode (0x0c);
       for(j=0;i<i0;i++)
           wdata(0x20);       //清屏
       addl=0x00;
       addh=0x00;
       comd(0x0a, addl);
       comd(0x0b,addh);     //设置光标地址指针
       i=0;
       wcode(0x0c);
       while(str[i]!=0x00;)
       {
           wdata(str[i]);    //*输出字符
           i++;
       }
   }
【答案解析】