找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机的PM2.5温湿度仿真LCD不显示是怎么回事?

[复制链接]
回帖奖励 6 黑币 回复本帖可获得 1 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主

仿真里面LCD不显示是怎么回事,大家帮忙看看

程序.zip

4.38 KB, 下载次数: 8

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

使用道具 举报

沙发
ID:1012237 发表于 2022-4-6 14:40 | 只看该作者
仿真图片

51hei图片_20220406143410.png (66.64 KB, 下载次数: 32)

51hei图片_20220406143410.png
回复

使用道具 举报

板凳
ID:161164 发表于 2022-4-6 23:31 | 只看该作者
代码不全,我把adc0832.h相关的注释掉就正常显示了



回复

使用道具 举报

地板
ID:1012237 发表于 2022-4-7 12:10 | 只看该作者
lkc8210 发表于 2022-4-6 23:31
代码不全,我把adc0832.h相关的注释掉就正常显示了

我把0832代码加上怎么不行呢
回复

使用道具 举报

5#
ID:1012237 发表于 2022-4-7 12:11 | 只看该作者
lkc8210 发表于 2022-4-6 23:31
代码不全,我把adc0832.h相关的注释掉就正常显示了
  1. #include"delay.h"                    //添加延时函数头文件
  2. #include<intrins.h>
  3. sbit CS   = P1^2;
  4. sbit Clk  = P1^1;
  5. sbit DATI = P1^0;
  6. sbit DATO = P1^0;
  7. /****************************************************************************
  8. 函数功能:AD转换子程序
  9. 入口参数:CH
  10. 出口参数:dat
  11. ****************************************************************************/
  12. unsigned char adc0832(unsigned char CH)
  13. {
  14.         unsigned char dat = 0x00;      //AD值
  15.     unsigned char i,test,adval;
  16.     adval = 0x00;
  17.     test = 0x00;
  18.     Clk = 0;       //初始化
  19.     DATI = 1;
  20.     _nop_();
  21.     CS = 0;
  22.     _nop_();
  23.     Clk = 1;
  24.    _nop_();
  25.         if ( CH == 0x00 )      //通道选择
  26.            {
  27.             Clk = 0;
  28.                DATI = 1;      //通道0的第一位
  29.                _nop_();
  30.               Clk = 1;
  31.         _nop_();
  32.         Clk = 0;
  33.               DATI = 0;      //通道0的第二位
  34.               _nop_();
  35.               Clk = 1;
  36.       _nop_();
  37.     }        
  38.     else
  39.     {
  40.        Clk = 0;
  41.               DATI = 1;      //通道1的第一位
  42.        _nop_();
  43.        Clk = 1;
  44.        _nop_();
  45.               Clk = 0;
  46.               DATI = 1;      //通道1的第二位
  47.             _nop_();
  48.              Clk = 1;
  49.              _nop_();
  50.     }
  51.     Clk = 0;
  52.     DATI = 1;
  53.     for( i = 0;i < 8;i++ )      //读取前8位的值
  54.     {
  55.               _nop_();
  56.                adval <<= 1;
  57.                Clk = 1;
  58.                _nop_();
  59.                Clk = 0;
  60.                if (DATO)
  61.                   adval |= 0x01;
  62.               else
  63.                   adval |= 0x00;
  64.     }
  65.     for (i = 0; i < 8; i++)      //读取后8位的值
  66.     {
  67.         test >>= 1;
  68.         if (DATO)
  69.                    test |= 0x80;
  70.         else
  71.             test |= 0x00;
  72.         _nop_();
  73.         Clk = 1;
  74.                _nop_();
  75.         Clk = 0;
  76.      }
  77.      if (adval == test)      //比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉
  78.           dat = test;
  79.       _nop_();
  80.       CS = 1;        //释放ADC0832
  81.       DATO = 1;
  82.       Clk = 1;
  83.       return dat;
  84. }
  85. sbit vled  = P1^7;

  86. void Delay1us(uint t)                //@12MHz
  87. {
  88.         while(t--)_nop_();
  89. }
  90. uint read_data(uchar N)
  91. {
  92.         uint val=0;
  93.         vled=0;
  94.         Delay1us(20);
  95.         val=adc0832(N);
  96.         vled=1;
  97.         Delay1us(400);       
  98.         return val;
  99. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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