1. 能够检测煤气的浓度;
2. 液晶LCD1602显示煤气的浓度;
3. 超标进行声光报警。
由于是仿真,烟雾浓度传感器采用仿真里面的光敏传感器代替,用ADC0832测电压值。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
部分源码:完整源码见附件
- void init()
- {
- write_com(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口
- delay(20);
- write_com(0x0c); //显示模式设置
- delay(20);
- write_com(0x06); //显示模式设置:光标右移,字符不移
- delay(20);
- write_com(0x01); //清屏幕指令,将以前的显示内容清除
- delay(20);
- }
- void dis(uchar k)
- {
- CO=k;
- write_com(0x80); //设置所要显示字符的位置为第一行第一列
- a=0;
- for(a=0;a<3;a++) //总共要显示3个字符,故循环三次。
- {
- write_data(table[a]);
- delay(10);
- }
- write_com(0x83); //显示浓度百位
- write_data(0x30+CO/100);
- delay(10) ;
- write_com(0x84); //显示浓度十位
- write_data(0x30+CO/10%10);
- delay(10) ;
- write_com(0x85); //显示浓度个位
- write_data(0x30+CO%10);
- delay(10) ;
- write_com(0x86);
- write_data('%'); //显示“%”
- delay(10) ;
-
- }
- unsigned char ad0832read(bit SGL,bit ODD)
- {
- unsigned char i=0,value=0,value1=0;
- SCL=0;
- DO=1;
- CS=0; //开始
- SCL=1; //第一个上升沿
- SCL=0;
- DO=SGL;
- SCL=1; //第二个上升沿
- SCL=0;
- DO=ODD;
- SCL=1; //第三个上升沿
- SCL=0; //第三个下降沿
- DO=1;
- for(i=0;i<8;i++)
- {
- SCL=1;
- SCL=0; //开始从第四个下降沿接收数据
- value<<=1;
- if(DO)
- value++;
- }
- for(i=0;i<8;i++)
- { //接收校验数据
- value1>>=1;
- if(DO)
- value1+=0x80;
- SCL=1;
- SCL=0;
- }
- CS=1;
- SCL=1;
- if(value==value1) //与校验数据比较,正确就返回数据,否则返回0
- return value;
- return 0;
- }
- void main()
- ……………………
- …………限于本文篇幅 余下代码请下载附件…………
复制代码 完整源码和proteus仿真文件:
煤气泄漏检测报警器.rar
(51.17 KB, 售价: 2 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|