本帖最后由 maxking 于 2013-2-27 16:25 编辑
点阵是16*64,2片138+595,可以显示中文出来,但是想显示出英文字母却不行。怎样修改?程序如下
#include <reg52.h>
sbit STR=P2^2; //锁存
sbit CLK=P2^3; //时钟
sbit RData= P2^1; //红 数据
//sbit GData= P3^5; //绿 数据
sbit E= P1^4; //使能
unsigned char code hanzi[][32]={
0xFF,0xBF,0x81,0xBF,0xBF,0xBF,0xBB,0x83,0x9B,0x7B,0xAB,0x77,0xB6,0xDF,0xB7,0xDF,
0xAB,0xDF,0xAB,0xAF,0x9B,0xAF,0xBF,0xAF,0xBF,0x77,0x81,0x77,0xFE,0xFB,0xFD,0xFD,/*"欧",0*/
0xFF,0xFF,0x83,0xFF,0xBA,0x03,0xB6,0xFB,0xB6,0xFB,0xAE,0xFB,0xB6,0xFB,0xB6,0xFB,
0xBA,0x03,0xBA,0xFB,0xBA,0xFB,0x96,0xFB,0xAE,0xFB,0xBE,0xFB,0xBE,0x03,0xBE,0xFB,/*"阳",1*/
0xFB,0xFF,0xFB,0xFF,0xFB,0xFF,0xFB,0xFF,0x80,0x1F,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,
0xF7,0xDF,0xF7,0xDF,0xF7,0xDF,0xEF,0xDD,0xEF,0xDD,0xDF,0xDD,0xBF,0xE1,0x7F,0xFF,/*"九",2*/
0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xC3,0xF8,0x3F,0x05,0xFF,
0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFB,0xFD,0xFB,0xFD,0xFB,0xFE,0x03,0xFF,0xFF,/*"七",3*/
};
void delay(unsigned char n)
{
while(n--);
}
void sendbyteRG(unsigned char bbyte1)
{
unsigned char i;
for(i=0;i<8;i++)
{
RData=bbyte1&0x80; //取高位
CLK=0; CLK=1;
bbyte1<<=1;
}
}
void main(void)
{
unsigned char i;
while(1)
{
for(i=0;i<16;i++)
{
E=1;//禁止行输出
sendbyteRG(hanzi[0][i*2]);
sendbyteRG(hanzi[0][i*2+1]);
sendbyteRG(hanzi[1][i*2]);
sendbyteRG(hanzi[1][i*2+1]);
sendbyteRG(hanzi[2][i*2]);
sendbyteRG(hanzi[2][i*2+1]);
sendbyteRG(hanzi[3][i*2]);
sendbyteRG(hanzi[3][i*2+1]);
P1=i;
delay(10);
E=0;//打开行输出
}
}
}
|