历史上的今天
今天是:2024年11月09日(星期六)
2020年11月09日 | 基于51单片机的1602+ADC0832烟雾报警系统
2020-11-09 来源:51hei
本设计基于51单片机,共有ADC0832数模转换模块,1602液晶显示模块,按键控制与声光报警模块4大模块组成!可实现对烟雾浓度的实时监测与反应
之后是仿真目录

下面是部分代码,想要了解,可以下载文末完整附件!
//基于1602+ADC0832的烟雾/温度报警系统
//作者:科技小宅神
//创作时间:2020/09/20
//版权:科技小宅神原创!抄袭必究,仅供参考学习!
#include
#include <1602.h>//调用1602.h文件
#include
#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 ;
}
史海拾趣
|
根据测试测量世界tmworld与Frost & Sullivan的联合调查,全球通用仪器市场的大部分份额仍然由示波器、频谱分析仪、信号发生器、万用表四种仪器把持。如图(1)所示四种仪器所占份额依次为33.7%,17.3%,16.3%,13.1%。个人认为,频谱分析仪之所以会占 ...… 查看全部问答> |
|
Altium Designer 6.0 的所有电路设计工作都必须在 Design Explorer (设计管理器)中进行,同时设计管理器也是 Altium Designer 6.0 启动后的主工作接口。设计管理器具有友好的人机接口,而且设计功能强大,使用方便,易于上手。因此本章将对设计管 ...… 查看全部问答> |
|
TFTP: Desktop losing ACK, block number =3(无法传输nk) pb通过以太网无法传输nk,串口调试信息 TFTP: Desktop losing ACK, block number = 3 ...… 查看全部问答> |
|
我的开发平台是DM365DVR,通过USB方式将TD模块(LC6311)连接到DM365DVR上,正确配置后,能够成功拨号,也能够通过TD网络传输视频,但是传输效果极差。CIF(352*288)格式的视频每秒只能传输一到两帧,而且画面质量也不好。更可气的是传不几秒就断 ...… 查看全部问答> |
|
具体事情如下: 传感器测一个力,送到“TR700数字式重量变送器”上显示。现在从“TR700数字式重量变送器”上接出的一个RS232接到电脑上,需要做的是在电脑上采集传感器测得的数据并存储下来。 从来没做过这方面的工作,在网上查了一下还是毫无头 ...… 查看全部问答> |
|
#define TOUCH_MAX_X 1000 // 950 #define TOUCH_MIN_X 30 // 90 #define TOUCH_MAX_Y 980 // 960 // 910 #define TOUCH_MIN_Y 30 // 70 //50 #define TOUCH_X 800 #define TOUCH_Y 480 VOID Touch_CoordinateConversion(INT *px, INT ...… 查看全部问答> |
|
开发的硬件是mips架构的CPU~ 郁闷了~在dos下编bootrom.bin,烧进flash后通过点灯观察运行状况 在romStart函数中复制rom代码到ram已经没问题,之后可以成功调用rom中的点灯程序或者已经复制到ram中的点灯程序拷贝。 但是解压缩就是过不去~ 想问 ...… 查看全部问答> |
|
我在VC下写 char szDrive[256]={0}; char szDir[256]={0}; char szPath[256]={0}; _splitpath(szFileName,szDrive,szDir,NUL ...… 查看全部问答> |




