#include<reg51.h> #include<intrins.h> #define dm P0 #define uchar unsigned char #define uint unsigned int sbit DQ=P1^6; sbit w0=P2^0; sbit w1=P2^1; sbit w2=P2^2; sbit w3=P2^3; sbit beep=P3^7; int temp1=0; uint h; uint temp; uchar r; uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}; uchar code table_dm[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; uchar code table_dml[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; uchar data temp_data[2]={0x00,0x00}; uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; void delay(uint t) { for(;t>0;t--); } void xianshi() { int j; for(j=0;j<4;j++) { switch(j) { case 0: dm=table_dm[display[0]]; w0=0; delay(300); w0=1; case 1: dm=table_dml[display[1]]; w1=0; delay(300); w1=1; case 2: dm=table_dm[display[2]]; w2=0; delay(300); w2=1; case 3: dm=table_dm[display[3]]; w3=0; delay(300); w3=1; } } } ow_reset(void) { char presence=1; while(presence) { while(presence) { DQ=1;_nop_();_nop_(); DQ=0; delay(50); DQ=1; delay(6); presence=~DQ; } delay(45); presence=~DQ; } DQ=1; return presence; } void write_byte(uchar val) { uchar i; for(i=8;i>0;i--) { DQ=1;_nop_();_nop_(); DQ=0;_nop_();_nop_();_nop_();_nop_(); DQ=val&0x01; delay(6); val=val>>1; } DQ=1; delay(1); } uchar read_byte(void) { uchar i; uchar value=0; for(i=8;i>0;i--) { DQ=1;_nop_();_nop_(); value>>=1; DQ=0;_nop_();_nop_();_nop_();_nop_(); DQ=1;_nop_();_nop_();_nop_();_nop_(); if(DQ)value|=0x80; delay(6); } DQ=1; return value; } read_temp() { ow_reset(); delay(200); write_byte(0xcc); write_byte(0x44); ow_reset(); delay(1); write_byte(0xcc); write_byte(0xbe); temp_data[0]=read_byte(); temp_data[1]=read_byte(); temp=temp_data[1]; temp<<=8; temp=temp|temp_data[0]; return temp; } work_temp(uint tem) { uchar n=0; if(tem>6348) { tem=65536-tem; n=1; } display[4]=tem&0x0f; display[0]=ditab[display[4]]; display[4]=tem>>4; display[3]=display[4]/100; display[1]=display[4]%100; display[2]=display[1]/10; display[1]=display[1]%10; r=display[1]+display[2]*10+display[3]*100; if(!display[3]) { display[3]=0x0a; if(!display[2]) { display[2]=0x0a; } } if(n) { display[3]=0x0b; } return n; } void BEEP() { if((r>30)) { beep=!beep; } else { beep=0; } } void main() { beep=0; dm=0x00; w0=0; w1=0; w2=0; w3=0; for(h=0;h<4;h++) { display[h]=0; } ow_reset(); write_byte(0xcc); write_byte(0x44); for(h=0;h<50;h++) { xianshi(); } while(1) { if(temp1==0) { work_temp(read_temp()); xianshi(); BEEP(); } } }

时间: 2023-11-03 15:05:47 浏览: 58
这段代码是一个温度测量程序。使用了DS18B20温度传感器和单片机来实现温度的读取和显示。主要的流程如下: 1. 初始化IO口和变量。 2. 重置温度传感器,并发送温度转换命令。 3. 读取温度传感器的数据。 4. 将读取到的温度数据进行处理,计算出实际的温度值,并将其显示在数码管上。 5. 根据温度值,控制蜂鸣器的状态。 整个程序会循环执行,不断更新温度值并显示在数码管上,同时根据温度值控制蜂鸣器的状态。 需要注意的是,这段代码是针对特定硬件和引脚定义的,如果要在其他平台上运行,可能需要进行相应的修改和适配。
相关问题

#include<REGX51.H> #include<intrins.h> #define uchar unsigned char #define uint unsigned int什么意思

这段代码是一个基于51单片机的C语言程序,其中: - `#include<REGX51.H>` 是包含了51单片机的头文件,可以使用其中定义的寄存器及功能; - `#include<intrins.h>` 是包含了汇编语言的头文件,可以使用其中定义的内嵌汇编函数; - `#define uchar unsigned char` 定义了一个名为`uchar`的宏,表示无符号字符类型; - `#define uint unsigned int` 定义了一个名为`uint`的宏,表示无符号整数类型。

解释以下程序的设计思路:#include <reg52.h> #include "intrins.h" #include <stdio.h> #define u8 unsigned char #define u16 unsigned int #define uchar unsigned char #define uint unsigned int #define range_WS 5 #define range_GY

该程序使用了reg52.h和intrins.h库,分别用于访问51系列单片机寄存器和实现延时功能。同时,程序还使用了stdio.h库,用于格式化输出信息。 程序中定义了一些宏常量,如u8、u16、uchar、uint,用于规定变量的数据类型和范围。 在程序中,还定义了两个常量range_WS和range_GY,分别代表温湿度传感器和光照传感器的采集范围。 整个程序的主要功能是读取温湿度传感器和光照传感器采集的数据,并将数据通过串口传输到上位机进行处理。程序通过中断方式读取传感器数据,在中断处理函数中,通过调用intrins.h库实现延时功能,然后读取传感器数据并存储在相关变量中。 在主函数中,程序通过串口将读取到的传感器数据输出到上位机进行处理。同时,程序还实现了一个死循环,用于保证程序一直运行。

相关推荐

最新推荐

recommend-type

HP-Socket编译-Linux

HP-Socket编译-Linux
recommend-type

JavaScript_生活在Discord上的开源社区列表.zip

JavaScript
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这
recommend-type

解释这行代码 c = ((double)rand() / RAND_MAX) * (a + b - fabs(a - b)) + fabs(a - b);

这行代码的作用是随机生成一个浮点数,范围在 a 和 b 之间(包括 a 和 b)。 其中,`rand()` 函数是 C 语言标准库中的一个函数,用于生成一个伪随机整数。`RAND_MAX` 是一个常量,它表示 `rand()` 函数生成的随机数的最大值。 因此,`(double)rand() / RAND_MAX` 表示生成的随机数在 [0, 1] 之间的浮点数。 然后,将这个随机数乘上 `(a - b) - fabs(a - b)`,再加上 `fabs(a - b)`。 `fabs(a - b)` 是 C 语言标准库中的一个函数,用于计算一个数的绝对值。因此,`fabs(a - b)