//*********************************************************************************************************************//*********************************************************************************************************************//*********************************************************************************************************************//*********************************************************************************************************************//*********************************************************************************************************************//***********************************下面是1-10檔位的子函數(shù)調(diào)用了顯示畫面和語(yǔ)音*****************************************//**********************************************************************************************************************void dangwei(uint k) // 檔位1-10的子函數(shù)。{switch(k){case 1: //檔位1.a=25;//火力的占空比是25.break;case 2: //檔位2.a=50;//火力的占空比是50.break;case 3: //檔位3a=75;//火力的占空比是75.break;case 4: //檔位4 a=100;//火力的占空比是25.break;case 5: //檔位5a=125;//火力的占空比是25.break;case 6: //檔位6a=25;//火力的占空比是25.break;case 7: //檔位7a=25;//火力的占空比是25.break;case 8: //檔位8a=25;//火力的占空比是25.break;case 9:a=25;//火力的占空比是25.break;case 10:a=25;//火力的占空比是25.break;}dispdangwei(k);//檔位K的畫面music(k);//檔位K的語(yǔ)音。} //**********************************************************************************************************************//*************************************************************************************************************************//******************************************到這里檔位定義信息完畢??!*****************************************************//**********************************************************************************************************************//****************************************************下面是PCA計(jì)數(shù)器初始化************************************************ void init_pca(void)//pca計(jì)數(shù)器初始化函數(shù){CMOD=0x00;CCON=0x00;CCAP0=0X2; //8位PWM輸出,無(wú)中斷。PWM0CCAP1=0x2;//8位PWM輸出,無(wú)中斷 。PWM1CL=0x00;//清零pca計(jì)數(shù)器CH=0x00;CCA1L=pm[0]; //初始化PWM1輸出的占空比CCA1H=pw[0];CCA0L=pm[0]; //初始化PWM0輸出的占空比CCA0H=pm[0];CR=1;//運(yùn)行pca計(jì)數(shù)器}//*************************************************************************************************************************//*****************************************************************************************************************//***********************************************************************************************************************void huanying(){yuyin(30);//語(yǔ)音的歡迎語(yǔ)。init_12864();//初始化液晶。write_12864_com(0x80);//設(shè)定顯示位置是第一行。for(i=0;i<16;i++) //第一行有多少字,漢字占兩個(gè)位置。標(biāo)點(diǎn)符號(hào)一個(gè)。{write_12864_at(table100[i]); //開始挨個(gè)把表中的字一位一位的通過(guò)12864的數(shù)據(jù)發(fā)送子程序發(fā)送出去。delay_50us(1); //延時(shí)一會(huì)保證數(shù)據(jù)有發(fā)送完畢。}write_12864_com(0x90); //設(shè)定第二行。for(i=0;i<16;i++){write_1284_dat(table24[i]);delay_50us(1;}write_12864_com(0x88); //設(shè)定第三行for(i=0;i<10i++){write_12864_dat(table25[i]);delay_50us(1);}write_12864_com(0x98);//設(shè)定第四行顯示位置。for(i=0;i<16;i++){write_12864dat(table100[i]);delay_50us(1);}//##################################第二幅畫面。delay_1s(2000);//延時(shí)保持2秒鐘的第一幅畫面。init_12864();//初始化液晶。write_12864_com(0x80);//設(shè)定顯示位置是第一行。for(i=0;i<14;i++) //第一行有多少字,漢字占兩個(gè)位置。標(biāo)點(diǎn)符號(hào)一個(gè)。{write_12864_dat(table11[i]); //開始挨個(gè)把表中的字一位一位的通過(guò)12864的數(shù)據(jù)發(fā)送子程序發(fā)送出去。delay_50us(1); //延時(shí)一會(huì)保證數(shù)據(jù)有發(fā)送完畢。}write_12864_com(0x90); //設(shè)定第二行。for(i=0;i<16;i++){write_12864_dat(table13[i]);delay_50us(1);write12864_com(0x88); //設(shè)定第三行for(i=0;i<16;i++){write_12864_dat(table12[i]);delay_50us(1);}write_12864_com(0x98);//設(shè)定第四行顯示位置。for(i=0;i<16;i++){write_12864_dat(table14[i]);delay_50us(1);}}//***********************************************************************************************************************//*********************************************************************************************************************void main(){P4SW=0x7F; //設(shè)置P4為雙向IO口。c=0;//寫入未執(zhí)行過(guò)按鍵操作的標(biāo)志位 baohu=1;//先強(qiáng)制打開保護(hù)功能,促使PWN徹底關(guān)閉,防止上機(jī)的那種不可控的頻率。讓PWM有規(guī)律可循。beiguang=1;//打開背光yanshi(30);//延時(shí)一小會(huì)保證已經(jīng)徹底關(guān)閉。init_pa();//初始化PWM控制器。m=0;temp=0;init_1864();//初始化液晶。huanying();//開機(jī)歡迎語(yǔ)和歡迎畫面。while(1){if(pd==0) //檔位加{yanshi(50);if(pd==0){m++ //檢測(cè)火力+按鍵按了幾次。是幾次就是幾檔位、if(m==11) //當(dāng)檔位增加到11次以后,就給復(fù)位到檔位1.防止出現(xiàn)錯(cuò)誤。{m=1;}dangwei(m); //檔位的各種信息。while(!pd);} }if(px==0) //檔位減{yanshi(50);if(px==0){ if(m==0){m=2;}m--; //檢測(cè)火力-按鍵按了幾次。是幾次就是幾檔位、if(m<=0)//當(dāng)檔位增加到0次以后,就關(guān)閉所有檔位的輸出。{m=1;}dangwei(m); //檔位的各種信息。while(!p);}}if(zd==0){yanshi(10);if(zd==0){b--;if(b<=0){b=56;};c=1;while(!zd);}}if(zx==0){yanshi(10);if(zx==0){b++;if(b>=56){b=0;};while(!zx);}}CCAP1L=pwm[a]; //初始化PWM1輸出的占空比CCAP1H=pwm[a];CCAP0L=pw[b]; //初始化PWM0輸出的占空比CCAP0H=pm[b];if(c>=1)//檢測(cè)是不是已經(jīng)穩(wěn)定好了PWM。{baohu=0;//開啟PWM輸出。}}}
關(guān)鍵詞:
51單片機(jī)語(yǔ)音溫度控