找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5713|回复: 2
打印 上一主题 下一主题
收起左侧

单片机PW2.5检测Proteus仿真程序 粉尘传感器

[复制链接]
跳转到指定楼层
楼主
附件有程序,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电源线

单片机源程序如下:
  1. sbit CS   = P1^3;
  2. sbit Clk = P1^0;
  3. sbit DATI = P1^1;
  4. sbit DATO = P1^1;

  5. /*******************************定义全局变量********************************/

  6. unsigned int dat = 0x00;      //AD值
  7. unsigned char CH;       //通道变量
  8. unsigned char data dis[] = {0x00, 0x00,0x00,0x00};       //显示数值



  9. unsigned char adc0832(unsigned char CH)
  10. {
  11.         unsigned char i,test,adval;
  12.         adval = 0x00;
  13.         test = 0x00;
  14.         Clk = 0;       //初始化
  15.         DATI = 1;
  16.         _nop_();
  17.         CS = 0;
  18.         _nop_();
  19.         Clk = 1;
  20.         _nop_();
  21.        
  22.        
  23.         if ( CH == 0x00 )      //通道选择
  24.         {
  25.                 Clk = 0;
  26.                 DATI = 1;      //通道0的第一位
  27.                 _nop_();
  28.                 Clk = 1;
  29.                 _nop_();
  30.                 Clk = 0;
  31.                 DATI = 0;      //通道0的第二位
  32.                 _nop_();
  33.                 Clk = 1;
  34.                 _nop_();
  35.         }
  36.         else
  37.         {
  38.                 Clk = 0;
  39.                 DATI = 1;      //通道1的第一位
  40.                 _nop_();
  41.                 Clk = 1;
  42.                 _nop_();
  43.                 Clk = 0;
  44.                 DATI = 1;      //通道1的第二位
  45.                 _nop_();
  46.                 Clk = 1;
  47.                 _nop_();
  48.         }
  49.        
  50.         Clk = 0;
  51.         DATI = 1;
  52.         for( i = 0;i < 8;i++ )      //读取前8位的值
  53.         {
  54.                         _nop_();
  55.                         adval <<= 1;
  56.                         Clk = 1;
  57.                         _nop_();
  58.                         Clk = 0;
  59.                         if (DATO)
  60.                         adval |= 0x01;
  61.                         else
  62.                         adval |= 0x00;
  63.         }
  64.         for (i = 0; i < 8; i++)      //读取后8位的值
  65.         {
  66.                 test >>= 1;
  67.                 if (DATO)
  68.                 test |= 0x80;
  69.                 else
  70.                 test |= 0x00;
  71.                 _nop_();
  72.                 Clk = 1;
  73.                 _nop_();
  74.                 Clk = 0;
  75.         }
  76.         if (adval == test)      //比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉
  77.         dat = test;
  78.         nop_();
  79.         CS = 1;        //释放ADC0832
  80.         DATO = 1;
  81.         Clk = 1;
  82.         return dat;
  83. }
复制代码

所有资料51hei提供下载:
PW2.5资料.rar (224.52 KB, 下载次数: 160)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:743277 发表于 2020-5-7 10:47 | 只看该作者
proteus中找不到粉尘传感器怎么办
回复

使用道具 举报

板凳
ID:921695 发表于 2021-5-18 02:41 | 只看该作者
楼主,这个文件是Keil的还是proteus的啊???我怎么用proteus打不开
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表