• 大小: 33KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: 模糊控制  

资源简介

给予模糊控制单片机温度控制系统的设计,本设计主要通过采用模糊控制的方法实现对温度的事实控制和检测

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P1^0;//ds18b20与单片机连接口
sbit RS=P3^0;
sbit RW=P3^2;
sbit EN=P3^1;
sbit dw=P3^3;//加“1”
sbit up=P3^4;//  减“1”
sbit fun=P3^5;//功能键
sbit hot=P1^6;//加热
sbit cool=P1^7;//降温
uchar code str1[]=“SV:“;
uchar code str2[]=“PV:“;
uchar data disdata[7];
uchar data disth[2];
uchar code chaxunbaoUt[21][11]={
   {55555543211}{55555542211}{55555542211}
   {55555542111}{55555542111}{55555542111}
   {55544432111}{55544432111}{55444322100}
   {55443211100}{44332111000}{33221110000}
   {22221110000}{22211000000}{22211000000}
   {11111000000}{11111000000}{11111000000}
   {11111000000}{11111000000}{11111000000}                      
    
 };  //模糊控制表
uint th=25;  //初始温度
 uchar fnumcount0count1;
//uchar shige;
uchar flagdat;//当前温度符号位
uint tvaluek;//温度值
uchar tflag;//温度正负标志

void delay1ms(uint ms)//延时1毫秒(不够精确的)
{
   uint ij;
   for(i=0;i    for(j=0;j<100;j++);
}
void wr_com(uchar com)//写指令//

  RS=0;
  RW=0;
  EN=0;
  P2=com;
  delay1ms(1);
  EN=1;
  delay1ms(1);
  EN=0;
}
void wr_dat(uchar dat)//写数据//

  RS=1;
  RW=0;
  EN=0;
  P2=dat;
  delay1ms(1);
  EN=1;
  delay1ms(1);
  EN=0;
}
void lcd_init()//初始化设置//
{
  //delay1ms(15);
  wr_com(0x38);
  delay1ms(5);
  wr_com(0x08);
  delay1ms(5);
  wr_com(0x01);
  delay1ms(5);
  wr_com(0x06);
  delay1ms(5);
  wr_com(0x0c);
  delay1ms(5);
}

void display(uchar *p)//显示//
{
 while(*p!=‘\0‘)
 {
  wr_dat(*p);
  p++;
  delay1ms(1);
}
}
init_play()//初始化显示
{   
  lcd_init();
  wr_com(0x80);
  display(str1);
  wr_com(0x80+0x40);
  display(str2);
 }
void delay_18B20(uint i)//延时1微秒
{
   while(i--);
}
void ds1820rst()//ds1820复位

 uchar x=0;
 DQ = 1;          //DQ复位
 delay_18B20(4); //延时
 DQ = 0;          //DQ拉低
 delay_18B20(100); //精确延时大于480us
 DQ = 1;          //拉高
 delay_18B20(40); 


 uchar ds1820rd()//读数据

 uchar i=0;
 uchar dat = 0;
 for (i=8;i>0;i--)
  {   
   DQ = 0; //给脉冲信号
    dat>>=1;
    DQ = 1; //给脉冲信号
    if(DQ)
    dat|=0x80;
    delay_18B20(10);
   }
   return(dat);
}
void ds1820wr(uchar wdata)/*写数据*/
{unsigned char i=0;
    for (i=8; i>0; i--)
   { DQ = 0;
     DQ = wdata&0x01;
     delay_18B20(10);
     DQ = 1;
     wdata>>=1;
   }
}
void read_temp1()
{
 ds1820rst();    
 ds1820wr(0xcc);//*跳过读序列号*/
 ds1820wr(0x44);//*启动温度转换*/
 ds1820rst();    
}
read_temp2() /*读取温度数据并处理*/
{
 uchar ab;
 ds1820wr(0xcc);//*跳过读序列号*/ 
 ds1820wr(0xbe);//*读取温度*/ 
 a=ds1820rd();
 b=ds1820rd();
 tvalue=b;
 tvalue<<=8;
 tvalue=tvalue|a;
 if(tvalue<0x0fff)
   tflag=0;
  else
   {
   tvalue=~tvalue+1;
   tflag=1;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      23824  2011-07-10 08:55  程序\zongtiaoshi

     文件       8126  2011-07-10 08:55  程序\zongtiaoshi.hex

     文件         30  2011-07-10 08:55  程序\zongtiaoshi.lnp

     文件      32781  2011-07-10 08:55  程序\zongtiaoshi.M51

     文件       1344  2011-07-10 08:57  程序\zongtiaoshi.Opt

     文件        217  2011-07-10 08:58  程序\zongtiaoshi.plg

     文件       2105  2011-05-21 21:57  程序\zongtiaoshi.Uv2

    .......      1133  2011-07-09 19:19  程序\zongtiaoshi_Opt.Bak

     文件          0  2011-05-21 19:46  程序\zongtiaoshi_Uv2.Bak

     文件      11990  2011-05-25 09:12  程序\zt.c

     文件      27135  2011-07-10 08:55  程序\zt.LST

     文件      27317  2011-07-10 08:55  程序\zt.OBJ

     目录          0  2011-07-10 08:57  程序

----------- ---------  ---------- -----  ----

               136002                    13


评论

共有 条评论