1、#include #include #include #ifndef _SOUNDPLAY_H_REVISION_FIRST_ /音乐相关#define _SOUNDPLAY_H_REVISION_FIRST_ /音乐相关#define uint unsigned int#define uchar unsigned charvoid nl(); /农历/*定义全局变量-*/uchar sec,min,hour, day, date, month,year,cen,r1_h,r1_m,r1_of,r2_h,r2_m,r2_of;data uchar year_moon,month_moon,da
2、te_moon,cen_m,week;uint bt,rt,rr,rtt,rrt;bit c_moon; /农历 世纪bit c; /公历 世纪bit w = 0; /调时标志位bit r = 0; /调整闹铃/*定义 12864 液晶屏数据线-*/sbit LCM_RS = P16; /模式位,为 0 输入指令,为 1 输入数据 sbit LCM_RW = P17; /读写位,为 0 读,为 1 写 sbit LCM_EN = P33; /使能位sbit LCM_BLA = P15; #define Lcd_Bus P0 /LCM12864 数据总线/*定义 DS12CR887 数据线-*/
3、sbit DS_CS = P35;sbit DS_AS = P34;sbit DS_RW = P36;sbit DS_DS = P37;#define Ds_Bus P2 /DS12CR887 数据总线/*定义按键 -*/sbit K1 = P13; /K1-设置sbit K2 = P10; /K2-确认sbit K3 = P12; /K3-加sbit K4 = P11; /K4-减 /*定义 DS18B20 数据线-*/sbit DQ = P30;/*定义蜂鸣器-*/sbit beep = P31;/*定义累加器 A 中的各位-*/sbit a0 = ACC 0;sbit a1 = ACC
4、1;sbit a2 = ACC 2;sbit a3 = ACC 3;sbit a4 = ACC 4;sbit a5 = ACC 5;sbit a6 = ACC 6;sbit a7 = ACC 7;/* */#define SYSTEM_OSC 12000000 /定义晶振频率 12000000HZ#define SOUND_SPACE 4/5 /定义普通音符演奏的长度分率 ,/每 4 分音符间隔unsigned int code FreTab12 = 262,277,294,311,330,349,369,392,415,440,466,494 ; /原始频率表unsigned char co
5、de SignTab7 = 0,2,4,5,7,9,11 ; /17 在频率表中的位置unsigned char code LengthTab7= 1,2,4,8,16,32,64 ; unsigned char Sound_Temp_TH0,Sound_Temp_TL0; /音符定时器初值暂存 unsigned char Sound_Temp_TH1,Sound_Temp_TL1; /音长定时器初值暂存/*延时程序 -*/延时函数 1MS/次void DelayM(uint a) uchar i;while( -a != 0) for(i = 0; i 11)j = j-12;NewFreT
6、abi = FreTabj*2;elseNewFreTabi = FreTabj;if(Octachord = 1)NewFreTabi=2;else if(Octachord = 3)NewFreTabi= 2; /低音 if (SM=3) CurrentFre 0;i-) /发规定长度的音 while(TF1=0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0; if(LDiv2!=0)TR0=0; beep=0;for(i=LDiv2;i0;i-) /音符间的间隔while(TF1=0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;Point+=2; Tone=SoundPoint;Length=SoundPoint+1;