毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

基于现场总线的温度测控系统设计 第15页

更新时间:2009-4-1:  来源:毕业论文
基于现场总线的温度测控系统设计 第15页
 j = tmpread (); 
  dat = (j << 7) | (dat >> 1); 
 }
 return (dat);

void tmpwrite (unsigned char dat)  //写一个字节
{  
 uint i;
 uchar j;
 bit testb; 
 for (j=1;j<=8;j++)
 { 
  testb = dat & 0x01;
  dat = dat >> 1; 
  if (testb)
  { 
   P3_5 = 0;       // 写0
   i++; i++; 
   P3_5 = 1; 
   i=8; while (i>0) i--;
  }
  else 
  {
   P3_5 = 0;       // 写0
   i=8; while (i>0) i--;
   P3_5 = 1;
   i++; i++; 
  }
 }
}

void tmpchange(void) // ds1820 开始转换

 tmreset ();        // 复位
 //tmpre ();        // 等待存在脉冲 
 delay (1);        // 延时
 tmpwrite (0xcc);       // 跳过序列号命令
 tmpwrite (0x44);       // 发转换命令 44H, 
}

void tmp (void) // 读取温度
{
 uchar a,b;
 tmreset ();        // 复位
 delay (1);        // 延时
 tmpwrite (0xcc);       // 跳过序列号命令
 tmpwrite (0xbe);       // 发送读取命令
 a=tmpread2 ();       // 读取低位温度 
 b=tmpread2 ();        //读取高位温度 
 flag1=b;        //若b为1则为负温
 if(flag1)
 {
  TEMP=~a+1;      //如果为负温则去除其补码
 }
 else 
 {
  TEMP=a; 
 }
}

rom()          // 读取器件序列号子程序
{
 tmreset ();        //复位
 delay (1);            //延时
 tmpwrite(0x33);       //发送读序列号子程序
}

fengmingqi()                                         //温度判断函数
{ P0_5=0;                                           //蜂鸣器正常不鸣叫
   do{
if((TEMP<=(E-0X0A))&&(TEMP>=(F|0X0A))&&(P3_5==0))// X-0X0AH为所要的温度减5度B|0X0AH为所要的温度加5度
    P0_5=1;                                           //蜂鸣器异常
      }while(1);
}

wendushuru()                                         //键盘设置理想温度
{uchar KEY1,KEY2,KEY3,i=1;
  P2=0xff;
  KEY1=Getch(); i++;
  KEY2=Getch(); i++;
  KEY3=Getch(); i++;
  if((i=2)&&(KEY2=='*'))                       //*号表示输入温度下限值
     E=KEY1;
  if((k=3)&&(KEY3=='*'))
     E=M*KEY1+KEY2;
     i=1;
  if((i=2)&&(KEY2=='#'))                         //#号表示输入温度上限值
     F=KEY1;
  if((k=3)&&(KEY3=='#'))
    F=M*KEY1+KEY2;
  
}

 temp_control()
{  P0_6=0;                                             //接风机
   P0_7=0;                                             // 接加热炉
   Getch();
   if(TEMP<E)   
   P0_7=1;                             //当温度低于温度下限时,进行升温
   Getch();
   if(TEMP>E)   
   P0_6=1;                             //当温度高于温度上限时,进行降温
}

bit lcd_busy()   //检查LCD 忙状态
//lcd_busy 为1 时,忙,等待。lcd-busy 为0 时,闲,可写指令与数据
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0&0x80);
LCD_EN = 0;
return result;
}

void lcd_wcmd(uchar cmd)        //写指令数据到LCD
//RS=L,RW=L,E=高脉冲,D0-D7=指令码。
{while(lcd_busy());
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN = 1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN = 0;

 << 上一页  [11] [12] [13] [14] [15] [16] 下一页

基于现场总线的温度测控系统设计 第15页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。