基于S08单片机温度测量显示系统设计说明

上传人:沈*** 文档编号:101256904 上传时间:2022-06-04 格式:DOC 页数:28 大小:333KB
收藏 版权申诉 举报 下载
基于S08单片机温度测量显示系统设计说明_第1页
第1页 / 共28页
基于S08单片机温度测量显示系统设计说明_第2页
第2页 / 共28页
基于S08单片机温度测量显示系统设计说明_第3页
第3页 / 共28页
资源描述:

《基于S08单片机温度测量显示系统设计说明》由会员分享,可在线阅读,更多相关《基于S08单片机温度测量显示系统设计说明(28页珍藏版)》请在装配图网上搜索。

1、基于S08的温度检测显示系统的设计25 / 28摘要随着社会的进步和工业技术的发展,人们越来越重视温度对产品的影响,许多产品对温度围要求严格,目前市场上普遍存在的问题有温度信息传递不与时、精度不够的缺点,不利于工业控制者根据温度变化与时做出决定。在这样的形式下,开发一种实时性高、精度高的温度采集系统就很有必要。本设计采用一种基于单片机的数据采集系统方案,该方案根据热敏电阻随温度变化而变化的特性,采用串联分压电路。单片机采集热敏电阻的电压,通过A/D转换将模拟量电压信号转换成数字量电压信号,经过查表转换得到温度值,控制液晶屏实时显示温度值。本系统中所用到的器件是飞思卡尔公司MC9S08AW60单

2、片机、NTC热敏电阻和LCD1602液晶显示屏。关键词:MC9S08AW60;热敏电阻;LCD1602目 次1 绪论11.1设计背景11.2 数据采集系统简单介绍12 方案论证32.1微控制器的选择32.2显示方案选择32.3温度传感器的选择43 温度测量显示系统硬件设计63.1 温度采集模块硬件设计63.2 MCU控制器模块设计63.3 显示模块电路的设计74 温度测量显示系统软件设计94.1微控制器程序的开发环境与语言94.2程序设计10总结17参考文献18附录A 温度采集与显示程序19附录B 接线原理图251 绪论1.1设计背景在人类的生活环境中,温度扮演着极其重要的角色。无论你生活在哪

3、里,从事什么工作,无时无刻不在与温度打着交道。自18世纪工业革命以来,工业发展对是否能掌握温度有着绝对的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推进了温度传感器的发展。进入21世纪后,温度传感器正朝着高精度、多功能、总线标准化、高可靠性与安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。在工农业生产中,温度检测与其控制占有举足轻重的地位,随着现代信息技术的飞速发展和传统工业改造的逐步实现 ,能够独立工作的温度检测和显示系统已经应用于诸多领域。要达到较高的测量精度需要很好的解决引线

4、误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差等问题,使温度检测复杂化。模拟信号在长距离传输过程中,抗电磁干扰时令设计者伤脑筋的问题,对于多点温度检测的场合,各被检测点到监测装置之间引线距离往往不同,此外,各敏感元件参数的不一致,这些都是造成误差的原因,并且难以完全清除。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。采用单片机对温度采集进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控数据的技术指标,从而能够大大提高产品的质量和数量。1.2 数据采集系统

5、简单介绍随着自动控制的发展,数据采集越来越被广泛应用,如医疗、工业等方面,数据采集是指将温度,压力,流量,位移等模拟量通过各种传感元件做适当转换后,再经信号调理、采样、量化、编码、传输等步骤采集,转换成数字量后,传给PC 机进行存储,处理,显示或打印的过程,相应的系统称为数据采集系统,可分为以下几种:1.基于通用微型计算机的数据采集系统将采集来的信号通过外部的采样和A/D转换后的数字信号通过接口电路送入微机进行处理,然后再显示处理结果或经过D/A转换输出,主要有以下几个特点:(1) 系统较强的软、硬件支持。通用微型计算机系统所有的软硬件资源都可以用来支持系统进行工作。(2) 具有自开发能力。(

6、3) 系统的软硬件的应用配置比较小,系统的成本较高,但二次开发时,软硬件扩展能力较好。(4) 在工业环境中运行的可靠性差,对安放的环境要求较高;程序在RAM 中运行,易受外界干扰破坏。2.基于单片机的数据采集系统它是由单片机与其些外围芯片构成的数据采集系统,是近年来微机技术快速发展的结果,它具有如下特点:(1) 系统不具有自主开发能力,因此,系统的软硬件开发必须借助开发工具。(2) 系统的软硬件设计与配置规模都是以满足数据采集系统功能要求为原则,因此系统的软硬件应用配置具有最佳的性价比。系统的软件一般都有应用程序。(3) 系统的可靠性好、使用方便。应用程序在ROM 中运行不会因外界的干扰而破坏

7、,而且上电后系统立即进入用户状态。3.基于DSP数字信号微处理器的数据采集系统DSP数字信号微处理器从理论上而言就是一种单片机的形式,常用的数字信号处理芯片有两种类型,一种是专用DSP芯片,一种是通用DSP芯片。基于DSP数字信号微处理器的数据采集系统的特点如下:精度高、灵活性好、可靠性好、容易集成、分时复用等,但其价格不菲。2 方案论证2.1微控制器的选择微控制器是测量显示装置的核心部分,它要负责数据的处理与控制液晶屏显示。因此,需要一个高集成度、稳定性高和体积小的微控制器,同时还要注重低成本与实际情况。AT89S52是一种低功耗、高性能8位微控制器,具有8K系统可编程FLASH存储器和25

8、6字节ROM,可实现0Hz33Hz的全静态操作,支持4.0V5.5V电源。使用Atmel公司高密度非易失性存储器技术制造,与MCS-51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。其部没有A/D转换模块,需要外部扩展模数转换芯片。S08AW60拥有62KB片上在线可编程FLASH存储器和2KB片上RAM,具有模块保护与安全选项功能,支持2.75.5V电源。片总线时钟最高可达20MHz,可选择宽围的时钟频率。其部集成了高性能模/数转换器(ADC)和串行通信模块,具有很宽的工作温度围(-40+125),可适应各类恶劣环境。该芯片还可以通过BDM在计算机与微控

9、制器进行在线编程与后台调试,避免频繁的插拔单片机,编译软件调试功能强大。对比之后,根据实际的应用需求,本设计选择了飞思卡尔公司生产的增强型8位微控制器MC9S08AW60(44引脚、LQFP封装)。其拥有足够大的FLASH存储器和ROM,并带有高性能模/数转换器。另外,体积小,稳定性高,调试方便。2.2显示方案选择方案一:LED数码管显示器可分为两种显示方式:静态显示和动态显示。LED数码管静态显示,多片七段译码器驱动显示,这不仅增加了成本,还需要占用单片机多个I/O口,也给电路的焊接带来一定的困难,因此不选用这种方案作为显示模块,所以排除此方案。方案二:LED数码管显示器动态显示方式下,将所

10、有位的段选线并联在起,由位选线控制哪位接收字段码。采用动态扫描显示,也就是在显示过中,轮流向各位送出字形码和相应的字位选择,同一时刻只有一位显示,其他各位熄灭。但是此显示方案稳定性较差,并且还需要焊接外围电路,所以不采用此方案。方案三:LCD液晶显示,由单片机驱动.它主要用来显示大量数据、文字、图形,能够显示的位数多,显示得清晰多样、美观,同时液晶显示器的编写程序简单,价格便宜,故采用此种方案。 LCD类型繁多,价格不等。根据本设计需要显示的信息量小的特点,选用价格便宜的LCD1602液晶屏。其特点如下:(1) 液晶显示屏是以16列2行=32个510或57点阵块组成的显示字符群,每个点阵为一个

11、字符,字符间距和行距都为一个点的宽度。(2) 具有字符发生器ROM,可以显示192种字符。(3) 具有64字节的自定义字符RAM,可自定义8个57或4个510点阵字符。(4) 具有80字节的RAM。(5) 结构紧凑、轻巧、装配容易。(6) 单+5V电源供电,低功耗,长寿命,高可靠性。2.3温度传感器的选择测量温度的关键是温度传感器,因此需要灵敏度高、测温围宽、稳定性好,同时还要考虑成本和实际情况。DS18B20数字式温度传感器,使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度,同时,它可以直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化。部分

12、功能电路的集成,使总体硬件设计更简洁,能有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化。热敏电阻的主要特点是:灵敏度较高,其电阻温度系数要比金属大10100倍以上,能检测出10-6的温度变化;工作温度围宽,常温器件适用于-55315,高温器件适用温度高于315(目前最高可达到2000),低温器件适用于-27355;体积小,能够测量其他温度计无法测量的空隙、腔体与生物体血管的温度;使用方便,电阻值可在0.1100k间任意选择;易加工成复杂的形状,可大批量生产;稳定性好、过载能力强对比之后,根据实际的应用需求,本设计采用热敏电阻。热敏电阻包括正温度系数(PTC)和负温度系数(NTC)

13、热敏电阻,以与临界温度热敏电阻(CTR)本设计采用NTC热敏电阻。NTC(Negative Temperature Coeff1Cient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料该材料是利用锰、铜、硅、鈷、铁、镍、锌等两种或两种以上的金属氧化物进行充分混合、成型、烧结等工艺而成的半导体瓷,可制成具有负温度系数(NTC)的热敏电阻其电阻率和材料常数随材料成分比例、烧结气氛、烧结温度和结构状态不同而变化。它的测量围一般为-10+300,也可做到-200+10,甚至可用于+300+1200环境中作测温用。3 温度测量显示系统硬件设计温度采集系统的硬件部分是由温度采集模块

14、、MCU控制器模块、温度显示模块组成。具体框图如下图3.1所示: 图3.1 系统硬件框图3.1 温度采集模块硬件设计该模块是根据热敏电阻阻值随温度变化而变化的特性,利用串联分压的特点,将热敏电阻所分的电压送到MC9S08AW60的模拟量输入端。具体电路原理如图3.2所示: 图3.2 温度采集模块电路原理图该电路中R4为热敏电阻,其电压传输到MC9S08AW60单片机的模拟量输入端,即B0口。3.2 MCU控制器模块设计MC9S08AW60的外部工作电路如图3.3所示。Vddad和Vssad是MCU部模拟电路的电源,给模数转换器(ADC)模块供电,VREFH和VREFL是模数转换的参考电压。Vd

15、d和Vss是S08MCU主要的电源引脚,工作电压围是2.7V5.5V,在该电路中提供的是5V电压。在Vdd和Vss之间接10F钽电容器和0.1F的瓷旁路电容器,10F钽电容器来为系统提供大容量的电荷存储,同时应在离MCU电源管脚尽可能近的地方安装一个0.1F的瓷旁路电容器来抑制高频噪音。 图3.3 MC9S08AW60外部工作电路原理图该电路为MCU控制器电路,其中,G0、G1、G2口分别与LCD1602的RS、R/W、E引脚连接;C0C3口与LCD1602的DB0DB3引脚连接;D0D3口与LCD1602的DB4DB7引脚连接。.B0口是模拟量输入端,用于输入热敏电阻的电压。3.3 显示模块

16、电路的设计该模块是利用LCD1602液晶屏显示,显示的清晰度是关键,其Vee引脚作用是对比调整,原理是该引脚输入电压不同,调整度不同,所以采用电位器分压作为它的电压输入。Vss与K引脚分别是电源地、LCD背光电源负极,直接接地。Vcc与A引脚分别是电源、LCD背光电源正极,采用+5V电源供电。其电路原理图如图3.4所示:图3.4 显示模块电路原理图该电路中,LCD1602的RS、R/W、E引脚分别与MC9S08AW60的G0、G1、G2口连接;DB0DB3引脚分别与MC9S08AW60的C0C3口连接;DB4DB7引脚与MC9S08AW60的D0D3口连接。4 温度测量显示系统软件设计4.1微

17、控制器程序的开发环境与语言在前面,本设计已经选择了MC9S08AW60微控制器,飞思卡尔的微控制器有其专用的开发环境软件CodeWarrior IDE。同时,CodeWarrior IDE可以在不同的操作系统(包括Windows, Macintosh和Linux)下使用,而且在这些操作系统下的界面完全一样。本设计使用CodeWarrior6.3版,其界面如图4.1所示,只要在右边打开main.c窗口就可以进行程序编写。 图4.1 CodeWarrior6.3程序开发界面在对微控制器进行编程时,可以用汇编语言或者C语言,甚至可以二者混合编程。CodeWarrior IDE支持汇编语言,C、C+和

18、Java高级语言。C语言功能丰富、表达能力强、使用灵活方便、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,是国外广泛使用的一种计算机语言。本设计使用C语言对微控制器进行编程,其能直接操作微控制器的硬件和接口,生成的机器代码也是高水平的。4.2程序设计本设计程序主要包括A/D转换模块程序、热敏电阻阻值和温度的非线性对性模块程序、温度显示模块程序,其总程序流程图如图4.2所示:图4.2 系统程序总流程图4.2.1 A/D转换原理与程序传感器获得的信号由于是模拟信号,而CPU处理的是数字信号,故要经过模数转换。在MC9S08AW60芯片中集成了一个8位/10位精度可选的

19、逐次逼近式ADC模块,使用时不需再扩展片外的A/D转换器。逐次逼近式ADC是一个具有反馈回路的循环系统,主要部件有电压比较器、逐次逼近寄存器(SAR)、结果寄存器、数字/模拟转换器(Digital -To- Analog,DAC)和控制电路,如图4.3所示。逐次逼近式ADC用DAC的输出电压来驱动比较器的反相端。转换时,要用一个逐次逼近寄存器存放转换出来的数字量;转换结束时,将数字量送到结果寄存器。 图4.3 逐次逼近式ADC原理图逐次逼近ADC原理是:首先设置SAR中的最高位为1,其余位为0,经D/A转换器转换成模拟电压VO,然后将VO与输入电压Vi在电压比较器中进行比较。如果ViVO,则置

20、1保留,并使下一位置1。如果ViVO,则这一位给予清除,然后使下一位置1。按上述方法对次高位进行转换、比较、判断,决定次高位应取1还是0。重复上述过程,直到确定SAR最低位为止。这时控制电路送出一个转换结束标志信号,这个信号将SAR中的数字量送入结果寄存器供CPU使用。本设计中,由于在S08AW60芯片中的SCI数据寄存器只有8位,所以模数转换选择8位精度,以满足实际情况。针对振动信号高频多变,在ADC初始化中选择连续转换、高速转换和短采样时间。C语言编写的MC9S08AW60微控制器中A/D转换的节选程序代码如下:/* * *函数名称:adc_init()* *作用:A/D模块初始化*/vo

21、id adc_init(void) APCTL1=0X01; /*ADCP01引脚I/O无效,即B口0位*/ ADC1CFG=0X00; /*高速模式 8位精度,ADCK=总线频率*/ ADC1SC2=0X00; /*软件触发,比较功能禁止*/ ADC1SC1=0X00; /*禁止转换完成中断,单次转换*/* * *函数名称:convert_begin()* *作用:启动A/D转换*/unsigned int convert_begin(void) unsigned int Vtemp; ADC1SC1=0X00; /* 写ADC1SC1启动转换*/ while(!(ADC1SC1_COCO)

22、; /* 等待转换结束 */ Vtemp=ADC1RL; /*读取转换结果 */ return Vtemp; /* 返回结果 */4.2.2热敏电阻阻值和温度的非线性对性模块原理与程序热敏电阻的阻值温度特性曲线是一条指数曲线,非线性度较大,因此在使用时要进行线性化处理。可采用简单的查表法从电压值中查出相应的温度值。预先将一系列温度与电压对应值存贮到AW60微控制器程序存储器中的一个表,当给定任意一个电压值时,即可通过查表得出所对应的温度值。当表中没有对应的电压值时,可找出电压值在表中的区域,然后在区间的相邻两点经线性插值得出对应温度值。存入表中点的多少影响温度值的精度。这里以选16个点为例,选

23、8位模式A/D可转换结果围是0255,因此每两个点的间隔是16。使用插值算法如下: (4.1)式中:当前温度;当前温度的A/D转换值;,相邻点的温度值;,相邻点的A/D转换值;当A/D转换结果在区间016或240255时,不再计算,直接按温度值79或-40处理。C语言编写的获得温度值的节选程序代码如下:/* * *函数名称: GetTemperature()* *作用:查表与插值程序得到温度值*/signed int GetTemperature(int Value) signed int T; int i; if(Value= V_T_table015) T=V_T_table115; /*

24、 当A/D转换值在240255时,按-40摄氏度赋值 */ else for(i=1;i V_T_table0i)&(Value V_T_table0i+1) T=(V_T_table1i+1-V_T_table1i)*100)/16; T=T*(Value-V_T_table0i); /* 没有,找到区间并插值 */ T=V_T_table1i+T/100; break; return T; /* 返回温度值T */4.2.3 温度显示模块程序LCD1602采用+5V电压驱动,其数据接口和读写控制引脚与MC9S08AW60单片机的I/O口直接相连。MC9S08AW60单片机将采集到的模拟电压

25、值经过A/D转换后,查表得到温度值,通过I/O口传输给LCD1602显示。C语言编写的温度值显示的节选程序代码如下:/* * *函数名称:LCD1602_init()* *作用LCD1602初始化*/void LCD1602_init(void) LCD1602_DB(0x08 ,0x03); /*显示模式 8位总线 双行显示 5*7点阵*/ RS_RW_E_init(); LCD1602_DB(0x04 ,0x01); /*光标移动 每输入一次该指令 光标向右移一格 整体画面不滚动*/ RS_RW_E_init(); LCD1602_DB(0x0C ,0x00); /* 屏幕开关 打开显示屏

26、 不显示光标 不闪烁 */ RS_RW_E_init(); LCD1602_DB(0x06 ,0x00); /输入方式 RS_RW_E_init(); LCD1602_DB(0x01 ,0x00); /清屏 RS_RW_E_init(); /* * *函数名称:LCD1602_display()* *作用LCD1602显示*/void LCD1602_display(void) if(neg_flag) /* 如果是负,最高位显示-*/ LCD1602_DB(0x00,0x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(0x0d,0x

27、02); else /* 如果是正,最高位显示+*/ LCD1602_DB(0x00,0x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(0x0b,0x02); LCD1602_DB(0x01,0x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0s,Disp_Value1s); LCD1602_DB(0x02,0x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0g,Disp

28、_Value1g);总结设计就是要讲究严谨,在这三周的创新设计中,我学到了很多知识,也使我的能力得到了提升。首先,硬件方面。选择硬件,要比较同类产品的稳定性、功耗、体积、价格等,另外还要符合设计的全部要求。在显示方案上,我考虑的时间相对长了一点。利用数码管显示,程序复杂,但是,自己编程比较熟悉,价格便宜。利用LCD1602显示,程序简单,但是以前自己从未使用过。经过比较,我选择LCD1602,这样可以学到新知识,提高自己的知识水平。在硬件电路的设计方面,用Protel绘制电路图时要标明元件的大小,有些封装元件要标明名称和封装。其次,软件方面。把程序分块编写能够有效地提高正确性和编程效率。在本次

29、设计中,编程采取了“两步走”:第一步,我把温度采集部分的程序调试成功,其中包括A/D转换程序。这就要求必须对A/D转换原理了解与A/D转换寄存器熟悉。第二步,我把显示程序调试成功。这部分需要对LCD1602的时序有充分的了解和足够的认识,这也是LCD1602与LED数码管的不同之处。经过查资料和编程实验,最后使LCD1602正常显示数据。在软件编写时,还要注意添加注释,使程序更加清晰,便于理解。总而言之,在王老师的带领和指导下,我顺利的完成了创新设计,完成了老师交给的任务。参考文献1 王威嵌入式微控制器S08AW原理与实践M:航空航天大学,20092 杰. 传感器与检测技术M:高教,20043

30、 邵贝贝. 龚光华.单片机认识与实践M.:航空航天大学,20064阎石.数字电子技术基础(第三版). :高等教育,19895兰荪.数据采集与处理M:能源,19876沙占友、王彦朋、孟志永.单片机外围电路设计.电子工业,20037宜仁.单片机实用技术问答. 人民邮电,20038传友、汉泽西.测控系统原理与设计.航空航天大学,20029 章吉良,周勇,戴旭涵等微传感器原理、技术与应用M:交通大学,2005附录A 温度采集与显示程序/* * *文件名Temprature_LCD1602.c* *MCU:MC9S08AW60* *调试环境:CodeWarrior v6.3* *日期:2010.12*/

31、#include /* for EnableInterrupts macro */#include derivative.h /* include peripheral declarations */const unsigned char Disp_Value210=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03 ; /*存放显示段码*/const signed int V_T_table217=0,16,32,48,64,80,96,112,

32、128,144,160,176,192,208,224,240,255,0,79,56,43,34,27,21,15,10,5,-1,-6,-11,-18,-26,-40,0 /*存放A/D转换值和温度值的表*/ ; #define LCD1602_D03_PTB03 PTCD /*1602液晶屏数据接口低4位接C口低4位*/#define LCD1602_D47_PTD03 PTDD /*1602液晶屏数据接口高4位接D口低4位*/#define LCD1602_RS PTGD_PTGD0 /*1602液晶屏数据选择接口接G口0位*/#define LCD1602_RW PTGD_PTGD1

33、 /*1602液晶屏读写选择接口接G口1位*/#define LCD1602_E PTGD_PTGD2 /*1602液晶屏信号使能接口接G口2位*/signed int Temperature; /*温度*/char neg_flag=0; /*温度正负标志,正时为0,负时为1*/int s,g; /*温度十位,个位*/unsigned int adc_value; /*通道电压值*/*函数声明*/void data_deal(void); /*数据处理程序*/void adc_init(void) ; /*ADC初始化程序*/signed int GetTemperature(int Val

34、ue); /*查表得到温度程序*/unsigned int convert_begin(void); /*启动转换*/void delay40us(int count); /*LCD显示延时程序*/void RS_RW_E_init(void); /*LCD1602控制程序*/void LCD1602_DB(char x ,char y); /*LCD1602数据接口*/void LCD1602_init(void); /*LCD1602数据接口*/void LCD1602_write_dat(char x,char y); /*写数据程序*/void LCD1602_display(void

35、); /*LCD1602显示程序*/void PORT_init(void) ; /*I/O口初始化程序*/*/* * *函数名称:delay40us()* *作用:延时*/void delay40us(int count) int i; for(i=0;icount;i+) _RESET_WATCHDOG(); /* * *函数名称:adc_init()* *作用:A/D模块初始化*/void adc_init(void) APCTL1=0X01; /*ADCP01引脚I/O无效,即B口0位*/ ADC1CFG=0X00; /*高速模式 8位精度,ADCK=总线频率*/ ADC1SC2=0X

36、00; /*软件触发,比较功能禁止*/ ADC1SC1=0X00; /*禁止转换完成中断,单次转换*/* * *函数名称:convert_begin()* *作用:启动A/D转换*/unsigned int convert_begin(void) unsigned int Vtemp; ADC1SC1=0X00; /* 写ADC1SC1启动转换*/ while(!(ADC1SC1_COCO); /* 等待转换结束 */ Vtemp=ADC1RL; /*读取转换结果 */ return Vtemp; /* 返回结果 */* * *函数名称: GetTemperature()* *作用:查表与插值

37、程序得到温度值*/signed int GetTemperature(int Value) signed int T; int i; if(Value= V_T_table015) T=V_T_table115; /* 当A/D转换值在240255时,按-40摄氏度赋值 */ else for(i=1;i V_T_table0i)&(Value V_T_table0i+1) T=(V_T_table1i+1-V_T_table1i)*100)/16; T=T*(Value-V_T_table0i); /* 没有,找到区间并插值 */ T=V_T_table1i+T/100; break; re

38、turn T; /* 返回温度值T */ /* * *函数名称:data_deal()* *作用:实现十位,个位的分离*/void data_deal(void) if(Temperature0) /* 温度为负 */ neg_flag=1; /* neg_flag为1*/ Temperature=-Temperature; /* 取正*/ else neg_flag=0; s= Temperature/10; /* 分离十位*/ g= Temperature-s*10; /* 分离个位*/* * *函数名称:RS_RW_E_init()* *作用:LCD1602控制*/void RS_RW_

39、E_init(void) LCD1602_RS=0; LCD1602_RW=0; LCD1602_E =1; delay40us(10000); LCD1602_E =0;/* * *函数名称LCD1602_DB()* *作用:数据接口*/void LCD1602_DB(char x ,char y) LCD1602_D03_PTB03 =x; LCD1602_D47_PTD03 =y;/* * *函数名称:LCD1602_init()* *作用LCD1602初始化*/void LCD1602_init(void) LCD1602_DB(0x08 ,0x03); /*显示模式 8位总线 双行显

40、示 5*7点阵*/ RS_RW_E_init(); LCD1602_DB(0x04 ,0x01); /*光标移动 每输入一次该指令 光标向右移一格 整体画面不滚动*/ RS_RW_E_init(); LCD1602_DB(0x0C ,0x00); /* 屏幕开关 打开显示屏 不显示光标 不闪烁 */ RS_RW_E_init(); LCD1602_DB(0x06 ,0x00); /输入方式 RS_RW_E_init(); LCD1602_DB(0x01 ,0x00); /清屏 RS_RW_E_init(); /* * *函数名称:LCD1602_write_dat()* *作用LCD1602写

41、数据*/void LCD1602_write_dat(unsigned char x,unsigned char y) LCD1602_DB(x , y); /*需要显示的字符*/ LCD1602_RS=1; LCD1602_RW=0; LCD1602_E =1; delay40us(10000); LCD1602_E =0;/* * *函数名称:LCD1602_display()* *作用LCD1602显示*/void LCD1602_display(void) if(neg_flag) /* 如果是负,最高位显示-*/ LCD1602_DB(0x00,0x08); /*需要显示的字符的地址

42、*/ RS_RW_E_init(); LCD1602_write_dat(0x0d,0x02); else /* 如果是正,最高位显示+*/ LCD1602_DB(0x00,0x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(0x0b,0x02); LCD1602_DB(0x01,0x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0s,Disp_Value1s); LCD1602_DB(0x02,0x08); /*需要显示的字符的地址*/ RS_RW_E

43、_init(); LCD1602_write_dat(Disp_Value0g,Disp_Value1g);/* * *函数名称:PORT_init()* *作用:I/O口初始化*/void PORT_init(void) PTCDD=0XFF; PTDDD=0XFF; PTGDD=0XFF;/* * *函数名称:main()* *作用:主函数*/void main(void) PORT_init(); LCD1602_init(); adc_init(); EnableInterrupts; /* enable interrupts */ /* include your code here */ for(;) adc_value=convert_begin(); Temperature=GetTemperature(adc_value); data_deal(); LCD1602_display(); _RESET_WATCHDOG(); /* feeds the dog */ /* loop forever */ /* please make sure that you never leave main */附录B 接线原理图

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!