红外无线控制单片机播放图片与音乐

添加链接描述## 红外无线控制单片机播放图片与音乐
通过无线红外模块来控制51单片机来实现图片、音乐自由切换。
系统概要图:
在这里插入图片描述
音乐播放程序:
音乐播放流程图如3-2-1所示
分析音乐播放的过程,其为不同频率声音的组合,当一组恰当频率声音组合按照一定的先后顺序与节拍播放时,即可产生音乐。故要产生音频信号,只要算出某一音频的周期,将此周期除以2即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重复此过程即得到此频率的声音信号。此信号从P2.3脚输出,用ULN2003驱动蜂鸣器播放音乐。其中每个音符使用两个字节表示:低位字节(偶地址)代表音级,表示的音级为c、﹟c、d、﹟d、e、f、……a3、﹟a3、b3;高位字节(奇地址)代表音符的时值(节拍),表示拍数为1/8拍(0.10s)~8拍(6.40s)。
程序设计中用软件延时程序来控制音级, 与红外解码共用定时器0进行节拍的控制,并在播放和暂停播放中随时判断是否有红外信号的改变,以便随时更换或结束音乐。本设计中歌曲的音符存在一个数组中,以在开始位置和在中间位置播放不同的曲目
控制发声频率:
要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。利用STC89C52RC的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0从而产生不同频率。此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为0x00,则表示曲子终了;若查表结果为0xff,则产生相应的停顿效果。
以标准音高A为例,A的频率是440Hz,周期T=1/440=2272us。在占空比为50%的情况下,导通时间=断开时间=半周期t=2272us/2=1136us,利用P3^4端口的位操作,经过不断地反相变换即可得到标准音高A的音频脉冲。端口导通时间与断开时的时间利用定时器实现。具体的方法是将单片机定时器的中断触发时间设为半周期t,这样每隔半周期端口反相,输出连续的对应音高的频率。
设晶振的频率为f0,中断触发时间(半周期)为t,定时器工作在模式1时计数器的初值为THL,高8位为THL,低8位为TL。时钟周期即为1/f0,定时器每一次累加用去一个机器周期,一个机器周期包含12个时钟周期,即定时器每次加一所用时间是12/f0。定时器在模式1下计时采用16位数,最大计数为2^16-1(65535),再次加一(65536)溢出触发中断

在这里插入图片描述

12864液晶显示程序
如图3-2-2 12864实物图、3-2-3点阵图所示:
12864点阵液晶显示模块(LCM)就是由12864个液晶显示点组成的一个128列64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。图形或汉字的点阵信息由自己设计,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的6464液晶屏拼接而成,每半屏有一个5128 bits显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。显示点在6464液晶屏上的位置由行号(line,063)与列号(column,063)确定。5128 bits RAM中某个存储单元的地址由页地址(Xpage,07)和列地址(Yaddress,063)确定。每个存储单元存储8个液晶点的显示信息。
为了使液晶点位置信息与存储地址的对应关系更直观关,将6464液晶屏从上至下8等分为8个显示块,每块包括8行64列个点阵。每列中的8行点阵信息构成一个8bits二进制数,存储在一个存储单元中。(注意:二进制的高低有效位顺序与行号对应关系因不同商家而不同)存放一个显示块的RAM区称为存储页。即6464液晶屏的点阵信息存储在8个存储页中,每页64个字节,每个字节存储一列(8行)点阵信息。因此存储单元地址包括页地址(Xpage,07)和列地址(Yaddress,063)。例如点亮12864的屏中(20,30)位置上的液晶点,因列地址30小于64,该点在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取余得4,该点在RAM中页地址为2,在字节中的序号为4;所以将二进制数据00010000(也可能是00001000,高低顺序取决于制造商)写入Xpage=2,Yaddress=29的存储单元中即点亮(20,30)上的液晶点。

在这里插入图片描述
在这里插入图片描述
数码管显示图片与音乐的编号就不多讲啦
项目代码如下:

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit IR=P3^2;  //红外接口标志
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1=P2^0;//定义锁存使能端口 段锁存
sbit LATCH2=P2^1;//                 位锁存
sbit LCD1602=P2^5;
sbit P2_3=P2^3;
void Draw_PM(const uchar *ptr);
void Ir_work(void);
void Ircordpro(void);
uchar time; 
unsigned char IRcord[4];
sbit DU = P2^0; //段选,申明U1锁存器的锁存端,锁存器使用的是74HC573
sbit WE= P2^1;  //位选,申明U2锁存器的锁存端,锁存器使用的是74HC573
uchar code table[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
int n;
/*
延时函数
*/
void delay1() //位码的转换	3*5*125=1875ms=1.875s
{
 for(n=0;n<125;n++);
}
void  xianshi(){
while(IRcord[2]==0x0c){
 DU=1;
			P0=0x77;  //第一位断码
			DU=0;

			WE=1;
			P0=0xfe;	   //第一位位码
			WE=0;
         	delay1();

			DU=1;
			P0=0x3f;   //第二位断码
			DU=0;

			WE=1;
			P0=0xfd;	   //第二位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x3f;   //第三位断码
			DU=0;

			WE=1;
			P0=0xfb;	   //第三位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x06;   //第四位断码
			DU=0;

			WE=1;
			P0=0xf7;	   //第四位位码
			WE=0;
			delay1();

			Ircordpro();


}
}
void xianshi1(){
while(IRcord[2]==0x18){
 DU=1;
			P0=0x77;  //第一位断码
			DU=0;

			WE=1;
			P0=0xfe;	   //第一位位码
			WE=0;
         	delay1();

			DU=1;
			P0=0x3f;   //第二位断码
			DU=0;

			WE=1;
			P0=0xfd;	   //第二位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x3f;   //第三位断码
			DU=0;

			WE=1;
			P0=0xfb;	   //第三位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x59;   //第四位断码
			DU=0;

			WE=1;
			P0=0xf7;	   //第四位位码
			WE=0;
			delay1();

			Ircordpro();
}
}
void xianshi2(){
while(IRcord[2]==0x5e){

            DU=1;
			P0=0x77;  //第一位断码
			DU=0;

			WE=1;
			P0=0xfe;	   //第一位位码
			WE=0;
         	delay1();

			DU=1;
			P0=0x3f;   //第二位断码
			DU=0;

			WE=1;
			P0=0xfd;	   //第二位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x3f;   //第三位断码
			DU=0;

			WE=1;
			P0=0xfb;	   //第三位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x4f;   //第四位断码
			DU=0;

			WE=1;
			P0=0xf7;	   //第四位位码
			WE=0;
			delay1();

			Ircordpro();
		
}

}
bit flag; //标志音乐输出脚电平的高低
uchar ptr = 0x00; //取音符
uchar high; //计数器高位
uchar low; //计数器低位
// 本曲谱为 "新年好",前两个十六进制表示发声频率,后一个表示发声时间,0xFF,0xFF 表示休止符
// 0x00 表示结束
// 1 _ 1_ 1 .5
uchar code music[] = {
0xFC,0x44,0x7F, 0xFC,0x44,0x7F, 0xFC,0x44,0xFF, 0xFA,0x68,0xFF,
// 3 _ 3_ 3 1
0xFD,0x23,0x7F, 0xFD,0x23,0x7F, 0xFD,0x23,0xFF, 0xFC,0x44,0xFF,
// 1_ 3_ 5 5
0xFC,0x44,0x7F, 0xFD,0x23,0x7F, 0xFD,0x82,0xFF, 0xFD,0x82,0xFF,
// 4_ 3_ 2 -
0xFD,0x23,0x7F, 0xFD,0x23,0x7F, 0xFC,0xAC,0xFF, 0xFF,0xFF,0xFF,
// 2_ 3_ 4 4
0xFC,0xAC,0x7F, 0xFD,0x23,0x7F, 0xFD,0x34,0xFF, 0xFD,0x34,0xFF,
// 3_ 2_ 3 1
0xFD,0x23,0x7F, 0xFC,0xAC,0x7F, 0xFD,0x23,0xFF, 0xFC,0x44,0xFF,
// 1_ 3_ 2 .5
0xFC,0x44,0x7F, 0xFD,0x23,0x7F, 0xFC,0xAC,0xFF, 0xFA,0x68,0xFF,
 // .7_ 2_ 1 -
0xFC,0x0C,0x7F, 0xFC,0xAC,0x7F, 0xFC,0x44,0xFF, 0xFF,0xFF,0xFF,
0x00//结束
};
uchar code music1[]={
0xFC,0x44,0x7F, 0xFC,0xAC,0x7F, 0xFD,0x09,0x7F, 0xFC,0x44,0xFF,
// 1 _ 2 3_1           5
0xFC,0x44,0x7F, 0xFC,0xAC,0x7F, 0xFD,0x09,0x7F, 0xFC,0x44,0xFF,
// 1_ 2 3_1
0xFD,0x09,0x7F, 0xFD,0x34,0x7F, 0xFD,0x82,0xFF,
// 3_ 4 5
0xFD,0x09,0x7F, 0xFD,0x34,0x7F, 0xFD,0x82,0xFF,
// 3_ 4 5
0xFD,0x82,0x7F, 0xFD,0xCB,0x7F, 0xFD,0x82,0x7F,
 0xFD,0x34,0x7F,0xFD,0x09,0X7F,0XFC,0X44,0XFF,
// 5_ 6 5_4 3 1
0xFD,0x82,0x7F, 0xFD,0xCB,0x7F, 0xFD,0x82,0x7F,

0xFD,0x34,0x7F,0xFD,0x09,0X7F,0XFC,0X44,0XFF,
// 5_ 6 5_4 3 1
0xFC,0xAC, 0X7F,0xFC,0x44,0X7F, 0xFC,0xAC,0X7F,0xFA,0x44,0xFF,
// 2 5  1 0
0xFC,0xAC,0X7F, 0xFC,0x44,0X7F, 0xFC,0xAC,0X7F, 0xFA,0x44,0xFF,
0x00
};


			   


 /*********************************************************************************
* 名称:Init()
* 功能:设置计数器0 工作方式,16 位计数,溢出中断方式
**********************************************************************************/
void Init()
{
	TMOD = 0x10; //定时器0 处于计时方式,16 位
	EA = 1;
	ET1 = 1; //定时器0 溢出中断
}
/*********************************************************************************
* 名称:DelayMs(unsigned int time)
* 功能:延时time * 1ms 时间
*********************************************************************************/
void DelayMs(unsigned int time)
{
	unsigned int i;
	unsigned int j;
	for (j =0; j < time; j++) //每个循环 约 3ms
	{
		for (i =0; i < 363; i++)
		{;}
	}
}
void yinyue(){
       Init();
	   TH1= high;
	   TL1 =low;
}

void yinyue1(){

		  while(IRcord[2]==0x08){
		  DU=1;
			P0=0x77;  //第一位断码
			DU=0;

			WE=1;
			P0=0xfe;	   //第一位位码
			WE=0;
         	delay1();

			DU=1;
			P0=0x3f;   //第二位断码
			DU=0;

			WE=1;
			P0=0xfd;	   //第二位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x3f;   //第三位断码
			DU=0;

			WE=1;
			P0=0xfb;	   //第三位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x66;   //第四位断码
			DU=0;

			WE=1;
			P0=0xf7;	   //第四位位码
			WE=0;
			delay1();

			Ircordpro();

		if (music[ptr] != 0xFF && music[ptr] != 0x00)//判断是否是正常音符
		{
			TR1 = 0;
			P2_3 = 1;
			DelayMs(10); //间歇
			TR1 = 1;
			high = music[ptr]; //取设置频率数值的高8 位
			low = music[ptr + 1]; //取设置频率数值的低8 位
			time = music[ptr + 2]; //取发声时间
			DelayMs(time);
			ptr += 3;
		}
		else if (music[ptr] == 0xFF) //判断是否是休止符
		{
			time = music[ptr + 2];
			DelayMs(time); 
			ptr += 3;
		}
		
		else //结束符,停止2 秒后继续
		{
			TR1 = 0;
			P2_3 = 1;
			DelayMs(2000);
			ptr = 0;
		}
			TR1 = 0;
			P2_3 = 1;	
		   Ircordpro();
		}
		
		
		
		
} 
void yinyue2(){
 
		  while(IRcord[2]==0x1c){
		  DU=1;
			P0=0x77;  //第一位断码
			DU=0;

			WE=1;
			P0=0xfe;	   //第一位位码
			WE=0;
         	delay1();

			DU=1;
			P0=0x3f;   //第二位断码
			DU=0;

			WE=1;
			P0=0xfd;	   //第二位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x3f;   //第三位断码
			DU=0;

			WE=1;
			P0=0xfb;	   //第三位位码
			WE=0;
			delay1();

			DU=1;
			P0=0x6d;   //第四位断码
			DU=0;

			WE=1;
			P0=0xf7;	   //第四位位码
			WE=0;
			delay1();

			Ircordpro();

		if (music1[ptr] != 0xFF && music1[ptr] != 0x00)//判断是否是正常音符
		{
			TR1 = 0;
			P2_3 = 1;
			DelayMs(10); //间歇
			TR1 = 1;
			high = music1[ptr]; //取设置频率数值的高8 位
			low = music1[ptr + 1]; //取设置频率数值的低8 位
			time = music1[ptr + 2]; //取发声时间
			DelayMs(time);
			ptr += 3;
		}
		else if (music1[ptr] == 0xFF) //判断是否是休止符
		{
			time = music1[ptr + 2];
			DelayMs(time); 
			ptr += 3;
		}
		
		else //结束符,停止2 秒后继续
		{
			TR1 = 0;
			P2_3 = 1;
			DelayMs(2000);
			ptr = 0;
		}
			TR1 = 0;
			P2_3 = 1;	
		   Ircordpro();
		}
		
		
		
} 
/*********************************************************************************
* 名称:Count1(void) interrupt 1
* 功能:设置计时器0 溢出中断,每中断一次改变P2_3 引脚电平
*********************************************************************************/
void Count1(void) interrupt 3
{
	TH1 = high;
	TL1 = low;
	if (flag == 0) //改变P2_3 引脚电平
	{
		P2_3 = 0;
		flag = 1;
	}
	else
	{
		P2_3 = 1;
		flag = 0;
	}
}

	





/*------------------------------------------------
                全局变量声明
------------------------------------------------*/

unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
unsigned char  irtime;//红外用全局变量
bit irpro_ok,irok;
unsigned char IRcord[4];
unsigned char irdata[33];

/*12864端口定义*/
#define LCD_data  P0             //数据口
sbit LCD_RS  =  P1^0;            //寄存器选择输入 
sbit LCD_RW  =  P1^1;            //液晶读/写控制
sbit LCD_EN  =  P2^5;            //液晶使能控制
sbit LCD_PSB =  P1^2;            //串/并方式控制
sbit wela    =  P2^6;
sbit dula    =  P2^7;

unsigned char code zhu[]=		//图片代码
{
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x07,0xFF,0xFF,0xFF,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x03,0xFF,0xFF,0xFF,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x01,0xFF,0xFF,0xFF,
0x7F,0xFF,0xFF,0xFF,0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0xFF,0xFF,0xFF,
0x4F,0xFF,0xFF,0xFE,0x00,0x61,0xCF,0xFF,0xF9,0xFF,0xC0,0x00,0x00,0xFF,0xFF,0xFF,
0x47,0xFF,0xFF,0xF0,0x00,0x40,0xC7,0xFF,0xF8,0xFF,0xC3,0x80,0x70,0x7F,0xFF,0xFF,
0x47,0xFF,0xFF,0x3E,0x3C,0x04,0x47,0xFF,0xF8,0xFF,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x44,0x01,0xE1,0x60,0x60,0x04,0x47,0xE1,0xC0,0xFF,0xFF,0xF7,0xBF,0xFF,0xFF,0xFF,
0x44,0x00,0xC0,0xC0,0x40,0x18,0x47,0xC0,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x44,0x44,0x60,0x44,0x40,0x30,0xC7,0xC6,0x08,0xFF,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,
0x44,0x44,0x60,0x44,0x40,0x61,0xC7,0xC7,0x88,0xFF,0xFF,0x3E,0x3F,0xFF,0xFF,0xFF,
0x44,0x44,0x40,0x44,0x46,0x43,0xC7,0xC7,0x88,0xFF,0xFF,0x9D,0x1F,0xFF,0xFF,0xFF,
0x44,0x44,0x44,0x04,0x04,0x47,0xC7,0xC4,0x88,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,
0x44,0x44,0x60,0x00,0x00,0x00,0xC0,0x60,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x66,0x66,0x70,0x60,0x00,0x00,0x60,0x30,0xE0,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,
0x7F,0xFF,0xFF,0x8C,0x7F,0xC3,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,
0x7F,0xFF,0xFF,0x80,0x7F,0xF3,0xFF,0xFF,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,
0x7F,0xFF,0xFF,0xB0,0xFE,0x7B,0xFF,0xFF,0xFF,0xFF,0xF0,0x80,0x1B,0xFF,0xFF,0xFF,
0x7F,0xFF,0xFF,0xBF,0xFF,0xFB,0xFF,0xFF,0xFF,0xF8,0xB0,0x20,0x13,0xEF,0xFF,0xFF,
0x7F,0xFF,0xFF,0xFF,0x7E,0xFF,0xFF,0xFF,0xFF,0x00,0xFB,0x80,0x03,0xE0,0x1F,0xFF,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x50,0xE0,0x07,0xE8,0x07,0xFF,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x78,0x7E,0xC0,0x03,0xFF,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x1F,0xEE,0xC0,0x01,0xFF,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x07,0xFC,0xC0,0x00,0xFF,
0x7F,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x80,0x00,0x02,0x03,0xFD,0x80,0x20,0x7F,
0x7F,0xFF,0xFF,0xF7,0xE1,0xCF,0xFF,0xFF,0x00,0x00,0x01,0x00,0xF9,0x80,0x20,0x3F,
0x7F,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFE,0x00,0x00,0x00,0x00,0xF9,0x00,0x20,0x3F,
0x7F,0xFF,0xFE,0xDE,0x00,0x1F,0xFF,0xFC,0x00,0x00,0x00,0xF9,0xFF,0x00,0x20,0x3F,
0x7F,0xFF,0xFC,0x0F,0x00,0x00,0x3F,0xF8,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xE0,0x1F,
0x7F,0xFF,0xFF,0xF8,0x00,0x00,0x03,0xF0,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xE0,0x1F,
0x7F,0xFF,0xFF,0xFF,0xA3,0xE0,0x03,0xE0,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xE0,0x1F,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xE0,0x1B,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x30,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xE0,0x11,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x18,0x00,0x03,0xFF,0xFF,0xFC,0x7F,0xE0,0x01,
0x7F,0xFF,0xC3,0xFF,0xC7,0xFF,0xFE,0x0E,0x00,0x03,0xFF,0xFC,0x00,0x7F,0xE0,0x00,
0x7F,0xF8,0x03,0xFF,0xC3,0xFF,0xFE,0x06,0x00,0x03,0xFF,0x1E,0x78,0x7F,0xE0,0x01,
0x7F,0xC0,0x03,0xFF,0xF8,0x07,0xFE,0x07,0x00,0x03,0xFF,0x8E,0x60,0xFF,0xE0,0x07,
0x7F,0x00,0x03,0xFB,0x00,0x07,0xFC,0x01,0x00,0x03,0xFF,0xC6,0x01,0xFF,0xEE,0x0F,
0x7F,0x00,0x03,0xF3,0x88,0x7F,0xFC,0x00,0x00,0x0B,0xF0,0x06,0x13,0xFF,0xFF,0xFF,
0x7F,0x00,0x03,0xF9,0xF1,0xE7,0xFC,0x03,0xE0,0x01,0xF0,0x7E,0x73,0x1F,0x0F,0xFF,
0x7E,0x00,0x7F,0xFF,0xC0,0x07,0xF7,0x83,0xFF,0x7C,0x7C,0xFE,0x70,0x1F,0x5B,0xFF,
0x7E,0x01,0xFF,0xFB,0xC0,0x03,0xF7,0xD2,0x7E,0xF1,0x7C,0xFE,0x00,0xFC,0xEF,0xFF,
0x7C,0x03,0xFF,0xF3,0xF3,0xE3,0xF3,0x40,0xFE,0x88,0xFC,0xFF,0x09,0xFF,0xFF,0xFF,
0x78,0x03,0xFE,0xF3,0xF2,0x0F,0xE0,0xE0,0x7F,0xE3,0x7C,0xF8,0x39,0xF9,0xF3,0xFF,
0x60,0x03,0xFD,0xF3,0xF2,0x47,0xE1,0xF8,0x7C,0x83,0xDC,0x00,0x38,0xF9,0xE3,0xFF,
0x60,0x03,0xD9,0xFF,0xF8,0x47,0xE1,0xF8,0xFE,0x43,0xFC,0x0F,0x38,0xF3,0xE0,0x7F,
0x40,0xD9,0xE3,0xFE,0x79,0x07,0xC1,0xF0,0xFE,0x05,0xFF,0xFF,0x30,0x73,0xE7,0xFF,
0x00,0xF2,0x01,0xFE,0x71,0x27,0x80,0xE0,0x7F,0x2C,0xFF,0xFF,0x07,0x03,0xE1,0xFF,
0x00,0x50,0x03,0xFC,0x72,0x27,0x00,0x00,0x3F,0xF8,0xFF,0xFF,0x0F,0x83,0xE1,0xFF,
0x01,0x00,0x03,0xFC,0xF2,0x27,0x80,0x00,0x02,0x00,0x7F,0xFF,0xFF,0xFF,0xE3,0xFF,
0x40,0x00,0x03,0xF1,0xF7,0x30,0x00,0x00,0x10,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x40,0x00,0x03,0xF3,0xFF,0xF8,0x20,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x60,0x00,0x03,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x70,0x00,0x03,0xFF,0xFF,0xFF,0xF0,0x00,0x02,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x78,0x00,0x03,0xFF,0xFF,0xFF,0xA0,0x00,0x02,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x7C,0x00,0x17,0xFF,0xFF,0xFE,0x80,0x00,0x06,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x04,0x00,0x1F,0xFE,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x0F,0xFF,0xFF,0xFC,0x00,0x00,0x04,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x07,0xFF,0xFF,0xFC,0x00,0x00,0x04,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x07,0xFF,0xFF,0xFC,0x00,0x00,0x04,0x04,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

};
unsigned char code zhu1[]=		//图片代码
{
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,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x50,0x00,0x50,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3C,0x04,0x00,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x40,0x01,0x0B,0x15,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x40,0x00,0x88,0x00,0x00,0x06,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x80,0x00,0x60,0x00,0x00,0x05,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x03,0x90,0x00,0x01,0xB6,0x36,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00,0x01,0xFE,0x36,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x02,0x20,0x00,0x01,0xB6,0x36,0x00,0x00,0x00,
0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0xA0,0x00,0x03,0x6F,0xFF,0x00,0x00,0x00,
0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0xC0,0x00,0x00,0x00,0x28,0x00,0x00,0x00,
0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x80,0x00,0x00,0x1F,0x08,0x47,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x20,0x00,0x00,0x3D,0x13,0x0C,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x08,0x10,0x00,0x00,0x27,0xA0,0x18,0x06,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x10,0x00,0x00,0x3F,0x80,0x38,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x03,0xE0,0x00,0x33,0x90,0x3F,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xB0,0x00,0x33,0x10,0x7F,0x87,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x08,0x24,0xF0,0x0C,0x0E,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xF0,0xC2,0x00,0x00,0xFE,0x1F,0x81,0xB3,0xE6,0xD8,0xF0,0x00,
0x00,0x00,0x08,0x46,0x71,0x06,0x00,0x08,0x3F,0x1F,0x01,0xF6,0x67,0xF9,0xB0,0x00,
0x00,0x00,0x00,0x03,0x20,0x98,0x00,0x00,0x3F,0xFF,0x01,0xB6,0xC6,0xD9,0x80,0x00,
0x00,0x00,0x08,0x40,0xC0,0x24,0x00,0x04,0x3F,0x1F,0x03,0x7F,0xFD,0xBE,0xFC,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x1E,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x01,0x0E,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x87,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x08,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x88,0x00,0x01,0x8C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x01,0x8E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0xB6,0x06,0xDB,0x6C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x06,0xDB,0x6C,0x00,
0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x01,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,0x20,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x04,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,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x94,0xA4,0x68,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x42,0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x14,0x00,0x0A,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char code zhu2[]={
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,
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,
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,
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,
0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x03,0xFF,0xF0,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFF,0xF8,0x3F,0x00,0x00,0x78,0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0xFF,0xFF,0xC0,0x00,0x00,0x07,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0xFF,0xFE,0x00,0x00,0x00,0x00,0xDF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x3F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0x80,0x00,0x00,0x00,0x00,0x01,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0xFE,0x00,0x3F,0xFF,0x00,0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0xFC,0x00,0x1F,0xFF,0x00,0x10,0x00,0x7F,0xF0,0x07,0x68,0x90,0x00,0x00,0x00,
0x07,0xFC,0x00,0x00,0x7F,0x80,0x3E,0x00,0x3F,0xF0,0x30,0x01,0x80,0x00,0x00,0x00,
0x03,0xF8,0x00,0x00,0x0F,0x80,0x0F,0x80,0x3F,0xF0,0x46,0x00,0x00,0x00,0x00,0x00,
0x01,0xF8,0x00,0x00,0x07,0xC0,0x01,0xC0,0x1F,0xE0,0xB1,0x80,0x02,0x80,0x00,0x00,
0x00,0x70,0x00,0x03,0x00,0xC0,0x44,0x00,0x1F,0xC0,0x42,0xE2,0x80,0x15,0x00,0x00,
0x00,0x30,0x00,0xFF,0xF8,0x00,0x00,0x00,0x0F,0x01,0x92,0x00,0x22,0x01,0x00,0x00,
0x00,0x20,0x00,0x03,0xF8,0x00,0x00,0x00,0x08,0x07,0x48,0xA0,0x0C,0xB0,0x38,0x00,
0x00,0x40,0x00,0x00,0x00,0x00,0x78,0x00,0x08,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x40,0x00,0x03,0x80,0x00,0x4F,0x00,0x04,0x0B,0x02,0x00,0x02,0x00,0x00,0x00,
0x00,0xC0,0x00,0x00,0x00,0x00,0x1F,0x80,0x04,0x0D,0xC0,0x00,0x01,0x00,0x40,0x00,
0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x07,0xE0,0x00,0x06,0x2C,0x00,0x00,
0x00,0x80,0x00,0x00,0x00,0x00,0x0C,0x00,0x04,0x03,0xF0,0x00,0x48,0xDE,0x10,0x00,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x03,0xF0,0x18,0x80,0xD0,0x00,0x00,
0x01,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0xC0,0x01,0xAC,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x02,0x01,0xD9,0x00,0x70,0x00,0x00,0x00,
0x03,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x02,0x07,0xFE,0x70,0x80,0x00,0x00,0x00,
0x0E,0x00,0x00,0x3E,0x30,0x00,0x20,0x00,0x03,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x1E,0x00,0x00,0x78,0x1F,0xE0,0x10,0x00,0x03,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,
0x7E,0x00,0x00,0x30,0x0F,0xFC,0x18,0x00,0x03,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
0xFE,0x00,0x00,0x10,0x03,0xFF,0x8C,0x00,0x03,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
0xFE,0x00,0x00,0x0C,0x00,0x7C,0x00,0x00,0x03,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
0xFF,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x03,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0xFF,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0xFF,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x07,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,
0xFF,0xC0,0x00,0x00,0x60,0x0F,0xF0,0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,
0xFF,0xE0,0x00,0x00,0x30,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,
0xFF,0xF0,0x00,0x00,0x04,0x00,0x00,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0xFF,0xF8,0x00,0x00,0x03,0x80,0x80,0x00,0x3F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFC,0x00,0x00,0x01,0xFF,0x00,0x00,0x7F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0x00,0x00,0x00,0x04,0x00,0x01,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,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,0x00,0x00,0x00,0x00,0x00
};


#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
void delay0(uchar x);  //x*0.14MS
//void beep();
//void  dataconv();
void lcd_pos(uchar X,uchar Y);  //确定显示位置

void delay(int ms)
{
    while(ms--)
	{
      uchar i;
	  for(i=0;i<250;i++)  
	   {
	    _nop_();			   
		_nop_();
		_nop_();
		_nop_();
	   }
	}
}	

/*------------------------------------------------
                定时器0初始化
------------------------------------------------*/
void TIM0init(void)//定时器0初始化 红外定时器
{

  TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
  TH0=0x00; //重载值
  TL0=0x00; //初始化值
  ET0=1;    //开中断
  TR0=1;    
}
 /*------------------------------------------------
                  外部中断0初始化
------------------------------------------------*/
void EX0init(void) //判断红外键值的下降沿
{
 IT0 = 1;   //指定外部中断0下降沿触发,INT0 (P3.2)
 EX0 = 1;   //使能外部中断
 EA = 1;    //开总中断
}
/*------------------------------------------------
                  定时器0中断处理
------------------------------------------------*/

void tim0_isr (void) interrupt 1 using 1
{
  irtime++;  //用于计数2个下降沿之间的时间
}

		  /*------------------------------------------------
                  外部中断0中断处理
------------------------------------------------*/
void EX0_ISR (void) interrupt 0 //外部中断0服务函数
{
  static unsigned char  i;             //接收红外信号处理
  static bit startflag;                //是否开始处理标志位

if(startflag)                         
   {
    if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
                        i=0;
    		irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
    		irtime=0;
    		i++;
   			 if(i==33)
      			{
	  			 irok=1;
				 i=0;
	  			}
          }
  	 else
		{
		irtime=0;
		startflag=1;
		}

}
/*------------------------------------------------
                  键值处理
------------------------------------------------*/



void Ircordpro(void)//红外码值处理函数   红外解码
{ 
  unsigned char i, j, k;
  unsigned char cord,value;

  k=1;
  for(i=0;i<4;i++)      //处理4个字节
     {
      for(j=1;j<=8;j++) //处理1个字节8位
         {
          cord=irdata[k];
          if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差
             value|=0x80;
          if(j<8)
		    {
			 value>>=1;
			}
           k++;
         }
     IRcord[i]=value;
     value=0;     
     } 
	 irpro_ok=1;//处理完毕标志位置1
}

  //图片

/*******************************************************************/
/*                                                                 */
/*检查LCD忙状态                                                    */
/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。      */
/*                                                                 */
/*******************************************************************/
bit lcd_busy()
 {                          
    bit result;
    LCD_RS = 0;
    LCD_RW = 1;
    LCD_EN = 1;
    delayNOP();
    result = (bit)(P0&0x80);
    LCD_EN = 0;
    return(result); 
 }
/*******************************************************************/
/*                                                                 */
/*写指令数据到LCD                                                  */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */
/*                                                                 */
/*******************************************************************/
void lcd_wcmd(uchar cmd)
{                          
   while(lcd_busy());
    LCD_RS = 0;
    LCD_RW = 0;
    LCD_EN = 0;
    _nop_();
    _nop_(); 
    P0 = cmd;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;  
}
/*******************************************************************/
/*                                                                 */
/*写显示数据到LCD                                                  */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */
/*                                                                 */
/*******************************************************************/
void lcd_wdat(uchar dat)
{                          
   while(lcd_busy());
    LCD_RS = 1;
    LCD_RW = 0;
    LCD_EN = 0;
    P0 = dat;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0; 
}
/*******************************************************************/
/*                                                                 */
/*  LCD初始化设定                                                  */
/*                                                                 */
/*******************************************************************/
void lcd_init()
{ 

    LCD_PSB = 1;         //并口方式
    
    lcd_wcmd(0x34);      //扩充指令操作
    delay(5);
    lcd_wcmd(0x30);      //基本指令操作
    delay(5);
    lcd_wcmd(0x0C);      //显示开,关光标
    delay(5);
    lcd_wcmd(0x01);      //清除LCD的显示内容
    delay(5);
}

/*******************************************
函数名称:Draw_PM
功    能:在整个液晶屏幕上画图
参    数:无
返回值  :无
********************************************/
void Draw_PM(const uchar *ptr)
{
    uchar i,j,k;
    wela=1;
	dula=1;
	PT1=1; 
	lcd_wcmd(0x34);        //打开扩展指令集
	i = 0x80;            
	for(j = 0;j < 32;j++)
	{
        lcd_wcmd(i++);
        lcd_wcmd(0x80);
  		for(k = 0;k < 16;k++)
  		{
  		    lcd_wdat(*ptr++);
  		}
	}
	i = 0x80;
 	for(j = 0;j < 32;j++)
	{
 	    lcd_wcmd(i++);
        lcd_wcmd(0x88);	   
  		for(k = 0;k < 16;k++)
  		{
   		    lcd_wdat(*ptr++);
   		} 
	}  
    lcd_wcmd(0x36);        //打开绘图显示
	lcd_wcmd(0x30);        //到基本指令集
}

 void Ir_work(void)//红外键值散转程序
{
       switch(IRcord[2])//判断第三个数码值
	         {
			 case 0x0c:Draw_PM(zhu);xianshi();break;//1 显示相应的按键值
			 case 0x18:Draw_PM(zhu1);xianshi1();break;//PT1=1;yinyue()2PT1=0;TR1=1;lcd_wcmd(0x01);yinyue1();Ircordpro();
			 case 0x5e:Draw_PM(zhu2);xianshi2();break;//3DataPort=dofly_DuanMa[3];yinyue1();Ircordpro();break;
			 case 0x08:yinyue1();Ircordpro();break;//4
			 case 0x1c:yinyue2();Ircordpro();break;//5
			 case 0x5a:DataPort=dofly_DuanMa[6];break;//6
			 case 0x42:DataPort=dofly_DuanMa[7];break;//7
			 case 0x52:DataPort=dofly_DuanMa[8];break;//8
			 case 0x4a:DataPort=dofly_DuanMa[9];break;//9
             default:break;
			 }

		  irpro_ok=0;//处理完成标志

  }


main()
 {	
 
//      shumaguan();
//	  shumaguan1();	
//	  shumaguan2();
     xianshi();
	 xianshi1();
	 xianshi2();	
 //图片
		wela=1;
		dula=1;
	 		
//	uchar time; 
		lcd_init();                //初始化LCD 
		yinyue();
		yinyue1();   
   	 //红外

  EX0init(); //初始化外部中断
  TIM0init();//初始化定时器
  LCD1602=0;
  DataPort=0xfe; //取位码 第一位数码管选通,即二进制1111 1110
  LATCH2=1;      //位锁存
  LATCH2=0;

 while(1)//主循环不断扫描红外按键
   {
    if(irok)                        //如果接收好了进行红外处理
	  {   
	   Ircordpro();
 	   irok=0;
	  }

    if(irpro_ok)                   //如果处理好后进行工作处理,如按对应的按键后显示对应的数字等
	  {
	   Ir_work();
/*	   if(IRcord[2]==0x18) {
	   } */
	  
  	  }
   }
 }





如果大家想看完整项目可以到我上传的资源下载,链接如下:
点击跳转https://download.csdn.net/download/weiweiweiIT/12239736

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值