温度数显表毕设论文

上传人:仙*** 文档编号:37488526 上传时间:2021-11-03 格式:DOC 页数:28 大小:990KB
返回 下载 相关 举报
温度数显表毕设论文_第1页
第1页 / 共28页
温度数显表毕设论文_第2页
第2页 / 共28页
温度数显表毕设论文_第3页
第3页 / 共28页
点击查看更多>>
资源描述
哈尔滨工业大学(威海)毕业设计(论文)摘要温度是工业控制中主要的被控参数之一,温度测量在参数测量中占据重要地位关键词单片机;数显表;热电阻 不要删除行尾的分节符,此行不会被打印- 28 -1 绪论1.1 课题背景温度数显表的使用广泛温度是工业控制中主要的被控参数之一,无论在工业、农业、科学研究、国防和人们日常生活的各个方面,温度测量和控制都是极为重要的课题 。随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求都很严格。对于不同场所、不同工艺,所需温度高低范围不同、精度不同,则采用的测温元件、测温方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同,因而,对温度的测控方法多种多样。单片机在温度测量系统中应用广泛,根据单片机系统设计要求的不同,温度测量系统的设计也有所不同,有采用集成芯片的,也有采用恒流源器件和恒压源器件的。温度温度数显表是在20世纪90年代中期问世的。它是微电子技术、计算机技术和自动测试技术的结晶。目前,国际上已开发出多种智能温度传感器系列产品。智能温度数显表内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度数显表的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。1.2 题目简介1.2.1主要研究内容 设计一种基于PT100热电阻的温度数显表。具有实时显示当前温度的功能,可设定温度上下限值并有超限报警,同时可以通过RS485与上位机通讯。 1、选用一款单片机; 2、设计信号检测电路;3、对检测数据进行滤波等处理; 4、显示检测数据; 学生本人在该设计中具体完成的工作:硬件设计包含了铂热电阻测量模块、A/D转换模块、键盘模块、显示模块、通讯模块及主控制模块等的设计原理及电路,软件编程与硬件设计相对应。1.2.2研究方案研究方案:设计电桥将热电阻阻值的变化转化为电信号电压的变化,将电信号输出后接入运算放大器,然后再将放大后的信号输入到A/D转换电路,然后接入单片机,通过单片机在LED显示屏上显示数据。键盘模块与单片机相连,用于设置所用开关键,并且用于设置温度上下限,此模块用电路搭建,并用C语言编程控制。选择一款单片机后,用C语言编程进行滤波和线性补偿并查表找到电压变化所对应的温度值,输出。通讯模块用于将单片机通过RS485与PC机相连,通过LED显示屏显示数据。系统框图图1-1 系统方框图2 器件选型及介绍2.1 单片机的选型2.1.1 STC89C52RC单片机介绍STC89C51RC/RD+系列单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路。它有以下特点:(1) 增强型6时钟/机器周期,12时钟/机器周期 8051 CPU;(2) 工作电压:5.5V3.4V(5V单片机) / 3.8V2.0V(3V单片机)本次设计选用5V单片机;(3) 工作频率范围:040 MHz,相当于普通8051的080MHz.实际工作频率可达48MHz;(4) 用户应用程序空间 4K / 8K / 13K / 16K / 20K / 32K / 64K字节;(5) 片上集成 1280字节 / 512字节 RAM;(6) 通用I/O口(32/36个),复位后为: P1/P2/P3/P4是准双向口/弱上拉 (普通8051传统I/O口)P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻;(7) ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器可通过串口 (P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成一片;(8) EEPROM功能;(9) 看门狗;(10) 内部集成MAX810专用复位电路 (D版本才有),外部晶体20M以下时,可省外部复位电路;(11) 共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用;(12) 外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒;(13) 通用异步串行口(UART),还可用定时器软件实现多个UART;(14) 工作温度范围:075 / -40+85;(15) 封装: LQFP-44,PDIP-40,PLCC-44,PQFP-44,如选择STC89系列,本次选择PDIP-40封装。STC89C52RC的引脚图如图3-15所示: 图1-2 STC89C52RC的引脚图STC89C52RC具有4级6个中断源,主要用于单片机的实时测控,可以使单片机及时的响应和处理单片机外部或内部事件所提出的中断请求。外部中断有外部中断0和外部中断1两类,它是由外部原因引起的中断。外部中断的触发有2种方式:电平触发方式和跳沿触发方式。电平触发方式适合于外部中断以低电平输入而且中断服务程序能清除外部中断源的情况,即外部中断输入电平又变为高电平的情况。跳沿触发方式适合于以负脉冲形式输入的外部中断请求。定时器溢出中断是为满足与时间技术相关的实际需要而设置的。在单片机芯片内部有3个定时器/计数器,这三个定时器/计数器都具有定时器和计数器两种工作方式。计数功能是对外来脉冲进行计数,每当计数器的计数输入引脚的脉冲发生负跳变时,计数器加1。定事功能也是通过计数器的计数来实现的,此时的计数脉冲来自单片机内部,每个机器周期产生1个计数脉冲,也就是每经过1个机器周期的时间计数器加1。串行中断是为串行数据传送的需要而设置的。每当串行口接受或发送完一组串行数据时均产生一个中断请求。STC89C52RC单片机与中断控制有关的寄存器有:定时控制寄存器TCON、中断允许控制寄存器IE、中断优先控制寄存器EP、串行口控制寄存器SCON和定时器操作模式寄存器TMOD。STC89C52RC单片机内部有一个功能强大的全双工的异步通信串行口。串行通信是指数据的所有位都按一定的顺序和方式,逐步通过串行输入/输出口进行传输。异步通信是指收发双方没有统一的公共时钟,采用应答方式通信。STC89C52RC单片机串行口有两个在物理上独立的接受、发送缓冲器SBUF,可以同时发送、接收数据,发送缓冲器只能写入数据而不能读出,接受缓冲器则只能读出数据而不能写入数据,两个缓冲器共用一个特殊功能寄存器SBUF。串行口工作模式由特殊功能寄存器SCON的SMO, SM1位定义,它的四个工作模式如表2所示。表2 STC89C52RC串行口工作模式表SM0SM1MODE功能描述波特率000移位寄存器fosc/120118位UART波特率可变1029位UARTfosc/64或fosc/321139位UART波特率可变STC89C52RC的特殊功能寄存器如表3所示。表3 STC89C52RC特殊功能寄存器表名称说明地址ACC累加器E0HBB寄存器F0HDPTR数据指针(双字节)DPH数据指针高字节83HDPL数据指针低字节82HIE中断使能A8HIP中断优先级B8HP0I/O口080HP1I/O口190HP2I/O口2A0HP3I/O口3B0HPCON电源控制87HPSW程序状态字D0HSBUF串口数据缓冲区99HSCON串行口控制98HSP堆栈指针81HTCON定时器控制88HT2CON定时器2控制C8HT2MOD定时器2模式控制C9HTH0定时器高字节08CHTH1定时器高字节18DHTH2定时器高字节2CDHTL0定时器低字节08AHTL1定时器低字节18BHTL2定时器低字节2CCHTMOD定时器模式89H2.2 铂热电阻简介 铂热电阻是利用铂丝的电阻值随着温度的变化而变化这一基本原理设计和制作的,按0时的电阻值R()的大小分为10欧姆(分度号为Pt10)和100欧姆(分度号为Pt100)等,测温范围均为-200850.10欧姆铂热电阻的感温原件是用较粗的铂丝绕制而成,耐温性能明显优于100欧姆的铂热电阻,只要用于650以上的温区:100欧姆铂热电阻主要用于650以下的温区,虽也可用于650以上温区,但在650以上温区不允许有A级误差。100欧姆铂热电阻的的分辨率比10欧姆铂热电阻的分辨率大10倍,对二次仪表的要求相应地一个数量级,因此在650以下温区测温应尽量选用100欧姆铂热电阻。 感温元件骨架的材质也是决定铂热电阻使用温区的主要因素,常见的感温元件有陶瓷元件,玻璃元件,云母元件,它们是由铂丝分别绕在陶瓷骨架,玻璃骨架,云母骨架上再经过复杂的工艺加工而成。由于骨架材料本身的性能不同,陶瓷元件适用于850以下温区,玻璃元件适用于550以下温区。近年来市场上出现了大量的厚膜和薄膜铂热电阻感温元件,厚膜铂热电阻元件是用铂浆料印刷在玻璃或陶瓷底板上,薄膜铂热电阻元件是用铂浆料溅射在玻璃或陶瓷底板上,再经光刻加工而成,这种感温元件仅适用于-70500温区,但这种感温元件用料省,可机械化大批量生产,效率高,价格便宜。 就结构而言,铂热电阻还可以分为工业铂热电阻和铠装铂热电阻。工业铂热电阻也叫装配铂热电阻,即是将铂热电阻感温元件焊上引线组装在一端封闭的金属管或陶瓷管内,再安装上接线盒而成;铠装铂热电阻是将铂热电阻元件,过渡引线,绝缘粉组装在不锈钢管内再经模具拉实的整体,具有坚实,抗震,可绕,线径小,使用安装方便等优点。本题目选用的传感器为PT100。 图1-3 PT1003 硬件电路的设计该智能温度数显表主要具有温度显示,超限报警,用户自定义温度范围,控制降温设备的继电器开关几项功能,据此,将其硬件电路划分为电源电路、LM75A的数据采集电路、LED显示电路、键盘电路和超限措施电路五部分,下面将对其一一进行介绍。3.1 温度信号的采集电路的设计 温度信号的采集使用桥电路原理:电桥是在工业测量过程中进行电阻-电压转换的常用电路, 具有结构简单及良好的动态品质特点,但存在的问题是桥臂电阻和电桥输出电压之间的非线性。如图1 所示, , =/ 构成桥电路。在桥臂电阻产生的变化时,电桥输出电压变化为,如式(1)所示; (1) 图3-1 桥电路 3.2 信号放大器的选择仪用放大器AD620是由三个放大器所共同组成,其的电阻R与 Rx需在放大器的电阻用范围内(1k 10k )。我们可以调整 Rx 来调整放大的增益值,其关系式如式(1)所示,必须注意避免每个放大器的饱和现象(放大器最大输出为其工作电压Vdc) (1)图3-2AD620 的基本特点为精确度高、使用简易、低噪声,应用十分广泛,表 1 为 AD620 的规格特性总览。项目规格特性备注增益范围11000只需一个电阻即可设定电源供应范围2.3V18V低耗电量max supply current =1.3mA 可用电池驱动,方便应 用于可携式器材中精確度高40 ppm maximum nonlinearity; low offset voltage of 50V max.; offset drift of 0.6V/ max.低噪声Low input voltage noise of 9nV/ Hz at 1kHz应用场合ECG 量测与医疗器材、压力量测、V/I 转换、 资料撷取系统等。AD620 仪表放大器的脚位图如图2所示。其中1、8接脚要跨接一个电阻来调整放大倍率(作用同式(1)中之 Rx),4、7 接脚需提供正负相等的工作电压,由 2、3 接脚 输入的放大的电压即可从接脚 6 输出放大后的电压值。接脚 5 则是参考基准,如果接地则接脚6的输出即为与地之间的相对电压。AD620 的放大增益关系式如式(2)、式 (3)所示,由此二式我们即可推算出各种增益所要使用的电阻值了。 (2) (3)图3-33.3 AD转换电路的设计A/D转换有很多方式,可以利用多谐振荡器实现A/D转换,而单片机STC89C52RC内部有一个模拟信号比较器 ,P1.0和 P1.1兼作模拟信号比较器的同相输入端和反相输入端 ,模拟信号比较器的比较结果存入 P3.6对应的寄存器 ,P3.6在 STC89C52RC外部无引脚。利用这个模拟信号比较器和锯齿波信号发生器电路就可以组成一个A/D转换电路 ,把 P1.1输入的模拟信号转换成数字信号。这次设计采用最常用的ADC0809作为A/D转换器。ADC0809是八位逐次逼近式A/D转换器,是一种单片CMOS器件,包括8位的模/数转换器、8通道多路转换器和与微分处理器兼容的控制逻辑。8通道多路转换器能直接连通8个单端模拟信号中的任何一个。ADC08909设计时考虑到了若干种模/数转换技术的长处,适用于过程控制和机床控制。ADC0809的引脚图如图3-6所示。它的片内带有锁存功能的8路模拟多路开关,可对8路05V的输入模拟电压信号分时进行转换,片内具有多路开关的地址译码和锁存电路、比较器、256R电阻T型网络、树状电子开关、逐次逼近寄存器SAR、控制与时序电路等。输出具有TTL三态锁存缓冲器,可直接连到单片机数据总线上。ADC0809的分辨率为8位,最大不可调误差小于1LSB,单一+5V供电,模拟输入范围为05V,具有锁存控制的8路模拟开关,可锁存三态输出,输出与TTL兼容。不必进行零点和满度调整,转换速度取决于芯片的时钟频率(由于单片机STC89C52RC外部晶振采用的是12MHz晶振,故需对频率进行四分频。ADC0809的引脚功能如下:IN0IN7:8路输入通道的模拟量输入端口;START :为启动控制输入端口;ALE :为地址锁存控制信号端口,可以和START端口连接在一起,当通过软件输入一个正脉冲,便立即启动模/数转换;EOC :为转换结束信号脉冲输出端口;OE :为输出允许控制端口,可以和EOC端口连接在一起表示转换结束。OE端的电平由低到高,打开三态输出锁存器,将转换结果的数字量输出到数字总线上;REF(+) :参考电压输入端口;REF(-) :参考电压输入端口;Vcc :主电压输入端口;GND :接地端;CLK :时钟输入端;ADDA,B,C:8路模拟开关的3位地址选通输入端,以选择对应得输入通道。在本次设计中采用8路信号输入端,采集8路模拟信号,故ADDA,B,C应分别接单片机的3个I/O口进行选择通道。 图3-6 ADC0809引脚图ADC0809的工作过程是:首先输入3位地址,并使地址锁存允许信号ALE为1,将地址存入地址锁存器中,此地址经译码选通8路模拟输入之一。A/D转换启动信号START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后A/D转换结束信号EOC输出变低,指示转换正在进行。直到A/D转换完成,A/D转换结束信号EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当数据输出允许信号OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。 ADC0809与STC89C52RC的连接见图3-7所示, 虽然接的是中断口,但是ADC0809的工作方式采用为查询方式。图3-7ADC0809与STC89C52RD的连接3.3.2 74LS74芯片74LS74是双上升沿D触发器(有预置、清除端)1CP、2CP为时钟输入端,1D、2D为数据输入端,Q、/Q为输出端,CLR为直接复位端(低电平有效),PRE为直接置位端(低电平有效)。3.4 显示电路的设计3.4.1 LED简介发光二极管显示器是单片机应用产品中常用的廉价输出设备。它是由若干个发光二极管组成显示的字段。当二极管导通时相应的一个点或一个笔划发光,通过控制发光二极管的亮暗的不同组合,就可以显示出多种数字、字母及其他符号。本次设计采用的是由7段型发光二极管(ag7段)和1个圆点型发光二极管(常以dp表示,主要用来显示小数点)组成的8段数码显示器。LED 数码显示器有两种结构:将所有发光二极管的阳极连在一起,称为共阳接法,公共端接高电平,当某个字段的阴极接低电平时,对应的字段就点亮;而将所有发光二极管的阴极连在一起,称为共阴接法,公共端接低电平,当某个字段的阳极接高电平时,对应的字段就点亮。发光二极管显示其外形及共阴极、共阳极接法如图3-3所示。图3-3 LED显示器外形及共阴极、共阳极接法为了显示各个数字或字符,就需要为LED提供相应的代码,因为这些代码是用来控制各段发光二极管的亮或灭,供显示器显示字形的,所以称为字段码(也可以称为段选码或字形码)。7段发光二极管再加上1个小数点位,共计8段,因此提供给LED显示器的字段码正好1个字节。各代码位的对应关系如表3-1所示。表3-1 代码位对应关系D7D6D5D4D3D2D1D0dpgfedcba在单片机应用系统中,实际使用的LED显示器有多个,N位LED显示器的显示要从两个方面来控制:其一是控制N位的字段显示(即显示什么字符);其二是控制字位(即哪一位到哪一位亮)。由LED的显示原理可知,要使某N位LED显示器的某一位显示某个字符,就必须将此字符转换为对应的字段码来控制该位的8个段,同时,该位的字位线也要控制有效,这要通过一定接口来实现。点亮LED 显示器有静态和动态两种方法。所谓静态显示,就是显示某一字符时,相应的发光二极管恒定的导通或截止,这种方法,每一显示位都需要一个8 位的输出口控制,占用的硬件较多,一般仅用于显示位数较少的场合。而动态就是一位一位地轮流点亮各位显示器,对每一位显示器而言,每隔一段时间点亮一次,利用人的视觉留感达到显示的目的。显示器的亮度跟导通的电流有关,也和点亮的时间与间隔的比例有关。动态显示器因其硬件成本较低,而得到广泛的应用。3.4.2 显示电路的设计由于LM75A测量温度的最大范围是-55+125,在25100时它提供2的测量精度,因此,采用四位LED即可满足显示要求。考虑到显示位数较少,选择静态显示即可。由AT89C2051单片机的串行口外接移位寄存器74LS164构成显示器接口,单片机的串行口采用方式0的输出方式。P1.7作为TXD引脚同步移位脉冲输出控制线,P1.7=0时,与门输出为0,禁止同步移位脉冲输出。这种静态显示方式的优点是亮度大,很容易做到显示不闪烁,且CPU不必频繁的为显示服务,因而主程序可以不扫描显示器;软件设计比较简单,从而使单片机有更多时间处理其他事务。具体电路图如图3-4所示。图3-4 显示电路3.5 键盘电路及工作原理3.5.1 键盘工作原理键盘在单片机应用系统中用于实现向单片机输入数据、传输命令等功能,是人工干预单片机的主要手段。键盘实质上是一组按键开关的集合,每一个按键都被赋予一个代码,称为键码。键的闭合与否,反映在行线输出电压上就是呈现高电平或低电平,通过对行线电平高低状态的检测便可以确认按键是否按下。但是,按键的闭合和释放都要经过一定的过程才能达到稳定,这一过程是出于高低电平之间的一种不稳定的状态,称为抖动。抖动持续时间的长短与开关的机械特性有关,为了避免多次处理按键的的一次闭合,应采取措施消除抖动。消除抖动的方法有两种,一种是采用硬件电路来实现,如滤波电路、双稳态电路等;另一种是利用软件来实现,即当发现有按键按下时,延时50ms左右再查询是否有按键按下,若没有按键按下,说明上次查询的结果为干扰或抖动;若有键按下,则说明闭合键已稳定,即可判断其键码。常用的键盘接口分为独立式和行列式两种,当按键较少时一般采用独立式键盘接口,此时CPU的相应方式可以是查询方式也可以是中断方式;而当按键比较多时键盘接口多采用行列式,CPU的响应方式此时一般是查询方式。 3.5.2 键盘电路的设计该智能温度数显表允许用户通过键盘设置或更改温度范围的上、下限,将最终数值存入LM75A的相应寄存器中,并且在设置过更改过程中,输入的数值能在LED上显示出来。为实现上述功能,键盘电路的设计思想如下:首先需要设置一个功能键,该键被按下后产生中断,以便用户对键盘进行下一步操作。第一次按下功能键,LED的第一位显示“H”,第二位闪烁,用户此时可以设置温度上限;第二次按下功能键,LED的第一位显示“L”,第二位闪烁,用户此时可以设置温度下限;第三次按下功能键,LED恢复正常显示状态,并将更改后的上、下限数值送入LM75A相应的寄存器中,若上、下限没有更改,则不必存入。其次需要一个移位键。在正常显示状态下,按下移位键不起作用。当功能键被按下一次或两次以后,LED的第二位闪烁,此后每按下移位键一次,闪烁位向后移动一次,用户即可对闪烁位进行相应操作。当LED第四位闪烁时,按下移位键,第二位即开始闪烁。最后,要设置能更改相应位的数值的按键。考虑到每一位数从0 逐次加一至9后可以再回到0,不需要进位功能,因此只需设置一个加一键即可满足更改数值的要求。在正常显示状态下,按下加一键不起作用。当功能键被按下一次或两次以后,按加一键即可对闪烁位进行数值的更改,每按一次,该位数值加一,加至数字为9时,再按加一键,该位数值变为0,但不向高位进位。需要注意的是,在正常显示状态下,按下移位键或加一键是不起作用的;只有在功能键被按下一次或两次后,进入设置状态,再按其他两键才能达到更改数值的目的。此外,当功能键被按下时,CPU给予中断响应,只有当功能键被按下3次才能恢复到正常显示状态,否则将一直处在中断中而不运行其他程序。由于按键个数较少,只有三个键,因此采用独立式键盘即可。采用软件查询和外部中断相结合的方式,当某个键按下时,低电平有效。键盘电路如图3-5所示。图3-5 键盘电路3.6 报警电路的设计 报警电路采用红色和绿色发光二极管分别作为超上限报警信号和超下限报警信号,由单片机的I/O口直接驱动。即由单片机读取LM75A的温度寄存器、过温关断寄存器和滞后寄存器的数值,将其进行比较,当温度值超过过温关断寄存器数值(即上限值)时,P1.6输出低电平,红色发光二极管点亮,上限报警;反之,当温度值低于滞后寄存器数值(即下限值)时,P1.4输出低电平,绿色发光二极管点亮,下限报警。需要注意的是,由于发光二极管的导通电流不能太大(小于20mA),否则会损坏,因此使用它作为报警信号时应在电路中接限流电阻,设计中使用的限流电阻是510。4 系统软件设计4.1软件开发及应用平台操作平台 : Window98/2000/XP开发工具 : Keil uVision2 C语言ISP编程软件 : PC机端控制软件STC-ISP-V3.1 4.2工具介绍4.2.1 Keil uVision2简介本软件采用Keil uVision2作为开发工具。现把它做一简单概述:KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强, 使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。4.2.2 ISP编程编程原理及注意事项单片机彻底没电后给单片机上电复位,冷起动,单片机运行系统ISP监控程序,若检测P3.0/RxD有合法下载命令流则下载用户程序进用户程序区。软复位到用户程序区后即可运行用户程序。若为检测到合法下载命令流则直接软复位到用户程序区。注意事项:(1) 外部手动复位,看门狗复位,单片机不会运行ISP程序;(2) 单片机运行ISP程序,检测有无合法下载命令流,占时几十mS几百mS,如无合法下载命令流,则立即跑用户程序;(3) 如果已设置P1.0/P1.1=0/0,才会判断是否下载用户程序,则冷启动后,如P1.0/P1.10/0,则直接跑用户程序,只会占时50uS,可忽略不计。若选择P1.0/P1.1不同时为0/0,则立即跑用户程序,跨过系统ISP监控程序;(4) PC机端的控制软件必需先发下载命令流,再给单片机上电复位。 4.3 主程序设计本设计中采用STC89C52RC作为核心处理器件,软件设计部分需要实现以下几部功能:(1) ADC0809转换控制:采集输入信号中进行模数循环转换,将ADC0809的输出数据进行数据处理,得到对应的线性数值;(2) 按键:通过按键控制可以设置系统允许对数值进行设置上下限操作,实现系统当前工作状态的切换和电路复位;(3) 显示:4位数码管动态显示;(4) 报警指示:将采集到被测当前数值与系统设置的数值上限值相比较,若当前被测数值超出所设置的数值上下限范围,则产生报警指示并输出24V电压。4.3.1 主程序流程图设计智能数显表主程序要初始化,然后开放CPU中断,启动定时器工作,进行数据处理并在显示器和键盘管理子程序的重复执行,当超过所设定的上限值时进行报警处理。主程序工作流程图,如图4-1所示:系统在开始工作后,当有确定键按下时系统开始采集ADC转换的数字量,然后对其进行数据处理并用数码管显示出当前的线性对应的数值,最后将确定键的按键标志位f4置零。当有切换键按下时,跳转到切换程序,切换程序进行显示界面的P、H、L 之间的切换,对应的可执行数值显示和上下限值的设定。4.2.1 4.3.2 主程序流程图设计解析由于系统复位后,各寄存器都被置1,因此,要对各工作寄存器清零。以便以后的使用。另外,由于控制报警系统的STC89C52RC的P2.7引脚是用来控制报警装置的,若当前所得到的数值超过用户所设定的上限则把P2.7置1,此时硬件会产生报警并输出24V直流电压。因此在系统复位后应立即把P2.7强行置为低电平,这样才会避免误报警。初始化后主程序就进入了一个循环。对键盘进行扫描,时刻监视是否有按键被按下。一旦某个按键被按下,则立刻判断是哪个按键,继而执行相关操作,调相应的显示子程序。最后返回,再进行键盘分析作出相应的处理。 图4-1主程序流程图4.4 键盘子程序设计4.2.2 4.4.1键盘扫描子程序 系统键盘采用中断方式。当有按键按下时,程序进入外部中断1子程序。设置变量temp采集4个按键接口的电平,然后通过判断变量temp的数值来确定4个按键中具体时哪一个被按下,同时把该按键的按键标志位置1,跳出中断。当f1=1时表示切换键按下;当f2=1时表示平移键按下;当f3=1时表示循环键按下;当f4=1时表示确定键按下。其流程图如图4-2所示。 图4-2定时器中断服务子程序流程图键盘共有4个按键构成,分别为:KEY1键状态切换键(用于系统工作状态的切换,包括显示状态,上限制设定状态和下限值设定状态),KEY2键平移键(当进行数值设定时控制位数的平移),KEY3键循环键(当按键按下时能进行0-9和“-”的数值设定),KEY4键确认键用于保存数据。在按键电路中,因为P3口默认为高电平故不用加上拉电阻。当有按键按下时,电路导通使得P3.4、P3.5、P3.6、P3.7某一口接地,为低电平。同时74LS08的1、2、4、5其中一口为低,使得单片机的外部中断1(P3.3口)为低,产生中断。当按键松开时,电路断开,P3.4、P3.5、P3.6、P3.7接高电平,74LS08的1、2、4、5口为高,单片机的外部中断1为高,无中断产生。按键是一种机械弹性开关,当按键按下时闭合,松开时断开。因为有机械的接触,在触点闭合或断开的瞬间会出现电压抖动。抖动时间长短与键的键的机械特性有关,一般为510ms。而键盘的稳定闭合时间和操作者的按键动作有关,大约为十分之几秒不等。为了避免输入的错误,必须进行键抖动的处理。本设计采用软件处理方法采用时间延迟以躲避抖动(大约延时1030ms),待触点状态稳定之后,再进行输入。4.4.2 KEY1键状态切换键子程序该部分程序的主要功能是在显示状态,上限值设定状态,下限值设定状态3个状态之间实现切换。系统上电后,即进入显示状态。按1下切换键,系统切换到上限值设定状态,再按1下切换键系统将进入下限值设定状态,再按1下切换键系统将从新回到显示状态。其原理为当切换键被按下时,切换变量num1自加1,当num1大于2时归零。然后通过判断num1的数值跳转到与数值相对应的显示子程序、上限设定子程序或下限设定子程序,具体流程如图4-3-1所示。 图4-3-1 KEY1键状态切换键子程序流程图图4-3-2设置上下限程序流程图4.4.3 KEY2键平移键子程序该部分程序的主要功能是在系统分别进入上、下限值设定状态时,实现上下限位的设定。以上限值设定为例,当系统进入上限值设定状态时,按1下平移键,数码管全部变黑,平移循环变量num2自加一,num2大于3时数值自动归零。然后通过num2数值的判断,跳转到与之相对应的百位、十位、个位、小数位设定子程序,其流程图如图4-4所示。 图4-4 KEY2键平移键子程序流程图4.4.4 KEY3键循环键子程序该程序部分为平移程序所调用的程序,平移程序功能的实现主要是以该程序为基础。以百位值的设定为例,如果不设定,则默认值为0,该位的数码管全部变黑。如果按下确认键,表示设定完毕,此时KEY3键循环键已经失效。在确认键未按下的前提下,按下KEY3键循环键,变量num3会自加一用于实现09以及负号的设定,如果是设定百位num3大于10时则num3置0,设定结束后将循环键标志位置0,调用下数组LEDData1 = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xbf数组(数组中元素对应的字符含义依次为数字09及负号)。但当设置十位、个位和小数位时则调用LEDData1 = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xbf数组和LEDData2 = 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10数组(数组中元素对应的字符含义依次为数字0.9. )此时每按一下按下KEY3键循环键,变量num3会自加一,当num3大于9时num3置0。KEY3键循环键的具体程序流程如图4-5、4-6所示。图4-5 KEY3键循环键子程序百位流程图 图4-6 KEY3键循环键子程序其余位流程图4.5 A/D转换子程序设计智能数显表的主体流程如图4-1所示。在系统进行初始化之后判断是否有切换键或者是确认键按下,如果没有则等待。否则若是有切换键按下则执行切换程序,若是有确认键按下则进行A/D转换和数据处理等相关程序。在执行完各自程序操作后返回,从新执行键盘扫描程序。ADC0809转换流程图如图4-7所示。 图4-7 A/D转换程序设计子程流程图在进行A/D转换控制时,必须严格按照ADC0809的工作时序完成A/D转换。A/D转换启动信号START下降沿启动A/D转换,之后A/D转换结束信号EOC输出变低,指示模数转换正在进行。直到A/D转换完成,A/D转换结束信号EOC变为高电平,指示A/D转换结束。当数据输出允许信号OE为高电平时,转换结果的数字量输出到数据总线上。ADDA,B,C:8路模拟开关的3位地址选通输入端,通过单片机选择对应得输入通道。4.6 显示子程序设计显示子程序采用动态扫描法实现四位数码管的数值显示。测量所得的A/D转换数据放在数据段NUM的4字节存储单元,测量数据在显示时需要转换为十进制BCD码放在BCD0BCD4单元中,其中BCD4存放的是输入数据的路数。由于AD0809是将模拟信号转换为数字信号,转换完的数字信号输入单片机STC89C52RC的P1口,在单片机STC89C52RC内部将二进制数据先转换成十进制数据(0255),由于显示范围为-99.9999.9,故还需做一次线性变换将数字信号转换为对应的数值,公式为td*43.129+0.5(d为AD转换后对应的十进制数),转换时保留整数位,再将数据转换为显示码就可以输出显示了。 显示子程序中调用了BCD码转换子程序和4位数据显示子程序,BCD码转换程序是将数据转换为BCD码值。4位显示子程序是将每组数据输出,主要是将对应的段码和位码输出。图-显示子程序流程图4.3 4.7 EEPROM程序设计4.3.1 4.7.1 设计思路首先,把上限做一个标准,比如:在代码初始化的时候就设定上限为40,就是程序中的一个全局变量:unsigned char sx=40。然后,当测量的温度高于40,系统就会自动报警。如果要设置上限的话,只要按了上限设置按纽,就会马上把sx这个变量送到显示,这时候,数码管上面显示的是 0040,按移位键、循环键和确认键,把新上限设定好了,那么的话SX的值也随即改变,即为新的上限值。把上面的新的SX值写到单片机的EPROM里面,在单片机下次启动的时候,从EPROM里面把这个值读出来,替换掉SX里面的初始化值,这就实现了掉电保存。4.3.2 4.7.2 STC89C52RC的EEPROM介绍ISP_DATA :ISP/IAP操作时的数据寄存器。ISP/IAP从Flash读出的数据放在此处,向Flash写的数据也需放在此处;ISP_ADDRH:ISP/IAP操作时的地址寄存器高八位;ISP_ADDRL:ISP/IAP操作时的地址寄存器低八位;ISP_CMD :ISP/IAP操作时的命令模式寄存器,须命令触发寄存器触发方可生效;ISP_TRIG :ISP/IAP操作时的命令触发寄存器。在ISPEN(ISP_CONTR.7) = 1时,对ISP_TRIG先写入46h,再写入B9h, ISP/IAP命令才会生效;ISP_CONTR:ISP/IAP控制寄存器;ISPEN :ISP/IAP功能允许位。0:禁止ISP/IAP编程改变Flash,1:允许编程改变Flash;SWBS :软件选择从用户主程序区启动 0,还是从ISP程序区启动 1;SWRST :0:不操作;1:产生软件系统复位,硬件自动清零;程序在系统ISP程序区时可以对用户应用程序区/数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除;程序在用户应用程序区时,仅可以对数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除。已经固化有ISP引导码,并设置为上电复位进入ISP的STC89C51RC/RD+系列单片机出厂时就已完全加密。另外注意CPU等待IAP动作完成后,才会继续执行程序,要先关中断 (EA);扇区擦除,没有字节擦除,只有扇区擦除,512字节/扇区;扇区里面任意一个字节的地址都是扇区地址,无需求首地址,单片机会自己处理;同一次修改的数据放在同一个扇区;如果要对某个扇区进行擦除,而其中有些字节的内容需要保留,则需将其先读到单片机;内部的RAM中保存,再将该扇区擦除,然后将须保留的数据写回该扇区;每个扇区中用的字节数越少越好,操作起来越灵活越快。字节编程:如果该字节是“1111,1111B”,则可将其中的“1”编程为“0”,如果该字节中有位为“0”,则须先将整个扇区擦除,因为只有“扇区擦除”才可以将“0” 变为“1”。扇区擦除:只有“扇区擦除”才可能将“0”擦除为“1”。【1】4.4 4.8 本章小结本章把整个系统的程序分成了若干模块。按照不同的模块,由流程图入手,对程序进行详细系统的分析。最后得出结论。本章的目的,就是要通过这种手段,详细向读者阐明全体程序的编写过程,理解题目。结 论 本次设计的智能数显表,运用了大量关于单片机、C语言以及智能仪表等多方面的知识。该系统提供控制按键和模拟信号处理、显示LED驱动,能够实现上下限数据设定、LED显示、超上限报警处理。进一步开发下去,还可以改进成广泛应用于温度、湿度、压力、液位、瞬时流量、速度等多种物理量检测信号的显示及控制。本次设计不考虑非线性输入信号。硬件方面运用了如键盘、数码管显示、报警系统、数模转换技术等等,并把它们灵活运用于实践当中,达到了预期的目的。在软件编程中,运用C语言,完成实际的需要,同时也进一步巩固了C语言知识,程序设计上,运用了外部中断程序、ADC0809模数转换等成功的达到了设计要求。这对于深入掌握C语言编程技术是非常重要的。通过本次设计,成功的完成了预期的目标:以单片机为核心构成智能数显表;输入信号:15V或420mA;具有上下限设定(设定数据需要EEPROM储存)和上限报警继电器输出功能24V直流电源;输出:四位显示(三位整数、一位小数、一个符号位);显示输出范围为-99.9999.9,采用动态显示;显示精度0.1;功能键4个,分别为KEY1键状态切换键(用于系统工作状态的切换,包括显示状态,上限制设定状态和下限值设定状态),KEY2键平移键(当进行数值设定时控制位数的平移),KEY3键循环键(当按键按下时能进行0-9和“-”的数值设定),KEY4键确认键用于保存数据。由此证明,此智能数显表在实践上是可行的。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


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

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


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