📄 tupianxianshi.c
字号:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
extern void play(uchar *songdata);
sbit BEEP=P0^0;
uchar hang1=1;//显示(64*67)
uchar hang2=1;//显示(64*15)
uchar hang3=1;//显示(72*10)
uchar mydata1;
uchar mydata2;
uchar mydata3;
uchar FangGeFlag;
uint i=0;
uchar m=0;
uchar n=0;
uchar g=0;
uchar j=0;
uchar h=0;
char k=0;
uchar idata hello[3]={'*',' ','\n'};
uchar end[]={"Thanks,Bye-Bye"}; //结束语
uchar code DongFangHong[]={
"5_5_6|2-|1_1_6|2-|55|6_16_5|1_1_6|2-|"//52|1_7_6|55|2_3_2|1_1_6|2_32_1|2_17_6|5-|"
};
uchar code image1[400]={
0x07,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,
0x07,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,
0x0F,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xF7,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xF3,0x80,0x00,
0x1F,0xFF,0xFF,0xFE,0x0F,0xFB,0x80,0x00,0x1F,0xFF,0xFF,0xF8,0x03,0xF9,0xC0,0x00,
0x1F,0xFF,0xFF,0xF0,0x01,0xFD,0xC0,0x00,0x1F,0xFF,0xFF,0xF0,0x01,0xFE,0xE0,0x00,
0x0F,0xFF,0xFF,0xFC,0x00,0xFE,0xE0,0x00,0x0F,0xFF,0xFF,0xFF,0x00,0xFE,0x70,0x00,
0x0F,0xFF,0xFF,0xFF,0x80,0x0F,0x70,0x00,0x4F,0xFF,0xF1,0xF9,0xC0,0x0F,0x70,0x00,
0x0F,0xFF,0xE0,0xFC,0x00,0x0F,0x78,0x00,0x0F,0xFF,0xC0,0x7E,0x00,0x0F,0x78,0x00,
0x0F,0xFF,0x80,0x1C,0x00,0x0F,0xF0,0x00,0x07,0xFF,0x80,0x00,0x00,0x0F,0x70,0x00,
0x03,0xFF,0x80,0x00,0x00,0x00,0x30,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0xB0,0x00,
0x03,0xFF,0x80,0xC0,0x00,0x03,0xD0,0x00,0x03,0xFF,0xE0,0x60,0x00,0x03,0xD0,0x00,
0x03,0xFF,0xFC,0x78,0x00,0x00,0xF8,0x00,0x03,0xFF,0xFE,0x7C,0x00,0x02,0x78,0x00,
0x03,0xFF,0xFF,0x7C,0x00,0x02,0x50,0x00,0x03,0xFF,0xFC,0x3E,0x00,0x03,0x10,0x00,
0x03,0xFF,0xF0,0x3E,0x00,0x01,0x10,0x00,0x03,0xFF,0xE0,0x1F,0x00,0x00,0x80,0x00,
0x03,0xFF,0xC0,0x1F,0x80,0x00,0x00,0x00,0x01,0xFF,0xF8,0x0F,0x80,0x00,0x00,0x00,
0x01,0xFF,0xFF,0x9F,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
0x01,0xFF,0xC0,0x7C,0x00,0x08,0x00,0x00,0x01,0xFF,0xF0,0x1C,0x00,0x0C,0x00,0x00,
0x01,0xFF,0xF8,0x0C,0x00,0x08,0x00,0x00,0x01,0xFF,0xFC,0x0E,0x00,0x08,0x00,0x00,
0x00,0xFF,0xF0,0x0E,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x06,0x00,0x00,0x00,0x00,
0x00,0xFF,0xF0,0x07,0x80,0x00,0x00,0x00,0x00,0x7F,0xF0,0x07,0xE0,0x00,0x00,0x00,
0x00,0x7F,0xF8,0x07,0xFF,0x80,0x00,0x00,0x00,0x3F,0xFE,0x0F,0xFF,0x80,0x00,0x00,
0x00,0x7F,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x07,0x80,0x00,
0x03,0xFF,0xFF,0xFF,0xFE,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar code image2[120]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x08,0x00,0x80,0x10,0x00,0x01,0xC0,0x40,0x7F,0x85,0x00,0x5C,0x00,
0x0E,0x00,0x00,0x52,0x03,0x00,0xA4,0x00,0x02,0x07,0xFC,0x7F,0x89,0x00,0xFF,0x00,
0x0F,0x80,0x40,0x52,0x05,0x01,0xBF,0x00,0x02,0x00,0x40,0x5E,0x01,0x10,0x94,0x00,
0x3F,0xC3,0xF8,0x7F,0x8F,0xE0,0xAF,0x00,0x02,0x00,0x40,0x64,0x82,0x40,0xBA,0x00,
0x02,0x17,0xFC,0xA4,0x82,0x30,0xD9,0x00,0x03,0xE0,0x00,0xA5,0x8C,0x10,0xB8,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 image3[90]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x00,0x80,
0x48,0x00,0x00,0x40,0x02,0x02,0x00,0x3F,0x02,0x54,0x00,0x01,0xFC,0x3F,0xE4,0xF8,
0x22,0x00,0x78,0x04,0x00,0xA0,0x02,0x05,0x20,0x24,0x00,0xD8,0x00,0x01,0x20,0x03,
0xC7,0x20,0x24,0x46,0x50,0x00,0x01,0xFC,0x04,0x42,0x20,0x1F,0x83,0xAC,0x00,0x00,
0xE8,0x04,0x47,0x20,0x15,0x02,0xD8,0x00,0x01,0x24,0x08,0x40,0x20,0x24,0xC3,0x88,
0x04,0x02,0x22,0x08,0x43,0x7C,0x44,0x42,0xF8,0x00
};
//=============================
void timer(void) interrupt 1 using 1
{
TH0=(65536-50000)/256; //重装初值
TL0=(65536-50000)%256;
if(i<400&&m==0&&n==0)//发"头像"语句
{
mydata1=image1[i++];
for(k=7;k>=0;k--)
{
if(((mydata1>>k)&0x1)==0x1)
{
SBUF=hello[0]; //发送点
while(TI==0);
TI=0;
}
else
{
SBUF=hello[1]; //发送空格
while(TI==0);
TI=0;
}
}
if(hang1==8) //换行
{
SBUF=hello[2];
while(TI==0);
TI=0;
hang1=0;
}
hang1++;
}
else if(i==400&&m<120&&n==0)//发"毛主席头像"字符语句
{
mydata2=image2[m++];
for(k=7;k>=0;k--)
{
if(((mydata2>>k)&0x1)==0x1)
{
SBUF=hello[0]; //发送点
while(TI==0);
TI=0;
}
else
{
SBUF=hello[1]; //发送空格
while(TI==0);
TI=0;
}
}
if(hang2==8) //换行
{
SBUF=hello[2];
while(TI==0);
TI=0;
hang2=0;
}
hang2++;
}
else if(i==400&&m==120&&n<90)//发"东方红乐谱"字符语句
{
mydata3=image3[n++];
for(k=7;k>=0;k--)
{
if(((mydata3>>k)&0x1)==0x1)
{
SBUF=hello[0]; //发送点
while(TI==0);
TI=0;
}
else
{
SBUF=hello[1]; //发送空格
while(TI==0);
TI=0;
}
}
if(hang3==9) //换行
{
SBUF=hello[2];
while(TI==0);
TI=0;
hang3=0;
}
hang3++;
}
else if(i==400&&m==120&&n==90&&g<40)
{
SBUF=DongFangHong[g]; //发送点
while(TI==0);
TI=0;
g++;
if(g==40) //换行
{ BEEP=0;
SBUF=hello[2];
while(TI==0);
TI=0;
}
}
else
{
for(h=0;h<14;h++)//发送结束语 (h值与end长度对应)
{SBUF=end[h];while(TI==0);TI=0;}
FangGeFlag=1;
TR0=0; //程序停止
}
}
//==============================主函数
void main()
{
BEEP=0;
SCON=0xd8;PCON=0x00; //设置串口方式3
TCLK=1;
RCAP2H=0xFF; //初始值可查表 波特率9600
RCAP2L=0xdc; //70=4800,b8=9600,dc=19200(9600),ee=38400,f4=57600,fa=115200
TMOD=0x01|0x01; // 定时器0,1为方式1
TH0=(65536-50000)/256; //初始值
TL0=(65536-50000)%256;
EA=1; //cpu开中断
ET0=1;ET1=1; //定时器0开中断
TR0=1;TR2=1; //启动计数
for(;;)
{
if(FangGeFlag==1)
{
play(DongFangHong);
BEEP=0;
FangGeFlag=0;
}
}
}
//===============end==============
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -