基于51单片机的煤气浓度检测程序Proteus仿真 keil5 C语言编写

[复制链接]
查看1 | 回复0 | 2021-7-12 00:47:03 | 显示全部楼层 |阅读模式
1. 能够检测煤气的浓度;
2. 液晶LCD1602显示煤气的浓度;
3. 超标进行声光报警。
由于是仿真,烟雾浓度传感器采用仿真里面的光敏传感器代替,用ADC0832测电压值。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
3.gif

部分源码:完整源码见附件
  1. void init()
  2. {

  3.         write_com(0x38);   //显示模式设置:16×2显示,5×7点阵,8位数据接口
  4.         delay(20);
  5.         write_com(0x0c);   //显示模式设置
  6.         delay(20);
  7.         write_com(0x06);   //显示模式设置:光标右移,字符不移
  8.         delay(20);
  9.         write_com(0x01);   //清屏幕指令,将以前的显示内容清除
  10.         delay(20);      
  11. }
  12. void dis(uchar k)
  13. {         
  14.         CO=k;

  15.         write_com(0x80);  //设置所要显示字符的位置为第一行第一列
  16.         a=0;
  17.         for(a=0;a<3;a++)           //总共要显示3个字符,故循环三次。
  18.         {                                          
  19.         write_data(table[a]);
  20.         delay(10);               
  21.         }
  22.     write_com(0x83);                 //显示浓度百位
  23.         write_data(0x30+CO/100);
  24.         delay(10)  ;

  25.         write_com(0x84);           //显示浓度十位
  26.         write_data(0x30+CO/10%10);
  27.         delay(10)  ;

  28.         write_com(0x85);           //显示浓度个位
  29.         write_data(0x30+CO%10);
  30.         delay(10)  ;

  31.         write_com(0x86);
  32.         write_data('%');        //显示“%”
  33.         delay(10)  ;
  34.       


  35. }  
  36. unsigned char ad0832read(bit SGL,bit ODD)
  37. {
  38.         unsigned char i=0,value=0,value1=0;               
  39.                 SCL=0;
  40.                 DO=1;
  41.                 CS=0;                //开始
  42.                 SCL=1;                //第一个上升沿      
  43.                 SCL=0;
  44.                 DO=SGL;
  45.                 SCL=1;          //第二个上升沿
  46.                 SCL=0;
  47.                 DO=ODD;
  48.                 SCL=1;           //第三个上升沿
  49.                 SCL=0;           //第三个下降沿
  50.                 DO=1;
  51.                 for(i=0;i<8;i++)
  52.                 {
  53.                         SCL=1;
  54.                         SCL=0; //开始从第四个下降沿接收数据
  55.                         value<<=1;
  56.                         if(DO)
  57.                                 value++;                                               
  58.                 }
  59.                 for(i=0;i<8;i++)
  60.                 {                        //接收校验数据
  61.                         value1>>=1;
  62.                         if(DO)
  63.                                 value1+=0x80;
  64.                         SCL=1;
  65.                         SCL=0;
  66.                 }
  67.                 CS=1;
  68.                 SCL=1;      
  69.                 if(value==value1)                                //与校验数据比较,正确就返回数据,否则返回0      
  70.                         return value;
  71.         return 0;
  72. }

  73. void main()
  74. ……………………

  75. …………限于本文篇幅 余下代码请下载附件…………
复制代码
完整源码和proteus仿真文件: 煤气泄漏检测报警器.rar (51.17 KB, 售价: 2 工控币)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则