急急急!帮忙看看程序究竟是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:42:56
#include <REG51.H>

#define uchar unsigned char
#define uint unsigned int

sbit STTP = P2^7;

/************函数声明*************/
void delay(uint c); //延时函数
void out_rxd(uchar *d); //汉字输出

/************汉字点阵*************/
char code hanzi[32][32]={

0x51,0x02,0x52,0x82,0x62,0x42,0x6C,0x22,0x44,0x32,0x00,0x16,0x00,0x12,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //显示空屏,如果只有一个字或将字全部移出必须设置一个空屏幕
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
}
};

/************主函数***************/
void main()
{
uchar i,j,k; //i:每个字的显示循环;j每个字的显示码除以2;k每列刷新次数
uint b=0; //显示偏移控制,char类型最多只能显示14个汉字+一个空白位字符
uchar a; //控制移动间隔时间
SCON = 0x00;
while(1)
{
j=0;
if(a>1) //移动间隔时间;取值0--255
{
a=0;
b+=2;
if(b>=544) //显示到最后一个字,回头显示,判断值=字数*32

如果没有猜错的话,你的点阵应该是4行的。代码的意思就是一列的4个汉字同时向前滚动,你可以查一下点阵的控制方法和时序。
for(i=0;i<16;i++)
{
P1=i;

for(k=0;k<1;k++)
{
STTP = 0;
out_rxd(&hanzi[3][j+b+1]);
out_rxd(&hanzi[3][j+b]);
out_rxd(&hanzi[2][j+b+1]);
out_rxd(&hanzi[2][j+b]);
out_rxd(&hanzi[1][j+b+1]);
out_rxd(&hanzi[1][j+b]);
out_rxd(&hanzi[0][j+b+1]);
out_rxd(&hanzi[0][j+b]);
STTP = 1;
delay(15);

}
j=j+2;
}这段就是显示1列4个汉字的程序。