|
测试程序
#include
//#include
sbit STR=P3^2; //锁存
sbit CLK=P3^3; //时钟
sbit RData= P3^4; //红数据
sbit GData= P3^5; //绿数据
sbit E= P3^6; //使能
//16×16汉字
unsigned char code hanzi1[4][32]={
/*-- 欢(反显) -- ** 黑体, 12 **/
/* 当前所选字体下一个汉字对应的点阵为: 宽度x高度=16x16, 调整后为: 16x16**/
0xFF,0x3F,0xFF,0x3F,0x03,0x03,0x03,0x03,0xF2,0x73,0x92,0x73,0x94,0x9F,0xC7,0x9F,
0xE7,0x9F,0xE7,0x9F,0xC3,0x8F,0x9B,0x27,0x1E,0x73,0xBC,0xF9,0xF9,0xFF,0xFF,0xFF,
/*-- 迎(反显) -- ** 黑体, 12 **/
/* 当前所选字体下一个汉字对应的点阵为: 宽度x高度=16x16, 调整后为: 16x16**/
0xFE,0x7F,0x98,0x03,0x98,0x83,0xC9,0x93,0xF9,0x93,0x09,0x93,0x09,0x93,0xC9,0x93,
0xC9,0x93,0xC8,0x83,0xC9,0x93,0xCF,0x9F,0xC7,0xFF,0x90,0x01,0x38,0x01,0xFF,0xFF,
/*-- 光(反显) -- ** 黑体, 12 **/
/* 当前所选字体下一个汉字对应的点阵为: 宽度x高度=16x16, 调整后为: 16x16**/
0xFE,0x7F,0xFE,0x7F,0xCE,0x77,0xE6,0x67,0xE6,0x4F,0xF6,0x5F,0x00,0x01,0x00,0x01,
0xF9,0x3F,0xF9,0x3F,0xF9,0x3F,0xF3,0x3B,0xE7,0x39,0x0F,0x01,0x9F,0x83,0xFF,0xFF,
/*-- 临 (反显) -- ** 黑体, 12 **/
/* 当前所选字体下一个汉字对应的点阵为: 宽度x高度=16x16, 调整后为: 16x16**/
0xFF,0x3F,0xE7,0x3F,0x26,0x03,0x26,0x03,0x24,0xFF,0x21,0x9F,0x27,0xCF,0x24,0x03,
0x24,0x03,0x24,0x93,0x24,0x93,0x24,0x93,0x24,0x03,0xE4,0x03,0xE4,0xF3,0xFF,0xFF,
};
void delay()
{
unsigned char b;
for(b=100;b>0;b--); /*延时程序*/
}
void sendbyteR(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;
E=0;
while(1)
{
P1=0xff;
for(i=0;i<16;i++)
{
sendbyteR(hanzi1[0][i*2]);
sendbyteR(hanzi1[0][i*2+1]);
sendbyteR(hanzi1[1][i*2]);
sendbyteR(hanzi1[1][i*2+1]);
sendbyteR(hanzi1[2][i*2]);
sendbyteR(hanzi1[2][i*2+1]);
sendbyteR(hanzi1[3][i*2]);
sendbyteR(hanzi1[3][i*2+1]);
P1=i;
STR=0;STR=1;
delay();
}
delay(); delay();
}
}
原理图
|
|