【正确答案】下面是显示字符串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++;
}
}
【答案解析】