⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tupianxianshi.c

📁 基于MCU51
💻 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 + -