




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、I / 28基于基于 S08S08 的温度检测显示系统的设计的温度检测显示系统的设计II / 28摘要随着社会的进步和工业技术的发展,人们越来越重视温度对产品的影响,许多产品对温度围要求严格,目前市场上普遍存在的问题有温度信息传递不与时、精度不够的缺点,不利于工业控制者根据温度变化与时做出决定。在这样的形式下,开发一种实时性高、精度高的温度采集系统就很有必要。本设计采用一种基于单片机的数据采集系统方案,该方案根据热敏电阻随温度变化而变化的特性,采用串联分压电路。单片机采集热敏电阻的电压,通过A/D转换将模拟量电压信号转换成数字量电压信号,经过查表转换得到温度值,控制液晶屏实时显示温度值。本系统
2、中所用到的器件是飞思卡尔公司MC9S08AW60单片机、NTC热敏电阻和LCD1602液晶显示屏。关键词关键词:MC9S08AW60;热敏电阻;LCD1602III / 28目目 次次1 1 绪论绪论 1 11.1 设计背景 11.2 数据采集系统简单介绍 12 2 方案论证方案论证 3 32.1 微控制器的选择 32.2 显示方案选择 32.3 温度传感器的选择 43 3 温度测量显示系统硬件设计温度测量显示系统硬件设计 6 63.1 温度采集模块硬件设计 63.2 MCU 控制器模块设计 63.3 显示模块电路的设计 74 4 温度测量显示系统软件设计温度测量显示系统软件设计 9 94.1
3、 微控制器程序的开发环境与语言 94.2 程序设计 10总结总结 1717参考文献参考文献 1818附录附录 A A 温度采集与显示程序温度采集与显示程序 1919附录附录 B B 接线原理图接线原理图 25251 / 281 1 绪论绪论1.11.1 设计背景设计背景在人类的生活环境中,温度扮演着极其重要的角色。无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。自18世纪工业革命以来,工业发展对是否能掌握温度有着绝对的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推进了温度传感器的发展。进入21世纪
4、后,温度传感器正朝着高精度、多功能、总线标准化、高可靠性与安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。在工农业生产中,温度检测与其控制占有举足轻重的地位,随着现代信息技术的飞速发展和传统工业改造的逐步实现 ,能够独立工作的温度检测和显示系统已经应用于诸多领域。要达到较高的测量精度需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差等问题,使温度检测复杂化。模拟信号在长距离传输过程中,抗电磁干扰时令设计者伤脑筋的问题,对于多点温度检测的场合,各被检测点到监测装置之间引线距离往往不同,此外,各敏感元件参数的不一致,这些都是造成误差的原因,并且难
5、以完全清除。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。采用单片机对温度采集进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控数据的技术指标,从而能够大大提高产品的质量和数量。1.21.2 数据采集系统简单介绍数据采集系统简单介绍随着自动控制的发展,数据采集越来越被广泛应用,如医疗、工业等方面,2 / 28数据采集是指将温度,压力,流量,位移等模拟量通过各种传感元件做适当转换后,再经信号调理、采样、量化、编码、传输等步骤采集,转换成数字量后,传给PC 机进行存储
6、,处理,显示或打印的过程,相应的系统称为数据采集系统,可分为以下几种:1.基于通用微型计算机的数据采集系统将采集来的信号通过外部的采样和A/D转换后的数字信号通过接口电路送入微机进行处理,然后再显示处理结果或经过D/A转换输出,主要有以下几个特点:(1) 系统较强的软、硬件支持。通用微型计算机系统所有的软硬件资源都可以用来支持系统进行工作。(2) 具有自开发能力。(3) 系统的软硬件的应用配置比较小,系统的成本较高,但二次开发时,软硬件扩展能力较好。(4) 在工业环境中运行的可靠性差,对安放的环境要求较高;程序在RAM 中运行,易受外界干扰破坏。2.基于单片机的数据采集系统它是由单片机与其些外
7、围芯片构成的数据采集系统,是近年来微机技术快速发展的结果,它具有如下特点:(1) 系统不具有自主开发能力,因此,系统的软硬件开发必须借助开发工具。(2) 系统的软硬件设计与配置规模都是以满足数据采集系统功能要求为原则,因此系统的软硬件应用配置具有最佳的性价比。系统的软件一般都有应用程序。(3) 系统的可靠性好、使用方便。应用程序在ROM 中运行不会因外界的干扰而破坏,而且上电后系统立即进入用户状态。3.基于DSP数字信号微处理器的数据采集系统DSP数字信号微处理器从理论上而言就是一种单片机的形式,常用的数字信号处理芯片有两种类型,一种是专用DSP芯片,一种是通用DSP芯片。基于DSP数字信号微
8、处理器的数据采集系统的特点如下:精度高、灵活性好、可靠性好、容易集成、分时复用等,但其价格不菲。3 / 282 2 方案论证方案论证2.12.1 微控制器的选择微控制器的选择微控制器是测量显示装置的核心部分,它要负责数据的处理与控制液晶屏显示。因此,需要一个高集成度、稳定性高和体积小的微控制器,同时还要注重低成本与实际情况。AT89S52是一种低功耗、高性能8位微控制器,具有8K系统可编程FLASH存储器和256字节ROM,可实现0Hz33Hz的全静态操作,支持4.0V5.5V电源。使用Atmel公司高密度非易失性存储器技术制造,与MCS-51产品指令和引脚完全兼容。片上Flash允许程序存储
9、器在系统可编程,亦适于常规编程器。其部没有A/D转换模块,需要外部扩展模数转换芯片。S08AW60 拥有 62KB 片上在线可编程 FLASH 存储器和 2KB 片上 RAM,具有模块保护与安全选项功能,支持 2.75.5V 电源。片总线时钟最高可达 20MHz,可选择宽围的时钟频率。其部集成了高性能模/数转换器(ADC)和串行通信模块,具有很宽的工作温度围(-40+125),可适应各类恶劣环境。该芯片还可以通过 BDM 在计算机与微控制器进行在线编程与后台调试,避免频繁的插拔单片机,编译软件调试功能强大。对比之后,根据实际的应用需求,本设计选择了飞思卡尔公司生产的增强型8位微控制器MC9S0
10、8AW60(44引脚、LQFP封装)。其拥有足够大的FLASH存储器和ROM,并带有高性能模/数转换器。另外,体积小,稳定性高,调试方便。2.22.2 显示方案选择显示方案选择方案一:LED数码管显示器可分为两种显示方式:静态显示和动态显示。LED数码管静态显示,多片七段译码器驱动显示,这不仅增加了成本,还需要占用单片机多个I/O口,也给电路的焊接带来一定的困难,因此不选用这种方案作为显示模4 / 28块,所以排除此方案。方案二:LED数码管显示器动态显示方式下,将所有位的段选线并联在起,由位选线控制哪位接收字段码。采用动态扫描显示,也就是在显示过中,轮流向各位送出字形码和相应的字位选择,同一
11、时刻只有一位显示,其他各位熄灭。但是此显示方案稳定性较差,并且还需要焊接外围电路,所以不采用此方案。方案三:LCD液晶显示,由单片机驱动.它主要用来显示大量数据、文字、图形,能够显示的位数多,显示得清晰多样、美观,同时液晶显示器的编写程序简单,价格便宜,故采用此种方案。 LCD类型繁多,价格不等。根据本设计需要显示的信息量小的特点,选用价格便宜的LCD1602液晶屏。其特点如下:(1) 液晶显示屏是以16列2行=32个510或57点阵块组成的显示字符群,每个点阵为一个字符,字符间距和行距都为一个点的宽度。(2) 具有字符发生器ROM,可以显示192种字符。(3) 具有64字节的自定义字符RAM
12、,可自定义8个57或4个510点阵字符。(4) 具有80字节的RAM。(5) 结构紧凑、轻巧、装配容易。(6) 单+5V电源供电,低功耗,长寿命,高可靠性。2.32.3 温度传感器的选择温度传感器的选择测量温度的关键是温度传感器,因此需要灵敏度高、测温围宽、稳定性好,同时还要考虑成本和实际情况。DS18B20 数字式温度传感器,使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度,同时,它可以直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化。部分功能电路的集成,使总体硬件设计更简洁,能有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化。
13、5 / 28热敏电阻的主要特点是:灵敏度较高,其电阻温度系数要比金属大10100 倍以上,能检测出 10-6的温度变化;工作温度围宽,常温器件适用于-55315,高温器件适用温度高于 315(目前最高可达到 2000) ,低温器件适用于-27355;体积小,能够测量其他温度计无法测量的空隙、腔体与生物体血管的温度;使用方便,电阻值可在 0.1100k 间任意选择;易加工成复杂的形状,可大批量生产;稳定性好、过载能力强对比之后,根据实际的应用需求,本设计采用热敏电阻。热敏电阻包括正温度系数(PTC)和负温度系数(NTC)热敏电阻,以与临界温度热敏电阻(CTR) 本设计采用 NTC 热敏电阻。NT
14、C(Negative Temperature Coeff1Cient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料该材料是利用锰、铜、硅、鈷、铁、镍、锌等两种或两种以上的金属氧化物进行充分混合、成型、烧结等工艺而成的半导体瓷,可制成具有负温度系数(NTC)的热敏电阻其电阻率和材料常数随材料成分比例、烧结气氛、烧结温度和结构状态不同而变化。它的测量围一般为-10+300,也可做到-200+10,甚至可用于+300+1200环境中作测温用。6 / 283 3 温度测量显示系统硬件设计温度测量显示系统硬件设计温度采集系统的硬件部分是由温度采集模块、MCU 控制器模块、温度显示
15、模块组成。具体框图如下图 3.1 所示:温度采集模拟量输入MCULCD显示输出 图 3.1 系统硬件框图3.13.1 温度采集模块硬件设计温度采集模块硬件设计该模块是根据热敏电阻阻值随温度变化而变化的特性,利用串联分压的特点,将热敏电阻所分的电压送到 MC9S08AW60 的模拟量输入端。具体电路原理如图 3.2 所示:123456ABCD654321DCBATitleNumberRevisionSizeBDate:12-Jan-2011Sheet of File:E:creat_pretelM yD esign 召召召.ddbDraw n By:VCCR320kR4RE S4PT B0 图
16、3.2 温度采集模块电路原理图该电路中 R4 为热敏电阻,其电压传输到 MC9S08AW60 单片机的模拟量输入端,即 B0 口。3.23.2 MCUMCU 控制器模块设计控制器模块设计MC9S08AW60的外部工作电路如图3.3所示。Vddad和Vssad是MCU部模拟电路的电源,给模数转换器(ADC)模块供电,VREFH和VREFL是模数转换的参考电压。Vdd和Vss是S08MCU主要的电源引脚,工作电压围是2.7V5.5V,在该电路中提供的7 / 28是5V电压。在Vdd和Vss之间接10F钽电容器和0.1F的瓷旁路电容器,10F钽电容器来为系统提供大容量的电荷存储,同时应在离MCU电源
17、管脚尽可能近的地方安装一个0.1F的瓷旁路电容器来抑制高频噪音。123456ABCD654321DCBATitleNumberRevisionSizeBDate:12-Jan-2011Sheet of File:E:creat_pretelMyD esign 召召召.ddbDraw n By:PT B0PT B1PT B2PT B3PT D0PT D1VssadVddadPT D2PT D3PT G3VrefhVreflBKGDPTG5PTG6VssPTC0PTC1PTC2PTC3PTC5PT C4IRQRE SETPT F0PT F1PT F4PT F5PT E0PT E1PT E2PT E
18、3PTE4PTE5PTE6PTE7VssVddPTG0PTG1PTG2PTA0PTA1MC9S08AW60 44-Pin L QFP4MR11MC127pFC227pFC30.1uFR24.7kS1C40.1uFVCCC510uFVCC 图3.3 MC9S08AW60外部工作电路原理图该电路为MCU控制器电路,其中,G0、G1、G2口分别与LCD1602的RS、R/W、E引脚连接;C0C3口与LCD1602的DB0DB3引脚连接;D0D3口与LCD1602的DB4DB7引脚连接。.B0口是模拟量输入端,用于输入热敏电阻的电压。3.33.3 显示模块电路的设计显示模块电路的设计该模块是利用 LC
19、D1602 液晶屏显示,显示的清晰度是关键,其 Vee 引脚作用是对比调整,原理是该引脚输入电压不同,调整度不同,所以采用电位器分压作为它的电压输入。Vss 与 K 引脚分别是电源地、LCD 背光电源负极,直接接地。Vcc 与 A 引脚分别是电源、LCD 背光电源正极,采用+5V 电源供电。其电路8 / 28原理图如图 3.4 所示:123456ABCD654321DCBATitleNumberRevisionSizeBDate:12-Jan-2011Sheet of File:E:creat_pretelMyDesign 召召召.ddbDrawn By:VssVccVeeRSR/WEDB0D
20、B1DB2DB3DB4DB5DB6DB7AKLCD1602R510kVCCVCCPTG0PTG1PTG2PTC0PTC1PTC2PTC3PTD0PTD1PTD2PTD3图 3.4 显示模块电路原理图该电路中,LCD1602 的 RS、R/W、E 引脚分别与 MC9S08AW60 的 G0、G1、G2口连接;DB0DB3 引脚分别与 MC9S08AW60 的 C0C3 口连接;DB4DB7 引脚与MC9S08AW60 的 D0D3 口连接。9 / 284 4 温度测量显示系统软件设计温度测量显示系统软件设计4.14.1 微控制器程序的开发环境与语言微控制器程序的开发环境与语言在前面,本设计已经选
21、择了MC9S08AW60微控制器,飞思卡尔的微控制器有其专用的开发环境软件CodeWarrior IDE。同时,CodeWarrior IDE可以在不同的操作系统(包括Windows, Macintosh和Linux)下使用,而且在这些操作系统下的界面完全一样。本设计使用CodeWarrior6.3版,其界面如图4.1所示,只要在右边打开main.c窗口就可以进行程序编写。 图 4.1 CodeWarrior6.3 程序开发界面在对微控制器进行编程时,可以用汇编语言或者C语言,甚至可以二者混合编程。CodeWarrior IDE支持汇编语言,C、C+和Java高级语言。C语言功能丰富、表达能力
22、强、使用灵活方便、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,是国外广泛使用的一种计算机语言。本设计使用C语言对微控制器进行编程,其能直接操作微控制器的硬件和接口,10 / 28生成的机器代码也是高水平的。4.24.2 程序设计程序设计本设计程序主要包括 A/D 转换模块程序、热敏电阻阻值和温度的非线性对性模块程序、温度显示模块程序,其总程序流程图如图 4.2 所示:开始MCU LCD初始化模拟量输入启动A/D转换查表得到温度值温度值处理LCD显示结束图 4.2 系统程序总流程图4.2.1 A/D 转换原理与程序传感器获得的信号由于是模拟信号,而CPU处理的是数
23、字信号,故要经过模数转换。在MC9S08AW60芯片中集成了一个8位/10位精度可选的逐次逼近式ADC模块,使用时不需再扩展片外的A/D转换器。逐次逼近式ADC是一个具有反馈回路的循环系统,主要部件有电压比较器、逐次逼近寄存器(SAR) 、结果寄存器、数字/模拟转换器(Digital -To- Analog,DAC)和控制电路,如图4.3所示。逐次逼近式ADC用DAC的输出电压来11 / 28驱动比较器的反相端。转换时,要用一个逐次逼近寄存器存放转换出来的数字量;转换结束时,将数字量送到结果寄存器。逐次逼近寄存器(SAR)结果寄存器CLK转换标志D/A 转换器控制电路+-ViVo电压比较器 图
24、4.3 逐次逼近式ADC原理图逐次逼近ADC原理是:首先设置SAR中的最高位为1,其余位为0,经D/A转换器转换成模拟电压VO,然后将VO与输入电压Vi在电压比较器中进行比较。如果ViVO,则置1保留,并使下一位置1。如果ViVO,则这一位给予清除,然后使下一位置1。按上述方法对次高位进行转换、比较、判断,决定次高位应取1还是0。重复上述过程,直到确定SAR最低位为止。这时控制电路送出一个转换结束标志信号,这个信号将SAR中的数字量送入结果寄存器供CPU使用。本设计中,由于在S08AW60芯片中的SCI数据寄存器只有8位,所以模数转换选择8位精度,以满足实际情况。针对振动信号高频多变,在ADC
25、初始化中选择连续转换、高速转换和短采样时间。C语言编写的MC9S08AW60微控制器中A/D转换的节选程序代码如下:/* * *函数名称:adc_init()* *作用:A/D模块初始化*/void adc_init(void) APCTL1=0X01; /*ADCP01引脚I/O无效,即B口0位*/12 / 28 ADC1CFG=0X00; /*高速模式 8位精度,ADCK=总线频率*/ ADC1SC2=0X00; /*软件触发,比较功能禁止*/ ADC1SC1=0X00; /*禁止转换完成中断,单次转换*/* * *函数名称:convert_begin()* *作用:启动A/D转换*/un
26、signed int convert_begin(void) unsigned int Vtemp; ADC1SC1=0X00; /* 写ADC1SC1启动转换*/ while(!(ADC1SC1_COCO); /* 等待转换结束 */ Vtemp=ADC1RL; /*读取转换结果 */ return Vtemp; /* 返回结果 */4.2.2 热敏电阻阻值和温度的非线性对性模块原理与程序热敏电阻的阻值温度特性曲线是一条指数曲线,非线性度较大,因此在使用时要进行线性化处理。可采用简单的查表法从电压值中查出相应的温度值。预先将一系列温度与电压对应值存贮到 AW60 微控制器程序存储器中的一个表
27、,当给定任意一个电压值时,即可通过查表得出所对应的温度值。当表中没有对应的电压值时,可找出电压值在表中的区域,然后在区间的相邻两点经线性插值得出对应温度值。存入表中点的多少影响温度值的精度。这里以选 16 个点为例,选 8 位模式 A/D 可转换结果围是 0255,因此每两个点的间隔是 16。使用插值算法如下: 1_12/121xValueADxxyyyT13 / 28(4.1)式中:当前温度;T当前温度的 A/D 转换值;ValueAD_,相邻点的温度值;2y1y,相邻点的 A/D 转换值;2x1x当 A/D 转换结果在区间 016 或 240255 时,不再计算,直接按温度值79或-40处
28、理。C语言编写的获得温度值的节选程序代码如下:/* * *函数名称: GetTemperature()* *作用:查表与插值程序得到温度值*/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*(
29、Value-V_T_table0i); /* 没有,找到区间并插值 */ T=V_T_table1i+T/100; break; return T; /* 返回温度值 T */4.2.3 温度显示模块程序LCD1602 采用+5V 电压驱动,其数据接口和读写控制引脚与 MC9S08AW60 单片机的 I/O 口直接相连。MC9S08AW60 单片机将采集到的模拟电压值经过 A/D 转换后,查表得到温度值,通过 I/O 口传输给 LCD1602 显示。C语言编写的温度值显示的节选程序代码如下:/* * *函数名称:LCD1602_init()* *作用LCD1602初始化*/void LCD16
30、02_init(void) LCD1602_DB(0 x08 ,0 x03); /*显示模式 8位总线 双行显示 5*7点阵*/ RS_RW_E_init();15 / 28 LCD1602_DB(0 x04 ,0 x01); /*光标移动 每输入一次该指令 光标向右移一格 整体画面不滚动*/ RS_RW_E_init(); LCD1602_DB(0 x0C ,0 x00); /* 屏幕开关 打开显示屏 不显示光标 不闪烁 */ RS_RW_E_init(); LCD1602_DB(0 x06 ,0 x00); /输入方式 RS_RW_E_init(); LCD1602_DB(0 x01 ,0
31、 x00); /清屏 RS_RW_E_init(); /* * *函数名称:LCD1602_display()* *作用LCD1602 显示*/void LCD1602_display(void) if(neg_flag) /* 如果是负,最高位显示-*/ LCD1602_DB(0 x00,0 x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(0 x0d,0 x02); else /* 如果是正,最高位显示+*/ LCD1602_DB(0 x00,0 x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD16
32、02_write_dat(0 x0b,0 x02); 16 / 28 LCD1602_DB(0 x01,0 x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0s,Disp_Value1s); LCD1602_DB(0 x02,0 x08); /*需要显示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0g,Disp_Value1g);17 / 28总结总结设计就是要讲究严谨,在这三周的创新设计中,我学到了很多知识,也使我的能力得到了提升。首先,硬件方面。选
33、择硬件,要比较同类产品的稳定性、功耗、体积、价格等,另外还要符合设计的全部要求。在显示方案上,我考虑的时间相对长了一点。利用数码管显示,程序复杂,但是,自己编程比较熟悉,价格便宜。利用 LCD1602 显示,程序简单,但是以前自己从未使用过。经过比较,我选择LCD1602,这样可以学到新知识,提高自己的知识水平。在硬件电路的设计方面,用 Protel 绘制电路图时要标明元件的大小,有些封装元件要标明名称和封装。其次,软件方面。把程序分块编写能够有效地提高正确性和编程效率。在本次设计中,编程采取了“两步走”:第一步,我把温度采集部分的程序调试成功,其中包括 A/D 转换程序。这就要求必须对 A/
34、D 转换原理了解与 A/D 转换寄存器熟悉。第二步,我把显示程序调试成功。这部分需要对 LCD1602 的时序有充分的了解和足够的认识,这也是 LCD1602 与 LED 数码管的不同之处。经过查资料和编程实验,最后使 LCD1602 正常显示数据。在软件编写时,还要注意添加注释,使程序更加清晰,便于理解。总而言之,在王老师的带领和指导下,我顺利的完成了创新设计,完成了老师交给的任务。18 / 28参考文献参考文献1 王威嵌入式微控制器 S08AW 原理与实践M:航空航天大学,20092 杰. 传感器与检测技术M:高教,20043 邵贝贝. 龚光华.单片机认识与实践M.:航空航天大学,2006
35、4阎石. .数字电子技术基础(第三版). . :高等教育,19895兰荪.数据采集与处理M:能源,19876沙占友、王彦朋、孟志永.单片机外围电路设计.电子工业,20037宜仁.单片机实用技术问答. 人民邮电,20038传友、汉泽西.测控系统原理与设计.航空航天大学,20029 章吉良,周勇,戴旭涵等微传感器原理、技术与应用M:交通大学,200519 / 28附录附录 A A 温度采集与显示程序温度采集与显示程序/* * *文件名Temprature_LCD1602.c* *MCU:MC9S08AW60* *调试环境:CodeWarrior v6.3* *日期:2010.12*/#includ
36、e /* for EnableInterrupts macro */#include derivative.h /* include peripheral declarations */const unsigned char Disp_Value210=0 x00,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x03,0 x03,0 x03,0 x03,0 x03,0 x03,0 x03,0 x03,0 x03,0 x03 ; /*存放显示段码*/const signed int V_T_table217=0,16,32,48,
37、64,80,96,112,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 口
38、0 位*/#define LCD1602_RW PTGD_PTGD1 /*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) ;
39、 /*ADC 初始化程序*/signed int GetTemperature(int Value); /*查表得到温度程序*/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
40、(char x,char y); /*写数据程序*/void LCD1602_display(void); /*LCD1602 显示程序*/20 / 28void 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 引脚
41、 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); /* 等待转换结束 */ Vtemp=ADC1RL; /
42、*读取转换结果 */ return Vtemp; /* 返回结果 */* * *函数名称: GetTemperature()* *作用:查表与插值程序得到温度值*/signed int GetTemperature(int Value) signed int T;21 / 28 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_table
43、1i)*100)/16; T=T*(Value-V_T_table0i); /* 没有,找到区间并插值 */ T=V_T_table1i+T/100; break; return 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; /* 分
44、离十位*/ g= Temperature-s*10; /* 分离个位*/* 22 / 28* *函数名称:RS_RW_E_init()* *作用:LCD1602 控制*/void RS_RW_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;/* * *函数名
45、称:LCD1602_init()* *作用LCD1602 初始化*/void LCD1602_init(void) LCD1602_DB(0 x08 ,0 x03); /*显示模式 8 位总线 双行显示 5*7 点阵*/ RS_RW_E_init(); LCD1602_DB(0 x04 ,0 x01); /*光标移动 每输入一次该指令 光标向右移一格 整体画面不滚动*/ RS_RW_E_init(); LCD1602_DB(0 x0C ,0 x00); /* 屏幕开关 打开显示屏 不显示光标 不闪烁 */ RS_RW_E_init(); LCD1602_DB(0 x06 ,0 x00); /输入方式 RS_RW_E_init(); LCD1602_DB(0 x01 ,0 x00); /清屏 RS_RW_E_init(); /* * *函数名称:LCD1602_write_dat()* *作用LCD1602 写数据*/void LCD1602_write_dat(unsigned char x,unsigned char y)23 / 28 LCD1602_DB(x , y); /*需要显示的字符*/ LC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度融资担保合同印花税税率调整与风险防范
- 二零二五年度车辆过户与税费结算合同协议
- 2025年度生物制药企业股权投资协议
- 2025年度美容美发技术培训学徒合同
- 2025年度珠宝店国际市场拓展与合作协议
- 二零二五年度劳动合同下员工健康管理与福利保障协议
- 2025河南天缘精工模具股份有限公司招聘16人笔试参考题库附带答案详解
- 教学微视频设计与开发知到智慧树章节测试课后答案2024年秋浙江工业大学
- 健身减压与形体修塑知到智慧树章节测试课后答案2024年秋西安文理学院
- 第25课+中华人民共和国成立和向社会主义的过渡+高一上学期统编版(2019)必修中外历史纲要上
- 2024年济南护理职业学院高职单招语文历年参考题库含答案解析
- 2025广东省国家税务局系统事业单位招聘400人历年高频重点提升(共500题)附带答案详解
- 投行竞争格局-洞察分析
- 考研学习笔记 《国际贸易实务》(第6版)笔记和课后习题(含考研真题)详解-1-200
- 【课件】溶质的质量分数(第1课时)九年级化学人教版(2024)下册
- 2024年01月23649电气控制与PLC期末试题答案
- 餐饮业供应链管理指南
- 2025高考数学专项复习:导数的27个模块专练(含答案)
- 涵洞工程专项施工方案
- DB32-T 4107-2021 民用建筑节能工程热工性能现场检测标准
- 七年级上册生物2024-2025学年新人教版期末综合试卷(含答案)
评论
0/150
提交评论