基于51单片机便携式瓦斯监测仪protues仿真
硬件设计
(末尾附文件)
代码设计
/*烟雾检测系统程序,单片机通过ADC0808检测3路烟雾传感器信号,并通过液晶显示,超过设定门限就声光报警*/
#include<reg52.h>
#include "LCD1602.h"
#include "da1302.h"unsigned int i;
unsigned int j;
unsigned char V_getdata1; //传感器电压采集变量
unsigned long V_temp1,alarm_temp;//传感器电压采集变量和设定报警值
unsigned int alarm,speak;
unsigned char V_temp1Buffer[10],alarm_tempBuffer[10];SYSTEMTIME CurrentTime ; //建立时间结构体unsigned char count;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit AD_CLK=P3^3; //ADC0809时钟
sbit ADDA=P3^4; //ADC0809选择通道口
sbit ADDB=P3^5;
sbit ADDC=P3^6;
sbit ALARM=P3^7;
sbit key1=P2^3; //加1按钮
sbit key2=P2^4; //减1按钮void TimeInitial();
void Delay(unsigned int i);void TimeInitial() //系统时钟初始化
{ TMOD=0x10;TH1=(65536-200)/256;TL1=(65536-200)%256;EA=1;ET1=1;TR1=1;}
void Delay(unsigned int i)
{unsigned int j;for(;i>0;i--){for(j=0;j<125;j++){;}}
}/******************************************/
/* LCD 显示转换字符程序 */
/******************************************/
void IntToStr(unsigned int t, unsigned char *str, unsigned char n) //将整型数据转换成字符指针,在液晶上显示
{unsigned char a[3]; char i, j; a[0]=(t/100)%10; a[1]=(t/10)%10; a[2]=(t/1)%10; for(i=0; i<3; i++) //转成ASCII码 a[i]=a[i]+'0'; for(i=0; a[i]=='0' && i<=3; i++); for(j=3-n; j<i; j++) //填充空格 { *str=' '; str++; } for(; i<3; i++) { *str=a[i]; str++; } //加入有效的数字 *str='\0';
} /******************************************/
/* 延时子程序 */
/******************************************/
void Delay1ms(unsigned int count)
{unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);
}/******************************************/
/* AD转换程序 */
/******************************************/ void Voltaget_AD1() //第一路电压AD采样 IN0
{ST=0;OE=0;ST=1;ST=0;ADDA=0; //000设置A采样端口IN0ADDB=0;ADDC=0;while(EOC==0); //等待转换结束OE=1; //允许转换输出V_getdata1=P0; //读取转换结果8位二进制数OE=0;V_temp1=V_getdata1*1.0/255*500; //对采样结果进行常规变换V_getdata1=0;Delay(10);
}void main()
{V_getdata1=0;V_temp1=0; //传感器采集变量ALARM=0; //报警信号alarm_temp=250; //初始化报警门限值250,对应电压为2.5VTimeInitial();LCD_Initial(); //液晶屏初始化GotoXY(0,0); //定位液晶显示位置第一行第一列Print("The 1602 COUNTER"); //系统开机显示logoGotoXY(0,1);Print(" BY BF-SHNU ");Delay1ms(1000);GotoXY(0,0);Print(" "); //清空液晶屏GotoXY(0,1);Print(" ");while(1){Voltaget_AD1(); //电压采样一通道Delay(10);IntToStr(V_temp1,&V_temp1Buffer[0],3); //将采集到的电压数转换为液晶显示字符 IntToStr(alarm_temp,&alarm_tempBuffer[0],3); //将采集到的电压数转换为液晶显示字符alarm_tempBuffer[10]GotoXY(0,0); //设定液晶显示的位置,第1列第1行Print("WSND:"); //第一路采集瓦斯浓度:Print(&V_temp1Buffer[0]); //显示采集码值Print("/10000");GotoXY(0,1); //设定液晶显示的位置,第1列第2行Print("ALARM:"); //第一路采集瓦斯浓度:Print(&alarm_tempBuffer[0]); //显示采集码值 Print("/10000"); Delay1ms(7);if(key1==0) //报警值加1按钮{Delay1ms(10); //按钮消抖动while(key1==0); //等待按键松开alarm_temp=alarm_temp+10; //报警值加1}if(key2==0) //报警值减1按钮{Delay1ms(10); //按钮消抖动while(key2==0); //等待按键松开alarm_temp=alarm_temp-10; //报警值加1}
链接:https://pan.baidu.com/s/1ic90ETnjQcvKt2xm1ihWQA
提取码:txvn
基于51单片机便携式瓦斯监测仪protues仿真相关推荐
- 基于51单片机的智能计算器Protues仿真设计
目录 一.设计背景 二.实现功能 三.硬件设计 3.1 总体硬件设计 3.2 键盘电路的设计 3.3 显示电路的设计 四.仿真演示 五.源程序 一.设计背景 随着社会的发展,科学的进步,人们的生活水 ...
- 基于51单片机的压力监测仪(MPX4115)(Proteus仿真+程序)
编号:28 基于51单片机的压力监测仪(MPX4115) 功能描述: 本设计由51单片机最小系统+MPX4115压力传感器+ADC0832模块+液晶1602模块 1.主控制器是AT89C82单片机 2 ...
- 基于51单片机的噪声测量仪仿真
具体实现功能 具体实现功能: ①LCD1602实时显示噪声分贝值,精度为0.1db: ②可以按键设置报警值,实现声光报警:三个按键:设置键.加键.减键: ③当噪声分贝值未超过阀值时,绿灯闪烁:当超过阈 ...
- 基于单片机超声波视力保护系统设计-基于51单片机8音键电子琴仿真设计-基于8086八路模拟信号采集均值显示系统设计-基于8086八路数据电压温度采集系统-基于8086波形发生器仿真设计【毕设课设分享】
539基于单片机超声波视力保护系统设计-设计资料 硬件构成:单片机+最小系统+LCD1602液晶显示模块+超声波模块+DS18B20温度采集模块+光线检测模块+ADC0832模块+蜂鸣器模块+LED指 ...
- 基于51单片机的废气检测I2Cproteus仿真
目录 文章目录 前言 二.设计步骤 1.proteus设计 2.keil5代码编程设计 总结 前言 前段时间高中同学让我帮忙给她做一个数电课设,反正也没事做就随便做了做,现在总结一下,话不多说直接上效 ...
- 【019】基于51单片机的交通灯Proteus仿真设计
一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...
- 【034】基于51单片机的HX711电子秤Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的HX711电子秤proteus仿真设计一份: (2).基于51单片机的HX711电子秤proteus仿真设计keli源代码一份: (3).基于51单片机的H ...
- 基于51单片机的烟雾火灾报警器proteus仿真设计
基于51单片机的烟雾火灾报警器proteus仿真设计 1 开发环境 仿真图:proteus8.9以上 程序代码:KEIL4/KEIL5 原理图:AD 设计编号:A0004 代码讲解+仿真讲解+仿真演示 ...
- 【002】基于51单片机的电子万年历proteus仿真设计
一.资料内容(私信获取) (1).基于51单片机的电子万年历proteus仿真设计一份: (2).基于51单片机的电子万年历proteus仿真设计keli源代码一份: (3).基于51单片机的电子万年 ...
最新文章
- Spring使用外部属性文件
- idea 自定义工具栏
- C语言中 void* 详解及应用
- c语言float二进制输出代码_C语言学习笔记——学前知识概述
- 作者:袁晓如,北京大学“百人计划”研究员,北京大学信息科学技术学院博士生导师。...
- CQRS之旅——旅程6(我们系统的版本管理)
- windows守护进程_在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)
- vlookup两个条件匹配_用VLOOKUP进行同时满足两个条件的查找,几种方法都在这啦!||Excel技巧...
- Linux分区之parted命令
- spring boot 1.5.4 整合redis、拦截器、过滤器、监听器、静态资源配置(十六)
- Android 教你打造炫酷的ViewPagerIndicator
- html——链接跳转
- mysql中哪一个储存逻辑型_《VisualFoxPro》2018秋华东年季学期在线作业(一)二三...
- win7计算机里找不到硬盘,win7系统重装时提示"找不到硬盘驱动器"的解决方法...
- Android隐藏桌面图标,不显示应用图标
- lpx寒假作业案例7
- Adjoin the Networks
- 使用代理服务器网速会变慢吗?
- [资源]C++ 程序员必收藏
- 关于MBR和GUID分区的问题
热门文章
- 出现“未将对象引用设置到对象的实例” 错误2010-09-16 19:07解决办法
- python爬虫反爬策略_抖音字体反爬,爬虫字体反爬策略——每周一个爬虫小教程系列...
- SAP S4 资产主数据中的科目定位码
- Unable to mount 63 GB Volume
- 亲测:大蒜的用处止咳用法
- AD导入CAD图纸笔记
- 【计算机科学】和【软件工程】有什么区别?就业前景如何?
- MPO 光纤系统升级到 40G/100G 以太网方案
- fastAPI异步非阻塞
- java程序集成微信公众号模板消息功能