标题:
单片机PW2.5检测Proteus仿真程序 粉尘传感器
[打印本页]
作者:
1347704935
时间:
2019-7-16 09:36
标题:
单片机PW2.5检测Proteus仿真程序 粉尘传感器
附件有程序,AD电路,仿真,以及详细的操作手册和文档,
方便快速开发利用。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(17.63 KB, 下载次数: 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、自锁开关
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}; //显示数值
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位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉
dat = test;
nop_();
CS = 1; //释放ADC0832
DATO = 1;
Clk = 1;
return dat;
}
复制代码
所有资料51hei提供下载:
PW2.5资料.rar
(224.52 KB, 下载次数: 163)
2019-7-16 09:36 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
弱鸡一枚
时间:
2020-5-7 10:47
proteus中找不到粉尘传感器怎么办
作者:
wangyanan991118
时间:
2021-5-18 02:41
楼主,这个文件是Keil的还是proteus的啊???我怎么用proteus打不开
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1