附件有程序,AD电路,仿真,以及详细的操作手册和文档,
方便快速开发利用。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
元件清单
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, 下载次数: 160)
|