这个是用数码管显示的温湿度,原理跟液晶显示是一样的,只是处理显示有所不同。

代码:

//前三位显示湿度,后三位显示温度

#include<reg52.h>
#include <intrins.h>
sbit duan=P2^6;
sbit wei=P2^7;
typedef unsigned char unint8;
typedef unsigned char unint16;
unsigned char table0[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};//不带小数点
unsigned char table[]={
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,
};//带小数点
unsigned char str1[]={"        "};
unsigned char str2[]={"        "};
sbit TRH = P3^0;//温湿度传感器DHT11数据接入
sbit LCD_RS = P2^6;
sbit LCD_RW = P2^5;
sbit LCD_EN = P2^7;
void disp(unint8 str1,unint8 str2,unint8 str3,unint8 str4,unint8 str5,unint8 str6);
unint8 TH_data,TL_data,RH_data,RL_data,CK_data;
unint8 TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;
unint8 com_data,untemp,temp;
unint8 respond;void delayNOP()
{_nop_();_nop_();_nop_();_nop_();
}// 毫秒级延时子程序
void delay_ms(unsigned char ms)
{       unsigned char i;while(ms--){for(i = 0; i< 150; i++){_nop_();_nop_();_nop_();_nop_();}}
}//5us级延时程序
void delay_us()
{unint8 i;i--;i--;i--;i--;i--;i--;
}
char receive()
{    unint8 i;com_data=0;for(i=0;i<=7;i++)    {respond=2;while((!TRH)&&respond++);delay_us();delay_us();delay_us();if(TRH){temp=1;respond=2;while((TRH)&&respond++); } elsetemp=0;com_data<<=1;com_data|=temp;    }return(com_data);
}void read_TRH()
{//主机拉低18ms TRH=0;delay_ms(18);TRH=1;//DATA总线由上拉电阻拉高主机延时20usdelay_us();delay_us();delay_us();delay_us();TRH=1;//判断DHT11是否有低电平响应信号如不响应则跳出,响应则向下运行   if(!TRH)   {respond=2;//判断DHT11发出 80us 的低电平响应信号是否结束 while((!TRH)&& respond++);respond=2;//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态while(TRH && respond++);//数据接收状态  RH_temp = receive();RL_temp = receive();TH_temp = receive();TL_temp = receive();CK_temp = receive();TRH=1;     //数据校验 untemp=(RH_temp+RL_temp+TH_temp+TL_temp);if(untemp==CK_temp){RH_data = RH_temp;RL_data = RL_temp;TH_data = TH_temp; TL_data = TL_temp;CK_data = CK_temp;}}//湿度整数部分str1[0] = table0[RH_data/10]; str1[1] = table[RH_data%10];//湿度小数部分str1[2] = table0[RL_data/10]; //温度整数部分str2[0] =table0[TH_data/10];str2[1] =table[TH_data%10];//温度小数部分str2[2] = table0[TL_data/10];
}//主函数
//TH,TL,RH,RL分别代表温湿度的整数和小数部分
void main()
{delay_us();TMOD=0X01;//选择定时器工作方式TH0=(65536-12000)/256;TL0=(65536-12000)%256;EA=1;//开总中断ET0=1;//开定时器中断TR0=1;//启动定时器 while(1){read_TRH();}
}
void T0_timer() interrupt 1
{TH0=(65536-20000)/256;TL0=(65536-20000)%256;disp(str1[0],str1[1],str1[2],str2[0],str2[1],str2[2]);
}void disp(unint8 str1,unint8 str2,unint8 str3,unint8 str4,unint8 str5,unint8 str6)
{P0=0xff;wei=1;P0=0xfe;wei=0; duan=1;P0=str1;duan=0;delay_ms(1);P0=0xff;wei=1;P0=0xfd;wei=0;duan=1;P0=str2;duan=0;delay_ms(1);P0=0xff;wei=1;P0=0xfb;wei=0;duan=1;P0=str3;duan=0; delay_ms(1); P0=0xff;wei=1;P0=0xf7;wei=0;duan=1;P0=str4;duan=0; delay_ms(1);P0=0xff;wei=1;
P0=0xef;wei=0; duan=1;P0=str5;duan=0;delay_ms(1);P0=0xff;wei=1;P0=0xdf;wei=0;duan=1;P0=str6;duan=0;delay_ms(1);}

数码管显示的温湿度计——DHT11相关推荐

  1. STMCubeMX+Proteus仿真DHT11(数码管显示)

    目录 数码管 DHT11简介 精度 量程 DHT11接线图 DHT11引脚说明 STM32CubeMX配置 Keil移植DHT11 核心代码 Proteus仿真 DHT11库 sys.h DHT11. ...

  2. 基于单片机病房呼叫系统数码管显示房号设计-基于单片机工业生产现场的光照强度控制设计-基于单片机多功能智能台灯设计-基于单片机二维码LCD显示设计-基于单片机多功能时钟闹钟万年历控制系统设计【毕设分享】

    1641基于单片机病房呼叫系统数码管显示房号设计 设计思路:此设计实现的功能通过按键模拟房号,当按键按下时会将房号编号发送到数目管上进行显示,并通过声光进行提示.包含的电路有:数码管显示电路.按键电路 ...

  3. SW6206超级华为快充5V5A,全协议OPPO闪充、自带电量计量、LED 灯/数码管显示

    深圳市展嵘电子有限公司 有需要的上帝可联系小陈:136-6225-3950 : 3412-1522-98 SW6206 是一款高集成度的多协议双向快充移动电源专用多合一芯片,支持A+A+B+C+L 口 ...

  4. c语言数码管数字时钟程序,数码管显示模拟8位时钟C语言程序设计

    原标题:数码管显示模拟8位时钟C语言程序设计 //数码时钟设计 #include // 包含寄存器定义的头文件 unsigned char Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x ...

  5. FPGA基础知识极简教程(9)七段数码管显示的Verilog简单设计

    博文目录 写在前面 正文 七段数码管原理 七段数码管译码表 单个七段数码管显示verilog设计 多个数码管动态扫描显示 参考资料 交个朋友 写在前面 作为FPGA的基础知识教程怎么能少得了这个简单的 ...

  6. 【STM32 .Net MF开发板学习-25】LED数码管显示

    在单片机系统中,LED数码管的应用是很常见的,不过对我们偏软件开发的人来说,要想研究LED还得储备一定的知识才能进行近一步的工作.不过采用.NET Micro Framework系统,我们马上就可以站 ...

  7. 4*4矩阵按键控制数码管显示0-F

    4*4矩阵按键原理图如下: 根据原理图,汇编程序代码如下: 4*4矩阵按键控制数码管显示0-F.刚学单片机汇编,是根据单片机C语言思路来写的,写的不好,如果发现有错误或会导致程序跑飞的,麻烦帮我指出, ...

  8. 【Arduino】四位数码管显示

    程序名称:数码管静态显示 程序功能:四位数码管显示 程序版本:Ver 1.0 编写日期:2020/07/30 作者信息:天津科技大学创新实验室-JC /************************ ...

  9. 四位共阳极数码管显示函数_Verilog笔记

    github传送门(练习写的代码,约束文件,仿真文件) 文章目录 Vivado 基本流程 关于封装IP核和使用Block Design Verilog module / 模块 always块 组合逻辑 ...

最新文章

  1. 【SICP练习】91 练习2.64
  2. Spring Boot:自定义starter
  3. Uva 1103 Ancient Messages
  4. CRM呼叫中心采用轮询和SNS服务器两种方式的架构
  5. python程序员月薪-据说做Python程序员,都月薪上万?
  6. PROSOFT模块MVI56E-MNETC、MVI56-PDPMV1、PTQ-PDPMV1、AN-X2-AB-DHRIO、MVI56-MBP、MVI56-MNETR、MVI56-MNET
  7. [Maven实战-许晓斌]-[第二章]-2.1在Windows上安装maven
  8. spring事务传播机制之《REQUIRED》
  9. php model module,Yii2用Gii自动生成Module+Model+CRUD
  10. 屏幕适配入门-了解基本概念-图片适配
  11. 使用Auto.js庖丁对Pro Snapshot快照加密的解密打包教程
  12. Vulnhub-bulldog1
  13. Springboot面向全球电子商城系统3v50f计算机毕业设计-课程设计-期末作业-毕设程序代做
  14. Facebook仍将在2020年启动天秤座
  15. JavaScript 递归算法
  16. 【Arduino】点亮灯和灯闪烁实验
  17. XDJM们,北京神州泰岳软件怎么样啊?谢啦
  18. WPS表格如何对散点数据进行指数函数拟合
  19. Meta开源JavaScript内存泄漏监测工具MemLab
  20. 如何用Visio2013画状态转换图

热门文章

  1. 利用 zabbix 监控服务端口
  2. android应用按照字母表排名(包含英文字母开头的)
  3. 请对未来计算机展开畅享,未来畅享人工智能论文
  4. 远程桌面提示无法连接远程计算机,win7系统远程连接提示“此计算机无法连接到远程计算机”的解决方法...
  5. Unity制作二次元卡通渲染角色材质——2、色阶化光影的多种做法对比
  6. 基于比较排序的算法复杂度的下界
  7. 嵌入式Linux的技术分析
  8. Python爬虫 requests和create_engine
  9. 题目 1558: 色盲的民主
  10. 【Keras】 计算机视觉 CNN 实现猫狗图片分类