#include
#define uchar unsigned char
#define uint unsigned int //宏定义
#define KEY P3_0 //定义画面切换按键
uchar KY; //KY作用在后面说明
uchar disp; //显示汉字指针
uchar pic=0,num=0; //pic为按键次数;num为中断次数
uchar code love[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,
0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,
0x04,0x10,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x04,0x10,0xF8,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x10,
0x00,0x08,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x82,0x20,0x82,0x20,
0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*LOVE*/
};
uchar code loveyou[] = {
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,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x78,0x00,0xFC,0x00,0xFE,0x01,0xFE,0x03,0xFE,0x07,0xFE,0x0F,0xFE,0x1F,0xFC,0x3F,
0xF8,0x7F,0xFC,0x3F,0xFE,0x1F,0xFE,0x0F,0xFE,0x07,0xFE,0x03,0xFE,0x01,0xFC,0x00,
0x78,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,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*心形图案*/
};
uchar code hehe[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,
0xF0,0x0F,0x08,0x10,0x04,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00,0x04,0x00,
0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,
0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00,0x04,0x00,
0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x04,0x20,0x08,0x10,
0xF0,0x0F,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*呵呵o(∩_∩)o图案*/
};
unsigned char code hanzi[] = {
0x20,0x21,0x24,0x11,0x2C,0x4D,0x35,0x81,
0xE6,0x7F,0x34,0x05,0x2C,0x59,0x24,0x21,
0x00,0x18,0xFC,0x07,0x24,0x00,0x24,0x00,
0xE2,0xFF,0x22,0x00,0x22,0x00,0x00,0x00,/*"新",0*/
0x40,0x04,0x20,0x04,0x10,0x04,0x0C,0x04,
0xE3,0x07,0x22,0x04,0x22,0x04,0x22,0x04,
0xFE,0xFF,0x22,0x04,0x22,0x04,0x22,0x04,
0x22,0x04,0x02,0x04,0x00,0x04,0x00,0x00,/*"年",1*/
0x70,0x00,0x00,0x00,0xFF,0xFF,0x08,0x00,
0xB0,0x80,0x88,0x40,0x88,0x30,0x88,0x0E,
0xFF,0x01,0x88,0x06,0x88,0x08,0x88,0x30,
0xF8,0x60,0x80,0xC0,0x80,0x40,0x00,0x00,/*"快",2*/
0x00,0x00,0x00,0x20,0x40,0x18,0xFC,0x0C,
0x44,0x07,0x44,0x12,0x44,0x20,0x46,0x40,
0xFA,0x3F,0x42,0x00,0x43,0x00,0x43,0x02,
0x42,0x0C,0x40,0x38,0x00,0x10,0x00,0x00,/*"乐",3*/
0x00,0x01,0x80,0x40,0x60,0x40,0x1E,0x41,
0x10,0x41,0x10,0x41,0x10,0x41,0x10,0x41,
0xFF,0x7F,0x12,0x41,0x10,0x41,0x10,0x41,
0x98,0x41,0x10,0x61,0x00,0x40,0x00,0x00,/*"生",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,
0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,
0x42,0x10,0x42,0x10,0x42,0x10,0xFE,0x3F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"日",1*/
0x70,0x00,0x00,0x00,0xFF,0xFF,0x08,0x00,
0xB0,0x80,0x88,0x40,0x88,0x30,0x88,0x0E,
0xFF,0x01,0x88,0x06,0x88,0x08,0x88,0x30,
0xF8,0x60,0x80,0xC0,0x80,0x40,0x00,0x00,/*"快",2*/
0x00,0x00,0x00,0x20,0x40,0x18,0xFC,0x0C,
0x44,0x07,0x44,0x12,0x44,0x20,0x46,0x40,
0xFA,0x3F,0x42,0x00,0x43,0x00,0x43,0x02,
0x42,0x0C,0x40,0x38,0x00,0x10,0x00,0x00,/*"乐",3*/
0x00,0x00,0x00,0x00,0x02,0x00,0xE4,0xFF,
0xA8,0x04,0xA0,0x04,0xA0,0x04,0xBF,0x04,
0xA0,0x04,0xA0,0x04,0xA8,0x44,0xA4,0x84,
0xE2,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,/*"肖",0*/
0x80,0x40,0x60,0x30,0x00,0x0E,0xFF,0x01,
0x20,0x02,0x18,0x0C,0x00,0x00,0xF0,0x7F,
0x00,0x20,0x00,0x20,0xFF,0x3F,0x02,0x20,
0x00,0x20,0xF0,0xFF,0x10,0x00,0x00,0x00,/*"灿",1*/
0x00,0x00,0x50,0x00,0x4F,0x3F,0x4A,0x01,
0x48,0x01,0xFF,0xFF,0x48,0x21,0x48,0x61,
0x48,0x3F,0x00,0x00,0xFC,0x0F,0x00,0x40,
0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,/*"制",2*/
0x80,0x00,0x40,0x00,0x20,0x00,0xF8,0xFF,
0x07,0x00,0x22,0x00,0x18,0x00,0x0C,0x00,
0xFB,0xFF,0x48,0x04,0x48,0x04,0x48,0x04,
0x68,0x04,0x48,0x06,0x08,0x04,0x00,0x00,/*"作",3*/
};
/*****函数声明*****/
void display1(void);
void display2(void);
void display3(void);
void display4(void);
/*****n(us)延时子程序*****/
void DelayUs(uint N)
{
uint x;
for(x=0; x<=N;x++);
}
/*****中断服务程序*****/
void intersvr0(void) interrupt 0 using 1
{
KY=~KY; //每个摇动来回水银开关会在摆幅两端分别产生下降沿中断,只提取其中一次(从左向右摇才显示)
if(KY==0)
{
num++; //计算中断次数
switch(pic) //选择画面
{
case 0:{display1();}break;
case 1:{display2();}break;
case 2:{display3();}break;
//case 3:{display4();}break;
default:{display1();}
}
}
}
/*****显示子程序1(汉字)*****/
void display1(void)
{
uchar i;
if(num>10){disp++;num=0;} //12个汉字分为3次显示完(每次显示4个),每中断10次切换
if(disp>2)disp=0;
DelayUs(5200); //此处延时时间依各硬件差别而各不相同,试着调整使得显示内容居中即可
for(i=0;i<64;i++)
{
P0=~hanzi[disp*128+i*2];
P2=~hanzi[disp*128+i*2+1];
DelayUs(100);
}
}
/*****显示子程序4(LOVE)*****/
/*void display4(void)
{
uchar i;
DelayUs(4000);
for(i=0;i<64;i++)
{
P0=~love[i*2];
P2=~love[i*2+1];
DelayUs(120);
}
} */
/*****显示子程序3(心形图案)*****/
void display3(void)
{
uchar i;
DelayUs(4000);
for(i=0;i<64;i++)
{
P0=~loveyou[i*2];
P2=~loveyou[i*2+1];
DelayUs(120);
}
}
/*****显示子程序2(呵呵o(∩_∩)o图案)*****/
void display2(void)
{
uchar i;
DelayUs(4000);
for(i=0;i<64;i++)
{
P0=~hehe[i*2];
P2=~hehe[i*2+1];
DelayUs(120);
}
}
/*****主函数*****/
void main(void)
{
IT0=1;
EX0=1;
EA=1; //开中断,下降沿中断
KY=0;
while(1) //主程序中只检测按键
{
if(KEY==0) //画面切换键按下
{
DelayUs(10000); //按键去抖
if(KEY==0);
pic++;}
if(pic>3)pic=0;
}
}
|