void SendMessage(char *Message, char *phoneNumber){ unsigned char end=0x1a; writeCom("AT^HCMGS="); writeCom(phoneNumber); writeCom(",1\r\n"); sleep(1000); writeCom("AT^HCMGS="); writeCom(Message); writeCom(end); }
void init() {//定时器初始化 TMOD=0x11; TH0=0xd8; TL0=0xef; EA=1; ET0=1; ET1=1; // duan=0; wei=0; lcden=0; count=0; writeCom(0x38); writeCom(0x0c); writeCom(0x06); writeCom(0x01);//清屏 writeCom(0x80); // len=strlen(info[0]); for(count=0;count<len;count++) { writeData(info[0][count]); delay(20); } len=strlen(song[0]); for(count=0;count<len;count++) { writeData(song[0][count]); delay(20); } // writeCom(0x80+0x40); len=strlen(info[1]); for(count=0;count<len;count++) { writeData(info[1][count]); delay(20); } len=strlen(song[1]); for(count=0;count<len;count++) { writeData(song[1][count]); delay(20); } }
void main() { init(); while(1) { k=0; while(tune[k]!=NOTE_END)//因为歌曲的结尾处人为的加入了 结束标示符 0 { /*从表中取得 音符音高,也就是这个音符是低音,中音还是高 音,有了这两个参数我们就可以确定音符对应的定时器初值在表中的位置了。 */ if(tune[k]==NOTE_SONGEND) { k++; sound=1; writeCom(0x01);//清屏 writeCom(0x80); // len=strlen(info[0]); for(count=0;count<len;count++) { writeData(info[0][count]); delay(20); } len=strlen(song[m]); for(count=0;count<len;count++) { writeData(song[m][count]); delay(20); } // m++; m=m%2; writeCom(0x80+0x40); len=strlen(info[1]); for(count=0;count<len;count++) { writeData(info[1][count]); delay(20); } len=strlen(song[m]); for(count=0;count<len;count++) { writeData(song[m][count]); delay(20); } if(tune[k]==NOTE_END) break; } sound_signalhigh=0xff&(tune[k]>>8); sound_signallow=0xff&tune[k]; //从表中取得 节拍大小 sound_pace=40*duration[k];//600为一拍的时长 ,在此修改一拍的时长。 k++; TR0=1; //当节拍数未达到时候,继续循环,产生该音调的声音 while(counter!=sound_pace) { sound=~sound; sound_delay(sound_signalhigh,sound_signallow); // pwm_delay(temp); } counter=0;//节拍计数器置0,进入下一个音调 TR0=0; } delay(100); //歌曲演唱完毕后,延时一段时间 } } }
//清屏函数 void clear_scr(void) { writeCom(0x01); delayms(5); }
void ILI9325i2c_16::writeComData(byte com, word data) { writeCom(com); writeData(data >> 8, data ); }