找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8158|回复: 11
收起左侧

STC89C52+12864串行显示+DS18B20+DHT11

  [复制链接]
ID:138884 发表于 2016-11-2 22:58 | 显示全部楼层 |阅读模式
基于STC89C52,在12864液晶屏上。采用12864的串行显示温湿度,温度用DS18B20,湿度用DHT11。

12864串行显示温湿度

12864串行显示温湿度

0.png
完整代码下载:
main.zip (60.01 KB, 下载次数: 297)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:138884 发表于 2016-11-2 23:02 | 显示全部楼层
部分代码在这

  1. /************************************************************************************/
  2. /*通过DS18B20测试当前环境温度, 通过DHT11测试湿度,并通过12864串行显示当前温度值**********/
  3. /*目前显示范围: 温度-55~ +125摄氏度,湿度20%-95% 湿度测量误差:+-5%******************/
  4. /************************************************************************************/

  5. #include "reg52.H"
  6. #include "intrins.h"
  7. #include "math.H"  //要用到取绝对值函数abs()

  8. #include "DELAY.H"
  9. #include "DS18B20.H"
  10. #include "12864.h"
  11. #include "DHT11.H"

  12. #define uchar unsigned char
  13. #define uint unsigned int

  14. extern uchar U8RH_data_H,U8RH_data_L;
  15. int tempValue;

  16. sbit dula = P2^0;                //段选信号的锁存器控制
  17. sbit wela = P2^1;                //位选信号的锁存器控制
  18. sbit cs88 = P2^2;         //点阵管的锁存器控制        cs88=0;//关点阵管
  19. //unsigned char code digit[10]={"0123456789"};     //定义字符数组显示数字
  20. //uchar code dis1[] = {"温度:"};
  21. //uchar code dis2[] = {"湿度:"};
  22. //uchar code dis3[] = {"烟雾浓度:"};

  23. //uchar number[10]="0123456789";
  24. //uchar code dis4[] = {"  "};

  25. void cmg88()//关数码管,点阵函数 实际应用去掉         
  26. {
  27.   dula = 1;  
  28.   P0 = 0x00;
  29.   dula = 0;
  30.   cs88 = 0x00;
  31.   P0 = 0x00;
  32.   cs88 = 1;
  33. }


  34. /*MAIN*/


  35. void main()
  36. {
  37.   unsigned char TMPS[] = {0, 0, 0,0x2e, 0,0};
  38.   unsigned char RHS[] = {0,0,0x2e,0,0x25};
  39.   uchar i,RH_H,RH_L;  uint tmp;
  40.   cmg88();//关数码管,点阵函数
  41.   delayxms(10);                 //延时
  42.   wela=0;
  43.   dula=0;
  44.   
  45.   LCD_INIT();

  46.   while(1)
  47.   {
  48.   
  49.   DS_sendChangeCmd();
  50.   tempValue = DS_getTmpValue();
  51.   lcd_setaddr(1,0);
  52.   lcd_putstr("温度:");
  53.   tmp = abs(tempValue);
  54.     TMPS[0] = 0x30+tmp / 10000;
  55.     TMPS[1] = 0x30+tmp % 10000 / 1000;
  56.     TMPS[2] = 0x30+tmp % 1000 / 100;
  57.     TMPS[4] = 0x30+tmp % 100 / 10;
  58.     TMPS[5] = 0x30+tmp % 10;                  

  59.        
  60.     lcd_setaddr(1,3);
  61.     for(i = 0;i<6;i++)
  62.           {
  63.         lcd_wdata(TMPS[i]);                 
  64.         }
  65.         lcd_setaddr(1,6);
  66.         lcd_putstr("℃");
  67.          /*以上为DS18B20温度,以下为DHT11湿度*/
  68.         lcd_setaddr(2,0);
  69.         lcd_putstr("湿度:");
  70.         RH();
  71.         RH_H= U8RH_data_H;
  72.     RH_L= U8RH_data_L;
  73.         RHS[0] = 0x30+RH_H/10;
  74.         RHS[1] = 0x30+RH_H%10;
  75.         RHS[3] = 0x30+RH_L/10;
  76.         lcd_setaddr(2,3);
  77.         for(i = 0;i<5;i++)
  78.         {
  79.           lcd_wdata(RHS[i]);
  80.         }
  81.   }
  82. }
复制代码
回复

使用道具 举报

ID:138884 发表于 2016-11-2 23:05 | 显示全部楼层
代码可以在百度云盘下载:
链接: http://pan.baidu.com/s/1hr4cx5i 密码: veeq
回复

使用道具 举报

ID:187029 发表于 2017-4-11 15:25 | 显示全部楼层
学习了
回复

使用道具 举报

ID:130231 发表于 2017-5-10 09:20 | 显示全部楼层
很给力
回复

使用道具 举报

ID:196826 发表于 2017-5-10 13:54 | 显示全部楼层
有PRITEUS仿真图吗?
回复

使用道具 举报

ID:191236 发表于 2017-7-6 09:39 | 显示全部楼层
学习当中谢谢分享
回复

使用道具 举报

ID:254173 发表于 2017-11-27 14:55 来自手机 | 显示全部楼层
谢谢楼主,好用
回复

使用道具 举报

ID:339144 发表于 2018-6-2 22:03 | 显示全部楼层
有仿真图吗
回复

使用道具 举报

ID:326967 发表于 2018-6-3 10:18 | 显示全部楼层
感谢分享。
回复

使用道具 举报

ID:428518 发表于 2018-11-20 01:20 | 显示全部楼层
学习啦
回复

使用道具 举报

ID:219441 发表于 2018-11-20 15:22 | 显示全部楼层
为啥少了一部分呢?楼主可以补上那部分吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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