电子二班数字温度计的设计
数字电路温度计设计

数字电路温度计设计
数字电路温度计设计涉及许多不同的技术和组件。
以下是一个基本的设计流程,这有助于创建一个基于数字电路的温度计:
1. 温度传感器选择:选择一个合适的温度传感器,例如热敏电阻、DS18B20温度传感器等,它们能够将温度转换为可被数字电路处理的信号。
2. 信号调理电路:设计一个信号调理电路来处理从温度传感器获取的信号。
这个电路可能包括一个电压跟随器、运算放大器(用于信号放大或减小的功能)等。
3. 模数转换器(ADC):模数转换器将模拟信号转换为数字信号,以便微控制器或数字信号处理器可以处理。
选择一个适合你应用需求的模数转换器。
4. 微控制器或数字信号处理器:选择一个微控制器或数字信号处理器来读取和处理来自模数转换器的数字信号。
这可能涉及到编写或获取一个固件/软件程序,用于读取模数转换器的输出并显示温度值。
5. 显示接口设计:选择一种方式来显示温度值。
这可能涉及到使用七段显示器、液晶显示屏(LCD)或其他类型的显示技术。
你可能需要设计一个驱动电路或接口来连接微控制器和显示器。
6. 电源和封装:为温度计设计一个合适的电源和封装。
这可能涉及到使用电池、电源适配器或其他电源方案,并考虑将所有组件集成到一个适合应用的封装中。
7. 校准和测试:在设计过程中进行充分的校准和测试,确保温度计在预期工作范围内具有足够的准确性和可靠性。
这只是一个基本的框架,具体的设计细节将取决于你的应用需求和所选择的组件。
在设计和实施过程中,你可能需要使用电子设计自动化(EDA)工具、电路板布局软件、编程语言等工具和技术。
(数电)数字温度计的设计

数字温度计的设计一、总体方案的选择1.拟定系统方案框图(1)方案一:本方案采用AD590单片集成两段式敢问电流源温度传感器对温度进行采集,采集的电压经过放大电路将信号放大,然后经过3.5位A/D转换器转换成数字信号,在进行模拟/数字信号转换的同时, 还可直接驱动LED显示器,将温度显示出来。
系统方框图如下:图1.1 系统方案框图(2)方案二:使用数字传感器采集温度信号,然后将被测温度变化的电压或电流采集过来放大适当的倍数,进行A/D转换后,将转换后的数字进行编码,然后再经过译码器通过七段数字显示器将被测温度显示出来。
图1.2系统方案框图2. 方案的分析和比较方案一中的模数转换器ICL7107集A/D转换和译码器于一体,可以直接驱动数码管,不仅省去了译码器的接线,使电路精简了不少,而且成本也不是很高。
ICL7107只需要很少的外部元件就可以精确测量0到200mv电压,AD590可以将温度线性转换成电压输出。
而方案二经过A/D转换后,需要先经过编码器再经过译码器才能将数字显示出来。
比较上述两个方案,方案一明显优越于方案二,它用AD590采集温度信号,用ICL7107驱动数码管直接实现数字信号的显示,实现数字温度计的设计;省去了另加编码器和译码器的设计,所以线路更简单、直观;即采用方案一。
二、单元电路的设计通过AD590对温度进行采集,通过温度与电压近乎线性关系,以此来确定输出电压和相应的电流,不同的温度对应不同的电压值,故我们可以通过电压电流值经过放大进入到A/D 转换器和译码器,再由数码管表示出来。
2.1传感电路AD590是半导体结效应式温度传感器,PN 结正向压降的温度系数为-2mV/℃ , 利用硅热敏晶体管PN 结的温度敏感特性测量温度的变化测量温度,其测量温度范围为-50~150。
AD590输出电流值(μA 级)等于绝对温度(开尔文)的度数。
使用时一般需要将电流值转换为电压值, 如图2.1.1图中,Ucc 为激励电压, 取值为4~40 V;输出电流I0以绝对温度零度-273℃为基准, 温度每升高1℃ ,电流值增加1μA。
电子温度计的设计与实现

电子温度计的设计与实现班级:学号:姓名:摘要:用非平衡电桥发测量温度,利用温度变化改变电阻的阻值来测量温度。
关键词:温度电流非平衡电桥一、引言利用温度传感器和电阻配合,将温度这一热学量转换为电学量,便于测量温度。
二、实验任务1.利用实验室提供的仪器和用具测量铂电阻和热敏电阻的温度特性。
2.在实验室提供的仪器中选择合适的仪器,设计一个由铂电阻作为传感器的电子温度计其测温范围为20:100℃,要求用非平衡电桥桥端电压为毫安级,电流为微安级。
3.对温度计进行标定。
三、实验仪器直流稳压电源(1个),铂电阻传感器(1个),直流电桥(1个),数字万用电表(1个),微安表(1个),伏特表(1个),检流计(1个),水银温度计(1个),标准电阻箱(3个),NLKW-型智能型控温试验仪(1个),导线若干,开关(1个)。
四、实验原理(一)铂电阻温度计物质的电阻率随温而变化的现象称为热电阻效应。
在一定温度范围内,可以通过测量电阻值的变化而进行温度变化的测量。
将平衡电桥中的待测电阻换成一个电阻型传感器。
先调节电桥平衡,当外部条件改变时,传感器的阻值会发生相应变化,使电桥失去平衡,电桥两端的电压随之改变。
由于桥路的非平衡电压能反映出桥臂电阻的微小变化,因此可以通过测量非平衡电压检测外界物理量的变化。
使用非平衡电桥测量铂电阻温度系数的电路如图1所示,R1,R2为固定电阻,组成比例电阻;R p为可调电阻,用作平衡电阻;R t为铂电阻;U out为非平衡电桥的输出电压。
当输出电压一定时非平衡电桥桥路的输出电压U out为U out=[Rt/(R1+R T)-R P/(R2+R P)]E令I1=E/(R1+R t)I2=E/(R2+R p)则有U out=I1R t-I2R p如果R1=R2,且R1?R t,R2?R p,则有I1≈I2U out=I1(R t-R p)另R p取铂电阻在室温时的阻值R p,代入上式,则有U out=I1R0A△T=1/2IR0A△T令1/2IR0A=1mA ,调零时,室温时电压等于电流示数,则电压等于所测温度(二)热敏电阻温度计实验用惠斯登电桥,接线如图2所示,AB是一根粗细均匀的电阻丝,被放置于1m长的米尺上,图中斜线部分是导体片,电阻可略,R,是保护电阻,保护微安表,C是滑动触头,兼开关作用,按下时检流计支路才通,接入待测电阻R x与标准电阻R s后,适当调节触头C 的位置,使检流计指零,此时,AC段电阻为R1;CB段电阻为R2,由电阻定律,得R1/R2=L1/L2式中L1,L2分别为AC段和BC段电阻丝长度。
数字温度计的设计与制作实验报告

重庆邮电大学通信与信息工程学院班级GJ011201小组成员徐睿2012210460李易晓2012210057张地根2012210114指导老师邓炳光数字温度计的设计与制作实验报告设计要求1,数字温度计设计与制作:利用之前绘制的“C51学习板”掌握的SCH和PCB图知识,绘制一个基于STC89C51的单片机系统,增加温度采集0~120度,温度显示要求3位整数+1位小数,电路原理图和PCB图2,SCH必须按照规范进行绘制。
3,系统还要求具备电源指示灯,外部使用MINI-USB进行5V供电,在满足要求的情况下,使用的元器件越少越好;温度采集可以用模拟或数字器件、显示可以用LCD或数码管。
4,PCB板要求使用底层走线,元器件在顶层。
5,PCB板上标识自己的学号、姓名。
6,PCB板大小,满足元器件布局的情况下,尽可能减少面积。
7,PCB审查正确后,进行单面板腐蚀的相关操作:热转印、腐蚀、钻孔、裁剪等。
元器件自行购买,然后焊接,调试,编写单片机程序,完成设计报告。
设计步骤一主要原器件的选择控制模块:STC89C52温度采集模块:DS18B20显示模块:8位共阴数码管二原理图的绘制1新建一个工程,在Altium Designer软件中的“File”选项中选择“New→Project→PCB project”,然后保存工程至文件夹中(文件名定义要规范)。
2纸张配置,在Design选项中单击左键,选择Document Options项,然后根据原理图的要求选择合适的配置。
3展开工程管理标签、元器件库。
4填写图纸信息。
(项目名称、图纸名称、版本、序号、作者。
)5元器件绘制。
1)创建元件库;2).绘制元器件;3)完善元器件属性;6.修改元器件名字;7. 同一个库中增加其他元器件;8.打开原理图库管理标签。
1)元器件放置。
2)元器件摆放、连线。
(按格点对齐。
)3)修改元器件值。
4)完成图纸。
5)生成Bom表。
三PCB图绘制1)封装设计。
数字温度计的设计-数字电子技术课程设计报告

数字电子技术课程设计报告数字温度计的设计专业:电子信息科学与技术班级:2015级2 班姓名:巩光众学号: 201501100206_______指导老师:张瑞电子通信与物理学院日期:2016年12 月23 日目录设计目的 (3)设计要求 (4)总体方案 (4)电路设计及原理 (5)各单元电路剖析 (5)仿真调试 (7)设计中遇到的困难 (9)结论 (9)附录 (10)实践目的数字电子技术基础课程设计是继“数字电子技术基础”理论课之后开出的实践环节,是锻炼学生动手能力,巩固所学理论知识的重要教学环节。
数字电子技术基础课程设计的目的是通过指导学生循序渐进独立完成数字电路的设计任务,加深学生对理论知识的理解,提高学生的动手能力,独立分析问题、解决问题的能力。
训练学生综合运用学过的数字电子技术基础的基本知识,独立设计比较复杂的数字电路系统的能力。
数字电子技术课程设计是通过数字电子技术课程的各教学环节(课堂教学和实验)学习之后进行的,应选取综合性和实用性较强的课题,内容的复杂程度和工作量应适中,应使学生达到如下要求:1、让学生初步掌握典型数字电路的试验、设计方法。
根据设计任务、技术指标、对课题进行分析;通过查阅资料、理论计算,得到设计方案;选择元器件,搭接线路,实现方案;画出电路原理图,进行仿真,分析实验结果,写出设计总结报告。
2、通过对典型数字电路的设计和仿真,掌握利用EDA软件设计电路的方法。
3、培养学生一定的自学能力和独立分析问题、解决问题的能力。
学会自己分析解决问题的方法,对设计中遇到的问题,通过独立思考,查阅工具书,参考文献,寻找答案;掌握电路调试的一般规律,对实验中出现一般故障,能通过“观察、判断、实验、再判断”的基本方法去解决;能对实验结果进行独立分析和评价。
4、学会使用电子仪器仪表进行逻辑电路的检测、故障分析和排除。
通过独立思考问题、查阅工具书、参考文献、寻找解决问题的途径;掌握常用基本电路调试、测试的一般规律、测试仪器仪表的使用。
数字体温计电路设计

目录1、课程设计目的 (2)2、课程设计内容和要求2.1、设计内容 (2)2.2、设计要求 (2)3、设计方案 (2)3.1、设计思路 (2)3.2、工作原理及硬件框图 (3)3.3、硬件电路原理图 (7)3.4、PCB版图设计 (10)4、课程设计总结 (10)5、参考文献 (11)1、课程设计目的(1)掌握电子电路的一般设计方法和设计流程;(2)学习简单电路系统设计,掌握Protel99的使用方法;(3)了解数字体温计电路的基本实现原理;(4)掌握计数器、显示等中规模数字集成器件的逻辑功能和使用方法;(5)学习掌握硬件电路设计的全过程。
2.设计内容和要求数字体温计电路具体设计要求如下:(1)查阅所用器件技术资料,详细说明设计的数显温度测量仪电路工作流程;(2)温度测量范围:28℃~45℃,测量精度为0.1℃,数字显示为数三位。
(3)响应时间小于5s;(4)测量完成后,自动发出短促的鸣叫声,进行提示。
3设计方案3.1、设计思路及方案比较3.1.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
3.1.2 方案二进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
3.2方案二的总体设计框图温度计电路设计总体设计方框图如图1所示,控制器采用单片机A T89S51,温度传感器采用DS18B20,用4位LED数码管以P0口直接传送数据实现温度显示。
主控制器LED 显示温度传感器单片机复位时钟振荡测试完成报警图1 总体设计方框图3.2.1 主控制器单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
数字温度计的设计与制作课件

3.2 温度检测电路
VCC接高电平,DQ端接单片机的 P3.4口,这里利用了P3.4口双向 I/O口作用,单片机从DS18B20 读取温度和报警温度,此时作为 输入口,当设置报警温度时单片 机向DS18B20内部存储器写入数 据,此时作为数据输出端口。DQ 与VCC之间需要一个电阻值约为 5KΩ的上拉电阻。
单
报警设备
片
机
(ADC0809)
1.2 方案二:采用数字温度芯片DS18B20
AT98C51 DS18B20
报警点温度设置
液 晶
感 器
温 度
显
主
示
控
单制 片器 机
报 警 设
备
传
二 系统器件的选择
2.1 单片机的选择
AT89S52为 ATMEL 所生 产的一种低功耗、高性能CMOS8 位微控制器,具有8K在系统可编 程Flsah存储器。
3.3 液晶显示电路
在液晶显示电路的设计中选择具有单 向输出数据功能的P0端口向液晶显示 模块提供数据,P2.5、P2.6、P2.7口 作为控制液晶显示模块的端口,在PO 口上需要外加上拉电阻,才可以使液晶 显示模块正常显示。
3.4 报警电路设计
报警电路中使用P1.4-P1.7作为 控制按键输入端口,P1.0、P1.2 作为报警指示灯端口,P2.3作为 报警蜂鸣器端口,当它们对应的 端口为低电平时就会报警。
主要内容
一:设计方案选择 二:元器件的选择 三:设计过程 四:制作成果
一 设计方案选择
数字温度计的制作方法有很多种,最常见的有两种,一种 是利用热敏电阻测量温度的电路,另一种是利用数字温度 传感器DS18B20测量温度的电路。
1.1 方案一:采用热敏电阻
数字电路温度计设计

数字电路温度计设计全文共四篇示例,供读者参考第一篇示例:数字电路温度计设计数字电路温度计的设计原理主要是利用数字电路的优势,通过传感器将物体的温度信号转换为电信号,再通过数字电路进行处理和显示,从而实现温度的测量和显示。
数字电路温度计的设计原理主要包括传感器、模数转换器、显示器等几个关键部分。
首先是传感器部分,传感器是将温度信号转换为电信号的关键部件。
常用的传感器有热敏电阻、热电偶、半导体传感器等。
传感器的选择直接影响到数字电路温度计的测量精度和灵敏度。
在设计数字电路温度计时,我们需要根据实际需求选择合适的传感器,以确保温度测量的准确性。
最后是显示器部分,显示器是将数字信号转换为可视化信息的关键部件。
在设计数字电路温度计时,我们通常选择LED数码管、液晶显示屏等作为显示器。
显示器的选择不仅要考虑显示效果和美观度,还要考虑功耗、驱动电路等因素。
通过合理选择和设计显示器,我们可以实现数字电路温度计的数据显示和人机交互功能。
数字电路温度计的工作原理主要是通过传感器实时监测物体的温度变化,将温度信号转换为电信号后经过模数转换器转换为数字信号,最终通过显示器显示出温度数值。
在工作过程中,数字电路温度计还可以设置报警功能,当温度超出设定范围时会发出警报,提醒使用者及时处理。
制作数字电路温度计的流程主要包括以下几个步骤:第一步,设计电路原理图。
根据数字电路温度计的设计要求,我们需要设计出完整的电路原理图,包括传感器、模数转换器、显示器等各个部分的连接关系和工作原理。
第三步,焊接电路板。
在选择好电子元器件后,我们需要进行电路板的焊接工作,将各个元器件按照设计原理图连接到电路板上,并进行焊接和固定,以组成完整的数字电路温度计电路。
第四步,进行测试和调试。
在焊接完成后,我们需要进行测试和调试工作,确保数字电路温度计正常工作。
在测试中,我们需要测试传感器的灵敏度、模数转换器的精度和显示器的正确性等。
第五步,封装和外壳设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理及应用题目:DS18B20数字温度计的设计姓名学号:张赛专业班级:电子2班设计时间:2013年11月一、课题介绍本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器18B20,单片机AT89S52,,四位共阴极数码管一个,电容电阻若干。
18B20支持“一线总线”接口,测量温度范围-55°C~+125°C。
在-10~+85°C范围内,精度为±0.5°C。
18B20的精度较差为± 2°C 。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
本次数字温度计的设计共分为五部分,主控制器,LED显示部分,传感器部分,复位部分,时钟电路。
主控制器即单片机部分,用于存储程序和控制电路;LED显示部分是指四位共阳极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路。
测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。
本设计能完成的温度测量范围是-55°C~+128°C,由于能力有限,不能实现报警功能。
二、方案论证方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案设计框图如下:方案二:考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
三、系统软硬件设计 1、硬件设计按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。
数字温度计总体电路结构框图所示:单片机的选择单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
复位电路设计单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R 采用6.8K Ω的阻值,电容采用电容值为10μ的电解电容。
电路图如下:温度显示电路四位共阴极数码管,能够显示小数和负温度。
零下时,第一个数码管显示负号。
当温度超过99.9时,四个数码管全部亮。
列扫描用P2.0~P2.3口来实现,列驱动用9012三极管。
电路图如下:温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
电路图如下:系统总电路图如下:2、软件设计主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等。
主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。
温度测量每1S进行一次。
主流程图如下:温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。
当采用12位分辨率时,转换时间约为750ms。
在本程序设计中,采用1s显示程序延时法等待转换的完成。
流程图如下:计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。
显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。
系统所运用的功能介绍:DS18B20与单片机之间采用串行通信的方式进行数据读写系统的调试及性能分析:硬件调试比较简单,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。
软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。
本程序采用单片机汇编或C语言编写用Keil C51编译器编程调试。
软件调试到能显示温度值,并且在有温度变化时显示温度能改变,就基本完成。
性能测试可用制作的温度机和已有的成品温度计同时进行测量比较。
由于DS18B20的精度很高,所以误差指标可以限制在0.5℃以内。
另外,-55~+125℃的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持温度计。
四、课程设计体会本次的课程设计使我们进一步巩固了书本上的知识,做到了学以致用。
这是我们第二次自己动手设计的电路,通过系统仿真软件protues和编译软件keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件部分,即编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现,如温度上下限设置。
由于protues并不是很熟练,在使用的过程中有很多原件的名称不知道,从而花费了大量的时间在网上查找,今后应该在这方面多多努力。
最后一步的焊接硬件也遇到了不少麻烦,P0端口没有加上拉电阻,P1端口没有加电阻导致数码管不亮或者亮度不够。
总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。
其次,要学以致用,理论联系实际,这样才会取得事半功倍的效果。
附件:DS18B20温度计C程序#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit DATA = P1^1;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极字型码int temp;int ss;int dd;int j;uchar data b;uchar data buf[4];int alarmH=500;int alarmL=-10;sbit k1=P2^5;sbit k2=P2^6;sbit k3=P2^7;sbit k4=P2^4;sbit bell=P1^0;sbit HLight=P1^2;sbit LLight=P1^3;sbit warn=P1^4;sbit Red=P1^6;sbit Green=P1^7;bit set=0;bit Flag=0;int n;void key_to1();void key_to2();void delay(uint);void key();void Show();void delay(uint num) {while(num--) ;}void Init_DS18B20(void) {uchar x=0;DATA = 1;delay(10);DATA = 0;delay(80);DATA = 1;delay(20);x=DATA;delay(30);}ReadOneChar(void) {uchar i=0;uchar dat = 0;for (i=8;i>0;i--){DATA = 0;dat>>=1;DATA = 1;if(DATA)dat|=0x80;delay(8);}return(dat);}WriteOneChar(unsigned char dat) {uchar i=0;for (i=8; i>0; i--){DATA = 0;DATA = (bit)dat&0x01;delay(10);DATA = 1;dat>>=1;}delay(8);return(dat);}int ReadTemperature(void){uchar a=0;uchar b=0;int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC);WriteOneChar(0x44);Init_DS18B20();WriteOneChar(0xCC);WriteOneChar(0xBE);a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;tt=t*0.0625;t= tt*10+0.5;return(t);}void display00(){dd=-(temp-1);buf[1]=dd/100;buf[2]=dd/100;buf[3]=dd%100/10;buf[0]=dd%10;for(j=0;j<5;j++){P2=0xff;P0=0x00;P2=0xfd;P0=0x80;delay(100);P2=0xff;P0=0x00;P2=0xf7; P0=0x40;delay(100);P2=0xff;P0=0x00;P2=0xfb; P0=table[buf[2]];delay(100);P2=0xff;P0=0x00;P2=0Xfd;P0=table[buf[3]];delay(100);P2=0xff;P0=0x00;P2=0Xfe;P0=table[buf[0]];delay(100);P2=0xff;}}void display(){buf[1]=temp/1000;buf[2]=temp/100%10;buf[3]=temp%100/10;buf[0]=temp%10;for(j=0;j<3;j++){P2=0xff;P0=0x00;P2=0xfd;P0=0x80;delay(300);P2=0xff;P2=0xf7;P0=table[buf[1]];delay(300);P2=0xff;P0=0x00;P2=0xfb;P0=table[buf[2]];delay(300);P2=0xff;P0=0x00;P2=0Xfd;P0=table[buf[3]];delay(300);P2=0xff;P0=0x00;P2=0Xfe;P0=table[buf[0]];delay(300);P2=0xff;}}void key(){ if(k1!=1){delay(20);if(k1!=1){while(k1!=1){ key_to1();for(n=0;n<8;n++)Show();}}}if(k2!=1){delay(20);if(k2!=1){while(k2!=1){ key_to2();for(n=0;n<8;n++)Show();}}if(k3!=1){ TR0=1;temp=ReadTemperature();}if(k4!=1){ delay(20);if(k4!=1){ while(k4!=1);set=!set;if(set==0){ Red=0;Green=1;}else { Green=0;Red=1;}}}}void key_to1(){TR0=0;temp+=10;if(temp>=1100){temp=-550;}if(set==0){alarmH=temp;}else {alarmL=temp;}}void key_to2(){TR0=0;temp-=10;if(temp<=-550){temp=1100;}if(set==0){ alarmH=temp;}else { alarmL=temp;}}void alarm(void){if(temp>alarmH||temp<alarmL) {Flag=1;}else {Flag=0;}}void logo(){ P0=0x40;P2=0xf7;delay(50);P2=0xfb;delay(50);P2=0Xfd;delay(50);P2=0Xfe;delay(50);P2 = 0xff;}void Show(){ if(temp>=0){HLight=1;LLight=0;display();}if(temp<0){HLight=0;LLight=1;display00();} }void main(){TCON=0x01;TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1;EX0=1;for(n=0;n<500;n++){bell=1;warn=1;logo();}Red=0;while(1){key();ss=ReadTemperature();Show();alarm();if(Flag==1){bell=!bell;warn=!warn;}else {bell=1;warn=1;}}}void time0(void) interrupt 1 using 1 { TH0=0X56;TL0=0XDC;temp=ss;}。