本設計基于51單片機,共有ADC0832數模轉換模塊,1602液晶顯示模塊,按鍵控制與聲光報警模塊4大模塊組成!可實現對煙霧濃度的實時監測與反應
之后是仿真目錄
51hei.png (59.46 KB, 下載次數: 65)
下載附件
2020-10-17 15:50 上傳
51hei.png (36.58 KB, 下載次數: 51)
下載附件
2020-10-17 15:50 上傳
下面是部分代碼,想要了解,可以下載文末完整附件!
//基于1602+ADC0832的煙霧/溫度報警系統
//作者:科技小宅神
//創作時間:2020/09/20
//版權:科技小宅神原創!抄襲必究,僅供參考學習!
#include <reg51.h>//包含51單片機寄存器的頭文件
#include <1602.h>//調用1602.h文件
#include <intrins.h>//包含_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)<<i);
CLK = 1; _nop_();_nop_();
CLK = 0; _nop_();_nop_();
}
//禁止片選
CS = 1;
//如果MSB->LSB和LSB->MSB讀取數據結果相同,返回讀取結果,否者0
return (dat1==dat2) ? dat1 : 0 ;
}
下面是文件夾里的總目錄
51hei.png (2.06 KB, 下載次數: 54)
下載附件
2020-10-17 15:49 上傳
全部資料51hei下載地址:
基于1602+ADC0832的煙霧報警系統.zip
(121.56 KB, 下載次數: 497)
2020-10-17 10:40 上傳
點擊文件名下載附件
完整附件 下載積分: 黑幣 -5
|