基于51单片机的1602+ADC0832烟雾报警系统

发布者:蓝天飞行最新更新时间:2020-11-09 来源: 51hei关键字:51单片机  ADC0832  烟雾报警系统 手机看文章 扫描二维码
随时随地手机看文章

本设计基于51单片机,共有ADC0832数模转换模块,1602液晶显示模块,按键控制与声光报警模块4大模块组成!可实现对烟雾浓度的实时监测与反应

之后是仿真目录
 
下面是部分代码,想要了解,可以下载文末完整附件!
//基于1602+ADC0832的烟雾/温度报警系统
//作者:科技小宅神
//创作时间:2020/09/20
//版权:科技小宅神原创!抄袭必究,仅供参考学习!
#include //包含51单片机寄存器的头文件
#include <1602.h>//调用1602.h文件
#include //包含_nop_函数定义的头文件
#define uchar unsigned char
#define uint unsigned int

//ADC0832引脚定义
sbit CS = P1^0;//片选使能位,定义为P1^0引脚
sbit CLK = P1^1;//时钟脉冲输入位,定义为P1^1引脚
sbit DIO = P1^2;//数据信号输入/输出,并联使用。定义为P1^2引脚
//有害气体含量变量
uchar temp;        //用于读取ADC数据
uchar yushe_yanwu= 255;  //烟雾预设值
//按钮模式
uchar mode=0;
//管脚声明
sbit led_yanwu= P2^3;   //烟雾报警灯
sbit baojing= P2^4;    //蜂鸣器接口
//按键
sbit key1=P2^5;     //设置键
sbit key2=P2^6;     //加按键
sbit key3=P2^7;     //减按键

//1毫秒延时程序(不精确)
void delayms(uint ms)
{
uchar t;
while(ms--)
{
  for(t=0;t<120;t++);
}
}
//ADC0832函数
uchar AD()
{
uchar i,dat1 = 0,dat2 = 0;
//第一个周期:转换开始
CS = 0;
CLK = 0;
DIO = 1;
_nop_(); _nop_();//短暂定时2us——也可以写成delay2us();,那么程序就要有delay2us();的定义了。
CLK = 1; _nop_(); _nop_();


//第二个周期:选择选择单通道还是双通道  DIO=0双通道差分 或 DIO=1单通道
CLK = 0; DIO=1; _nop_();_nop_();
CLK = 1;        _nop_();_nop_();

//第三个周期:DIO选择CH1-->如果DIO=0 选择CH0
CLK = 0;DIO = 0; _nop_();_nop_();
CLK = 1;DIO = 1; _nop_();_nop_();

//等待
CLK = 0; DIO = 1; _nop_();_nop_();

//4-11,共8个下降沿读取数据(MSB->LSB) 先进来的为最高位,后进来为最低位
for(i=0;i<8;i++)
{
  CLK = 1;  _nop_();_nop_();
  CLK = 0;  _nop_();_nop_();
  dat1 = dat1<<1|DIO;
}
//11-18 共8个下降沿读取数据(LSB->MSB) 先进来的为最低位,后进来为最高位
for(i=0;i<8;i++)
{
  dat2 = dat2|((uchar)(DIO)<  CLK = 1;  _nop_();_nop_();
  CLK = 0;  _nop_();_nop_();
}

//禁止片选
CS = 1;
//如果MSB->LSB和LSB->MSB读取数据结果相同,返回读取结果,否者0
return (dat1==dat2) ? dat1 : 0 ;
}

关键字:51单片机  ADC0832  烟雾报警系统 引用地址:基于51单片机的1602+ADC0832烟雾报警系统

上一篇:基于51单片机控温程序及电路原理图
下一篇:STC89C52RC单片机的NRF24L01无线通信程序,收发一体

推荐阅读最新更新时间:2024-11-13 21:32

LCD1602在PIC单片机中的使用程序
#include pic.h __CONFIG(0x1832); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define rs RA1 #define rw RA2 #define e RA3 const char web ={' ','W','W','W','.','P','I','C','1','6','.','C','O','M',' 
[单片机]
51单片机实验】INT0中断计数
前言 —中断源— 52单片机:6个中断源: INT0:外部中断0,P3.2,引起:低电平、下降沿 INT1:外部中断1,P3.3,引起:低电平、下降沿 T0:定时器/计数器0中断,由T0计数器计满回零引起 T1:定时器/计数器1中断,由T1计数器计满回零引起 T2:定时器/计数器2中断,由T2计数器计满回零引起 TI/RI:串行口中断,引起:串行端口完成一帧字符发送/接收 优先级 —51系列单片机中用于中断控制的寄存器为— IE,中断允许控制寄存器,各位定义如下: (外定0;外定1;串;空空;C) EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.
[单片机]
【<font color='red'>51单片机</font>实验】INT0中断计数
51单片机蜂鸣器程序
#include reg52.h typedef unsigned char u8; typedef unsigned int u16; sbit beep=P1^5; void delay(u16 i) { while(i--); } void main() { while(1) { beep=~beep; delay(1000);//控制音调频率 beep=~beep;/控制声音大小 delay(10); } }
[单片机]
51单片机对无线模块nRF24L01简单的控制收发程序
它的一些物理特性如工作频段、供电电压、数据传输速率就不详细介绍了,直接上代码。 1.首先是发送端: // Define SPI pins #include reg51.h #define uchar unsigned char /***************************************************/ #define TX_ADR_WIDTH 5 // 5字节宽度的发送/接收地址 #define TX_PLOAD_WIDTH 4 // 数据通道有效数据宽度 sbit LED = P2^1; sbit KEY1 = P3^1; sbit KEY2 = P3^2; uchar code TX_AD
[单片机]
基于80C51单片机的智能电表设计
智能电表的推广与使用是一项惠及百姓的民生工程,它大大改善了农村居民用电条件,提高了配电网的自动化水平,对于减少电力能源的消耗具有重大的意义。采用单片机80C51为核心,同时增加电能计量芯片CS5460A、LCD显示器1602、Wifi通信电路、SD存储卡等芯片,来实现电能的计量与显示、无线通信、数据存储等功能。用户可以通过电表上的按键来选择是显示用户当前用电量,还是某一时段用电量。 随着计算机技术和通信技术的发展,建筑智能化程度越来越高。住宅的智能化抄表系统在建筑智能化中是必不可少的。在我国,对用户的电表仍采用人工抄表的方法。这种原始的查表方法不仅造成了人力、物力的浪费,打扰居民正常生活 ,而且其精度差,电量数据需要人为读数不能实
[单片机]
基于80C<font color='red'>51单片机</font>的智能电表设计
汇编和C语言相结合的51单片机编程技巧
  本文主要是关于汇编和C语言的相关介绍,并着重对汇编和C语言的不同及其编程技巧进行了详尽的阐述。   汇编和C语言   C语言和汇编语言的区别在于他们之间优缺点几乎是相反的。   C语言和汇编语言的优缺点:以c来举例   优点:   c的运行效率高;   c可以实现硬件的直接访问;   c代码的移植性好;   缺点:   c的代码复用性差;   c的代码维护性差;   c的扩展性差,即如果想增加新功能,需要修改较多的代码;   c语言的可读性差;   C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言;尽管C语言提供
[单片机]
汇编和C语言相结合的<font color='red'>51单片机</font>编程技巧
stc89c51单片机矩阵键盘扫描
#include reg52.h #include stdio.h #define GPIO_KEY P0 #define GPIO_LED P1 unsigned char KeyValue;//存储键值 unsigned char code DIG_CODE ={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F}; void Delay10ms();//延时10ms void KeyDown();//监测按键函数 void main(void) { while(1) { KeyDown()
[单片机]
ADC0832采集数据1602液晶显示
#include intrins.h #include reg51.h #define uchar unsigned char #define uint unsigned int sbit cs=P3^0;//对ADC0832进行位定义 sbit DI=P3^2; sbit DO=P3^2; sbit clk=P3^1; uchar readad ; void adc0832(unsigned char channel); void adc0832(uchar channel)//对0832的操作:首先进行传输数据前的定义,严格按照时序, { // 其次开始传数据,如果达到了8位,
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved