《基于STC89C52和DS18B20的温度检测装置.docx》由会员分享,可在线阅读,更多相关《基于STC89C52和DS18B20的温度检测装置.docx(20页珍藏版)》请在课桌文档上搜索。
1、课程设计总结报告课程名称单片机应用系统设计设计题目基于STC89C52和DS18B20的温度检测装置专业电子信息工程班级姓名学号指导教师报告成绩信息与工程学院二0一三年六月十九日单片机应用系统设计课程设计任务书一、课题名称基于STC89C52和DS18B20的温度检测装置二、设计任务1、功能要求根本任务:(1)采用STC89C52单片机(可选用其他89C51系列的单片机)和DS18B20温度传感器,1602字符液晶设计;(2)根据数据手册编程读取DSl8B20,用1602字符液晶显刀:温度(3)通过4个键实现温度上限和下限设置。发挥任务:实现一个时钟,显示时,分秒,并可以设置时间。2设计要求(
2、1)熟悉STC89C52单片机及其开发环境:熟悉汇编语言或C51程序设计:(2)掌握STC89C52单片机最小系统、按键电路、字符液晶显示电路的设计;掌握DS18B20编程方法,学会看数据手册:掌握1602字符液品编程方法:掌握单片机时钟中断的编程方法:熟悉工程设计流程:(3)熟悉硬件软件调试的方法:(4)设计报告中详细写出硬件电路设计方案、画出软件流程图并总结调试中遇到的问题及解决方法。三、设计报告撰写标准单片微机应用系统设计总结报告正文,主要含以下内容硬件、软件各局部内容也可组合起来进行撰写说明):1 .系统总体设计方案(画出系统原理框图、方案的论证与比拟等内容);2 .硬件系统分析与设计
3、(各模块或单元电路的设计、工作原理阐述、参数计算、元器件选择、完整的系统电路图、系统所需的元器件清单。等内容);3 .软件系统分析与设计(各功能模块的程序设计流程图与说明、软件系统设计、软件抗干扰措施、完整的程序等内容);4 .系统仿真调试与参数测量(使用仪器仪表、故障排除、电路硬件和软件调试的方法和技巧、指标测试的参数和波形、测量误差分析);5 .总结(本课题核心内容及使用价值、电路设计、软件设计的特点和选择方案的优缺点、改良方向和意见等);6 .按统一格式列出主要参考文献。基于STC89C52和DS18B20的温度检测装置课程设计总结报告一、系统总体方案1 .系统原理框图2 .方案工作过程
4、的论述本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器DS18B20,单片机STC89C52,LEDl602字符液晶一个,电容电阻假设干。传感器采用美国DALLAS半导体公司生产的智能温度传感器DS18B20,支持“一线总线接口,测量温度范围-55C+125C0在-10+85C范围内,精度为0.5。C。最高分辩率可达0.0625。现场温度直接以“一线总线的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。主控制器即单片机局部,用于存储程序和控制电路;LED显示局部是用1602字符液晶显示温度:传感器局部,即温
5、度传感器,用来采集温度,进行温度转换;复位局部,即复位电路。测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。本设计能完成的温度测量范围是-55C+128。C,精度为0.1。C,支持温度正负提示,软件预设上限温度30C,下限温度20C,并支持硬件手动配置温度上下限,通过4个键实现温度上限和下限设置,超过此上下限即实现报警功能。附加功能:实现一个时钟,显示时、分、秒,并可以设置时间。3 .整体设计电路图4 .单片机的造型二、单片机概述根据老师提供的元器件清单,选择采用STC89C52单片机进行使用。STC89C52介绍:STC89C5
6、2是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程FIaSh存储器。STC89C52使用经典的MCS-51内核,但做了很多的改良使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程FIaSh,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节FIaSh,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPR0M,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52可降
7、至OHZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。主要特点:1 .8K字节程序存储空间;2.512字节数据存储空间;3.内带2K字节EEPROM存储空间;4.可直接使用串口下载;主要参数:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.ta2.工作电压:5.5V3.3V(5V单片机)/3.8V2.OV(3V单片机)3.工作频
8、率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz4用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P0/P1/P2/P3是准双向口/弱上拉,PO口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7.ISP(在系统可编程)IP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口RxDP3.0,TxDP3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.共3个16位定时器/计数器。即定时器TO、Tl、T210.外部中断4路,下降沿中断或低电平触发电路,Power
9、Down模式可由外部中断低电平触发中断方式唤醒IL通用异步串行口(UART),还可用定时器软件实现多个UARTl2.工作温度范围:-40+85C(工业级)/075商业级)13.PDIP封装Pl口各个引脚的第二功能介绍:P3口的第二功能介绍:单片机的最小系统中还包含了复位电路和晶振电路。晶振电路:复位电路:设计过程的注意点:1.考虑对速度的要求。单片机的运行速度首先看时钟频率,指令集,几个时钟为一个机器周期。在选用单片机时,要根据需要选择速度,不要片面追求高速,单片机的稳定性、抗干扰性的参数根本上跟速度成反比,另外速度越快成效也越大。2 .考虑定时器/计数器的功能。大局部单片机提供了23个定时器
10、/计数器,有些定时/计数器还具有输入捕获、输出比拟和PWM(脉冲宽度调制)功能,利用这些模块不仅可以简化软件设计,而且能少占用CPU的资源。现在还有不少单片机提供了看门狗定时器(WDT),当单片机“死机后可以自动复位。选用时可根据自己的需要和编程要求进行选择。3 .考虑I/O口的驱动能力。I/0口的数量和功能是选用单片机时首先要考虑的问题之一,根据实际需要确定数量,1/0多余不仅芯片的体积增大,也增加了本钱。驱动电流大的单片机可以简化外围电路。51系列的单片机下拉(输出低电平)时驱动电流大,但上拉(输出高电平)时驱动电流很小。4 .考虑工作电压与功耗的要求。单片机的工作电压最低可以到达1.8V
11、,最高为6V,常见的是3V和5V。单片机的功耗参数主要是指正常模式、空闲模式、掉电模式下的工作电流,用电池供电的系统要选用电流小的产品,同时要考虑是否要用到单片机的掉电模式,如果要用的话必须选择有相应功能的单片机。5 .单片机的串行接口。单片机常见的串行接口有:标准UART接口、TWl通讯接口、增强型UART接口、I2C总线接口、CAN总线接口、SPl接口、USB接口等。大局部单片机都提供了UART接口,也有局部单片机没有串行接口。三、温度检测电路根据所提供的材料以及对电路的分析,决定采用DS18B20作为温度检测局部特点:DS18B20是DALLAS公司最新推出的单线数字温度传感器,新的一线
12、器件体积更小、适用电压更宽、更经济。Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持一线总线接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822-线总线数字化温度传感器,测量温度范围为-55。(2+125。(2,在-10+85。(:范围内,精度为0.5。eDS1822的精度较差为2。C0现场温度直接以“一线总线的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V55V的电压范围,使系统设
13、计更灵活、方便。而且新一代产品更廉价,体积更小。DS18B20DS1822的特性DS18B2O可以程序设定972位的分辨率,精度为0.5(。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!1) .只要求一个端口即可实现通信;2) .在DS18B20中的每个器件上都有独一无二的序列号;3) .实际应用中不需要外部任何元器件即可实现测温;4) .测量温度范围在一55。C到+125。C之间;5) .数字温度计的分辨率用户可以从9位到12位选择;6) .内部有温度上、下限告警设置;温度测量电路的框图
14、及其原理:低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器Io高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器冲输入。计数器1和温度存放器被预置在5所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度存放器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度存放器值的累加,此时温度存放器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。温度采集读写时序图:DS18
15、B20电路图:读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。流程图如下:温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用IS显示程序延时法等待转换的完成。流程图如下:DS18B20温度采集、转换程序:#inckidc#include,intrins.h,nclude,DS18B20.H,#defineucharunsignedchar#defineuintunsignedintsbitDS=PI0;/定义接口uinttemp;温度变量ucha
16、rflag1;接收标志位externdelay_nms(uintnms);*功能:串行口初始化,波特率9600,方式1voidInit-Com(void)TMOD=0x20;设定Tl定时器的工作方式2PCON=0x00;波特率不加倍THl=OxFd;/Tl定时器装初值TLl=OxFd;TRl=1;启动Tl定时器REN=I;允许接受串行口SMO=O;设定串口工作方式1即8位异步通讯SMl=I;tmpchange();/读一次温度,防止运行程序时读出85摄氏度delay-nms(400);/85度不显示用延时跳过)/DS18B20复位,初始化函数uint i;DS=O;i=103;voiddsre
17、set(void)/数据线拉到低电平0延时850US(该时间范围可以在480960us)while(iX)DS=I;数据线拉到高电平1i=4;/延时等待(如果初始化成功那么在156OmS内产生一个由DS18B20返回的低电平0,据该状态可以确定它的存在)while(i0)1*读1位数据函数bitImpreadbit(Void)uinti;bitdat;设置-位数据DS=O;i+;/i+起延时作用DS=I;i+;i+;dat=DS;i=8;while(i0)i;return(dat);*读1字节函数uchartmpread(void)uchari,j,dat;dat=O;for(i=l;i=8;
18、i+)j=tmpreadbit();dat=(j1);读出的数据最低位在最前面,这样刚好个字节在DAT里retum(dat);向DS18B20写一个字节数据函数voidtmpwritebyte(uchardat)uint1;ucharj;bittestb;for(j=l;jv=8;j+)testb=datl;if(testb)写1DS=O;i+;i+;DS=I;i=8;WhiIe(AO)i-;elseDS=O;写0i=8;WhiIe(i0)i-;DS=I;i+;i+;voidInipchange(Void)/DS18B20开始获取数据并转换dsreset();delay_nms(l);Impw
19、ritebyte(Oxcc);写跳过读ROM指令ImPWriIebyIe(OX44);写温度转换指令voidtmp()读取存放器中存储的温度数据floattt;uchara,b;dsreset();delay_nms(1);Impwritcbyte(Oxcc);Irnpwritebyte(Oxbe);a=tmpread();读低8位b=tmpread();/读高8位temp-b;temp0;i)/*for(j=90;j0;j-)函数功能:向1602写入数据voidwrite_date(uchardate)_nop_();_nop_0;RS=1;选择写命令模式_nop_();(高电平时选择数据存
20、放器)1LCD.EN=0;PO=date;delay_nms(l);LCD_EN=1;delay_nms(l);函数功能:向1602写入指令(选择位置)LCD_EN=0;voidwrite_com(ucharcom)俨*定行定列显示数组*voidwrite_stringtable(ucharh,ucharl,uchar*s)1602初始化voidLCD-Initial()if(h=0)确定第几行write_com(0x38);设置16*2显示,5*7h=0x80;/第一行的第一个地址点阵,8位数据接口delay_nms(1);elsewrite_com(0x0c);设置开显示,不显示光标h=O
21、xcO;第二行的第一个地址delay_nms(1);write_com(0x06);写一个字符地址指h二h+1;行列)加?针自动加Iwrite_com(h);/写一个字符地址delay_nms(1);while(*s)显不字符串write_com(0x01);显示清0,数据指针清0write_date(*s);delay-nms(l);s+;五、键盘电路键盘扫描概述:首先,确定键盘编码方案:采用编码键盘或非编码键盘。随后,确定键盘工作方式:采用中断或查询方式输入健操作信息。然后,设计硬件电路。非编码键盘系统中,键闭合和键释放的信息的获取,键抖动的消除,键值查找及一些保护措施的实施等任务,均由软
22、件来完成。1.监测有无键按下;键的闭合与否,反映在电压上就是呈现出高电平或低电平,所以通过电平的上下状态的检测,便可确认按键按下与否。2 .判断是哪个键按下。一.编程扫描方式:当单片机空闲时,才调用键盘扫描子程序,反复的扫描键盘,等待用户从键盘上输入命令或数据,来响应键盘的输入请求。二定时扫描工作方式:单片机对键盘的扫描也可用定时扫描方式,即每隔一定的时间对键盘扫描一次。三.中断工作方式:只有在键盘有键按下时,才执行键盘扫描程序并执行该按键功能程序,如果无键按下,单片机将不理睬键盘3 .完成键处理任务。(二)从电路或软件的角度应解决的问题1消除抖动影响。键盘按键所用开关为机械弹性开关,利用了机
23、械触点的合、断作用。由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动、抖动时间的长短由按键的机械特性决定,一般为510ms,这是一个很重要的参数。抖动过程引起电平信号的波动,有可能令CPU误解为屡次按键操作,从而引起误处理。为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。按键的消抖,通常有软件,硬件两种消除方法。这种方法只适用于键的数目较少的情况。软件消抖:如果按键较多,硬件消抖将无法胜任,常采用软件消抖。通常采用软件延时的方法:在第一次检测到有键按下时,执行一段延时IOmS的子程序后,再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,那么确认真正
24、有键按下,进行相应处理工作,消除了抖动的影响。(这种消除抖动影响的软件措施是切实可行的。)2 .采取串键保护措施。串键:是指同时有一个以上的键按下,串键会引起CPU错误响应。通常采取的策略:单键按下有效,多键同时按下无效。3 .处理连击。连击:是一次按键产生屡次击键的效果。要有对按键释放的处理,为了消除连击,使得一次按键只产生一次键功能的执行(不管一次按键持续的时间多长,仅采样一个数据)。否那么的话,键功能程序的执行次数将是不可预知,由按键时间决定。连击是可以利用的。连击对于用计数法设计的多功能键特别有效。按键电路图:程序流程图:六、串口电路MAX232电平转换、串口的硬件电路图和串口的程序下
25、载功能MAX232电平转换:MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。内部结构根本可分三个局部:第一局部是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和T2v两个电源,提供应RS-232串口电平的需要。第二局部是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(RlIN)、12脚(RlOUT).11脚(TIlN)、14脚(TlOUT)为第一数据通道。8脚(R2IN)、9脚(R20UT)、10脚(T2IN)、7脚(T20UT)为第二数据通道。TTL/CMOS数据从TlIN、T2
26、IN输入转换成RS-232数据从TlOUT、T20UT送到电脑DP9插头;DP9插头的RS-232数据从RIlN、R2IN输入转换成TTL/CMOS数据后从RIoUT、R20UT输出。第三局部是供电。15脚DNG、16脚VCC(+5v)oSTC89C52RC是宏晶公司的产品一个8位单片机,232在单片机上用作下载程序和电平转换,STC89C52RC就是控制器相当于人的大脑。串口硬件电路图:串口的程序下载功能:先等待ISP提示MCU上电,然后再开启单片机电源,这时可能也不能连上,然后再关闭开启一次电源,这时就可以读出晶振频率,如果还是不能连上,再重复以上步骤,亦或是改变波特率(ILo592用19
27、200成功率较大)。七、系统调试硬件调试比拟简单,首先采用PROTELSE99软件绘制原理图,并进行了仿真,确认无误的情况下将图纸打印出来,以便电路的排布。由于前期对电路的分析不够彻底,导致电路图排版存在缺陷,最后导致焊接过程中出现很多过失,也贻误了许多的时间。焊接完毕,开始调试硬件,先按要求接入正5伏的电压,发现蜂鸣器会响,但是灯没有亮,先检查了下线路,发现无误,后检查了三极管,也没有发现烧坏,最后通过理论的计算,发现是与灯串联的电阻阻值不够,换了一个较大的电阻之后,灯泡亮了.然后是对串口电路进行检查,第一次发现程序始终无法写入单片机,经过仔细检查,发现是串口线路接错,重新修改之后,程序顺利
28、写入。软件调试在编写显示程序并进行硬件的正确性检验之后进行,分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示子程序等的编程及调试。由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序:否那么将无法读取测量结果。本程序采用单片机C语言编写用KeiI编译器编程调试。软件调试到能显示温度值,并旦在有温度变化时显示温度能改变,温度的上下限可以设置,同时添加了附加功能,手动调整时间值,就根本完成。八、总结本次的设计使我们进一步稳固了书本上的知识,做到了学以致用。这是我们第二次自己动手设计的电路,通过电路图绘制软件protel,
29、系统仿真软件protues和编译软件keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件局部,即编程局部,我们上网找了好多资料,最终借助同学的帮助,经过自己的修改,根本上完成了功能,但还是有局部功能不能实现,最主要的温度显示始终存在问题。另外,对于程序中关于温度转换局部不清楚,在老师提问时没有方法进行答夏解释。而在焊接硬件时也遇到了不少麻烦,如液晶显示引脚的对应焊接,max232的焊接,三极管的的极性识读等。总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。其次,要学以致用,理论联系实际,这样才会取得事半功倍的效果。主要参考文献:1周立
30、功.ARM&WinCE实践与实验:基于S3C2410M北京:北京航空航天大学出版社,2007.2李朝青.PC机及单片机数据通信技术M.北京:北京航空航天大学出版社,20003马春华,于莉莉.SMS方式远程监控软件的设计与实现J.广东通信技术,2003,23.附录:unsignedcharx=0;DS=1;DQS位/头文件include#include#include#defineucharunsignedchar#defineuintunsignedintsbitbeep=P24;ds!8b20_delay(8);稍做延时DS=O;单片机将DQ拉低ds!8b20_delay(80);精确延时大
31、于480usDS=1;拉高总线dsl8b20_delay(14);x=DS;稍做延时后如果ucharkeep=O;x=0那么初始化成功x=l那么初始化失败uintdisdata18;uintt_value,tflag;ucharcodestr1=,ftemperature:”;#defineNONE_KEY_CODEOXOf#defineMODE_KEY_CODEOXOe#define1NC_KEY_CODEOXOd#defineDEC_KEY_CODEOXOb#defineSET_KEY_CODE0X07uintkeyvalue2;ucharbasetime,mode,flag,SET-mo
32、de,SET_flag;dsl8b2O-delay(2O);unsignedcharReadchar(Void)读一个字节Iunsignedchari=0;unsignedchardat=0;for(i=8;i0;i-*)chartimebu115;uintfuncode,key_timing,time;ucharTH=30,TL=20;DS=O;给脉冲信号,读起始dat=l;低位开始接收#defineled1602_BusPO/led1602定义sbitlcdl602-en=P25;sbitlcdl602-rs=P26;DS=I;给脉冲信号if(DS)假设读出1dat=0x80;ds!8b2
33、0-delay(4);Ireturn(dat);sbitDS=P20;/dsl8B20定义*ds8b20*voidWritecharCunsignedchardat)写一个字voidds18b20_delay(unsignedintnus)while(nus-);延时微秒unsignedchari=0;for(i=8;i0;i-)DS=0;voidDS18B20Jnitial(void)/初始化ds1820DS=dat&0x01;dsl8b20_delay(5);DS=1;dat=l;unsignedintreadtemp(void)读取温度unsignedchara=0;unsignedch
34、arb=0;unsignedintt_value=0;floattt_value=0;DS18B20Jnitial();Writechar(OxCC);/跳过读序号列号的操作Writechar(0x44);/启动温度转换DS18B20Jnitial();Writechar(OxCC);跳过读序号列号的操作Writechar(OxBE);读取温度存放器a=Readchar();读低8位b=Readchar();读高8位t_value=b;t_value=8;t_value=t_value|a;tt_value=t_value*0.0625;读取真实值t_value=tt_value*10+0.5
35、;放大10倍输出并四舍五入return(t_value);led1602_Bus=com;delayms(5);lcd!602_rs=0;lcdl602_en=l;delayms(5);lcd!602_en=0;voidwritejed1602_dat(uchardat)写数据lcd!602_Bus=dat;delayms(5);lcdl602_rs=l;lcdl602_en=l;delayms(5);lcdl602_en=0;voidIcdl602Jnitial(void)液晶初始化/lcdl602_wr=0;led1602_en=0;writejcd1602_com(OXo1);清屏Wrh
36、ecdl602_com(OXo6);指针加减与移动writejcd1602-Com(OXoc);光标*writejcd1602_com(OX38);液晶初始化命令*Cd16()2*writejcd1602_com(OXo1);清屏*I*零*voiddelayms(uintXmS)uintij;for(ixms;i0;i)for(j=HO;jO;j-);名称:IcLstring(UCharrow,ucharcloum,uchar*p)功能:从第row行,第CknIm列,把一串字符写入ICd输入:rowcloump*voidwrite_lcd1602_com(ucharcom)/写地址voidle
37、d1602_string(ucharrow,ucharcloum,uchar*p)ucharrow_flag;if(row=l)row_flag=0x80;if(row=2)row_flag=OxcO;row_flag=row_flag+cloum;write_lcdl602_com(row_flag);while(l)if(*p=W)break;write_lcdl602_dat(*p);p+;/序*申*寺奉来*申塞*名称:lcd_char(ucharrow,ucharc1oun,uchardat)*功能:在ICd的第row行,第CICHIm列,写入数据dat*输入:rowcloundat*
38、率*右*,聿*聿*t*拿聿*申*/voidled1602-char(ucharrow,UCharcloum,uchardat)UCharrow_flag;if(row三=l)row_f1ag=0x80;WtiteJcd1602_com(row_flag+cloum);write_lcd1602_dat(dat);if(row=2)row_flag=OxcO;write_lcdl602_com(row_flag+cloum);write_lcd1602_dat(dat);/*t*t*:*c*李*米来更审李来李率*#*$:*:曦*!*:*李*voiddiSplay(Void)ucharflagdat:disdataO=t-Value/1000+0x30;百位数disdatall=t-value%1000/1Oo+0x30;十位数disdata2=t-value%1OO/10+0x30;个位数disdata3=t_value%10+0x30;小数位if(tflag=O)flagdat=0x20;正温度不显示符号elseflagdat