数字显示温度计程序
单片机基于stm32的数字温度计设计
单片机基于stm32的数字温度计设计
数字温度计是一种用于测量环境温度的设备。
在这个问题中,我们将使用基于STM32的单片机来设计一个数字温度计。
为了设计这个温度计,我们需要以下组件和步骤:
1. STM32单片机:STM32是一种基于ARM架构的单片机,它具有强大的计算能力和丰富的外设接口,适用于各种应用。
2. 温度传感器:我们需要选择一种适合的温度传感器,常用的有数字式温度传感器,如DS18B20。
3. 连接电路:将温度传感器连接到STM32单片机。
这通常需要使用一些电子元件,如电阻、电容和连接线等来建立电路连接。
4. 编程:使用适合STM32单片机的编程语言,如C语言,来编写程序。
程序将读取温度传感器的数据,并将其转换为数字值。
5. 温度显示:将温度数据显示在合适的显示设备上,如LCD显示屏或七段数码管。
可以使用STM32单片机的GPIO口控制这些显示设备。
6. 数据处理:可以对温度数据进行进一步处理,如计算平均温度、设定警报阈值等。
以上是一个基本的数字温度计设计的流程。
具体的实现细节和代码编写可能需要根据具体的硬件和软件平台进行调整。
DS18B20数字温度计C程序(能显示负温)
DS18B20数字温度计C程序(能显示负温)DS18B20数字温度计C程序(能显示负温)//***********DS18B20数字温度计C程序****************// //*MCU: AT892051 ////*MCU-crystal: 12M ////*Version: 01 ////*Last Updata: 2007-6-10 ////*Author: zhaojun ////*Description: ////DS18B20的读写程序,数据脚P3.4 ////温度传感器18B20汇编程序,采用器件默认的12位转化 // //最大转化时间750微秒,显示温度-55到+125度,显示精度 // //为0.1度,显示采用4位LED共阳显示测温值 ////P1口为段码输入,P0~P3为位选 ///***************************************************/#include "reg51.h"#include "intrins.h" //_nop_();延时函数用#define Disdata P1 //段码输出口#define discan P3 //扫描口#define uchar unsigned char#define uint unsigned intsbit DQ=P3^4; //温度输入口sbit DIN=P1^7; //LED小数点控制uint h;uint temp;//////**************温度小数部分用查表法***********//uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0 x07,0x08,0x08,0x09,0x09};//uchar code dis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0 xff,0xbf};//共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-"uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; //列扫描控制字uchar data temp_data[2]={0x00,0x00}; //读出温度暂放uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; //显示单元数据,共4个数据和一个运算暂用///////*****************11us延时函数*************************///void delay(uint t){for (;t>0;t--);}///****************显示扫描函数***************************/scan(){char k;for(k=0;k<4;k++) //4位LED扫描控制Disdata=dis_7[display[k]]; //数据显示if (k==1){DIN=0;} //小数点显示discan=scan_con[k]; //位选delay(300);}}/////****************DS18B20复位函数************************/ ow_reset(void){char presence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();//从高拉倒低DQ=0;delay(50); //550 usDQ=1;delay(6); //66 uspresence=DQ; //presence=0 复位成功,继续下一步}delay(45); //延时500 uspresence=~DQ;}DQ=1; //拉高电平}///****************DS18B20写命令函数************************/ //向1-WIRE 总线上写1个字节void write_byte(uchar val){uchar i;for(i=8;i>0;i--){DQ=1;_nop_();_nop_(); //从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 usDQ=val&0x01; //最低位移出delay(6); //66 usval=val/2; //右移1位}DQ=1;delay(1);}///****************DS18B20读1字节函数************************///从总线上取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_(); //4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); //4 usif(DQ)value|=0x80;delay(6); //66 us}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]; // 两字节合成一个整型变量。
单片机的数字温度计设计方案(附代码与仿真)
基于STC89C52的数字温度计目录1、简介....... .......... ..... 3 _ _2、计划选择2.1。
主控片选 (3)2.2.显示模块.............................. (3)2.3、温度检测模块………………………………… .. 43、系统硬件设计3.1。
51单片机最小系统设计………………………… .4 .电源电路设计…………………… .. 5.液晶显示电路设计……………………………… ..63.4.温度检测电路设计………… . . . 74.系统软件设计4.1。
温度传感器数据读取流程图......... .. (9)4.2.系统编程………………… .105. 编程与仿真5.1、Keil编程软件………………… .. .. 115.2.变形杆菌 (11)5.3.模拟界面……………………… ..116.总结........ .......... ........ 12 _ _ _ _ _七、附录附录 1. 原理图........ .......... (12)附录 2. 程序清单…………………………………………………………………… ..131 简介进入信息飞速发展的21世纪,科学技术的发展日新月异。
科学技术的进步带动了测量技术的发展,现代控制设备的性能和结构发生了翻天覆地的变化。
我们已经进入高速发展的信息时代,测量技术也成为当今技术的主流,已经渗透到研究和应用工程的各个领域。
温度与人们的生活息息相关,温度的测量变得非常重要。
2.系统方案选择2.1 主控芯片选型方案一:STC89C52RCSTC89C52RC是8051内核的ISP在线可编程芯片,最高工作时钟频率为80MHz,芯片内含8KB Flash ROM,可反复擦写1000次。
该器件兼容MCS-51指令系统和8051引脚结构。
该芯片集成了通用8位中央处理器和ISP Flash存储单元,具有在线可编程特性,在PC端有控制程序,用户程序代码可下载到单片机部门,无需购买通用编程器,速度更快。
C51单片机数字温度计汇编程序及说明书
1绪论1.1选题背景随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学试验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中,有特别重要的意义。
现在所使用的温度计通常都是精度为1℃和0.1℃的水银、煤油或酒精温度计。
这些温度计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且他们的热容量还比较大,达到热平衡所需的时间较长,因此很难读准,并且使用非常不方便。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确等优点,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
因此本课题就尝试通过编程与芯片的结合来解决传统数字温度计的弊端,设计出新型数字温度计。
1.2课题现状分析及研究意义温度传感器的发展现状:温度传感器使用范围广,数量多,居各种传感器之首,其发展大致经历了以下3个阶段:①传统的分立式温度传感器(含敏感元件)——热电偶传感器,主要是能够进行非电量和电量之间转换。
②模拟集成温度传感器/控制器。
集成传感器是采用硅半导体集成工艺制成的,因此亦称硅传感器或单片集成温度传感器。
③智能温度传感器。
它是微电子技术、计算机技术和自动测试技术(ATE_)的结晶。
智能温度传感器内部包含温度传感器、A/D传感器、信号处理器、存储器(或寄存器)和接口电路。
本课题的研究可以应用领域生产、生活等很多领域。
对于家用电器从洗衣机、微波炉到音响等等到处都可以用到温度控制器来方便大家的日常生活。
开发此产品后也可方便应用安装在小至家庭大到工厂车间,小至一个芯片大到一个机械设备。
例如在家庭客厅卧室等必要地方显示室温,可防止家里食物是否变质及早采取措施。
18B20温度传感器温度计程序
18B20温度传感器温度计程序2008-9-261.实验任务本实验实现的是通过18B20温度传感器读回温度并在6位数码管上显示。
精度为,范围为2.实验目的学会使用单片机控制18B20此类单总线器件。
原理及引脚介绍DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20产品的特点(1)、只要求一个端口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在-55。
C到+125。
C之间。
(5)、数字温度计的分辨率用户可以从9位到12位选择。
(6)、内部有温度上、下限告警设置。
TO-92封装的DS18B20的引脚排列见下图,其引脚功能描述见下:1.GND地信号2.DQ数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也能够向器件提供电源。
3.VDD可选择的VDD引脚。
当工作于寄生电源时,此引脚必需接地。
18B20管脚图4.实验原理图实验原理图5. 18B20操纵命令字指令说明读ROM(33H) 读18B20的序列号匹配ROM(55H) 继续读完64位序列号的命令,用于多个18B20时定位跳过ROM(CCH) 此命令执行后的在存储器打操作针对在线所有18B20 搜ROM(F0H) 识别总线上各器件的编码,为操作各器件做准备报警搜索(ECH) 公温度越限的器件对此命令作出响应指令说明温度转换(44H) 启动在线18B20做温度AD转换读数据(BEH) 从高速暂存器读9位温度值和CRC值写数据(4EH) 将数据写入高速暂存的第3和第4字节中复制(48H) 将高速暂存器中第3和第4字节复制到EERAM读EERAM(B8H) 将EERAM内容写入高速暂存器中第3和第4字节读电源供电方式(B4H) 了解18B20的供电方式6. 实验源程序WENDU_L EQU 29H;用于保留读出温度的低字节WENDU_H EQU 28H;用于保留读出温度的高字节XIAOSHU EQU 27H;用于保留温度的小数部份ZHENGSHU EQU 26H;用于保留整数部份BIAOZHI BIT 50H;18B20检查位1为存在,0为不存在ORG 0000HAJMP MAINORG 0030HMAIN:MOV SCON,#00HACALL DUWENACALL ZHENGHEACALL BCDACALL DISPACALL TIME1AJMP MAIN;---------------------------------------------------------------------------------------------------------------------------------------- ;读温度子程序;---------------------------------------------------------------------------------------------------------------------------------------- DUWEN:SETBACALL FUWEI ;读温度之前必需先复位JB BIAOZHI,CUNZAI;查看标志位看18B20是不是存在,1为存在,0为不存在RET ;不存在那么返回CUNZAI: ;存在那么开始读温度MOV A,#0CCH ;跳过ROM匹配ACALL XIE ;调写子程序MOV A,#44H ;发出温度转换命令ACALL XIE ;调写子程序ACALL TIME1 ;调1秒延时,等等AD转换完成,此刻分辨率为12位,温度最大转换时刻为750MSACALL FUWEI ;读温前需要复位MOV A,#0CCH ;跳过ROM匹配ACALL XIEMOV A,#0BEH ;发读温度命令ACALL XIEACALL DUSHU ;将闱出数据读回CLRRET;------------------------------------------------------------------------------------------------------------------------------;复位子程序;18B20复位需要将数据位拉低500us;18B20收到信号后要等待16-60us,然后发出60-240us的低脉冲;------------------------------------------------------------------------------------------------------------------------------- FUWEI:SETBNOPCLRMOV R0,#3INTE:MOV R1,#107 ;设一个537us延时KK1: DJNZ R1,KK1DJNZ R0,INTESETB ;拉高数据线,等待回应NOPNOPNOPMOV R0,#25 ;INTE1:JNB ,INTE2 ;延时延时50us等待18B20回应,假设返回低脉冲那么说明18B20存在DJNZ R0 ,INTE1AJMP INTE3 ;通过反映时刻而没检测到18B20的存在,那么跳转去清零标志位INTE2:SETB BIAOZHI ;检测到18B20存在,置1标志位CLRAJMP INTE4INTE3:CLR BIAOZHI ;没检测到18B20,清零标志位AJMP INTE5INTE4:MOV R0,#120 ;延时240us,确定回应信号已发完KK: DJNZ R0,KKINTE5:SETBRET;---------------------------------------------------------------------------------------------------------------------------------------- ;写18B20子程序;----------------------------------------------------------------------------------------------------------------------------------------- XIE:MOV R2,#8 ;写计数寄放器,一共有8位数据CLR CLP:CLRMOV R3,#6 ;设一个延时LL1:DJNZ R3,LL1RRC A ;右循环,先输出低位MOV ,CMOV R3,#23 ;设延时LL: DJNZ R3,LL ;SETBNOPNOPDJNZ R2,LP ;判定是不是完成数据传送SETB ;完成传送拉高数据位RET;----------------------------------------------------------------------------------------------------------------------------------------- ;从18B20中读出温度数据子程序;-----------------------------------------------------------------------------------------------------------------------------------------DUSHU:MOV R4,#2 ;设读回数据个数指针MOV R1,#WENDU_L ;把温度数据低位存入29HRE: MOV R2,#8 ;设数据长度指针RE1: CLR CSETBNOPNOP CLRNOPNOPNOPSETBMOV R3,#9 DJNZ R3,$ MOV C, MOV R3,#23NN: DJNZ R3,NNRRC ADJNZ R2,RE1MOV @R1,A DEC R1 ;高位存入28H DJNZ R4,RERET;---------------------------------------------------------------------------------------------------------------------------------;数据整合子程序;温度源数据的整合,读出数据的高字节的低四位决定温度的整数部份;低字节的低四位决定小数部份;----------------------------------------------------------------------------------------------------------------------------- ZHENGHE:MOV A,#0FHANL A,WENDU_L ;低字节的低四位就是小数部分MOV XIAOSHU,A ;取得小数部份MOV A,WENDU_L ;将高字节的低四位移入低字节的高4位,MOV C,40H ;获得的新字节就是整数部分的数据RRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV ZHENGSHU,ARET;----------------------------------------------------------------------------------------------------------------------------------------- ;显示数据拆解程序、显示程序、延时程序;----------------------------------------------------------------------------------------------------------------------------------------;数据拆解程序BCD:MOV A,ZHENGSHU MOV B,#10DIV ABMOV 50H,AMOV 51H,BMOV A,XIAOSHUMOV R0,#52HMOV R2,#4D0:MOV B,#10MUL ABMOV B,#16DIV ABMOV @R0,AINC R0MOV A,BDJNZ R2,D0RET ;----------------------------------- ;显示程序;---------------------------------- DISP:ACALL TIMEMOV R7,#6MOV DPTR,#TABMOV R0,#55HLP1:MOV A ,@R0;MOVC A,@A+DPTRCJNE R7,#2,NE1ANL A,#07FHNE1:MOV SBUF,AJNB TI ,$CLR TIDEC R0DJNZ R7,LP1RET;---------------------------------------- ;延时程序;---------------------------------------- TIME1:MOV R6,#4LOOP2:MOV R5,#250LOOP1:ACALL D1MSDJNZ R5,LOOP1DJNZ R6,LOOP2RETTIME:MOV R6,#200LOOP3:ACALL D1MSDJNZ R6,LOOP3RETD1MS:MOV R7,#250LOOP0:NOPNOPNOPDJNZ R7,LOOP0RETTAB:DB 0C0H,0F9H,0A4H,0B0H DB 99H, 92H, 82H, 0F8HDB 80H, 90H, 88H, 83HDB 0C6H,0A1H,86H, 8EHDB 0FFHEND。
数字温度指示仪表检定操作规程
目的:本规程规定了数字温度指示调节仪表检定程序。
责任:由工程部制订、审核,质量保证部批准并颁发,工程部计量室执行。
范围:本规程适用于与热电偶或热电阻配用,并具有模拟—数字转换的数字温度指示及指示调节仪的检定。
定义:被检仪表是一个由与热电偶或热电阻配用用以测量温度,辅以相应的执行机构组成的温度控制系统。
内容:1. 计量器具检定的技术要求1.1外观1.2绝缘电阻当环境温度为15℃—35℃,相对湿度为45—75%时,仪表输入端子与仪表外壳、电源端子与仪表外壳、输入端子与电源端子间的绝缘电阻均不应小于20兆欧。
1.3指示基本误差仪表的基本误差采用含有准确度等级的表达方法Δ=±α%F*S式中:Δ—允许基本误差;α—准确度等级; F*S---仪表的量程1.4分辨力修理后的仪表必须进行该项检定,且符合该仪表的要求。
1.5稳定度误差稳定度误差的显示值波动量不大于其分辨力。
短时间示值漂移,1小时内不大于允许基本误差的四分之一。
2. 检定条件2.1检定用的标准设备:选用SR501标准直流电压信号源,其精度为0.001级;0—50℃二等标准水银温度计;0.01级直流电阻箱;补偿导线;分辨率为0.1秒,误差小于±1秒/天的秒表;兆欧表;220伏、1千瓦交流稳压电源一台。
2.2环境条件:环境温度:20±5℃,相对湿度:45—75%除地磁场外,在仪表周围应无其它外磁场的影响存在。
3. 检定的项目及检定方法3.1外观检查:参照本规程第二条3.2绝缘电阻的检定:仪表电源开关处于接通位置(外电源应切断),用导线将电源端子及信号端子分别短接,用兆欧表进行测量,绝缘电阻应不小于20兆欧。
3.3通电项目检定铜导线铜导线℃。
检定点的选择不低于5点,一般应选择包括上下限在内的,原则上均匀的整十或整百摄氏度点。
用增加输入信号的办法,找出各被检测点附近转换点的值,直至上限:然后减少输入信号进行下行程的检定,找出各被检测点附近转换点的值直至下限值。
jjg 76数字温度计检定规程
jjg 76数字温度计检定规程第一章总则第一条为了保证数字温度计的准确性和可靠性,规范数字温度计的检定工作,根据国家有关法律法规和标准,制定本规程。
第二条本规程适用于数字温度计的检定工作,包括固定式和便携式数字温度计。
第三条数字温度计的检定应符合国家有关法律法规和标准的要求,确保检定结果准确可靠。
第四条数字温度计的检定应由具备相应资质的检定机构进行,并在检定报告中标明检定机构的名称、地址以及检定人员的姓名。
第五条数字温度计的检定应按照国家有关标准的要求进行,包括检定方法、检定装置和检定环境等。
第二章检定要求第六条数字温度计的检定应在恒定的环境条件下进行,确保检定结果的准确性。
温度计的检定环境应符合国家有关标准的要求。
第七条数字温度计的检定应使用具有合法计量认证的标准温度计进行,确保标准温度计的准确性。
第八条数字温度计的检定应按照国家有关标准的要求进行,包括温度计的测量范围、分度值和测量不确定度等。
第九条数字温度计的检定应在规定的温度范围内进行,确保检定结果的可靠性。
第十条数字温度计的检定应按照国家有关标准的要求进行,包括温度计的静态特性、动态特性和线性度等。
第十一条数字温度计的检定应记录检定结果,并填写检定报告,确保检定结果的可追溯性。
第三章检定程序第十二条数字温度计的检定程序包括准备工作、检定操作、检定结果处理和检定报告编制等。
第十三条准备工作包括检定环境的准备、标准温度计的准备以及数字温度计的准备等。
第十四条检定操作包括测量温度、调整温度、记录数据等。
第十五条检定结果处理包括数据处理、不确定度评定等。
第十六条检定报告编制包括填写检定报告、打印检定报告等。
第四章质量保证第十七条数字温度计的检定机构应建立和实施质量保证体系,确保检定工作符合国家有关标准的要求。
第十八条数字温度计的检定机构应定期进行内部审核和管理评审,确保质量保证体系的有效性。
第十九条数字温度计的检定机构应参加相关的国家和行业组织组织的检定能力评定,确保检定能力的合格性。
单片机课程设计方案—数字温度计
1 课题任务、功能要求说明及总体方案介绍1.1 课题目的随着社会的发展,温度的测量及控制变得越来越重要。
本文采用单片机STC89S52设计了温度实时测量及控制系统。
单片机STC89S52 能够根据温度传感器DS18B20 所采集的温度在数码管上实时显示,通过控制从而把温度控制在设定的范围之内。
所有温度数据均通过4位数码管LED显示出来。
系统可以根据时钟存储相关的数据。
通过该课程的学习使我们对计算机控制系统有一个全面的了解、掌握常规控制算法的使用方法、掌握简单微型计算机应用系统软硬的设计方法,进一步锻炼同学们在微型计算机应用方面的实际工作能力。
1.2 功能要求说明设计一个具有特定功能的数字温度计。
该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
测量温度范围0℃~99℃,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。
1.3 设计课题总体方案介绍及工作原理说明1.3.1设计课题总体方案(1>根据设计要求,选择AT89C52单片机为核心器件。
(2>温度检测器件采用DS18B20数字式温度传感器。
与单片机的接口为P3.6引脚。
(3>键盘采用独立式按键,由三个按键组成,分别是:设置键<SET),加一建<+1),确认键<RET)。
(4>SET键<上下限温度设置键):当该键按下时,进入上下限温度设置功能。
通过P0.1引脚接入。
(5>+1键<加一调整键):在输入上下限温度时,该键按下一次,被调整位加一。
通过P0.2引脚接入。
(6>RET键<确认键):当该键按下时,指向下一个要调整的位。
通过P0.3引脚接入。
1.3.2 工作原理说明本课题以是80S52单片机为核心设计的一种数字温度控制系统,利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。
C语言程序编写 温度计显示
_nop_();
adwr=0;
_nop_();
adwr=1;
delay(1);
P1=0xff;
adrd=1;
_nop_();
adrd=0;
_nop_();
adval=P1;
adrd=1;
return adval;
lpf=(dat[1]+dat[2]+dat[3])/3;
return lpf;
}
void temp_converted() //AD转换温度函数,每段拟合线性化,scope
{
uchar i;
float k;
uchar m;
uchar temp;
uchar code tabler[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};//led显示编码不带小数点
//AD转换的数值
uchar code tempdata[75]={11,17,34,41,52,61,69,79,90,100,111,117,126,132,138,145,149,154,160,165,169,173,178,182,186,188,193,196,199,203,205,207,208,209,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253};
单片机DS18B20温度计(有程序)
;单片机DS18B20温度计C语言程序; 有程序#include<reg51.h>#include<intrins.h>#include <math.H> //要用到取绝对值函数abs()//通过DS18B20测试当前环境温度, 并通过数码管显示当前温度值, 目前显示范围: -55~ +125度sbit wela = P2^7; //数码管位选sbit dula = P2^6; //数码管段选sbit ds = P2^2;int tempValue;//0-F数码管的编码(共阳极)unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//0-9数码管的编码(共阳极), 带小数点unsigned char code tableWidthDot[]={0x40, 0x79, 0x24, 0x30,0x19, 0x12, 0x02,0x78, 0x00, 0x10};//延时函数, 对于11.0592MHz时钟, 例i=10,则大概延时10ms.void delay(unsigned int i){unsigned int j;while(i--){for(j = 0; j < 125; j++);}}//初始化DS18B20//让DS18B20一段相对长时间低电平, 然后一段相对非常短时间高电平, 即可启动 void dsInit(){//对于11.0592MHz时钟, unsigned int型的i, 作一个i++操作的时间大于?us unsigned int i;ds = 0;i = 100; //拉低约800us, 符合协议要求的480us以上while(i>0) i--;ds = 1; //产生一个上升沿, 进入等待应答状态i = 4;while(i>0) i--;}void dsWait(){unsigned int i;while(ds);while(~ds); //检测到应答脉冲i = 4;while(i > 0) i--;}//向DS18B20读取一位数据//读一位, 让DS18B20一小周期低电平, 然后两小周期高电平,//之后DS18B20则会输出持续一段时间的一位数据bit readBit(){unsigned int i;bit b;ds = 0;i++; //延时约8us, 符合协议要求至少保持1usds = 1;i++; i++; //延时约16us, 符合协议要求的至少延时15us以上b = ds;i = 8;while(i>0) i--; //延时约64us, 符合读时隙不低于60us要求return b;}//读取一字节数据, 通过调用readBit()来实现unsigned char readByte(){unsigned int i;unsigned char j, dat;dat = 0;for(i=0; i<8; i++){j = readBit();//最先读出的是最低位数据dat = (j << 7) | (dat >> 1);}return dat;}//向DS18B20写入一字节数据void writeByte(unsigned char dat){unsigned int i;unsigned char j;bit b;for(j = 0; j < 8; j++){b = dat & 0x01;dat >>= 1;//写"1", 将DQ拉低15us后, 在15us~60us内将DQ拉高, 即完成写1if(b){ds = 0;i++; i++; //拉低约16us, 符号要求15~60us内ds = 1;i = 8; while(i>0) i--; //延时约64us, 符合写时隙不低于60us要求}else //写"0", 将DQ拉低60us~120usds = 0;i = 8; while(i>0) i--; //拉低约64us, 符号要求ds = 1;i++; i++; //整个写0时隙过程已经超过60us, 这里就不用像写1那样, 再延时64us 了}}//向DS18B20发送温度转换命令void sendChangeCmd(){dsInit(); //初始化DS18B20, 无论什么命令, 首先都要发起初始化dsWait(); //等待DS18B20应答delay(1); //延时1ms, 因为DS18B20会拉低DQ 60~240us作为应答信号writeByte(0xcc); //写入跳过序列号命令字Skip RomwriteByte(0x44); //写入温度转换命令字Convert T}//向DS18B20发送读取数据命令void sendReadCmd(){dsInit();dsWait();delay(1);writeByte(0xcc); //写入跳过序列号命令字Skip RomwriteByte(0xbe); //写入读取数据令字Read Scratchpad}//获取当前温度值int getTmpValue(){unsigned int tmpvalue;int value; //存放温度数值float t;unsigned char low, high;sendReadCmd();//连续读取两个字节数据low = readByte();high = readByte();//将高低两个字节合成一个整形变量//计算机中对于负数是利用补码来表示的//若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的valuetmpvalue = high;tmpvalue <<= 8;tmpvalue |= low;value = tmpvalue;//使用DS18B20的默认分辨率12位, 精确度为0.0625度, 即读回数据的最低位代表0.0625度t = value * 0.0625;//将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入//如t=11.0625, 进行计数后, 得到value = 1106, 即11.06 度//如t=-11.0625, 进行计数后, 得到value = -1106, 即-11.06 度value = t * 100 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0减0.5return value;}unsigned char const timeCount = 3; //动态扫描的时间间隔//显示当前温度值, 精确到小数点后一位//若先位选再段选, 由于IO口默认输出高电平, 所以当先位选会使数码管出现乱码void display(int v){unsigned char count;unsigned char datas[] = {0, 0, 0, 0, 0};unsigned int tmp = abs(v);datas[0] = tmp / 10000;datas[1] = tmp % 10000 / 1000;datas[2] = tmp % 1000 / 100;datas[3] = tmp % 100 / 10;datas[4] = tmp % 10;if(v < 0){//关位选, 去除对上一位的影响P0 = 0xff;wela = 0;//段选P0 = 0x40; //显示"-"号dula = 1; //打开锁存, 给它一个下降沿量dula = 0;//位选P0 = 0xfe;wela = 1; //打开锁存, 给它一个下降沿量wela = 0;delay(timeCount);}for(count = 0; count != 5; count++){//关位选, 去除对上一位的影响P0 = 0xff;wela = 1; //打开锁存, 给它一个下降沿量wela = 0;//段选if(count != 2){P0 = table[datas[count]]; //显示数字}else{P0 = tableWidthDot[datas[count]]; //显示带小数点数字}dula = 0;//位选P0 = _crol_(0xfd, count); //选择第(count + 1) 个数码管wela = 1; //打开锁存, 给它一个下降沿量wela = 0;delay(timeCount);}}void main(){unsigned char i;while(1){//启动温度转换sendChangeCmd();//显示5次for(i = 0; i < 40; i++){display(tempValue);}tempValue = getTmpValue();}以下是我编的程序,可用#include <reg52.h>#include <intrins.h>//-----------------------------------------------------------sbit DQ=P1^5;//-----------------------------------------------------------unsigned char number[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};//数字0~9unsigned char wei[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //数码管位循环unsigned char Flag;unsigned char Templ,Temph;unsigned int temp;//-----------------------------------------------------------//函数声明//-----------------------------------------------------------void delay(unsigned char i); //延时程序//----------------------------------void Int18b20(void); //18b20初始化void Write18b20(unsigned char dat); //向18b20写一字节unsigned char Read18b20(void); //从18b20读一字节void Start18b20(void); //开始转换温度void Get18b20(void); //读出温度void chinT(void); //数据转换//----------------------------------void display(void); //显示程序//-----------------------------------------------------------//函数功能:延时//-----------------------------------------------------------/*************精确延时函数*****************/void delay(unsigned char i){while(--i);}/*此延时函数针对的是12Mhz的晶振delay(0); //延时518us 误差:518-2*256=6delay(1); //延时7us (原帖写"5us"是错的)delay(10); //延时25us 误差:25-20=5delay(20); //延时45us 误差:45-40=5delay(100); //延时205us 误差:205-200=5delay(200); //延时405us 误差:405-400=5*///-----------------------------------------------------------//DS18b20的相关程序//-----------------------------------------------------------//初始化//-----------------------------------------------------------void Int18b20(void){DQ=1;_nop_();_nop_();DQ=0; //拉低delay(100); //延时205usdelay(200); //延时405us //等待400~960微秒,最短为480us DQ=1;delay(1); //延时7usdelay(20); //延时45us //等待15~60微秒(等待回复)if(DQ==1) //判断初始化的情况是否成功{Flag=0; //复位失败}else{Flag=1;while(!DQ); //等待回复完成}delay(200); //延时405us //等待完成初始化}//-----------------------------------------------------------//写一字节//-----------------------------------------------------------void Write18b20(unsigned char dat){unsigned char i;for(i=0;i<8;i++){DQ=1;_nop_();DQ=0;delay(1); //延时7us //拉低后延时小于15usif(dat&0x01){DQ=1;}else{DQ=0;}dat=dat>>1;delay(20); //延时45usdelay(10); //延时25us //延时大于60usDQ=1;delay(1); //延时7us //延时大于1us}}//-----------------------------------------------------------//读一字节//-----------------------------------------------------------unsigned char Read18b20(void){unsigned char i,dat=0;for(i=0;i<8;i++){DQ=1;_nop_();DQ=0;delay(1); //延时7usdat=dat>>1;DQ=1;delay(1); //延时7us //确保在15us后60us前读数据if(DQ){dat|=0x80;}delay(20); //延时45us //确保读时续大于60us}return dat;}//-----------------------------------------------------------//开始转换温度//-----------------------------------------------------------void Start18b20(void){Int18b20();Write18b20(0xcc); //跳过ROM指令Write18b20(0x44); //温度转换指令}//-----------------------------------------------------------//读出温度//-----------------------------------------------------------void Get18b20(void){Int18b20();Write18b20(0xcc); //跳过ROM指令Write18b20(0xbe); //读暂存器指令Templ=Read18b20();Temph=Read18b20();}//-----------------------------------------------------------//数据转换//-----------------------------------------------------------void chinT(void){float Tt;temp=Temph; //先把高八位有效数据赋于temptemp=(temp<<8); //将数据从temp低八位移到高八位temp=temp|Templ; //将两字节合成一个整型变量Tt=temp*0.0625; //得到真实十进制温度值(因为DS18B20可以精确到0.0625度) temp=Tt*10+0.5; //放大十倍(将小数点后一位变成个位,个位变成十位,十位变成百位,并四舍五入)}//-----------------------------------------------------------//显示程序//-----------------------------------------------------------void display(void){unsigned int i;unsigned char A1,A2,A3;A1=temp/100; //百位(温度的十位)A2=temp%100/10; //十位(温度的个位)A3=temp%10; //个位(温度的小数点后一位)for(i=0;i<20;i++){P0=0x00;P2=0x00;P0=number[A1];P2=wei[0];delay(220);P0=0x00;P2=0x00;P0=number[A2];P2=wei[1];delay(220);P0=0x00;P2=0x00;P0=number[A3];P2=wei[2];delay(220);P0=0x00;P2=0x00;P0=0x80;P2=wei[1];delay(220);}}//-----------------------------------------------------------//----------------------------------------------------------- void main(void){while(1){Int18b20();if(Flag){Start18b20(); //开始转换温度Get18b20(); //得到温度chinT(); //数据转换display(); //显示}else P3=0x01;}}。
51单片机数字温度计的设计与实现
51单片机数字温度计的设计与实现温度计是一种广泛使用的电子测量仪器,它能够通过感知温度的变化来提供精准的温度数值。
本文将介绍如何使用51单片机设计并实现一款数字温度计。
一、硬件设计1. 采集温度传感器温度传感器是用来感知环境温度的关键器件。
常见的温度传感器有DS18B20、LM35等。
在本次设计中,我们选择DS18B20温度传感器。
通过电路连接将温度传感器与51单片机相连,使51单片机能够读取温度传感器的数值。
2. 单片机选型与连接选择适合的51单片机型号,并根据其引脚功能图对单片机进行合理的引脚连接。
确保温度传感器与单片机之间的数据传输通畅,同时保证电源和地线的正确连接。
3. 显示模块选型与连接选择合适的数字显示模块,如数码管、液晶显示屏等。
将显示模块与51单片机相连,使温度数值能够通过显示模块展示出来。
4. 电源供应为电路提供稳定的电源,保证整个系统的正常运行。
选择合适的电源模块,并根据其规格连接电路。
二、软件设计1. 温度传感器读取程序编写程序代码,使用单片机GPIO口将温度传感器与单片机连接,并通过相应的通信协议读取温度数值。
例如,DS18B20采用一线制通信协议,需要使用单总线协议来读取温度数值。
2. 数字显示模块驱动程序编写程序代码,通过单片机的GPIO口控制数字显示模块的数码管或液晶显示屏进行温度数值显示。
根据显示模块的规格,编写合适的驱动程序。
3. 温度转换算法将温度传感器读取到的模拟数值转换为实际温度数值。
以DS18B20为例,它输出的温度数值是一个16位带符号的数,需要进行相应的转换操作才能得到实际的温度数值。
4. 系统控制程序整合以上各部分代码,编写系统控制程序。
该程序通过循环读取温度数值并进行数据处理,然后将处理后的数据送到数字显示模块进行实时显示。
三、实现步骤1. 硬件连接按照前文所述的硬件设计,将温度传感器、51单片机和数字显示模块进行正确的连接。
确保连接无误,并进行必要的电源接入。
jjf(苏)95-2010 数字温度计校准规程
一、概述数字温度计是一种常用的温度测量工具,广泛应用于实验室、工业生产等领域。
为了确保数字温度计的准确性,需要进行校准。
本文将介绍数字温度计的校准规程,以帮助读者了解如何正确地进行数字温度计的校准工作。
二、校准前的准备工作1. 确保校准设备准确:在进行数字温度计校准之前,需要确保使用的校准设备本身是准确的。
可以使用已经经过校准的参考温度计来验证校准设备的准确性。
2. 准备校准记录表:在进行数字温度计校准时,需要准备好校准记录表,用于记录校准的过程和结果。
校准记录表应包括校准日期、校准人员、校准设备信息等内容。
三、校准过程1. 环境条件的控制:在进行数字温度计校准时,需要确保校准环境的温度稳定。
可以选择在恒温室中进行校准,或者在室温稳定的环境中进行校准。
2. 校准点的选择:根据数字温度计的测量范围,选择不同的校准点进行校准。
一般来说,可以选择低温点、中温点和高温点进行校准,以覆盖数字温度计的全范围。
3. 校准步骤:根据数字温度计的说明书或者相关标准,按照规定的步骤进行校准。
首先需要将数字温度计放置在校准点的环境中一定时间,使其达到稳定状态,然后与参考温度计进行对比。
四、校准结果的记录和分析1. 记录校准结果:在进行数字温度计校准时,需要及时记录校准结果。
校准记录应包括数字温度计的测量值、参考温度计的测量值、误差值等内容。
2. 分析校准结果:根据记录的校准结果,可以对数字温度计的准确性进行分析。
如果数字温度计的测量值与参考温度计的测量值存在较大偏差,可能需要进行调整或者更换。
五、校准后的措施1. 校准证书的发放:在数字温度计校准完成后,需要及时颁发校准证书。
校准证书应包括数字温度计的型号、校准日期、校准结果等信息。
2. 记录保管和追溯:校准结束后,需要妥善保存校准记录和校准证书,以备日后的追溯和查证。
六、总结数字温度计的校准是确保其准确性和可靠性的重要步骤。
只有严格按照校准规程进行操作,才能保证数字温度计的测量结果是准确可靠的。
DS75数字温度计及其程序设计
DS75数字温度计及其程序设计1.1 基本参数及引脚说明 1.基本参数DS75是美信(MAXIM )公司的一款数字温度传感器芯片,与美国国家半导体(National Semiconductor )公司的LM75及德州仪器(TI )公司的TM75完全兼容。
其主要特点有:工作电压范围:2.7V~5.5V低功耗:100~1000μA (待机时1μA ) 接口方式:I2C 二线串行接口 可编程分辨率:9-Bits 到 12-Bits 操作频率: 100 KHz /400KHz/3.4MHz 精度:测量温度在-25℃~100℃时,为±2℃ 测量范围:-55℃~125℃ 可配置温度报警输出2. 从器件地址、引脚说明及封装 表x.1 DS75引脚描述引脚名称 引脚编号功能描述引脚封装图SDA 1 I2C 数据口 SCL 2 I2C 时钟输入 O.S. 3 温度报警输出 GND 4电源地A2 5 地址输入端2 A1 6地址输入端1 A0 7地址输入端0 VDD 8 电源正极更多资料请登陆 本站主要探讨A VR 、51、及Freescale8位单片机。
提供常用电1表x.2 DS75器件从地址bit7 bit 6 bit 5 bit 4 v3 bit 2 bit 1 bit 01 0 0 1 A2 A1 A0 R/W1.2 DS75内部寄存器描述1.2.1 指针寄存器DS75内部共有5个寄存器,一个指针寄存器(Point Register)和四个数据寄存器(Temperature Register、Configuration Register、TL及TH Register)。
对数据寄存器的选择是通过指针寄存器的低2位(P1和P0)来决定的。
指针寄存器的位描述,及P1、P0的设置对应具体的数据寄存器分别见表x.3和x.4。
表x.3 Point Register的各位(8-Bits)P7 P6 P5 P4 P3 P2 P1 P0Bits0 0 0 0 0 0 Register表x.4 数据寄存器的指针地址P1 P0 数据寄存器0 0 温度寄存器(只读,保存温度值)0 1 配置寄存器(可读写)1 0 临界温度下限寄存器(可读写)1 1 临界温度上限寄存器(可读写)1.2.2 配置寄存器表x.5 Configuration Register的各位(8-Bits)D7 D6 D5 D4 D3 D2 D1 D00 R1 R0 F1 F0 POL TM SD 对各位的描述如下:SD:置1时,DS75进入SHUT DOWN模式;置0时,正常模式;更多资料请登陆本站主要探讨A VR、51、及Freescale8位单片机。
基于单片机的数字温度计的设计
摘要随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
本设计分为硬件设计和软件设计。
硬件系统由3个模块组成:主控制器、测温电路和显示电路。
软件系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
单片机AT89C51具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点。
所以在本设计中采用单片机AT89C51作为控制器来控制电路。
测温传感器使用 DS18B20,因为传感器DS18B20具有读数方便,测温范围广,测温准确。
用4位LED数码管以串口传送数据,实现温度显示。
关键词:单片机AT89C51、DS18B20传感器、4位共阳极LED数码显示管。
AbstractWith the constant improvement of people's living standard, it is undoubtedly one of the goals which people pursue that the one-chip computer controls, the convenience that it brings to somebody can't be denied either, among them the digital thermometer is a typical examp .But the requirements to it of people are higher and higher, want working for modern, scientific research, life, offering the better facilities more conveniently to need starting with counting the one-chipOriginally design digital thermometers recommended to compare with traditional thermometer, convenient to have reading, it is warm and in extensive range to examine, it is warm and accurate to examineOriginally design and is divided into hardware designing and software design. The hardware system is made up of 3 pieces of module: Master controller, examining the warm circuit and revealing the circuit. The software system procedure mainly includes the main program, reads the temperature subprogram, temperature changes the order subprogram, accounting temperature subprogram.The one-chip computer AT89C51 has strong, small functions, low power dissipation, the price is cheap, it is reliable to work, characteristic easy to use. So control circuit adopts the one-chip computerExamine the warm transducer and use DS18B20, because the transducer DS18B20 has reading convenient, it is warm and in extensive range to examine, Realize temperature reveals.Keyword: One-chip computer AT89C51, DS18B20 transducer, 4 positive pole LED number reveal, in charge of together。
数字温度计设计毕业设计(两篇)2024
数字温度计设计毕业设计(二)引言概述数字温度计是一种用于测量温度的电子设备,它通过传感器将温度转换为数字信号,然后显示在数字屏幕上。
本文将针对数字温度计的设计进行详细讨论,包括硬件设计和软件设计两个主要方面。
硬件设计部分将包括传感器选择、信号调理电路设计和数字显示设计;软件设计部分将包括嵌入式程序设计和用户界面设计。
通过本文的详细介绍,读者将能够了解到数字温度计的设计原理、设计流程和关键技术。
正文内容1. 传感器选择1.1 温度传感器类型1.2 温度传感器比较与选择1.3 温度传感器参数测试与校准2. 信号调理电路设计2.1 信号条件2.2 放大和滤波电路设计2.3 ADC(模数转换器)选型和使用3. 数字显示设计3.1 显示芯片选型和使用3.2 显示屏尺寸和分辨率选择3.3 显示内容设计和显示方式选择4. 嵌入式程序设计4.1 控制器选型和使用4.2 温度数据采集与处理4.3 温度数据存储和传输5. 用户界面设计5.1 按键和控制部分设计5.2 显示界面设计与实现5.3 温度单位与切换设计正文详细阐述1. 传感器选择1.1 温度传感器类型在数字温度计的设计中,可以选择多种温度传感器,包括热电偶、热敏电阻和半导体温度传感器等。
本文将比较各种传感器的特点和适用范围,从而选择最合适的传感器。
1.2 温度传感器比较与选择通过比较热电偶、热敏电阻和半导体温度传感器的精度、响应时间和成本等特点,结合设计需求和成本预算,选择最佳的温度传感器。
1.3 温度传感器参数测试与校准为了确保传感器的准确性,需要对其参数进行测试和校准。
本文将介绍传感器参数测试的方法和仪器,以及校准的步骤和标准。
2. 信号调理电路设计2.1 信号条件传感器输出的信号需要进行电平调整和滤波等处理,以便进一步处理和显示。
本文将介绍信号调理的基本原理和设计方法。
2.2 放大和滤波电路设计为了放大和滤波传感器输出的微弱信号,本文将介绍放大和滤波电路的设计原理和实现方法,包括运放、滤波器和滤波器的选型和参数设置。
51单片机设计数字温度计(流程图+源码+实物图片)
DS18B20获取温度程序流程图DS18B20的读字节,写字节,获取温度的程序流程图如图所示。
DS18B20初始化程序流程图DS18B20读字节程序流程图DS18B20写字节程序流程图DS18B20获取温度程序流程图图3-4 DS18B20程序流程图显示程序设计显示电路是由四位一体的数码管来实现的。
由于单片机的I/O 口有限,所以数码管采用动态扫描的方式来进行显示。
程序流程图如图所示。
图显示程序流程图按键程序设计按键是用来设定上下限报警温度的。
具体的程序流程图如图所示。
N图按键程序流程图附1 源程序代码/********************************************************************* 程序名; 基于DS18B20的测温系统* 功能:实时测量温度,超过上下限报警,报警温度可手动调整。
K1是用来* 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限* 调节模式。
在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动* 退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除* 按键音,再按一下启动按键音。
在调节上下限温度模式下,K2是实现加1功能,* K1是实现减1功能,K3是用来设定上下限温度正负的。
* 编程者:ZPZ* 编程时间:2009/10/2*********************************************************************/#include<AT89X52.h> //将AT89X52.h头文件包含到主程序#include<intrins.h> //将intrins.h头文件包含到主程序(调用其中的_nop_()空操作函数延时)#define uint unsigned int //变量类型宏定义,用uint表示无符号整形(16位)#define uchar unsigned char //变量类型宏定义,用uchar表示无符号字符型(8位)uchar max=0x00,min=0x00; //max是上限报警温度,min是下限报警温度bit s=0; //s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右bit s1=0; //s1标志位用于上下限查看时的显示void display1(uint z); //声明display1()函数#include"ds18b20.h" //将ds18b20.h头文件包含到主程序#include"keyscan.h" //将keyscan.h头文件包含到主程序#include"display.h" //将display.h头文件包含到主程序/***********************主函数************************/void main(){beer=1; //关闭蜂鸣器led=1; //关闭LED灯timer1_init(0); //初始化定时器1(未启动定时器1)get_temperature(1); //首次启动DS18B20获取温度(DS18B20上点后自动将EEPROM中的上下限温度复制到TH和TL寄存器)while(1) //主循环{keyscan(); //按键扫描函数get_temperature(0); //获取温度函数keyscan(); //按键扫描函数display(temp,temp_d*0.625);//显示函数alarm(); //报警函数keyscan(); //按键扫描函数}}/********************************************************************* 程序名; __ds18b20_h__* 功能:DS18B20的c51编程头文件* 编程者:ZPZ* 编程时间:2009/10/2* 说明:用到的全局变量是:无符号字符型变量temp(测得的温度整数部分),temp_d* (测得的温度小数部分),标志位f(测量温度的标志位‘0’表示“正温度”‘1’表* 示“负温度”),标志位f_max(上限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位f_min(下限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位w(报警标志位‘1’启动报警‘0’关闭报警)。
数字温度计校准规范
数字温度计校准规范数字温度计校准规范是指对数字温度计进行准确校准的一系列步骤和要求。
以下是一个详细精确的数字温度计校准规范:1. 校准设备准备:准备一台已经通过国家计量认证的标准温度计作为参考设备,确保其准确性和稳定性。
同时,确保校准设备和参考设备的测量范围相匹配。
2. 校准环境准备:校准应在稳定的环境条件下进行,确保室温稳定且没有干扰源。
避免直接阳光照射、空气流动和其他可能影响温度测量的因素。
3. 校准点选择:选择一系列不同温度的校准点,覆盖数字温度计的整个测量范围。
校准点应包括低温、中温和高温,以确保全面校准。
4. 校准程序:按照以下步骤进行校准:a. 将参考设备置于校准点温度下,并等待其稳定。
b. 使用参考设备测量校准点的温度,并记录结果。
c. 使用数字温度计测量同一校准点的温度,并记录结果。
d. 比较数字温度计的测量结果与参考设备的测量结果,计算它们之间的误差。
e. 如果误差在可接受范围内,将其记录为校准结果;如果误差超出可接受范围,进行校准调整。
f. 重复以上步骤,直到所有校准点都被处理。
5. 校准记录:将每个校准点的测量结果和误差记录在校准记录表中。
确保记录包括校准日期、校准人员和校准设备的相关信息。
6. 校准结果评估:根据校准记录和误差分析,评估数字温度计的准确性和稳定性。
如果数字温度计的误差在可接受范围内,可以认为它是准确可靠的。
7. 校准周期:根据数字温度计的使用情况和要求,确定校准周期。
通常情况下,数字温度计应定期进行校准,以确保其准确性和可靠性。
总之,数字温度计校准规范包括校准设备准备、校准环境准备、校准点选择、校准程序、校准记录、校准结果评估和校准周期等步骤和要求,以确保数字温度计的准确性和可靠性。
PT100智能数字热敏温度计主程序
//delay();
P1=0xFB;
P2=table[fu[2]];
//delay();
P1=0xF7;
P2=0xBF;
//delay();
}
void timer0() interrupt 1 using 1
{
THO=(65536-1000)/256;
P1=0xFB;
P2=table[zheng[2]];
//delay();
P1=0xF7;
P2=0xFF;
//delay();
}
void displayf()
{
P1=0xFE;
P2=table[fu[0]];
//delay();
P1=0xFD;
P2=table[fu[1]];
//display();
}
else
{
T=(25.7*(150000-(119900*dat)))/(15000-(109*dat));
fu[0]=T%10; //取得个位数
fu[1]=T/10%10; //取得十位数
fu[2]=T/100%10; //取得百位数
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar zheng[3];
START=0; //启动AD
while(EOC==0);
温度计矫正程序和型号
概述在日常食品生产和销售中,我们需要测量热熟食的中心温度、冷藏冷冻食品的温度,以及面包面团温度等。
对于食品安全来说准确测量食品的中心温度是做好“温度控制”必要前提条件。
因此我们需要每周校正温度计以确保温度计能够准确的测量温度。
温度测量必须使用总部统一订购的温度计,老式温度计有库存的商场可以继续使用,但新订购的温度计必须是新型DeltaTRAK 11060型数字温度计。
新型数字温度计的使用与保养收货部和食品分区必须严格按照以下标准正确使用和维护温度计。
注意保护温度计,使用中不要过渡用力,防止探针折断和损坏。
1. DeltaTRAK 数字温度计的使用步骤A. 按下开关键(On/Off按钮)B. 将温度计的探测针插入被测量物品中心进行测量;C. 等显示温度稳定后,按温度计背后的“ HOLD” 键,锁定读数,然后读取数字;D. 第二次按下“ HOLD”键, 温度计重新恢复待测状态;E. 按下“℃⁄℉”键可以在摄氏与华氏温度之间转换。
2.DeltaTRAK 数字温度计的校正A. 收货部和鲜食分区授权员工必须每周对温度计进行校准,具体请参照以下图示:DeltaTRAK 11000型的校正步骤:1) 准备冰水混合物,冰与水比例为7:3 2)取下温度计的调校臂,然后用螺丝刀将中间最大的螺母取下,露出调校孔3) 将调校臂插入调校孔中,然后将温度计的感温区插入冰水混合物中2cm 深处4) 待读数稳定后,转动调校螺臂到显示数字0(32℉)DeltaTRAK 11060型的校正步骤:1) 旋转温度计后面的口袋夹,可见“CAL”按钮2) DeltaTRAK 11060型:将温度计探针浸没在冰水混合物中,按下“CAL”按钮保持2秒。
显示屏上出现CAL 字样。
然后松开按钮,屏幕上数值闪动,开始自动校准。
3) DeltaTRAK 11060型:当带字母C 的数字不再闪动,温度计结束自动校准。
显示屏回到正常操作界面模式,校准工作已经完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TIMEL EQU 0E0HTIMEH EQU 0B1HTEMPHEAD EQU 36H;*********************************************************** ; 工作内存定义;*********************************************************** BITST DATA 20HTIME1SOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H;********************************************************** ; 引脚定义;********************************************************** TEMPDIN BIT P3.4TH BIT P1.3TL BIT P1.4;*********************************************************** ; 中断向量区;*********************************************************** ORG 0000HLJMP STARTORG 00BHLJMP T0IT;************************************************************ ; 系统初始化;************************************************************ ORG 0100HSTART: MOV SP,#60HCLSMEM: MOV R0,#20HMOV R1,#60HCLSMEM1: MOV @R0,#00HINC R0DJNZ R1,CLSMEM1MOV TMOD,#00100001BMOV TH0,#TIMEHMOV TL0,#TIMELSJMP INITERROR: NOPLJMP STARTNOPINIT: NOPSETB ET0SETB TR0SETB EAMOV PSW,#00HCLR TEMPONEOKMOV 80H,#00HMOV 79H,#28HMOV 78H,#0BHMOV 77H,#01HMOV P1,#00HLJMP MAIN;************************************************************ ; 定时器0中断程序;************************************************************ T0IT: PUSH PSWMOV PSW,#10HMOV TH0,#TIMEHMOV TL0,#TIMELINC R7CJNE R7,#32H,TOIT1MOV R7,#00HSETB TIME1SOKTOIT1: POP PSWRETI;************************************************************ ; 主程序;************************************************************ MAIN: LCALL DISP1JNB TIME1SOK,MAINCLR TIME1SOKJNB TEMPONEOK,MAIN2LCALL READTEMP1LCALL CONVTEMPLCALL DISPBCDLCALL DISP1MAIN2: LCALL READTEMPSETB TEMPONEOKLCALL KEYLCALL SHENGJIANGLCALL SHENGJIANG1LJMP MAIN;********************************; 数值比较子程序;********************************SHENGJIANG:CLR CCLR THMOV A,#0AHCJNE A,73H,MANMOV A,#0AHCJNE A,72H,MAN4LJMP MAN1MAN4: JNC MAN2LJMP SSMAN: JNC MAN2 ;C=0 跳转 LJMP SSMAN3: CLR CMOV A,80HANL A,#0FHCJNE A,73H,MAXMAN2: CLR CMOV A,79HSWAP AANL A,#0FHCJNE A,72H,MAXMAN1: CLR CMOV A,79HANL A,#0FHCJNE A,71H,MAXCLR THJMP SSMAX: JC BJCLR THJMP SSBJ: SETB THLCALL DELAY10retSS: RET;****************************** SHENGJIANG1:CLR CCLR TLMOV A,78HANL A,#0FHCJNE A,73H,MAX1CLR CMOV A,77HSWAP AANL A,#0FHCJNE A,72H,MAX1CLR CMOV A,77HANL A,#0FHSUBB A,71HCJNE A,71H,MAX1JC BJCLR TLJMP SSMAX1: JC BJ1CLR TLJMP SS1BJ1: setb TLLCALL DELAY10retSS1: RETDELAY10: MOV R5,#200DEL:MOV R6,#123NOPDJNZ R6,$DJNZ R5,DELRET;******************************** ; 按键;********************************KEY: MOV P1,#0E7HKEY0: JB P1.0, KEE ;设置MOV 75H,#01HCALL D10MSJNB P1.0,$KKK: MOV A,80H ;上限ANL A,#0FHMOV 73H,AMOV A,79HSWAP AANL A,#0FHMOV 72H,AMOV A,79HANL A,#0FHMOV 71H,AMOV A,#00HANL A,#0FHMOV 70H,ALCALL DISP1LCALL KEY1JB P1.0,KKKMOV 75H,#01HCALL D10MSJNB P1.0,$KYY: MOV A,78H ;下限ANL A,#0FHMOV 73H,AMOV A,77HSWAP AANL A,#0FHMOV 72H,AMOV A,77HANL A,#0FHMOV 71H,AMOV A,#00HANL A,#0FHMOV 70H,ALCALL DISP1LCALL KEEY1JB P1.0,KYYMOV 75H,#01HCALL D10MSJNB P1.0,$KEE: MOV P1,#00HRET;KEY1: JB P1.1,KEY2 ;加CALL D10MSJNB P1.1,$CLR CMOV 75H,#01HMOV A,79HADDC A,75HDA AMOV 79H,AJNC LSMOV A,80HADDC A,#00HDA AMOV 80H,ALS: JMP KYKKKEY2: JB P1.2,KYKK ;减CALL D10MSJNB P1.2,$CLR CMOV 75H,#01HMOV A,79HSUBB A,75HMOV 76H,ACJNE A,#00H,LSASMOV A,#09HORL A,#09HLSAS: MOV 79H,AJNC LSSMOV A,80HSUBB A,#00HDA AMOV 80H,ALSS: JMP KYKKKYKK: RET;KEEY1: JB P1.2,KEEY2 ;加CALL D10MSJNB P1.2,$CLR CMOV 75H,#01HMOV A,77HADDC A,75HDA AMOV 77H,AJNC LS1MOV A,78HADDC A,#00HDA AMOV 78H,ALS1: JMP KYKKKEEY2: JB P1.1,KYKKK ;减CALL D10MSJNB P1.1,$MOV 75H,#01HMOV A,76HSUBB A,75HMOV 76H,AJMP KYKKKKYKKK: RET;***************************; 子程序区;***************************; RESET DS18B20;***************************INITDS1820:SETB TEMPDINNOPNOPCLR TEMPDINMOV R6,#0A0HDJNZ R6,$MOV R6,#0A0HDJNZ R6,$SETB TEMPDINMOV R6,#32HDJNZ R6,$MOV R6,#3CHLOOP1820: MOV C,TEMPDINJC INITDS1820OUTDJNZ R6,LOOP1820MOV R6,#64HDJNZ R6,$SJMP INITDS1820RET;INITDS1820OUT: SETB TEMPDINRET;;********************************;读DS18B20的程序,从DS18B20中读出一个字节的数据;**********************************READDS1820:MOV R7,#08HSETB TEMPDINNOPNOPREADDS1820LOOP: CLR TEMPDINNOPNOPNOPSETB TEMPDINMOV R6,#07HDJNZ R6,$MOV C,TEMPDINMOV R6,#3CHDJNZ R6,$RRC ASETB TEMPDINDJNZ R7,READDS1820LOOPMOV R6,#3CHDJNZ R6,$RET;;**************************************;写DS1820的程序,从DS18B20中写一个字节的数据;************************************** WRITEDS1820: MOV R7,#08HSETB TEMPDINNOPNOPWRITEDS1820LOP: CLR TEMPDINMOV R6,#07HDJNZ R6,$RRC AMOV TEMPDIN, CMOV R6,#34HDJNZ R6,$SETB TEMPDINDJNZ R7,WRITEDS1820LOPRET;*********************************************** ; READ TEMP;*********************************************** READTEMP: LCALL INITDS1820MOV A,#0CCHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV A,#44HLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$RET;READTEMP1: LCALL INITDS1820MOV A,#0CCHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV A,#0BEHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READDS1820MOV @R0,AINC R0READTEMP21: LCALL CRC8CALDJNZ R5,READTEMP2MOV A,BJNZ READTEMPOUTMOV A,TEMPHEAD+0MOV TEMPL,AMOV A,TEMPHEAD+1MOV TEMPH,A READTEMPOUT: RET;******************************************** ; 处理温度BCD码子程序;******************************************** CONVTEMP: MOV A,TEMPHANL A,#80HJZ TEMPC1CLR CMOV A,TEMPLCPL AADD A,#01HMOV TEMPL,AMOV A,TEMPHCPL AADDC A,#00HMOV TEMPH,AMOV TEMPHC,#0BHSJMP TEMPPC11TEMPC1: MOV TEMPHC,#0AH TEMPPC11: MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FHMOV DPTR,#TEMPDOTTABMOVC A,@A+DPTRMOV TEMPLC,AMOV A,TEMPLANL A,#0F0HSWAP AMOV TEMPL,AMOV A,TEMPHANL A,#0FHSWAP AORL A,TEMPLLCALL HEX2BCD1MOV TEMPL,AANL A,#0F0HSWAP AORL A,TEMPHCMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP AORL A,TEMPLCMOV TEMPLC,AMOV A,R7JZ TEMPC12ANL A,#0FHSWAP AMOV R7,AMOV A,TEMPHCANL A,#0FHORL A,R7MOV TEMPHC,ATEMPC12: RET;;*********************************************; 小数部分码表;********************************************* TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H DB 06H,07H,08H,08H,09H,09H;;*********************************************; 显示区BCD码温度值刷新子程序;*********************************************;DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,AMOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,AMOV A,TEMPHCANL A,#0FHMOV 72H,AMOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,AMOV A,TEMPHCANL A,#0F0HCJNE A,#010H,DISPBCD0SJMP DISPBCD2DISPBCD0: MOV A,TEMPHCANL A,#0FHJNZ DISPBCD2MOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,#0AHMOV 72H,ADISPBCD2: RET;*****************************/* 显示子程序*/;*****************************;用6位LED共阳数码管显示,P1口输出段码数据,P3口作扫描控制,每个LED数码管亮1ms时间再逐位循环;DISP: MOV A,R0ANL A,#0FHMOV 71H,AMOV A,R0SWAP AANL A,#0FHMOV 72H,ADISP1: MOV R5,#01HMOV R1,#70HPLAY: MOV A,R5MOV P2,AMOV A,@R1MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,AMOV A,R5JNB ACC.1,LOOP5CLR P0.7LOOP5: LCALL DL1MSMOV A,R5RL AMOV R5,AINC R1JNB ACC.4,PLAYRETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH ;共阳段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "一" ;DL1MS: MOV R6,#2DL1: MOV R7,#16DL2: DJNZ R7,DL2DJNZ R6,DL1RETD10MS:MOV R5,#10HD1MS:MOV R4,#249DL: NOPNOPDJNZ R4,DLDJNZ R5,D1MSRET;****************************************; 单字节十六进制转BCD;****************************************HEX2BCD1: MOV B,#064HDIV ABMOV R7,AMOV A,#0AHXCH A,BDIV ABSWAP AORL A,BRET;;****************************************; CRC校验;;**************************************** CRC8CAL: PUSH ACCMOV R7,#08HCRC8LOOP1: XRL A,BRRC AMOV A,BJNC CRC8LOOP2XRL A,#18HCRC8LOOP2: RRC AMOV B,APOP ACCRR APUSH ACCDJNZ R7,CRC8LOOP1POP ACCRETEND。