标题:
单片机摇摇棒设计源码
[打印本页]
作者:
德川
时间:
2018-11-1 11:34
标题:
单片机摇摇棒设计源码
源文件见附件
单片机源程序如下:
/*
EEPROM分配
块一到块六为LED显示数据区
块七为音乐数据区
块八为参数区-----0到5为保存每块有多少个汉字
IAP_ADDRESS8+6为下载了多少块的参数 bank
IAP_ADDRESS8+9为上电基数次和偶数次参数
IAP_ADDRESS8+10为音乐下载标志。
IAP_ADDRESS8+11为音乐速度参数。
*/
#include<reg52.h>
#include<intrins.h>
#include<stdio.h>
#define unchar unsigned char
#define uint unsigned int
//全局变量
unsigned char *music_p[8];
unsigned char *LED_p1[8];
unsigned char *LED_p2[4];
unsigned char *LED_p3[4];
unsigned char *LED_p4[4];
unsigned char *LED_p5[4];
unsigned char *LED_p6[4];
unsigned char *LED_p7[4];
unsigned char *LED_p8[4];
sfr IPH=0xB7;
unchar xianshi_enable=0,midder_led_code=0;
uint hh=0,tt=300;
typedef unsigned char BYTE;
typedef unsigned int WORD;
void delay(unchar number);
void LED_display(void);
void display(unchar qian,unchar bai,unchar shi,unchar gei);
void DelayMs(unsigned char ms);
void send_uart(unsigned char ad);
BYTE IapReadByte(WORD addr);
unsigned char RECEIVR_buffer[150]={0};//512
unsigned char Music_buffer[10]={0};
unsigned char receive_number=0;
//-----------------------------------------------------------------
void UART_init(); //串口初始化函数
void COM_send(char string); //串口发送函数
unsigned char flag=0,flag1=0;
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
void uart_send(uchar string);
void delay_us(unsigned char t);
uchar timer_led=0,begin_LED=0,change_code=0,music_num=0,can_add=1,circle_display=0;
uchar LED_code=0;
uchar timer_out=0,one_timer=0,one_timer1=0;
//code 的内容只能读,不能改 所以如果需要修改数组里面的内容的话 就不能定义成code形式
//T0 的值,及输出频率对照表
#define uchar unsigned char
#define uint unsigned int
#define SYSTEM_OSC 11059200//12000000 //定义晶振频率12000000HZ
#define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔
sbit BeepIO = P3^7; //定义输出管脚
unsigned int code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表
unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 }; //1~7在频率表中的位置
unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 };
unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存
unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存
unsigned char code Music_Code0[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,
0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,
0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,
0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,
0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00,
0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,
0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,
0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,
0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03,
0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,
0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,
0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,
0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,
0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,
0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,
0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,
0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,
0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,
0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,
0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,
0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,
0x00,0x00 };
unsigned char code Music_Code1[]={ 0x21,0x01, 0x20,0x02, 0x20,0x67, 0x21,0x04, 0x1F,0x14,
0x17,0x02, 0x1F,0x02, 0x1A,0x03, 0x19,0x03, 0x17,0x02,
0x19,0x14, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1F,0x02,
0x1F,0x67, 0x1F,0x04, 0x1A,0x02, 0x1F,0x02, 0x17,0x01,
0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x19,0x02, 0x17,0x03,
0x16,0x03, 0x16,0x14, 0x21,0x01, 0x20,0x02, 0x20,0x67,
0x21,0x04, 0x1F,0x14, 0x17,0x02, 0x1F,0x02, 0x1A,0x03,
0x19,0x03, 0x17,0x02, 0x19,0x14, 0x19,0x03, 0x19,0x02,
0x1A,0x03, 0x1F,0x02, 0x1F,0x02, 0x1A,0x02, 0x19,0x03,
0x1A,0x03, 0x17,0x16, 0x17,0x03, 0x21,0x03, 0x21,0x02,
0x21,0x03, 0x21,0x02, 0x20,0x03, 0x1A,0x03, 0x1F,0x14,
0x1F,0x01, 0x1B,0x02, 0x1A,0x03, 0x1F,0x03, 0x17,0x00,
0x19,0x66, 0x19,0x03, 0x10,0x02, 0x17,0x03, 0x16,0x03,
0x16,0x00, 0x17,0x66, 0x19,0x03, 0x1A,0x02, 0x1A,0x67,
0x1A,0x04, 0x1A,0x02, 0x1F,0x03, 0x17,0x03, 0x17,0x01,
0x1F,0x66, 0x1F,0x03, 0x1A,0x02, 0x1F,0x02, 0x21,0x66,
0x20,0x03, 0x20,0x01, 0x21,0x01, 0x21,0x03, 0x20,0x02,
0x1F,0x03, 0x21,0x00, 0x20,0x02, 0x20,0x02, 0x1A,0x02,
0x21,0x03, 0x20,0x03, 0x20,0x00, 0x1F,0x02, 0x1F,0x03,
0x20,0x03, 0x21,0x02, 0x21,0x02, 0x20,0x02, 0x1F,0x03,
0x1B,0x03, 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x17,0x03,
0x21,0x02, 0x19,0x03, 0x1A,0x03, 0x1F,0x14, 0x00,0x00 };//当兵的人
unsigned char code Music_Code2[]={ 0x21,0x02, 0x17,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x02,
0x1A,0x03, 0x1F,0x02, 0x20,0x02, 0x21,0x03, 0x20,0x66,
0x20,0x02, 0x20,0x03, 0x1B,0x03, 0x1A,0x03, 0x1A,0x03,
0x17,0x03, 0x19,0x03, 0x1A,0x03, 0x20,0x04, 0x1B,0x03,
0x1A,0x03, 0x1A,0x03, 0x19,0x66, 0x1F,0x02, 0x1F,0x03,
0x1A,0x03, 0x1A,0x03, 0x20,0x03, 0x1B,0x03, 0x1A,0x03,
0x19,0x03, 0x1A,0x03, 0x20,0x03, 0x1B,0x03, 0x1B,0x03,
0x24,0x66, 0x00,0x00 };
//挥着翅膀的女孩
unsigned char code Music_Code3[]={ 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,
0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,
0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,
0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,
0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,
0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,
0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,
0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,
0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,
0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,
0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,
0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,
0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,
0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,
0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,
0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,
0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,
0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,
0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,
0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,
0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,
0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,
0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,
0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,
0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,
0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,
0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,
0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,
0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,
0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,
0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,
0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,
0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,
0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,
0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,
0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00};
//同一首歌
unsigned char code Music_Code4[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,
0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,
0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,
0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,
0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00,
0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,
0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,
0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,
0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03,
0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,
0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,
0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,
0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,
0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,
0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,
0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,
0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,
0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,
0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,
0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,
0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,
0x00,0x00 };
unsigned char code Music_Code5[]={ 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x15,0x02, 0x15,0x02,
0x16,0x02, 0x17,0x02, 0x15,0x02, 0x17,0x02, 0x18,0x02,
0x19,0x01, 0x17,0x02, 0x18,0x02, 0x19,0x01, 0x19,0x03,
0x1A,0x03, 0x19,0x03, 0x18,0x03, 0x17,0x02, 0x15,0x02,
0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x18,0x03, 0x17,0x02,
0x15,0x02, 0x15,0x02, 0x0F,0x02, 0x15,0x01, 0x15,0x02,
0x0F,0x02, 0x15,0x01, 0x00,0x00 }; //两只老虎
//两只蝴蝶
unsigned char code Music_Code6[] ={ 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,
0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,
0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,
0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03,
0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01,
0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,
0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01,
0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,
0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,
0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,
0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03,
0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01,
0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,
0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00,
0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03,
0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03,
0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03,
0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03,
0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03,
0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E,
0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E,
0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03,
0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03,
0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03,
0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03,
0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02,
0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01,
0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03,
0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,
0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,
0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,
0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02,
0x10,0x03, 0x15,0x00, 0x00,0x00 };
unsigned char code Music_Code7[]={ 0x16,0x03, 0x17,0x03, 0x15,0x02, 0x16,0x03, 0x17,0x03,
0x15,0x02, 0x16,0x03, 0x17,0x03, 0x19,0x02, 0x19,0x03,
0x1A,0x03, 0x15,0x02, 0x10,0x03, 0x15,0x03, 0x16,0x02,
0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x03, 0x15,0x03,
0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x0E, 0x16,0x04,
0x16,0x02, 0x17,0x03, 0x16,0x0E, 0x15,0x04, 0x15,0x02,
0x16,0x03, 0x17,0x03, 0x15,0x02, 0x16,0x03, 0x17,0x03,
0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x15,0x02, 0x10,0x03,
0x15,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x0E, 0x10,0x04,
0x10,0x02, 0x0F,0x04, 0x10,0x0E, 0x15,0x03, 0x15,0x0D,
0x15,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x19,0x03,
0x19,0x03, 0x1A,0x0E, 0x19,0x04, 0x19,0x02, 0x1A,0x03,
0x1B,0x03, 0x1F,0x03, 0x1A,0x03, 0x1A,0x03, 0x19,0x0E,
0x17,0x04, 0x17,0x02, 0x17,0x03, 0x16,0x0E, 0x15,0x04,
0x15,0x02, 0x15,0x02, 0x1A,0x03, 0x19,0x03, 0x19,0x02,
0x17,0x02, 0x16,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03,
0x10,0x03, 0x16,0x02, 0x16,0x02, 0x17,0x02, 0x19,0x02,
0x19,0x02, 0x19,0x02, 0x19,0x02, 0x1A,0x03, 0x19,0x03,
0x19,0x02, 0x1A,0x02, 0x1B,0x02, 0x1F,0x03, 0x1A,0x03,
0x1A,0x02, 0x1A,0x02, 0x19,0x03, 0x17,0x03, 0x17,0x02,
0x17,0x02, 0x16,0x0D, 0x15,0x03, 0x16,0x02, 0x15,0x03,
0x1A,0x0E, 0x19,0x04, 0x19,0x02, 0x17,0x03, 0x16,0x0E,
0x15,0x04, 0x16,0x02, 0x10,0x03, 0x1A,0x04, 0x15,0x0E,
0x15,0x03, 0x15,0x03, 0x15,0x02, 0x00,0x00 };//朋友
sfr IAP_DATA=0xE2; // flash data register
sfr IAP_ADDRH=0xE3; //flash address high
sfr IAP_ADDRL=0xe4; //falsh address low
sfr IAP_CMD=0Xe5; //FALSH COMMAND TRGGER
sfr IAP_TRIG=0xE6; //flash command trigger
sfr IAP_CONTR=0xE7; //flash control register
//定义 ISP/IAP/EEPROM 命令
#define CMD_IDIE 0 //stand-by
#define CMD_READ 1 //BYTE - READ
#define CMD_PROGRAM 2 // BYTE- PROGRAM
#define CMD_ERASE 3 //SECTOR --ERASE
//define ISP/IAP/EEPROM operation const for IAP_CONTR
//#define ENABLE_IAP 0X80 //SYSCLK<40MHZ
#define ENABLE_IAP 0X81 // SYSCLK<20MHZ
//#define ENABLE_IAP 0x82 //SYSCLK<10MHZ
//#define ENABLE_IAP 0X83 //SYSCLK<5MHZ
//Start addtess for STC89C58 eeprom
#define IAP_ADDRESS1 0x0000
#define IAP_ADDRESS2 0x0200
#define IAP_ADDRESS3 0x0400
#define IAP_ADDRESS4 0x0600
#define IAP_ADDRESS5 0x0800
#define IAP_ADDRESS6 0x0A00
#define IAP_ADDRESS7 0x0C00
#define IAP_ADDRESS8 0x0E00
#define Data P1 //数据端口
sbit H1 = P3^0;
sbit H2 = P3^1;
sbit H3 = P3^4;
sbit H4 = P3^5;
sbit key_change = P3^3;
sbit bell = P3^7;
sbit left_right=P3^2;
sfr WAKE_CLKO = 0x8f;
sfr CCON = 0xD8;
sfr CMOD = 0xD9;
sfr CL = 0xE9;
sfr CH = 0xF9;
sfr CCAP0L = 0xEA;
sfr CCAP0H = 0xFA;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sbit CR = 0xDE;
sbit CF =CCON^7;
sbit CCF0 =CCON^0;
sbit EPCAI =IE^6;
char begin_timer=1,begin_timer_LED=0,total=0,continue_display=0,music_flag=0,have_music=0;
//display_LED用来记录按键按了几次,对应显示那个EEPROM里面的内容,是不需要记录到EEPROM里面的
//bank用来记录已经下载了多少个EEPROM的块。
unsigned char LED_EEPROM_number=0,LED_EEPROM=0,display_LED=0;//LED_EEPROM_number为显示块有多少个汉字需要显示,display_LED为显示的汉字块
char UART_LED_EEPROM_number=0;
unsigned int total_timer,sleep=340;
//unsigned int begin_display_timer=2;
unsigned int PCA_COUNT=1;
unsigned int CCAP_VALUE=50000;
char bank=0,down=0;
unsigned char code LED_0[]=
{
//一箭穿心图片
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0E,0x80,0x01,0x00,0x1E,0xC0,0x01,0x00,0x3E,0xC0,0x01,0x00,0x7E,0xE0,0x01,0x00,0xFE,0xF0,0x01,0x00,0xFE,0xFF,0x01,0x00,0xFC,0xFF,0x01,0x00,0xF8,0xFF,0x01,0x00,0xE3,0x7F,0x00,0x00,0xC7,0x3F,0x02,0x00,0x8F,0x1F,0x03,0x00,0xBF,0x8F,0x03,0x00,0xFF,0xCF,0x03,0x00,0xFC,0xFF,0x03,0x00,0xF0,0xFF,0x00,0x00,0xC0,0x3F,0x00,0x00,0x80,0x3F,0x00,0x00,0x80,0x0F,0x00,0x00,0xBF,0x0F,0x00,0xC0,0xFF,0x0F,0x00,0xF0,0xFF,0x0F,0x00,0xF0,0xC1,0x1F,0x00,0x78,0x80,0x3F,0x00,
0x38,0x80,0x7F,0x00,0x1C,0x80,0xFF,0x01,0x1C,0x80,0xEF,0x01,0x1C,0x80,0xCF,0x03,0x38,0x80,0x8F,0x07,0x38,0x80,0x0F,0x0F,0xF8,0x80,0x0F,0x1E,0xF0,0x81,0x0F,0x1C,0xE0,0x87,0x0F,0x3C,0x80,0x87,0x0F,0x38,0xE0,0x87,0x0F,0x3C,0xF0,0x81,0x0F,0x1C,0xF0,0x80,0x0F,0x1E,0x38,0x80,0x0F,0x0F,0x38,0x80,0x8F,0x07,0x3C,0xBF,0xCF,0x03,0xDC,0xFF,0xEF,0x03,0xFC,0xFF,0xFF,0x01,0xF8,0xC1,0xFF,0x00,0x78,0xC0,0x3F,0x00,0xF8,0xC0,0x7F,0x00,0xF8,0xFF,0xFF,0x00,0xDC,0xFF,0xEF,0x01,0x1C,0xFF,0xCF,0x03,0x1C,0x80,0x8F,0x07,0x38,0x80,0x0F,0x0F,0x38,0x80,0x0F,0x0E,0x78,0x80,0x0F,0x1E,0xF0,0xF0,0x7F,0x1C,0xF0,0xF1,0x7F,0x38,0xE0,0xF7,0x7F,0x78,0x80,0xEF,0x7F,0x70,
0x80,0xEF,0x3F,0x70,0xE0,0xE7,0x3F,0x78,0xF0,0xE1,0x3F,0x38,0xF0,0xC0,0x1F,0x3C,0x78,0xC0,0x1F,0x1E,0x38,0xC0,0x1F,0x0E,0x38,0xC0,0x1F,0x0F,0x1C,0xC0,0x9F,0x07,0x1C,0xC0,0xDF,0x03,0x1C,0xC0,0xFF,0x01,0x38,0xC0,0xFF,0x00,0x38,0xC0,0x7F,0x00,0x78,0xC0,0x3F,0x00,0xF0,0xC1,0x1F,0x00,0xE0,0xFF,0x1F,0x00,0xC0,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,
0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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 LED_1[]=
{
//天行健
0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x60,0x10,0x40,0x00,0x60,0x10,0x40,0x00,0x30,0x10,0x40,0x00,0x38,0x10,0x40,0x00,0x1C,0x10,0x40,0x00,0x0E,0x10,0x40,0x00,0x07,0x10,0x40,0x80,0x07,0x10,0x40,0xE0,0x03,0x10,0x40,0xFC,0x01,0x10,0xC0,0x7F,0x00,0xF0,0xFF,0x3F,0x00,0xF0,0xFF,0x0F,0x00,0xF0,0xFF,0x01,0x00,0xF0,0xC0,0x03,0x00,0x10,0xC0,0x0F,0x00,0x10,0x40,0x3F,0x00,0x10,0x40,0xF8,0x00,0x10,0x40,0xE0,0x01,0x10,0x40,0xC0,0x03,0x18,0x40,0x80,0x07,0x1C,0x40,0x00,0x0F,0x1C,0x60,0x00,0x1E,0x18,0x30,0x00,0x3C,0x30,0x30,0x00,0x3C,0x20,0x30,0x00,0x38,0x00,0x60,0x00,0x38,0x00,0x40,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x18,0x00,0x00,0x06,0x0C,0x00,0x00,0x07,0x07,0x00,0x80,0x83,0x03,0x00,0xE0,0xC1,0x03,0x00,0xF0,0xF0,0xFF,0x7F,0x7C,0xF8,0xFF,0x7F,0x3E,0xFE,0xFF,0x7F,0x1C,0x9F,0x00,0x00,0x0C,0x0F,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x12,0x00,0x00,0x20,0x10,0x00,0x00,0x20,0x10,0x00,0x18,0x20,0x10,0x00,0x18,0x20,0x10,0x00,0x10,0x20,0x10,0x00,0x30,0x20,0x10,0x00,0x70,0x20,0x10,0x00,0x78,0x20,0xF0,0xFF,0x7F,0x20,0xF0,0xFF,0x3F,0x20,0xF0,0xFF,0x1F,0x20,0x10,0x00,0x00,0x30,0x10,0x00,0x00,0x18,0x10,0x00,0x00,0x18,0x18,0x00,0x00,0x38,0x18,0x00,0x00,0x30,0x18,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x80,0x03,0x00,0x00,0xE0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xFF,0xFF,0x7F,0xC0,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0xFE,0x19,0x00,0x60,0x7E,0x40,0x0C,0x70,0x4C,0xE0,0x7C,0x38,0x48,0xF8,0xF0,0x1D,0x40,0xFF,0xC0,0x0F,0xE0,0x7F,0xF8,0x07,0xE0,0xC7,0xFF,0x0F,0xE0,0xE0,0x7F,0x1C,0x40,0xE4,0x47,0x18,0x40,0x44,0x44,0x18,0x40,0x44,0x44,0x38,0x40,0x44,0x44,0x30,0x40,0x44,0x44,0x30,0xFC,0xFF,0xFF,0x37,0xFC,0xFF,0xFF,0x37,0xFC,0xFF,0xFF,0x37,0x4C,0x44,0x44,0x32,0x40,0x44,0x44,0x30,0xE0,0x7F,0x46,0x30,0xE0,0x7F,0x63,0x30,0xE0,0x7F,0x37,0x30,0x40,0x03,0x76,0x30,0x00,0x07,0x60,0x10,0x00,0x06,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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 LED_2[]=
{
//君子自强不息
0x40,0x00,0x00,0x00,0x40,0x00,0x02,0x00,0x40,0x02,0x03,0x00,0x44,0xC2,0x01,0x00,0x44,0xE2,0x00,0x00,0x44,0x7A,0x00,0x00,0x44,0xFF,0x0F,0x00,0xFC,0xFF,0x07,0x00,0xFC,0x27,0x04,0x00,0x7C,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0xFC,0x27,0x04,0x00,0xFE,0xF7,0x07,0x00,0xFE,0xF7,0x07,0x00,0x74,0x30,0x00,0x00,0x30,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x04,0x02,0x00,0x00,0x04,0x02,0x00,0x00,0x04,0x02,0x00,0x00,0x04,0x02,0x04,0x00,0x04,0x02,0x04,0x00,0x04,0x02,0x0C,0x00,0xC4,0xFF,0x0F,0x00,0xC4,0xFF,0x0F,0x00,0xC4,0xFF,0x07,0x00,0xE4,0x02,0x00,0x00,0x34,0x02,0x00,0x00,0x1C,0x02,0x00,0x00,0x1C,0x02,0x00,0x00,0x0E,0x02,0x00,0x00,0x0E,0x03,0x00,0x00,0x08,0x03,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0xF0,0xFF,0x0F,0x00,0x20,0x22,0x04,0x00,0x30,0x22,0x04,0x00,0x3E,0x22,0x04,0x00,0x3E,0x22,0x04,0x00,0x26,0x22,0x04,0x00,0x24,0x22,0x04,0x00,0x20,0x22,0x04,0x00,0x20,0x22,0x04,0x00,0x20,0x22,0x04,0x00,0xF0,0xFF,0x0F,0x00,0xF0,0xFF,0x0F,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x00,0x00,0xC8,0x0F,0x04,0x00,0x88,0x0F,0x0C,0x00,0x88,0x08,0x0E,0x00,0x88,0xF8,0x0F,0x00,0xFC,0xF9,0x07,0x00,0xFC,0xF8,0x04,0x00,0x0C,0x6A,0x0C,0x00,0x7C,0x7E,0x0C,0x00,0x7C,0x7E,0x04,0x00,0x7C,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0xC4,0xFF,0x07,0x00,0xC4,0xFF,0x07,0x00,0x44,0x22,0x06,0x00,0x7E,0xA2,0x02,0x00,0x7E,0xBE,0x03,0x00,0x44,0x3E,0x0F,0x00,0x00,0x02,0x0F,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0xC0,0x00,0x00,0x04,0x60,0x00,0x00,0x04,0x70,0x00,0x00,0x04,0x38,0x00,0x00,0x04,0x1C,0x00,0x00,0x04,0x0E,0x00,0x00,0x84,0x07,0x00,0x00,0xC4,0x03,0x00,0x00,0xFC,0xFF,0x0F,0x00,0xFC,0xFF,0x0F,0x00,0xFC,0xFF,0x07,0x00,0x0C,0x01,0x00,0x00,0x04,0x01,0x00,0x00,0x04,0x03,0x00,0x00,0x04,0x06,0x00,0x00,0x04,0x0E,0x00,0x00,0x06,0x3C,0x00,0x00,0x06,0x38,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0xC0,0x03,0x00,0xFC,0xDF,0x03,0x00,0xFC,0x1F,0x00,0x00,0xF8,0xFF,0x07,0x00,0x48,0xE9,0x07,0x00,0x4E,0x59,0x04,0x00,0x4E,0x39,0x04,0x00,0x4A,0xF9,0x04,0x00,0x4A,0xE9,0x04,0x00,0x48,0x49,0x04,0x00,0x48,0x09,0x04,0x00,0xFC,0x9F,0x07,0x00,0xFC,0x9F,0x07,0x00,0xFC,0x4F,0x04,0x00,0x00,0xC0,0x03,0x00,0x00,0x80,0x03,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char code LED_3[]=
{
//一生一世
0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xE0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x07,0x10,0x00,0xC0,0x03,0x10,0x00,0xF0,0x01,0x10,0x00,0xFE,0x00,0x10,0xC0,0x3F,0x08,0x10,0xF0,0x0F,0x08,0x10,0xF0,0x07,0x08,0x10,0xF0,0x04,0x08,0x10,0x20,0x04,0x08,0x10,0x20,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0x08,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x0C,0x10,0x00,0x04,0x0E,0x10,0x00,0x06,0x0E,0x10,0x00,0x07,0x0E,0x10,0x00,0x07,0x0C,0x18,0x00,0x0E,0x00,0x1C,0x00,0x0C,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xE0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0x00,0x30,0x00,0x38,0x00,0x30,0x00,0x38,0x00,0x30,0x00,0x38,0x00,0x30,0x00,0x38,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0x00,0x30,0x60,0x38,0x00,0x30,0x60,0x38,0x00,0x30,0x60,0x38,0x00,0x30,0x60,0x38,0x00,0x30,0x60,0x38,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0x00,0x30,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x3C,0x00,0x38,0x00,0x3C,0x00,0x38,0x00,0x38,0x00,0x30,0x00,0x30,0x00,0x20,0x00,0x00,0x00,0x00
};
unsigned char code LED_4[]=
{
//生日快乐
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x07,0x10,0x00,0xC0,0x03,0x10,0x00,0xF0,0x01,0x10,0x00,0xFE,0x00,0x10,0xC0,0x3F,0x08,0x10,0xF0,0x0F,0x08,0x10,0xF0,0x07,0x08,0x10,0xF0,0x04,0x08,0x10,0x20,0x04,0x08,0x10,0x20,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0x08,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x0C,0x10,0x00,0x04,0x0E,0x10,0x00,0x06,0x0E,0x10,0x00,0x07,0x0E,0x10,0x00,0x07,0x0C,0x18,0x00,0x0E,0x00,0x1C,0x00,0x0C,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xFC,0x00,0x00,0x00,0x7C,0x00,0x00,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0x00,0x1E,0x00,0x00,0x00,0x1C,0x00,0x60,0x00,0x3C,0x03,0x60,0x80,0x39,0x03,0x30,0x80,0x01,0x03,0x18,0x80,0x01,0x03,0x1E,0x80,0x01,0x83,0x0F,0x80,0x01,0xE3,0x07,0x80,0x01,0xFF,0x03,0xFC,0xFF,0xFF,0x00,0xFC,0xFF,0x3F,0x00,0xFC,0xFF,0x1F,0x00,0x80,0x01,0x7F,0x00,0x80,0x01,0xFB,0x01,0x80,0x01,0xE3,0x07,0x80,0x01,0x83,0x0F,0x80,0xFF,0x03,0x1E,0x80,0xFF,0x03,0x3C,0x80,0xFF,0x03,0x78,0x00,0x00,0x03,0x78,0x00,0x00,0x03,0x70,0x00,0x00,0x03,0x70,0x00,0x00,0x03,0x60,0x00,0x00,0x00,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0C,0x00,0xF0,0x01,0x06,0xF0,0xFF,0x01,0x07,0xF0,0xFF,0xC1,0x03,0xE0,0xFF,0xE1,0x01,0x60,0xC0,0xF1,0x00,0x60,0xC0,0x7D,0x10,0x60,0xC0,0x3D,0x10,0x30,0xC0,0x19,0x10,0x30,0xC0,0x11,0x30,0x30,0xC0,0x01,0x70,0x30,0xC0,0x01,0x70,0x30,0xFF,0xFF,0x7F,0x30,0xFF,0xFF,0x3F,0x38,0xFF,0xFF,0x1F,0x38,0xC0,0x01,0x00,0x38,0xC0,0x09,0x00,0x38,0xC0,0x19,0x00,0x3C,0xC0,0x39,0x00,0x3C,0xC0,0x71,0x00,0x3C,0xC0,0xE1,0x01,0x3C,0xC0,0xC1,0x07,0x38,0xE0,0xC1,0x0F,0x00,0xE0,0x81,0x0F,0x00,0xC0,0x01,0x0F,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char code LED_5[]=//凤凰传奇
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0xE0,0x1F,0xF8,0xFF,0xFF,0x0F,0xF8,0xFF,0xFF,0x0B,0xF8,0xFF,0x7F,0x0C,0xF8,0x3F,0x00,0x06,0x18,0x06,0x00,0x06,0x18,0x46,0x00,0x03,0x18,0x46,0x80,0x01,0x18,0xC6,0xC0,0x01,0x18,0x86,0xF1,0x00,0x18,0x86,0x7B,0x00,0x18,0x06,0x3F,0x00,0x18,0x06,0x1F,0x00,0x18,0xC6,0x1F,0x00,0x18,0xF6,0x3F,0x00,0x18,0xFE,0x79,0x00,0x18,0x7E,0xF8,0x01,0x18,0x1E,0xF0,0x01,0x18,0x0C,0xE0,0x01,0xF8,0xFF,0x0F,0x00,0xF8,0xFF,0xFF,0x01,0xF8,0xFF,0xFF,0x0F,0xF8,0xFF,0xFF,0x1F,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0xF0,0x1F,0xFC,0xFF,0xFF,0x4F,0xFC,0xFF,0xFF,0x41,0xF8,0xFF,0x3F,0x40,0x18,0x00,0x20,0x40,0x18,0xFF,0x2F,0x44,0x18,0xFF,0x2F,0x44,0x18,0xFE,0x27,0x44,0x18,0xFE,0x27,0x44,0x18,0x22,0x22,0x44,0xD8,0x23,0x22,0x44,0xF8,0x23,0xE2,0x7F,0xF8,0x22,0xE2,0x7F,0x58,0x22,0xE2,0x7F,0x58,0x22,0x22,0x44,0x18,0xFE,0x27,0x46,0x18,0xFF,0x37,0x47,0x18,0xFF,0x3F,0x43,0x18,0xFE,0x3B,0x46,0x18,0x02,0x70,0x64,0xF8,0xFF,0x7F,0x70,0xFC,0xFF,0xFF,0x63,0xFC,0xFF,0xFF,0xDF,0x18,0x00,0xF8,0xBF,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xFE,
0x00,0x00,0x10,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x0F,0x00,0x00,0xC0,0x03,0x00,0x00,0xF0,0x01,0x00,0x00,0xFC,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFC,0x01,0x00,0x00,0x7C,0x04,0x01,0x00,0x18,0x86,0x01,0x00,0x08,0x86,0x01,0x00,0x00,0x86,0x01,0x00,0x00,0x86,0x01,0x00,0x00,0x86,0x21,0x04,0x00,0x86,0x7F,0x0C,0x00,0xF6,0x7F,0x08,0xC0,0xFF,0x3F,0x18,0xFC,0xFF,0x33,0x18,0xFC,0xBF,0x31,0x30,0xFC,0x87,0x31,0x78,0x0C,0x86,0x31,0x7C,0x08,0x86,0x31,0xEF,0x00,0x86,0xB1,0xE7,0x00,0x86,0xF1,0xC3,0x00,0x86,0xF1,0xC1,0x00,0x87,0xF1,0x00,0x00,0xC7,0x71,0x00,0x00,0xC7,0x71,0x00,0x00,0xC6,0x31,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x80,0x01,0x00,0xC0,0x80,0x01,0x00,0xC0,0xC0,0x01,0x00,0xC0,0xC0,0x01,0x00,0xC0,0xC0,0xF9,0x3F,0xC0,0xE0,0xF9,0x3F,0xC0,0xA0,0xF9,0x3F,0xC0,0xB0,0xF1,0x1F,0xC0,0x98,0x31,0x0C,0xC0,0x98,0x31,0x0C,0xC0,0x9C,0x31,0x0C,0xC0,0x8F,0x31,0x0C,0xC0,0x87,0x31,0x0C,0xFE,0x83,0x31,0x0C,0xFE,0x83,0x31,0x0C,0xFC,0x83,0xF9,0x1F,0xDC,0x82,0xF9,0x1F,0xC8,0x86,0xF9,0x5F,0xC0,0x86,0x11,0x40,0xC0,0x8E,0x01,0x40,0xC0,0x8C,0x01,0xC0,0xC0,0x9C,0x01,0xC0,0xC0,0xBC,0xFF,0xFF,0xC0,0xB8,0xFF,0xFF,0xE0,0xB8,0xFF,0xFF,0xE0,0xB0,0xFF,0x7F,0xE0,0x80,0x01,0x00,0xC0,0xC0,0x01,0x00,0x80,0xE0,0x01,0x00,0x00,0xE0,0x01,0x00
};
unsigned char code LED_6[]=//情有独钟
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x3E,0x00,0x00,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0x00,0x07,0x00,0x00,0x00,0x6E,0x00,0x00,0x60,0x6E,0x00,0x00,0x60,0x60,0x00,0x00,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x3F,0x60,0x66,0x33,0x03,0x60,0x66,0x33,0x03,0xFC,0x7F,0x33,0x03,0xFC,0x7F,0x33,0x03,0xFC,0x7F,0x33,0x13,0x60,0x66,0x33,0x33,0x60,0x66,0x33,0x33,0x60,0x66,0x33,0x73,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x3F,0x60,0x76,0x00,0x00,0x60,0x70,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x18,0x00,0xC0,0x00,0x1C,0x00,0xC0,0x00,0x0E,0x00,0xC0,0x00,0x07,0x00,0xC0,0x80,0x03,0x00,0xC0,0xC0,0x01,0x00,0xC0,0xE0,0x01,0x00,0xC0,0xF8,0xFF,0x7F,0xC0,0xFC,0xFF,0x7F,0xC0,0xFF,0xFF,0x3F,0xE0,0x3F,0xC6,0x00,0xFC,0x37,0xC6,0x00,0xFC,0x31,0xC6,0x00,0xFC,0x30,0xC6,0x00,0xD8,0x30,0xC6,0x00,0xC8,0x30,0xC6,0x10,0xC0,0x30,0xC6,0x10,0xC0,0x30,0xC6,0x10,0xC0,0x30,0xC6,0x30,0xC0,0x30,0xC6,0x70,0xC0,0xF8,0xFF,0x7F,0xC0,0xF8,0xFF,0x7F,0xC0,0xF8,0xFF,0x3F,0xC0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x10,0x30,0xC0,0x00,0x10,0x30,0x70,0x00,0x30,0x18,0x38,0x10,0x60,0x0C,0x1C,0x10,0xE0,0x0E,0x1F,0x70,0xC0,0xC7,0x07,0x70,0xC0,0xFF,0x03,0x3C,0xE0,0xFF,0xFF,0x3F,0xF8,0xFC,0xFF,0x1F,0x78,0xE0,0xFF,0x07,0x38,0x00,0x00,0x18,0x18,0xFF,0x3F,0x38,0x00,0xFF,0x3F,0x38,0x00,0xFF,0x1F,0x18,0x00,0xFE,0x1F,0x18,0x00,0x06,0x0C,0x18,0x00,0x06,0x0C,0x18,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0x00,0x06,0x0C,0x18,0x00,0x06,0x4C,0x18,0x00,0xFE,0xDF,0x18,0x00,0xFF,0xDF,0x1F,0x00,0xFF,0x9F,0x1F,0x00,0xFE,0x0F,0x3F,0x00,0x04,0x00,0x3E,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x05,0x00,0x00,0xF0,0x04,0x00,0x00,0x7C,0x04,0x00,0x80,0x1F,0x04,0x00,0xF8,0x1F,0x04,0x08,0xFC,0xF3,0xFF,0x1F,0xFC,0xF0,0xFF,0x1F,0x98,0xF0,0xFF,0x1F,0x88,0x10,0x04,0x0E,0x80,0x18,0x04,0x07,0xC0,0x18,0x86,0x03,0xC0,0x30,0x86,0x01,0xC0,0x21,0xCE,0x00,0x00,0xFF,0x5F,0x00,0x00,0xFE,0x1F,0x00,0x00,0xFE,0x0F,0x00,0x00,0x06,0x0C,0x00,0x00,0x06,0x0C,0x00,0x00,0x06,0x0C,0x00,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0xF8,0xFF,0xFF,0x3F,0x08,0x06,0x0C,0x00,0x00,0x06,0x0C,0x00,0x00,0x06,0x04,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char code LED_7[]=
{
//房子图片
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xF8,0x00,0x07,0x00,0xF8,0xF1,0x03,0x00,0xF8,0xFF,0x01,0x00,0xF8,0xFF,0x01,0x00,0xFC,0xFF,0x00,0xC0,0xFF,0x7F,0x00,0xFC,0xFF,0x3F,0x00,0xF8,0xFF,0x3F,0x00,0xC0,0xFF,0x7F,0x00,0x00,0xFC,0xFF,0x00,0x00,0xF8,0xFF,0x01,0x00,0xF8,0xFF,0x01,0x00,0xF8,0xF1,0x03,0x00,0xF8,0x00,0x07,0x00,0x78,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,
0x00,0xC0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x80,0xFF,0xFF,0x3F,0x80,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xF0,0xFF,0xFF,0x3F,0xF0,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0x01,0x20,0xFC,0xFF,0x01,0x20,0xFC,0xFF,0x01,0x20,0xFE,0xFF,0x01,0x20,0xFE,0xFF,0xFF,0x3F,0xFC,0xFF,0x01,0x20,0xFC,0xFF,0x01,0x20,0xF8,0xFF,0x01,0x20,0xF8,0xFF,0x01,0x20,
0xF0,0xFF,0xFF,0x3F,0xF0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0x80,0xFF,0xFF,0x3F,0x80,0xFF,0xFF,0x3F,0x00,0xFF,0xFF,0x3F,0x00,0xFF,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x30,0x00,0x00,
0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xF0,0x00,0x08,0x00,0xF0,0x01,0x0F,0x00,0xF0,0xE3,0x07,0x00,0xF0,0xFF,0x03,0x00,0xF0,0xFF,0x03,0x00,0xF0,0xFF,0x01,0x00,0xFC,0xFF,0x00,0x80,0xFF,0xFF,0x00,0xF0,0xFF,0x7F,0x00,0xFC,0xFF,0x3F,0x00,0xF0,0xFF,0x7F,0x00,0x80,0xFF,0xFF,0x00,0x00,0xFC,0xFF,0x00,0x00,0xF8,0xFF,0x01,0x00,0xF0,0xFF,0x03,0x00,0xF0,0xFF,0x03,0x00,0xF0,0xE3,0x07,0x00,0xF0,0x01,0x0F,0x00,0xF0,0x00,0x08,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
void delay_ms(unsigned int num)
{
unsigned int k,l;
for(k=num;k>0;k--)
for(l=110;l>0;l--);
//for(l=begin_display_timer*50;l>0;l--);
}
void delay_ms_readIAP(unsigned int num)
{
unsigned int k,l;
for(k=num;k>0;k--)
for(l=60;l>0;l--);
//for(l=begin_display_timer*50;l>0;l--);
}
void InitialSound(void)
{
BeepIO = 1;
Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256-210; // 计算TL1应装入的初值 (10ms的初装值)
Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256-210; // 计算TH1应装入的初值
TH1 = Sound_Temp_TH1;
TL1 = Sound_Temp_TL1;
TMOD = 0x11;
ET0 = 1;
ET1 = 1;
TR0 = 0;
TR1 = 0;
IP=0X46;
IPH=0x4A;//T0 T1 EX1 EX0
EA = 1;
}
void BeepTimer0(void) interrupt 1 using 1//音符发生中断
{
BeepIO = !BeepIO;
TH0 = Sound_Temp_TH0;
TL0 = Sound_Temp_TL0;
}
void BeepTimer1(void) interrupt 3 //音符发生中断
{
TR1=0;
ET1 = 0;
timer_out=1;
}
//**************************************************************************
void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed)
{
unsigned int NewFreTab[12]; //新的频率表
unsigned char i,j;
unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength,music_length=0;
unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;
for(i=0;i<12;i++) // 根据调号及升降八度来生成新的频率表
{
j = i + Signature;
if(j > 11)
{
j = j-12;
NewFreTab[i] = FreTab[j]*2;
}
else
NewFreTab[i] = FreTab[j];
if(Octachord == 1)
NewFreTab[i]>>=2;
else if(Octachord == 3)
NewFreTab[i]<<=2;
}
SoundLength = 0;
while(Sound[SoundLength] != 0x00) //计算歌曲长度
{
SoundLength+=2;
}
Data=0xff;
Point = 0;
if((LED_EEPROM==1)&&(have_music==1)/*1*/)
{
Tone = IapReadByte(IAP_ADDRESS7+(Point++));
Length = IapReadByte(IAP_ADDRESS7+(Point++)); // 读出第一个音符和它时时值
}
else
{
Tone = Sound[Point];
Length = Sound[Point+1]; // 读出第一个音符和它时时值
}
LDiv0 = 12000/Speed; // 算出1分音符的长度(几个10ms)
LDiv4 = LDiv0/4; // 算出4分音符的长度
LDiv4 = LDiv4-LDiv4*SOUND_SPACE; // 普通音最长间隔标准
TR0 = 0;
TR1 = 1;
if((LED_EEPROM==1)&&(have_music==1))
{
while(IapReadByte(IAP_ADDRESS7+(Point))!=0x00)
{//
SL=Tone%10; //计算出音符
SM=Tone/10%10; //计算出高低音
SH=Tone/100; //计算出是否升半
CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出对应音符的频率
if(SL!=0)
{
if (SM==1) CurrentFre >>= 2; //低音
if (SM==3) CurrentFre <<= 2; //高音
Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数器初值
Sound_Temp_TH0 = Temp_T/256;
Sound_Temp_TL0 = Temp_T%256;
TH0 = Sound_Temp_TH0;
TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿
}
SLen=LengthTab[Length%10]; //算出是几分音符
XG=Length/10%10; //算出音符类型(0普通1连音2顿音)
FD=Length/100;
LDiv=LDiv0/SLen; //算出连音音符演奏的长度(多少个10ms)
if (FD==1)
LDiv=LDiv+LDiv/2;
if(XG!=1)
if(XG==0) //算出普通音符的演奏长度
if (SLen<=4)
LDiv1=LDiv-LDiv4;
else
LDiv1=LDiv*SOUND_SPACE;
else
LDiv1=LDiv/2; //算出顿音的演奏长度
else
LDiv1=LDiv;
if(SL==0) LDiv1=0;
LDiv2=LDiv-LDiv1; //算出不发音的长度
if (SL!=0)
{
TR0=1;
for(i=LDiv1;i>0;i--) //发规定长度的音
{
if(begin_LED)//已经发生水银中断
{
timer_led=1;
}
timer_out=0;
TH1 = Sound_Temp_TH1;
TL1 = Sound_Temp_TL1;
ET1 = 1;
TR1=1;
while(timer_out==0)
{
if(timer_led==1)//如果有显示任务标志
{
timer_led=0;
CH=0;
CL=0;
//PCA_COUNT++;
total=1;//PCA中断向下记数
CR=1;//开始PCA计时
xianshi_enable=1;//使能LED显示
hh=0;
}
if((xianshi_enable))//&&(continue_display==0)
{
H4=0;
if(PCA_COUNT<2)//PAC中断向下记数和向上计数一样
{
// if(begin_display_timer<(CH*256+CL))//判断延时是否完成
{
CH=0;
CL=0;
hh++;//延时次数自加
if(hh>tt)//200次延时后显示的汉字就会在显示在中间位置
{
hh=0;
CR=0;//停止PCA计数
LED_display();//开始显示图片或者汉字
continue_display=1;
xianshi_enable=0;//显示完成,下次可以不进次if语句
}
}
}
begin_LED=0;
}
if(continue_display==1)
{
LED_display();
}
}
}
if(LDiv2!=0)
{
TR0=0; BeepIO=1;
for(i=LDiv2;i>0;i--) //音符间的间隔
{
if(begin_LED)
{
timer_led=1;
}
timer_out=0;
TR1=1;
ET1 = 1;
TH1 = Sound_Temp_TH1;
TL1 = Sound_Temp_TL1;
while(timer_out==0)
{
if(timer_led==1)
{
timer_led=0;
CH=0;
CL=0;
//PCA_COUNT++;
total=1;//PAC中断向下记数
CR=1;
xianshi_enable=1;
hh=0;
}
if((xianshi_enable)&&(continue_display==0))
{
if(PCA_COUNT<2)//PAC中断向下记数和向上计数一样
{
// if(begin_display_timer<(CH*256+CL))//判断延时是否完成
{
CH=0;
CL=0;
hh++;//延时次数自加
if(hh>tt)//200次延时后显示的汉字就会在显示在中间位置
{
hh=0;
CR=0;//停止PCA计数
LED_display();//开始显示图片或者汉字
continue_display=1;
xianshi_enable=0;//显示完成,下次可以不进次if语句
}
}
}
begin_LED=0;
}
if(continue_display==1)
{
LED_display();
}
}
}
}
}
Tone = IapReadByte(IAP_ADDRESS7+(Point++));
Length = IapReadByte(IAP_ADDRESS7+(Point++));
}
}
else
{
while(Point < SoundLength)
{//
SL=Tone%10; //计算出音符
SM=Tone/10%10; //计算出高低音
SH=Tone/100; //计算出是否升半
CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出对应音符的频率
if(SL!=0)
{
if (SM==1) CurrentFre >>= 2; //低音
if (SM==3) CurrentFre <<= 2; //高音
Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数器初值
Sound_Temp_TH0 = Temp_T/256;
Sound_Temp_TL0 = Temp_T%256;
TH0 = Sound_Temp_TH0;
TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿
}
SLen=LengthTab[Length%10]; //算出是几分音符
XG=Length/10%10; //算出音符类型(0普通1连音2顿音)
FD=Length/100;
LDiv=LDiv0/SLen; //算出连音音符演奏的长度(多少个10ms)
if (FD==1)
LDiv=LDiv+LDiv/2;
if(XG!=1)
if(XG==0) //算出普通音符的演奏长度
if (SLen<=4)
LDiv1=LDiv-LDiv4;
else
LDiv1=LDiv*SOUND_SPACE;
else
LDiv1=LDiv/2; //算出顿音的演奏长度
else
LDiv1=LDiv;
if(SL==0) LDiv1=0;
LDiv2=LDiv-LDiv1; //算出不发音的长度
if (SL!=0)
{
TR0=1;
for(i=LDiv1;i>0;i--) //发规定长度的音
{
if(begin_LED)//已经发生水银中断
{
timer_led=1;
}
timer_out=0;
TH1 = Sound_Temp_TH1;
TL1 = Sound_Temp_TL1;
ET1 = 1;
TR1=1;
while(timer_out==0)
{
if(timer_led==1)//如果有显示任务标志
{
timer_led=0;
CH=0;
CL=0;
//PCA_COUNT++;
total=1;//PCA中断向下记数
CR=1;//开始PCA计时
xianshi_enable=1;//使能LED显示
hh=0;
}
if((xianshi_enable))//&&(continue_display==0)
{
H4=0;
if(PCA_COUNT<2)//PAC中断向下记数和向上计数一样
{
// if(begin_display_timer<(CH*256+CL))//判断延时是否完成
{
CH=0;
CL=0;
hh++;//延时次数自加
if(hh>tt)//200次延时后显示的汉字就会在显示在中间位置
{
hh=0;
CR=0;//停止PCA计数
LED_display();//开始显示图片或者汉字
continue_display=1;
xianshi_enable=0;//显示完成,下次可以不进次if语句
}
}
}
begin_LED=0;
}
if(continue_display==1)
{
LED_display();
}
if(change_code)
{
break;
}
}
if(change_code)
{
break;
}
}
if(LDiv2!=0)
{
TR0=0; BeepIO=1;
for(i=LDiv2;i>0;i--) //音符间的间隔
{
if(begin_LED)
{
timer_led=1;
}
timer_out=0;
TR1=1;
ET1 = 1;
TH1 = Sound_Temp_TH1;
TL1 = Sound_Temp_TL1;
while(timer_out==0)
{
if(timer_led==1)
{
timer_led=0;
CH=0;
CL=0;
//PCA_COUNT++;
total=1;//PAC中断向下记数
CR=1;
xianshi_enable=1;
hh=0;
}
if((xianshi_enable)&&(continue_display==0))
{
if(PCA_COUNT<2)//PAC中断向下记数和向上计数一样
{
// if(begin_display_timer<(CH*256+CL))//判断延时是否完成
{
CH=0;
CL=0;
hh++;//延时次数自加
if(hh>tt)//200次延时后显示的汉字就会在显示在中间位置
{
hh=0;
CR=0;//停止PCA计数
LED_display();//开始显示图片或者汉字
continue_display=1;
xianshi_enable=0;//显示完成,下次可以不进次if语句
}
}
}
begin_LED=0;
}
if(continue_display==1)
{
LED_display();
}
if(change_code)
{
break;
}
}
if(change_code)
{
break;
}
}
}
}
Point+=2;
Tone=Sound[Point];
Length=Sound[Point+1];
if(change_code)
{
break;
}
}
}
BeepIO = 1;
}
void DelayUs(unsigned char us)//delay us
{
unsigned char uscnt;
uscnt=us>>1;
while(--uscnt);
}
void DelayMs(unsigned char ms)//delay Ms
{
while(--ms)
{
DelayUs(250);
DelayUs(250);
DelayUs(250);
DelayUs(250);
}
}
void delay_us(unsigned char t)
{
unsigned char t1;
unsigned char t2;
for(t1=0;t1<t;t1++)
{
for(t2=0;t2<80;t2++)
{
;
}
}
}
void uart_send(uchar string)
{
SBUF = string;
while(TI==0);
delay_us(10);
}
//-------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
// 函数名称: UART_init()串口初始化函数
// 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
//
// 串口接收中断允许,发送中断禁止
//--------------------------------------------------------------------------------------------------
void UART_init()
{
/*TR1=0;
TMOD=0x20; //中断1 方式2
REN=1; //串口中断使能
SM0=1; //串口方式3(异步)
SM1=1;
TH1=0xFD; //初值
TL1=0xFD;
EA=1;
ES=1;
TR1=1; //使能中断 */
SCON=0x50;
TMOD|=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
EA=1;
ES=1;
}
void COM_send(char string)
{
SBUF=string;
while(!TI);
TI=0;
}
void send_uart(unsigned char ad)
{
ES=0;
TI=0;
SBUF=ad;
while(!TI);
TI=0;
ES=1;
}
/*void LED_display(void)
{
unsigned char h;
unsigned int i,j;
EX0=0;
IT0=0;
H1=1;H2=1;H3=1;H4=1;
j=0;
for(h=0;h<96;h++)
{
for(i=0;i<4;i++)
{
if(i==0)
{
H1=0;H2=1;H3=1;H4=1;
}
else if(i==1)
{
H1=1;H2=0;H3=1;H4=1;
}
else if(i==2)
{
H1=1;H2=1;H3=0;H4=1;
}
else if(i==3)
{
H1=1;H2=1;H3=1;H4=0;
}
Data=*(LED_p[LED_code]+(j));//temp1[j++];
j++;
if(j>127)
{
j=0;
LED_code++;
if(LED_code>2)
{
LED_code=0;
}
}
delay_ms(1);
Data=0x00;
}
}
H1=1;H2=1;H3=1;H4=1;
EX0=1;
IT0=1;
begin_timer_LED=1;//LED显示完成,下次进水银中断就可以读出需要延时的时间。
}//LED连续显示3个汉字,下面改成一次显示一个汉字*/
void LED_display(void)
{
unsigned char h;
unsigned int i,j;
EX0=0;
IT0=0;
H1=1;H2=1;H3=1;H4=1;
j=0;
for(h=0;h<32;h++)
{
for(i=0;i<4;i++)
{
if(i==0)
{
H1=0;H2=1;H3=1;H4=1;
}
else if(i==1)
{
H1=1;H2=0;H3=1;H4=1;
}
else if(i==2)
{
H1=1;H2=1;H3=0;H4=1;
}
else if(i==3)
{
H1=1;H2=1;H3=1;H4=0;
}
RECEIVR_buffer[j]=IapReadByte(512*display_LED+(midder_led_code)*128+j);
if(LED_EEPROM)//使用EEPROM里面的数据
{
Data=RECEIVR_buffer[j];
}
else
{
if(music_num==0)
{
Data=*(LED_p1[0]+(LED_code*128+j));
}
else if(music_num==1)
{
Data=*(LED_p1[1]+(LED_code*128+j));
}
else if(music_num==2)
{
Data=*(LED_p1[2]+(LED_code*128+j));
}
else if(music_num==3)
{
Data=*(LED_p1[3]+(LED_code*128+j));
}
else if(music_num==4)
{
Data=*(LED_p1[4]+(LED_code*128+j));
}
else if(music_num==5)
{
Data=*(LED_p1[5]+(LED_code*128+j));
}
else if(music_num==6)
{
Data=*(LED_p1[6]+(LED_code*128+j));
}
else if(music_num==7)
{
Data=*(LED_p1[7]+(LED_code*128+j));
}
//下面屏蔽的部分是采用一个汉字一个数组的形式。上面的是四个汉字一个数组的显示,这样方便字幕提取
/* if(music_num==0)
{
Data=*(LED_p1[LED_code]+(j));//temp1[j++];
}
else if(music_num==1)
{
Data=*(LED_p2[LED_code]+(j));//temp1[j++];
}
else if(music_num==2)
{
Data=*(LED_p3[LED_code]+(j));//temp1[j++];
}
else if(music_num==3)
{
Data=*(LED_p4[LED_code]+(j));//temp1[j++];
}
else if(music_num==4)
{
Data=*(LED_p5[LED_code]+(j));//temp1[j++];
}
else if(music_num==5)
{
Data=*(LED_p6[LED_code]+(j));//temp1[j++];
}
else if(music_num==6)
{
Data=*(LED_p7[LED_code]+(j));//temp1[j++];
}
else if(music_num==7)
{
Data=*(LED_p8[LED_code]+(j));//temp1[j++];
}*/
}
j++;
if(LED_EEPROM)
{
if(j>=127)
{
j=0;
midder_led_code++;
if(midder_led_code>=LED_EEPROM_number)//LED_EEPROM_number
{
midder_led_code=0;
continue_display=0;
begin_timer_LED=1;
}
}
delay_ms_readIAP(2);
}
else
{
if(j>=127)
{
j=0;
LED_code++;
if(LED_code>3)//LED_code_number为需要显示的汉字个数
{
LED_code=0;
continue_display=0;
begin_timer_LED=1;
}
}
delay_ms(1);
}
Data=0x00;
}
}
H1=1;H2=1;H3=1;H4=1;
EX0=1;
IT0=1;
//LED显示完成,下次进水银中断就可以读出需要延时的时间。
}
void PCA_int() interrupt 6 using 1
{
CCF0 = 0; // PCA 中断清零
CH=0;
CL=0;
CCAP_VALUE += 65530; //这个地方一定要注意自加,不然会导致中断进入不了。我也很奇怪为什么会这样。
CCAP0L = CCAP_VALUE;
CCAP0H = CCAP_VALUE>>8;
if(total==0)
{
PCA_COUNT++;
if(PCA_COUNT>250)
{
PCA_COUNT=250;
}
}
if(total==1)
{
PCA_COUNT--;
if(PCA_COUNT<1)
{
PCA_COUNT=1;
}
}
/*
CCF0 = 0; // PCA 中断清零
CCAP_VALUE += 50000; // 比较数加50000,不理溢出
CCAP0L = CCAP_VALUE;
CCAP0H = CCAP_VALUE>>8;
PCA_COUNT++;
*/
}
void PCA_intial()
{
CCON = 0x00;
CL = 0; // 计数清零
CH = 0;
CMOD = 0x00;//0x01; // 选择12分频的系统时钟,ECF = 0,CIDL = 0; 允许溢出中断
CCAP0L = 65530; // 先赋值高8位
CCAP0H = 65530; // 再赋值低8位
CCON = 0x40; // CF = CCF1 = CCF0 = 0; CR = 1;开启PCA计数器
CCAPM0 = 0x49; //0x49; ECOM = 1,CAPP0 = CAPN0 = 0,MAT0 = 1,TOG = 0,PWM0 = 0,ECCF0 = 1; 开启PCA中断
CR=0;
EPCAI=1;
EA = 1;
}
void Delay(BYTE n)
{
WORD x;
while(n--)
{
x=0;
while(++x);
}
}/**/
void IapIdle()
{
IAP_CONTR=0; //CLOSE IAP FUNCTION
IAP_CMD=0; //CLEAR COMMAND TO STANDBY
IAP_TRIG=0; //CLEAR TRIGGER REGISTER
IAP_ADDRH=0X80; //DATA PTR POINT TO NON-EEPROM AREA
IAP_ADDRL=0; //CLEAR IAP ADDRESS TO PREVENT MISUSE
}
BYTE IapReadByte(WORD addr)
{
BYTE dat;
IAP_CONTR=ENABLE_IAP; //OPEN IAP FUNCTION ,AND SET WAIT TIME
IAP_CMD=CMD_READ; //SET ISP/IAP/EEPROM READ COMMAND
IAP_ADDRL=addr; //SET ISP/IAP/EEPROM address low
IAP_ADDRH=addr>>8; //SET ISP//IAP//EEPROM address HIGH
IAP_TRIG=0X46; //SEND TRIGGER COMMAND1 OX46
IAP_TRIG=0XB9; //SEND TRIGGER COMMAND2 0XB9
_nop_();
dat=IAP_DATA; //read ISP/IAP/EEPROM data
IapIdle(); // close ISP/IAP/EEPROM FUNCITON
return dat; //RETURN FLAH DATA
}
void IapProgramByte(WORD addr, BYTE dat)
{
IAP_CONTR=ENABLE_IAP; //OPEN IAP FUNTION AND SET WAIT TIME
IAP_CMD=CMD_PROGRAM; //SET ISP/IAP/EEPROM PROGRAM COMMAND
IAP_ADDRL=addr; //set ISP/IAP/EEPROM ADDRESS LOW
IAP_ADDRH=addr>>8; //set ISP/IAP/EEPROM address high
IAP_DATA=dat; // WRITE ISP/IAP/EEPROM data
IAP_TRIG=0X46;
IAP_TRIG=0XB9;
_nop_();
IapIdle();
}
void IapEraseSector(WORD addr)
{
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_ERASE;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_TRIG=0X46;
IAP_TRIG=0XB9;
_nop_();
IapIdle();
}
main()
{
unsigned char h,hz_num[15]={0};
unsigned int i,zd;
music_p[0]=Music_Code0;
music_p[1]=Music_Code1;
music_p[2]=Music_Code2;
music_p[3]=Music_Code3;
music_p[4]=Music_Code4;
music_p[5]=Music_Code5;
music_p[6]=Music_Code6;
music_p[7]=Music_Code7;
LED_p1[0]=LED_1;
LED_p1[1]=LED_2;
LED_p1[2]=LED_3;
LED_p1[3]=LED_4;
LED_p1[4]=LED_0;
LED_p1[5]=LED_5;
LED_p1[6]=LED_6;
LED_p1[7]=LED_7;
//下面屏蔽部分是采用的一个汉字一个数组的形式进行的显示,可以节省内存
/*LED_p1[0]=LED_wo;//我爱你;
LED_p1[1]=LED_tp1;
LED_p1[2]=LED_ni;
LED_p1[3]=LED_tanhao;
LED_p2[0]=LED_bao;//宝贝宝贝;
LED_p2[1]=LED_be;
LED_p2[2]=LED_bao;
LED_p2[3]=LED_be;
LED_p3[0]=LED_di;//帝业电子;
LED_p3[1]=LED_ye;
LED_p3[2]=LED_dian;
LED_p3[3]=LED_zi;
LED_p4[0]=LED_3D;//3D摇摇棒;
LED_p4[1]=LED_yao;
LED_p4[2]=LED_yao;
LED_p4[3]=LED_bang;
LED_p5[0]=LED_yi;//一生一世;
LED_p5[1]=LED_sheng;
LED_p5[2]=LED_yi;
LED_p5[3]=LED_shi;
LED_p6[0]=LED_sheng;//生日快乐;
LED_p6[1]=LED_ru;
LED_p6[2]=LED_kuai;
LED_p6[3]=LED_lei;
LED_p7[0]=LED_feng;//凤凰传奇;
LED_p7[1]=LED_huang;
LED_p7[2]=LED_chuan;
LED_p7[3]=LED_qi;
LED_p8[0]=LED_qing;//情有独钟;
LED_p8[1]=LED_you;
LED_p8[2]=LED_du;
LED_p8[3]=LED_zhong;*/
left_right=1;
H1=1;H2=1;H3=1;H4=1;
UART_init();
/*bank=IapReadByte(IAP_ADDRESS8+6);
COM_send(bank+0x30);
IapEraseSector(0x0000);
IapProgramByte(0,'W');
IapProgramByte(1,'B');
IapProgramByte(2,'Q');
IapProgramByte(3,'D');
while(1)
{
COM_send(IapReadByte(0));
COM_send(IapReadByte(1));
COM_send(IapReadByte(2));
COM_send(IapReadByte(3));
delay_ms(4000);
} */
/* while(1)
{
if(LED_EEPROM==1)
break;
}
*/
key_change=1;
if(key_change==0)//如果上电的时候按键是按下去的,那么进去下载模式。否则进入显示模式
{
bank=IapReadByte(IAP_ADDRESS8+6);
if(bank==0xFF)
{
bank=0;
IapProgramByte(IAP_ADDRESS8+6,0);
}
H3=0;
delay_ms(4000);
H3=1;
while(1)
{
delay_ms(4000);
delay_ms(4000);
/* if(flag==1)
{
flag=0;
for(i=0;i<512;i++)
{
IapProgramByte(i,0x55);
}
for(i=0;i<512;i++)
{
//COM_send(IapReadByte(i));
COM_send(IapReadByte(i));
}
flag1++;
}*/
}
}
while(key_change==1);
delay_ms(4000);
if(IapReadByte(IAP_ADDRESS8+9)!=0)//实现显示上的切换,基数次上电显示的是EEPROM保存的汉字,偶数次上电显示的程序自带的内容
{
LED_EEPROM=1;
hz_num[9]=0;
COM_send('E');COM_send('E');COM_send('P');COM_send('R');COM_send('O');COM_send('M');
COM_send(0x0d);
COM_send(0x0a);
}
else
{
LED_EEPROM=0;
hz_num[9]=1;
COM_send('Z');COM_send('I');COM_send('D');COM_send('A');COM_send('I');COM_send('I');
COM_send(0x0d);
COM_send(0x0a);
}
for(i=0;i<9;i++)
{
hz_num[i]=IapReadByte(IAP_ADDRESS8+i);
}
hz_num[10]=IapReadByte(IAP_ADDRESS8+10); //音乐下载标志
sleep=IapReadByte(IAP_ADDRESS8+11); //音乐下载标志
hz_num[11]=sleep;
if(hz_num[10]==0x55)
{
have_music=1;
// COM_send('h');COM_send('a');COM_send('v');COM_send('e');COM_send(0x0d);COM_send(0x0a);
/* for(i=0;i<100;i++)
{
COM_send(IapReadByte(IAP_ADDRESS7+i));
}*/
}
if((sleep==0)||(sleep==0xff))
{
sleep=340;
}
else
{
//COM_send(sleep/10+0x30);COM_send(sleep%10+0x30);COM_send(0x0d);COM_send(0x0a);
sleep=sleep*10;
}
IapEraseSector(IAP_ADDRESS8);
for(i=0;i<12;i++)
{
IapProgramByte(IAP_ADDRESS8+i,hz_num[i]);
}
if(LED_EEPROM==1)
{
/*for(zd=0;zd<128;zd++)
{
RECEIVR_buffer[zd]=IapReadByte(zd);//获取第一个汉字的代码
COM_send(RECEIVR_buffer[zd]);
delay_ms(100);
}*/
bank=IapReadByte(IAP_ADDRESS8+6);//得到已经有几个bank里面保存了数据
LED_EEPROM_number=IapReadByte(IAP_ADDRESS8);//得到第一个bank里面保存了几个汉字
tt=300-LED_EEPROM_number*20;
/* COM_send('b');COM_send('a');COM_send('n');COM_send('k');COM_send('=');COM_send(bank+0x30);
COM_send(0x0d);
COM_send(0x0a);
COM_send('L');COM_send('E');COM_send('D');COM_send('_');COM_send('E');COM_send('E');
COM_send('P');COM_send('R');COM_send('O');COM_send('M');COM_send('_');COM_send('n');
COM_send('u');COM_send('m');COM_send('b');COM_send('e');COM_send('r');COM_send('=');
COM_send(LED_EEPROM_number+0x30);
COM_send(0x0d);
COM_send(0x0a);*/
}
EX0=1;
IT0=1;
EX1=1;
IT1=1;
EA=1;
InitialSound();
TR0 = 1;
TR1 = 1;
P1 = 0x55;
H1=1;
PCA_intial();
/*CR=1;
while(1)
{
if(PCA_COUNT==40)
{
PCA_COUNT = 0;
H1=!H1;
}
} */
LED_display();
while(1)
{
Play(music_p[music_num],5,2,sleep);
can_add=1;
if(change_code)
{
change_code=0;
}
}
}
//--------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
// 函数名称: com_interrup()串口接收中断处理函数
// 函数功能: 接收包括起始位'S'在内的十位数据到数据缓冲区
//--------------------------------------------------------------------------------------------------
void ISR_Hy(void) interrupt 0 using 1
{
EX0=0;
IT0=0;
begin_LED=1;
if(begin_timer==1)
{
total=0;//PAC向上计数
begin_timer=0;
CH=0;
CL=0;
CR=1;
}
if(begin_timer_LED==1)
{
CR=0;
total=0;//PCA向下计时
begin_timer_LED=0;
begin_timer=1;//允许下次进水银中断后开始计时
total_timer=CH*256;//得到时间值
total_timer=total_timer+CL;
// begin_display_timer=total_timer;//得到时间值
}
EX0=1;
IT0=1;
}
void ISR_key(void) interrupt 2
{
delay_ms(30);
if(key_change==0)
{
EX1=0;
IT1=0;
change_code=1;
if((LED_EEPROM==1)&&(have_music==1))
{
display_LED++;//显示内容更新
LED_EEPROM_number=IapReadByte(IAP_ADDRESS8+display_LED);//显示内容包含几个汉字
}
else if(can_add)
{
music_num++;//播放的音乐内容更新
display_LED++;//显示内容更新
LED_EEPROM_number=IapReadByte(IAP_ADDRESS8+display_LED);//显示内容包含几个汉字
can_add=0;
}
if(music_num>7)
{
music_num=0;
}
if(display_LED>=bank)
{
display_LED=0;
LED_EEPROM_number=IapReadByte(IAP_ADDRESS8);
}
if(LED_EEPROM)
{
tt=300-LED_EEPROM_number*20;
}
else
{
tt=300;
}
while(key_change==0);
delay_ms(30);
EX1=1;
IT1=1;
}
}
void com_interrupt(void) interrupt 4 //using 3
{
unsigned int i;
unsigned char hz_number[6]={0};
WORD add;
if(RI) //处理接收中断
{
RI=0;
RECEIVR_buffer[receive_number]=SBUF; //接收串口数据
// COM_send(RECEIVR_buffer[receive_number]);
if ((RECEIVR_buffer[receive_number] ==0x0A)&&(RECEIVR_buffer[receive_number-1] ==0x0D))
{
if((RECEIVR_buffer[receive_number-2]=='N')&&(RECEIVR_buffer[receive_number-3]=='W')&&(RECEIVR_buffer[receive_number-4]=='O')
&&(RECEIVR_buffer[receive_number-5]=='D'))
{
down=1;
IapEraseSector(512*bank);
receive_number=0;
UART_LED_EEPROM_number=0;
//COM_send(UART_LED_EEPROM_number+0x30);
// COM_send(0x0D);
// COM_send(0x0A);
COM_send('A');
}
else if((RECEIVR_buffer[receive_number-2]=='P')&&(RECEIVR_buffer[receive_number-3]=='O')&&(RECEIVR_buffer[receive_number-4]=='T')
&&(RECEIVR_buffer[receive_number-5]=='S'))
{
if(music_flag==1)
{
UART_LED_EEPROM_number=0;
music_flag==0;
have_music=1;//
for(i=0;i<12;i++)
{
hz_number[i]=IapReadByte(IAP_ADDRESS8+i);
}
hz_number[10]=0x55;
IapEraseSector(IAP_ADDRESS8);
for(i=0;i<12;i++)
{
IapProgramByte(IAP_ADDRESS8+i,hz_number[i]);
}
}
else
{
down=0;
receive_number=0;
COM_send('O');COM_send('K');
for(i=0;i<bank;i++)
{
hz_number[i]=IapReadByte(IAP_ADDRESS8+i);
}
hz_number[bank]=UART_LED_EEPROM_number;
hz_number[bank+1]=IapReadByte(IAP_ADDRESS8+10);//读出音乐是否下载标志
hz_number[11]=IapReadByte(IAP_ADDRESS8+11);
IapEraseSector(IAP_ADDRESS8);
bank++;
if(bank>6)
{
bank=0;
}
for(i=0;i<bank;i++)
{
IapProgramByte(IAP_ADDRESS8+i,hz_number[i]);
}
IapProgramByte(IAP_ADDRESS8+6,bank);
IapProgramByte(IAP_ADDRESS8+10,hz_number[bank+1]);//写入音乐是否下载标志
IapProgramByte(IAP_ADDRESS8+11,hz_number[11]);
UART_LED_EEPROM_number=0;
// LED_EEPROM=1;
// LED_EEPROM_number=IapReadByte(IAP_ADDRESS8+i);
}
}
else if((RECEIVR_buffer[receive_number-2]=='D')&&(RECEIVR_buffer[receive_number-3]=='A')&&(RECEIVR_buffer[receive_number-4]=='E')
&&(RECEIVR_buffer[receive_number-5]=='R'))
{
receive_number=0;
//bank=IapReadByte(IAP_ADDRESS8+6);
COM_send(bank+0x30);
flag++;
}
else if((RECEIVR_buffer[receive_number-2]=='R')&&(RECEIVR_buffer[receive_number-3]=='A')&&(RECEIVR_buffer[receive_number-4]=='E')
&&(RECEIVR_buffer[receive_number-5]=='L')&&(RECEIVR_buffer[receive_number-6]=='C'))
{
receive_number=0;
IapEraseSector(IAP_ADDRESS1);
IapEraseSector(IAP_ADDRESS2);
IapEraseSector(IAP_ADDRESS3);
IapEraseSector(IAP_ADDRESS4);
IapEraseSector(IAP_ADDRESS5);
IapEraseSector(IAP_ADDRESS6);
IapEraseSector(IAP_ADDRESS7);
IapEraseSector(IAP_ADDRESS8);
// bank=0;
have_music=0;
IapProgramByte(IAP_ADDRESS8+6,0);
bank=IapReadByte(IAP_ADDRESS8+6);
COM_send('C');COM_send('L');COM_send('E');COM_send('A');COM_send('R');
COM_send('+');COM_send('O');COM_send('K');
}
else if((RECEIVR_buffer[receive_number-2]=='S')&&(RECEIVR_buffer[receive_number-3]=='U')&&(RECEIVR_buffer[receive_number-4]=='M')
&&(RECEIVR_buffer[receive_number-5]=='L')&&(RECEIVR_buffer[receive_number-6]=='C'))
{
receive_number=0;
IapEraseSector(IAP_ADDRESS7);
// bank=0;
for(i=0;i<12;i++)
{
hz_number[i]=IapReadByte(IAP_ADDRESS8+i);
}
hz_number[10]=0;
IapEraseSector(IAP_ADDRESS8);
for(i=0;i<12;i++)
{
IapProgramByte(IAP_ADDRESS8+i,hz_number[i]);
}
COM_send('C');COM_send('L');COM_send('E');COM_send('A');COM_send('R');
COM_send('+');COM_send('O');COM_send('K');
}
else if((RECEIVR_buffer[0]=='S')&&(RECEIVR_buffer[1]=='L')&&(RECEIVR_buffer[2]=='E')&&(RECEIVR_buffer[3]=='E')
&&(RECEIVR_buffer[4]=='P'))
{
if(RECEIVR_buffer[7]==0x0d)
{
sleep=((RECEIVR_buffer[5]-0x30)*10+(RECEIVR_buffer[6]-0x30))*10;
}
else
{
sleep=(RECEIVR_buffer[5]-0x30)*10;
}
for(i=0;i<12;i++)
{
hz_number[i]=IapReadByte(IAP_ADDRESS8+i);
}
hz_number[11]=sleep/10;
IapEraseSector(IAP_ADDRESS8);
for(i=0;i<12;i++)
{
IapProgramByte(IAP_ADDRESS8+i,hz_number[i]);
}
receive_number=0;
COM_send('S');COM_send('L');COM_send('E');COM_send('E');COM_send('P');
}
else if((RECEIVR_buffer[receive_number-2]=='C')&&(RECEIVR_buffer[receive_number-3]=='I')&&(RECEIVR_buffer[receive_number-4]=='S')&&(RECEIVR_buffer[receive_number-5]=='U')
&&(RECEIVR_buffer[receive_number-6]=='M'))
{
music_flag=1;
IapEraseSector(IAP_ADDRESS7);
receive_number=0;
COM_send('A');
}
else if(down==1)
{
add=512*bank;
/* for(i=0;i<receive_number;i++)
{
COM_send(RECEIVR_buffer[i]);
}*/
for(i=0;i<receive_number;i++)
{
if(RECEIVR_buffer[i]==0x0d)
{
//delay_ms(2000);
COM_send('A');
break;
}
else
//COM_send(UART_LED_EEPROM_number+0x30);
//COM_send(0x0D);
// COM_send(0x0A);
IapProgramByte((add+(UART_LED_EEPROM_number*128)+i),RECEIVR_buffer[i]);
// COM_send(IapReadByte((add+UART_LED_EEPROM_number*128+i)));
}
/* for(i=0;i<receive_number;i++)
{
// COM_send(IapReadByte(add+UART_LED_EEPROM_number*128+i)); //发送数据
COM_send((add+UART_LED_EEPROM_number*128+i)/1000+0x30);
COM_send((add+UART_LED_EEPROM_number*128+i)%1000/100+0x30);
COM_send((add+UART_LED_EEPROM_number*128+i)%100/10+0x30);
COM_send((add+UART_LED_EEPROM_number*128+i)%10+0x30);
COM_send(0x0D);
COM_send(0x0A);
delay_ms(10);
}
COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');
COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');
COM_send(0x0D);
COM_send(0x0A);*/
UART_LED_EEPROM_number++;
receive_number=0;
}
else if(music_flag==1)
{
for(i=0;i<receive_number;i++)
{
if(RECEIVR_buffer[i]==0x0d)
{
COM_send('A');
break;
}
else
//COM_send(UART_LED_EEPROM_number+0x30);
//COM_send(0x0D);
// COM_send(0x0A);
IapProgramByte((IAP_ADDRESS7+(UART_LED_EEPROM_number*128)+i),RECEIVR_buffer[i]);
}
/* for(i=0;i<receive_number;i++)
{
// COM_send(IapReadByte(add+UART_LED_EEPROM_number*128+i)); //发送数据
COM_send((add+UART_LED_EEPROM_number*128+i)/1000+0x30);
COM_send((add+UART_LED_EEPROM_number*128+i)%1000/100+0x30);
COM_send((add+UART_LED_EEPROM_number*128+i)%100/10+0x30);
COM_send((add+UART_LED_EEPROM_number*128+i)%10+0x30);
COM_send(0x0D);
COM_send(0x0A);COM_send('H');COM_send('H');COM_send('H');COM_send('H');
COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');
COM_send(0x0D);
COM_send(0x0A);*/
UART_LED_EEPROM_number++;
delay_ms(10);
}
COM_send('H');COM_send('H');
receive_number=0;
}
}
else
receive_number++;
}
复制代码
所有资料51hei提供下载:
yaoyaobang.zip
(13.28 KB, 下载次数: 5)
2018-11-1 11:32 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2018-11-1 13:48
楼主能补全原理图或说明一下电路连接吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1