arduino DHT11和四位数码管,怎么编程才能让数码管交替显示温度湿度

这是DHT11温湿度的程序,温湿度的显示是在串口监视器里的,想问一下怎么改才能显示在四位数码管的前两位,DHT11的显示是16位字节的,怎么能改一下显示十进制呢?intD... 这是DHT11温湿度的程序,温湿度的显示是在串口监视器里的,想问一下怎么改才能显示在四位数码管的前两位,DHT11的显示是16位字节的,怎么能改一下显示十进制呢?int DHpin = 8; byte dat[5]; byte read_data() { byte data; for(int i=0; i<8; i++) { if(digitalRead(DHpin) == LOW) { while(digitalRead(DHpin) == LOW); //等待50us; delayMicroseconds(30); //判断高电平的持续时间,以判定数据是‘0’还是‘1’; if(digitalRead(DHpin) == HIGH) data |= (1<<(7-i)); //高位在前,低位在后 while(digitalRead(DHpin) == HIGH); //数据‘1’,等待下一位的接收; } } return data; } void start_test() { digitalWrite(DHpin,LOW); //拉低总线,发开始信号; delay(30); //延时要大于 18ms,以便 DHT11 能检测到开始信号; digitalWrite(DHpin,HIGH); delayMicroseconds(40); //等待DHT11 响应; pinMode(DHpin,INPUT); while(digitalRead(DHpin) == HIGH); delayMicroseconds(80); //DHT11 发出响应,拉低总线 80us; if(digitalRead(DHpin) == LOW); delayMicroseconds(80); //DHT11 拉高总线 80us 后开始发送数据; for(int i=0;i<4;i++) //接收温湿度数据,校验位不考虑; dat[i] = read_data(); pinMode(DHpin,OUTPUT); digitalWrite(DHpin,HIGH); //发送完一次数据后释放总线,等待主机的下一次开始信号; } void setup() { Serial.begin(9600); pinMode(DHpin,OUTPUT); } void loop() { start_test(); Serial.print("Current humdity = "); Serial.print(dat[0], DEC); //显示湿度的整数位; Serial.print('.'); Serial.print(dat[1],DEC); //显示湿度的小数位; Serial.println('%'); Serial.print("Current temperature = "); Serial.print(dat[2], DEC); //显示温度的整数位; Serial.print('.'); Serial.print(dat[3],DEC); //显示温度的小数位; Serial.println('C'); delay(700); } 展开
 我来答
mokmanbiu
2016-05-25 · TA获得超过136个赞
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:88.3万
展开全部
4x7-segment数码管通常都有驱动IC在内,不知你手上的是74HC595,还是MAX7221/7219?若是没有驱动IC,那就更麻烦,要重新写一个字库驱动,会有点闪烁和延时。
更多追问追答
追问
是那种共阴四位数码管,不知道叫什么啊
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式