標題:
單片機PW2.5檢測Proteus仿真程序 粉塵傳感器
[打印本頁]
作者:
1347704935
時間:
2019-7-16 09:36
標題:
單片機PW2.5檢測Proteus仿真程序 粉塵傳感器
附件有程序,AD電路,仿真,以及詳細的操作手冊和文檔,
方便快速開發(fā)利用。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(17.63 KB, 下載次數(shù): 84)
下載附件
2019-7-16 16:38 上傳
元件清單
1、9*15萬用板
2、stc89c51單片機
3、40腳IC座
4、ADC0832
5、8腳IC座
6、1602液晶
7、(粉塵傳感器、150歐姆電阻、220uf電容)
8、470uf電解電容
9、16p母座
10、16p排針
11、103排阻
12、30pf電容*2
13、10uf電容
14、12m晶振
15、10k電阻*2
16、1k電阻
17、2.2k電阻*3
18、220電阻
19、9012三極管
20、5mmLED(紅綠黃)
21、5V有源蜂鳴器
22、按鍵*3
23、自鎖開關(guān)
24、DC座
25、焊錫若干
26、導線若干
27、usb電源線
單片機源程序如下:
sbit CS = P1^3;
sbit Clk = P1^0;
sbit DATI = P1^1;
sbit DATO = P1^1;
/*******************************定義全局變量********************************/
unsigned int dat = 0x00; //AD值
unsigned char CH; //通道變量
unsigned char data dis[] = {0x00, 0x00,0x00,0x00}; //顯示數(shù)值
unsigned char adc0832(unsigned char CH)
{
unsigned char i,test,adval;
adval = 0x00;
test = 0x00;
Clk = 0; //初始化
DATI = 1;
_nop_();
CS = 0;
_nop_();
Clk = 1;
_nop_();
if ( CH == 0x00 ) //通道選擇
{
Clk = 0;
DATI = 1; //通道0的第一位
_nop_();
Clk = 1;
_nop_();
Clk = 0;
DATI = 0; //通道0的第二位
_nop_();
Clk = 1;
_nop_();
}
else
{
Clk = 0;
DATI = 1; //通道1的第一位
_nop_();
Clk = 1;
_nop_();
Clk = 0;
DATI = 1; //通道1的第二位
_nop_();
Clk = 1;
_nop_();
}
Clk = 0;
DATI = 1;
for( i = 0;i < 8;i++ ) //讀取前8位的值
{
_nop_();
adval <<= 1;
Clk = 1;
_nop_();
Clk = 0;
if (DATO)
adval |= 0x01;
else
adval |= 0x00;
}
for (i = 0; i < 8; i++) //讀取后8位的值
{
test >>= 1;
if (DATO)
test |= 0x80;
else
test |= 0x00;
_nop_();
Clk = 1;
_nop_();
Clk = 0;
}
if (adval == test) //比較前8位與后8位的值,如果不相同舍去。若一直出現(xiàn)顯示為零,請將該行去掉
dat = test;
nop_();
CS = 1; //釋放ADC0832
DATO = 1;
Clk = 1;
return dat;
}
復制代碼
所有資料51hei提供下載:
PW2.5資料.rar
(224.52 KB, 下載次數(shù): 163)
2019-7-16 09:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
弱雞一枚
時間:
2020-5-7 10:47
proteus中找不到粉塵傳感器怎么辦
作者:
wangyanan991118
時間:
2021-5-18 02:41
樓主,這個文件是Keil的還是proteus的啊???我怎么用proteus打不開
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1