数码管显示的温湿度计——DHT11
这个是用数码管显示的温湿度,原理跟液晶显示是一样的,只是处理显示有所不同。
代码:
//前三位显示湿度,后三位显示温度
#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相关推荐
- STMCubeMX+Proteus仿真DHT11(数码管显示)
目录 数码管 DHT11简介 精度 量程 DHT11接线图 DHT11引脚说明 STM32CubeMX配置 Keil移植DHT11 核心代码 Proteus仿真 DHT11库 sys.h DHT11. ...
- 基于单片机病房呼叫系统数码管显示房号设计-基于单片机工业生产现场的光照强度控制设计-基于单片机多功能智能台灯设计-基于单片机二维码LCD显示设计-基于单片机多功能时钟闹钟万年历控制系统设计【毕设分享】
1641基于单片机病房呼叫系统数码管显示房号设计 设计思路:此设计实现的功能通过按键模拟房号,当按键按下时会将房号编号发送到数目管上进行显示,并通过声光进行提示.包含的电路有:数码管显示电路.按键电路 ...
- SW6206超级华为快充5V5A,全协议OPPO闪充、自带电量计量、LED 灯/数码管显示
深圳市展嵘电子有限公司 有需要的上帝可联系小陈:136-6225-3950 : 3412-1522-98 SW6206 是一款高集成度的多协议双向快充移动电源专用多合一芯片,支持A+A+B+C+L 口 ...
- c语言数码管数字时钟程序,数码管显示模拟8位时钟C语言程序设计
原标题:数码管显示模拟8位时钟C语言程序设计 //数码时钟设计 #include // 包含寄存器定义的头文件 unsigned char Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x ...
- FPGA基础知识极简教程(9)七段数码管显示的Verilog简单设计
博文目录 写在前面 正文 七段数码管原理 七段数码管译码表 单个七段数码管显示verilog设计 多个数码管动态扫描显示 参考资料 交个朋友 写在前面 作为FPGA的基础知识教程怎么能少得了这个简单的 ...
- 【STM32 .Net MF开发板学习-25】LED数码管显示
在单片机系统中,LED数码管的应用是很常见的,不过对我们偏软件开发的人来说,要想研究LED还得储备一定的知识才能进行近一步的工作.不过采用.NET Micro Framework系统,我们马上就可以站 ...
- 4*4矩阵按键控制数码管显示0-F
4*4矩阵按键原理图如下: 根据原理图,汇编程序代码如下: 4*4矩阵按键控制数码管显示0-F.刚学单片机汇编,是根据单片机C语言思路来写的,写的不好,如果发现有错误或会导致程序跑飞的,麻烦帮我指出, ...
- 【Arduino】四位数码管显示
程序名称:数码管静态显示 程序功能:四位数码管显示 程序版本:Ver 1.0 编写日期:2020/07/30 作者信息:天津科技大学创新实验室-JC /************************ ...
- 四位共阳极数码管显示函数_Verilog笔记
github传送门(练习写的代码,约束文件,仿真文件) 文章目录 Vivado 基本流程 关于封装IP核和使用Block Design Verilog module / 模块 always块 组合逻辑 ...
最新文章
- 【SICP练习】91 练习2.64
- Spring Boot:自定义starter
- Uva 1103 Ancient Messages
- CRM呼叫中心采用轮询和SNS服务器两种方式的架构
- python程序员月薪-据说做Python程序员,都月薪上万?
- PROSOFT模块MVI56E-MNETC、MVI56-PDPMV1、PTQ-PDPMV1、AN-X2-AB-DHRIO、MVI56-MBP、MVI56-MNETR、MVI56-MNET
- [Maven实战-许晓斌]-[第二章]-2.1在Windows上安装maven
- spring事务传播机制之《REQUIRED》
- php model module,Yii2用Gii自动生成Module+Model+CRUD
- 屏幕适配入门-了解基本概念-图片适配
- 使用Auto.js庖丁对Pro Snapshot快照加密的解密打包教程
- Vulnhub-bulldog1
- Springboot面向全球电子商城系统3v50f计算机毕业设计-课程设计-期末作业-毕设程序代做
- Facebook仍将在2020年启动天秤座
- JavaScript 递归算法
- 【Arduino】点亮灯和灯闪烁实验
- XDJM们,北京神州泰岳软件怎么样啊?谢啦
- WPS表格如何对散点数据进行指数函数拟合
- Meta开源JavaScript内存泄漏监测工具MemLab
- 如何用Visio2013画状态转换图
热门文章
- 利用 zabbix 监控服务端口
- android应用按照字母表排名(包含英文字母开头的)
- 请对未来计算机展开畅享,未来畅享人工智能论文
- 远程桌面提示无法连接远程计算机,win7系统远程连接提示“此计算机无法连接到远程计算机”的解决方法...
- Unity制作二次元卡通渲染角色材质——2、色阶化光影的多种做法对比
- 基于比较排序的算法复杂度的下界
- 嵌入式Linux的技术分析
- Python爬虫 requests和create_engine
- 题目 1558: 色盲的民主
- 【Keras】 计算机视觉 CNN 实现猫狗图片分类