#include
#define uchar unsigned char#define uint unsigned intuchar index;uchar a,b,c; //界说三个变量、。uchar m; //uint teempr; //uint z,i;//*********************************************★下面是PWM调制的数组★********************************************************//220- zhan0.02 214--0.04 209-0.07 203-0.11 195- 0.15 185-0.25 173-0.31 160-0.38 145-0.45 129-0.48 111-0.48 42OFF//0.74 .81 .91 1.03 1.22 1.45 1.69 2.28 2.62 0.74 0.81 0.90 1.03 右大// 热敏电阻受热今后阻值变小。受凉今后阻值变大。uchar code pwm[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254};//3525 2脚电压高输出占空比也大,2脚电压越低那么占空比也就越小。 6脚电压拉低的话频率就升高,6脚电压高频率就下降。//************************************************************************************************************************//************************************************************************************************************************//************************************************ 下面的是DISP显现数组***************************************************uchar code table100[]={"※※※※※※※※"};uchar code table101[]={" www.51hei.com "};uchar code table1[]={"★当时档位一★"};uchar code table2[]={"★当时档位二★"};uchar code table3[]={"★当时档位03★"};uchar code table4[]={"★当时档位四★"};uchar code table5[]={"★当时档位五★"};uchar code table6[]={"★当时档位六★"};uchar code table7[]={"★当时档位七★"};uchar code table8[]={"★当时档位八★"};uchar code table9[]={"★当时档位九★"};uchar code table10[]={"★当时档位十★"};uchar code table11[]={"测验版别:V1.1"};uchar code table12[]={"zhinengjiqi.com"};uchar code table13[]={"欢迎运用智能机器"};uchar code table14[]={"GSM:18663523202"};uchar code table15[]={"正告电压过高维护"};uchar code table16[]={"正告检测短路毛病"};uchar code table17[]={"正告长期没放锅"};uchar code table18[]={"正告线盘温度过高"};uchar code table19[]={"正告散热器温度高"};uchar code table20[]={"正告电扇产生毛病"};uchar code table21[]={"正告环境湿度过高"};uchar code table22[]={"机器确定咨询客服"};uchar code table23[]={"正告电源线未接好"};uchar code table24[]={"Θ开机软启动中Θ"};uchar code table25[]={"请稍候¨¨"};//******************************************************************************************************************//*************************************************按键界说***********************************************************sbit pd = P0^4 ; //占空比升高sbit px = P0^5 ; //占空比下降sbit zd = P0^6 ; //频率增加sbit zx = P0^7 ; // 频率减小//**************************************************按键界说到此完毕。******************************************************sbit rs=P0^0; //数据,指令挑选端sbit rw=P0^1; //读写挑选sbit beiguang=P0^3;//LED背光sbit e=P0^2; //使能端sbit baohu=P5^3; //PWM维护封闭。//*************************************************** 液晶pin界说完毕。***************************************************sbit DQ=P3^4; //温度探头数据口。sbit yurest=P4^4; //语音复位sbit yushuju=P4^1; //语音数据sbit yuzhuangtai=P4^5; //语音状况//***************************************************语音pin界说到此完毕*****************************************************//*********************************************************************************************************//**************************************************** 各种延时子函数*******************************************************void yanshi(uint xms)//延时多久需求核算。{uint x ,y;for(x=xms;x>0;x--)for(y=110;y>0;y--);}//******************************************************************************************************************void delay_1ms(uint z) //延时一毫秒的指令。核对过时刻很精确{uint x,y;for(x=z;x>0;x--)for(y=1800;y>0;y--);}//**************************************************************void delay_50us(uint t) //延时50微秒的指令。核对过时刻很精确{uint j;for(;t>0;t--)for(j=91;j>0;j--);}//************************************************************************************************************************//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//************************************************************************************************************************//************************************************以下是12864显现的子函数***************** ******************************//******************************************************************************************************************void write_12864_com(uchar com) //写指令子函数{rs=0; //数据指令挑选端口。=1写数据,=0写指令 。P2=com;//把数据送到P2口传递给液晶。e=1;//使能端高电平。delay_50us(10); //延时一小会确保使能的高电平宽度到达要求、e=0;//完结使能信号的脉冲要求给置零。delay_50us(2);}//*******************************************************void write_12864_dat(uchar dat) //写数据子函数{rs=1; //数据指令挑选端口。=1写数据,=0写指令 。rw=0; //读写delay_50us(1);P2=dat;//把数据送到P2口传递给液晶。e=1;//使能端高电平。 delay_50us(10); //延时一小会确保使能的高电平宽度到达要求、e=0;//完结使能信号的脉冲要求给置零。delay_50us(2);}//******************************************************************************************************** void init_12864() //液晶初始化子函数。{delay_1ms(100);write_12864_com(0x30); //根本指令操作); //delay_50us(4);write_12864_com(0x0c);write_12864_com(0x06);delay_50us(10);}//***************************************************以下是各个档位的画面***********************************************void dispdangwei(uint f) //*****************************f是多少便是几档画面*************************************************{init_12864();//初始化液晶。write_12864_com(0x80);//设定显现方位是榜首行。for(i=0;i<16;i++) //榜首行有多少字,汉字占两个方位。标点符号一个。{write_12864_dat(table101[i]); //开端挨个把表中的字一位一位的经过12864的数据发送子程序发送出去。delay_50us(1); //延时一会确保数据有发送完毕。}write_12864_com(0x90); //设定第二行。for(i=0;i<16;i++){dat(table100[i]);;}write_12864_com(0x88); //设定第三行for(i=0;i<14;i++){switch(f){case 1:write_12864_dat(table1[i]);break;case 2:write_12864_dat(table2[i]);break;case 3:write_12864_dat(table3[i]);break;case 4:write_12864_dat(table4[i]);break;case 5:write_12864_dat(table5[i]);break;break;case 7:write_12864_dat(table7[i]);break;case 8:write_12864_dat(table8[i]);break;case 9:write_12864_dat(table9[i]);break;case 10:write_12864_dat(table10[i]);break;}delay_50us(1);行显现方位。for(i=0;i<16;i++){write_12864_dat(table100[i]);delay_50us(1);}}//*************************************************************************************************************************//***********************************************************************************************************************//*******************************************************************************************************************//***********************************************************************************************************************//***********************************************下面是语音参数设定******************************************************//***********************************************************************************************************************void yufuwei() //语音复位子程序。{yurest=0;//这句是防止REST不是低电平。稳妥起见给他拉低。yurest=0; //到这儿语音就复位完毕。}//**********************************************************************************************************************void yuyin(z) //语音的播映程序。Z等于几就播映第几段。(语音参数内部调用,主程序不必。){yufuwei(); //铲除曾经的播映数据进行复位。防止和前次的播映数据相加播映过错、 while(z>0){yushuju=0;} //**********************************************************************************************void dangweitouyin() // 语音:档位。 用来给档位语音增加头音。{yufuwei(); //语音复位子函数。意图是在播映这段之前中止正在播映的。、一小会。yuyin(11); //指定播映语音IC中的第11段语音。}//********************************************************************************************************void jinggao() //报警用的音乐文件。 用来给各种告警增加头音。仅仅正告语音的前头那段音乐。位子函数。意图是在播映这段之前中止正在播映的。、机速度太快了延一小会。yuyin(23); //指定播映语音IC中的第11段语音。}//***********************************************************************************************void baojing(uint o) // 各种报警的子函数里边的O等于几便是对应的报警。{jinggao(); //这儿是正告的头音音乐文件。delay_1ms(2000);//延时2秒想起来正告头音。yuyin(o); //正告的内容。 }//*****************************************************************************************void jinggaoduanlu() //短路维护正告音。{baojing(18);//播映第18条报警语音。内容是:短路维护.}//*****************************************************************************************void jinggaofengshanguzhang(){baojing(19);//播映第19条报警语音。内容是:正告电扇毛病。}//*****************************************************************************************void jinggaoguoyabaohu(){baojing(21);//播映第12条报警语音。内容是:电源线未接好,请查看。}//*****************************************************************************************void jinggaoguowenbaohu(){baojing(20);//播映第20条报警语音。内容是:正告过压维护。}//*****************************************************************************************void dianyuanxianweijiehao(){baojing(12);//播映第12条报警语音。内容是:电源线未接好,请查看。}//*****************************************************************************************void jinggaomima(){baojing(22);//播映第22条报警语音。内容是:请咨询客服输入暗码。}//*****************************************************************************************void jinggao1() //报警用的音乐文件。 用来给各种告警增加头音。仅仅正告语音的前头那段音乐。{yufuwei(); //语音复位子函数。意图是在播映这段之前中止正在播映的。、delay_50us(1);//单片机速度太快了延一小会。yuyin(26); //指定播映语音IC中的第11段语音。}//********************************************************************************************************************void music(uint j) //带参数的子函数,里边的J等于几便是播映 第几段语音。{dangweitouyin();//档位头音。if(yuzhuangtai==0) //检测是不是语音头文件在播映。假如播映就让程序进入里边等一会让头文件播映完毕。{while(!yzhuangtai);//假如检测到语音状况产生了改动那么就跳出来这个死循环。不然就在这原地打转等候。}if(yuzhuagtai==1) //检测是不是语音头文件播映完毕了。假如完毕了那么开端播映本段语音。{if(j==10) //由于语音的十不是在语音的第十段,那就使用这么两个if句子进行判别是不是档位数据送来10.{yuyin(28); //假如来的数据是10,那么就进入把语音的子函数参数修改成 28履行档位十的语音。}if(j!=10) //又为了防止在档位十的时分送完28的语音参数再过来送10的过错数据,所以在送来不是10的时分才履行1-9数据{ yuyin(j); //播映语音的第K段。~~~~~~~~~~~~~~~内容是:j ~~~~~~~~~~~~~~~~~}}}