当前位置:文档之家› 16X16点阵汉字显示程序

16X16点阵汉字显示程序

#include <reg52.h>
#define uchar unsigned char
uchar i,k=15;
sbit xsi=P2^0;
sbit xrck=P2^1;
sbit xsck=P2^2;
sbit ysi=P2^3;
sbit yrck=P2^4;
sbit ysck=P2^5;
uchar code zbm[][32]={
{0x20,0x00,0x20,0x80,0x20,0x80,0xAE,0x5F,0xAA,0x40,0xAA,0x20,0xAA,0x10,0xBF,0x0E
,0xAA,0x10,0xAA,0x20,0xAA,0x40,0xAE,0xDF,0x20,0x40,0x20,0x00,0x20,0x00,0x00,0x00},/*"贵",0*/
{0x00,0x00,0xFE,0xFF,0x02,0x04,0x22,0x08,0x5A,0x04,0x86,0x03,0x00,0x00,0xFE,0x3F
,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"阳",1*/
{0x40,0x00,0x30,0x02,0x10,0x02,0x12,0x02,0x5C,0x02,0x54,0x02,0x50,0x42,0x51,0x82
,0x5E,0x7F,0xD4,0x02,0x50,0x02,0x18,0x02,0x57,0x02,0x32,0x02,0x10,0x02,0x00,0x00},/*"学",2*/
{0xFE,0xFF,0x02,0x00,0x32,0x02,0x4A,0x04,0x86,0x83,0x0C,0x41,0x24,0x31,0x24,0x0F
,0x25,0x01,0x26,0x01,0x24,0x7F,0x24,0x81,0x24,0x81,0x0C,0x81,0x04,0xF1,0x00,0x00},/*"院
",3*/
{0x00,0x00,0x00,0x00,0xF8,0x0F,0x48,0x04,0x48,0x04,0x48,0x04,0x48,0x04,0xFF,0x3F
,0x48,0x44,0x48,0x44,0x48,0x44,0x48,0x44,0xF8,0x4F,0x00,0x40,0x00,0x70,0x00,0x00},/*"电",0*/
{0x00,0x01,0x00,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x41,0x02,0x81,0xE2,0x7F
,0x12,0x01,0x0A,0x01,0x06,0x01,0x02,0x01,0x00,0x01,0x80,0x01,0x00,0x01,0x00,0x00},/*"子",1*/
{0x80,0x00,0x40,0x00,0x30,0x00,0xFC,0x7F,0x07,0x00,0x0A,0x00,0xA8,0x7E,0xA8,0x22
,0xA9,0x22,0xAE,0x22,0xAA,0x22,0xA8,0x22,0xA8,0x7E,0x08,0x00,0x08,0x00,0x00,0x00},/*"信",2*/
{0x00,0x00,0x00,0x20,0x00,0x38,0xFC,0x01,0x54,0x3D,0x54,0x41,0x56,0x41,0x55,0x45
,0x54,0x59,0x54,0x41,0x54,0x41,0xFC,0x71,0x00,0x00,0x00,0x08,0x00,0x30,0x00,0x00},/*"息",3*/
{0x10,0x00,0x10,0x00,0xFF,0x7F,0x10,0x00,0x10,0x00,0x10,0x43,0xC8,0x20,0x08,0x18
,0x08,0x07,0xFF,0x00,0x08,0x20,0x08,0x40,0xF8,0x3F,0x80,0x00,0x00,0x03,0x00,0x00},/*"协",4*/
{0x80,0x00,0x40,0x00,0x40,0x42,0x20,0xE2,0x50,0x52,0x48,0x4A,0x44,0x46,0x43,0x62
,0x44,0x22,0x48,0x22,0x50,0x2A,0x20,0xF2,0x60,0x62,0xC0,0x00,0x40,0x00,0x00,0x00},/*"会",5*/
{0x14,0x20,0x24,0x10,0x44,0x4C,0x84,0x43,0x64,0x43,0x1C,0x2C,0x20,0x20,0x18,0x10
,0x0F,0x0C,0xE8,0x03,0x08,0x06,0x08,0x18,0x28,0x30,0x18,0x60,0x08,0x20,0x00,0x00},/*"欢",6*/
{0x40,0x40,0x41,0x20,0xCE,0x1F,0x04,0x20,0x00,0x40,0xFC,0x47,0x04,0x42,0x02,0x41
,0x02,0x40,0xFC,0x5F,0x04,0x40,0x04,0x42,0x04,0x44,0xFC,0x43,0x00,0x40,0x00,0x00},/*"迎",7*/
{0x80,0x00,0x40,0x00,0xF0,0x7F,0x2C,0x00,0x43,0x10,0x20,0x0C,0x98,0x03,0x0F,0x21
,0x0A,0x40,0xE8,0x3F,0x08,0x00,0x88,0x00,0x28,0x03,0x1C,0x1C,0x08,0x08,0x00,0x00},/*"你",8*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",9*/
};
void ys (uchar a)//延时
{
uchar b;
for (;a>0;a--)
for (b=100;b>0;b--);
}
void yfs()//Y轴发数
{
ysck=0;
yrck=0;
k++;
if (k==16)
{
k=0;
ysi=0;
}
else
ysi=1;
ysck=1;
xrck=1;
yrck=1;
}
void fs(uchar a) //X轴发数
{
uchar b;
xsck=0;
xrck=0;
for (b=0;b<8;b++)
{
a=a<<1;
//xsi=CY;
xsi=a&0x80;
xsck=1;
xsck=0;
}
}
void gdhs(uchar *zz,uchar N,uchar Time) //流动显示N个汉字滚动函数{ //参数三个:字符串字模首地址、字数、显示流动速度
uchar FontNum,i,j,row; //循环变量,字数计数、16次流动、16列扫描
for(FontNum=0;FontNum<N;FontNum++)
{
for(i=0;i<16;i++) //字到字流动16次左移才能完成
{
for(j=0;j<Time;j++) //显示延迟,决定流动速度
{
k=15;
for(row=0;row<16;row++) //显示16*16屏幕一次
{
yfs(); //选通显示列//行选线,P3 低四位
fs (*(zz+FontNum*32+(i+row)*2+1)); //以移动偏移为基础获取新数据
fs(*(zz+FontNum*32+(i+row)*2)); //获取显示数据循环显示关键算法
ys (12); //适当延时
}
}
}
}
}
void main ()
{
while (1)
{
gdhs(*zbm,10,3);
}
}。

相关主题