16乘16点阵程序

#include
#define uchar unsigned char
#define uint unsigned int
sbit h1=P2^6;
sbit h2=P2^7;
sbit key1=P3^2;
sbit key2=P3^3;
void delay(uint t); //定义延时函数
void xianshi(uchar zimo[],uint n); //定义显示函数
uint speed=12,p=0; //定义全局变量
uchar code lie[]={
0x2C,0x04,0x30,0x08,0x0C,0x28,0x10,0x14,
0x18,0x20,0x38,0x1C,0x34,0x3C,0x00,0x24,
};
uchar code zimo1[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/

0xDF,0xBF,0xDF,0x3F,0xDB,0x81,0xDB,0xBF,
0xDB,0xBF,0x5B,0xC0,0xDB,0xDD,0xDB,0xDD,
0xDF,0xDF,0x00,0xFC,0xDF,0xF3,0xDD,0xEF,
0xD3,0xDF,0xDF,0xBF,0xDF,0x07,0xFF,0xFF,/*"武",2*/

0xEF,0xFB,0x9F,0xFB,0xFD,0x83,0xF3,0xFC,
0x3F,0x7F,0xFD,0x7F,0xE1,0xBF,0x1D,0xDF,
0xFD,0xEC,0xFD,0xF3,0xFD,0xEC,0x1D,0xDF,
0xE1,0xBF,0xFF,0x7F,0xFF,0x7F,0xFF,0xFF,/*"汉",3*/

0xFB,0xDF,0x7B,0x9F,0x7B,0xDF,0x03,0xE0,
0x7B,0xEF,0x7B,0xEF,0xFF,0xBF,0x01,0xBB,
0x6D,0xBB,0x6D,0xBB,0x01,0x80,0x6D,0xBB,
0x6D,0xBB,0x01,0xBB,0xFF,0xBF,0xFF,0xFF,/*"理",4*/

0xFF,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,
0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0x03,0xC0,
0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,
0xFB,0xDF,0xFB,0xDF,0xFF,0xDF,0xFF,0xFF,/*"工",5*/

0xDF,0x7F,0xDF,0x7F,0xDF,0xBF,0xDF,0xDF,
0xDF,0xEF,0xDF,0xF3,0xDF,0xFC,0x00,0xFF,
0xDF,0xFC,0xDF,0xF3,0xDF,0xEF,0xDF,0xDF,
0xDF,0xBF,0xDF,0x7F,0xDF,0x7F,0xFF,0xFF,/*"大",6*/

0xBF,0xFB,0xCF,0xFB,0xEE,0xFB,0x69,0xFB,
0x6F,0xFB,0x6F,0xBB,0x6E,0x7B,0x69,0x81,
0x6F,0xF9,0x6F,0xFA,0x67,0xFB,0xEB,0xFB,
0xEC,0xFB,0xAF,0xFB,0xCF,0xFB,0xFF,0xFF,/*"学",7*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",8*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",9*/
};
uchar code zimo2[]={

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/

0xFF,0xFF,0xFF,0xFF,0x07,0xE0,0x77,0xF7,
0x77,0xF7,0x77,0xF7,0x77,0xF7,0x00,0x80,
0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,
0x07,0x60,0xFF,0x7F,0xFF,0x0F,0xFF,0xFF,/*"电",2*/

0x7F,0xFF,0x7D,0xFF,0x7D,0xFF,0x7D,0xFF,
0x7D,0xFF,0x7D,0xBF,0x7D,0x7F,0x1D,0x80,
0x5D,0xFF,0x6D,0xFF,0x75,0xFF,0x79,0xFF,
0x7D,0xFF,0x7F,0xFF,0x7F,0xFF,0xFF,0xFF,/*"子",3*/

0xDB,0xF7,0xDB,0xF9,0x5B,0xFE,0x01,0x00,
0x5C,0xFF,0xDD,0xFE,0xFF,0xFB,0xDD,0xFB,
0x33,0xFB,0xFF,0xFB,0xFF,0xFB,0x00,0x00,
0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFF,/*"科",4*/

0xEF,0xFB,0xEF,0xBB,0xEF,0x7D,0x00,0x80,
0xEF,0xFE,0x6F,0x7F,0xF7,0x7F,0x77,0xBF,
0x77,0xBC,0x77,0xD3,0x00,0xEF,0x77,0xD7,
0x77,0xB9,0x77,0x7E,0xF7,0x7F,0xFF,0xFF,/*"技",5*/

0xEF,0xFF,0xEF,0xFF,0x00,0x00,0xEF,0xFF,
0xEF,0xFB,0xFF,0x7D,0x6F,0xBE,0xEF,0xCF,
0x00,0xF0,0xEF,0xBF,0xEF,0x7F,0x0F,0x80,
0x7F,0xFF,0xFF,0xFE,0xFF,0xF9,0xFF,0xFF,/*"协",6*/


0xBF,0xFF,0xBF,0xFD,0xDF,0xBD,0xDF,0x1D,
0xAF,0xAD,0xB7,0xB5,0xBB,0xB9,0xBC,0xBD,
0xBB,0xBD,0xB7,0xBD,0xAF,0xAD,0xDF,0x9D,
0xDF,0x3D,0xBF,0xFD,0xBF,0xFF,0xFF,0xFF,/*"会",7*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",8*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",9*/

};
uchar code zimo3[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/

0x1F,0xF8,0xEF,0xF7,0xF7,0xEF,0xFB,0xDD,
0xDD,0xBB,0xEE,0x77,0xDE,0x6F,0xFE,0x6F,
0xFE,0x6F,0xDE,0x6F,0xEE,0x77,0xDD,0xBB,
0xFB,0xDD,0xF7,0xEF,0xEF,0xF7,0x1F,0xF8,/*"笑脸",0*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",10*/
};


void main(){
while(1){
EA=1; //开中断
EX0=1;
IT0=0;
EX1=1;
IT1=0;
key1=1;
key2=1;
xianshi(zimo1,sizeof(zimo1)-32);
xianshi(zimo2,sizeof(zimo2)-32);
xianshi(zimo3,sizeof(zimo3)-32);
}
}

void xianshi(uchar zimo[],uint n){ //显示滚动汉字,n/2为移动次数
uint i,j,k;
while(1){
for(k=0;kfor(j=0;jfor(i=0;i<16;i++){
P2=lie[i];
h1=1;P0=zimo[2*i+k];h1=0;P0=0xFF; //锁存行控制数据
h2=1;P0=zimo[2*i+1+k];h2=0;P0=0xFF;
delay(1);
h1=1;h2=1;P0=0xFF;h1=0;h2=0; //锁存数据清零
if(p==1)
break;
}
if(p==1)
break;
}
if(p==1)
break;
}
if(p==1){
p=0;
break;
}
}
}

void delay(uint t){ //延时函数
uint x,y;
for(x=t;x>0;x--)
for(y=90;y>0;y--);
}

void ext0() interrupt 0{ //改字中断
if(key1==0)
{
delay(10);
if(key1==0)
{
p=1;
while(!key1);
}

}

}

void ext1() interrupt 2{ //调速中断
if(key2==0)
{
delay(10);
if(key2==0)
{
speed-=2;
if(speed<1)
speed=12;
while(!key2);
}

}

}

相关文档
最新文档