智能四路巡检仪设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专业实践II报告
智能4路模拟量巡检仪组员1:班级:自动化学号
哈尔滨理工大学自动化系
2019-9-12
目录
第1章任务描述及分析 (1)
1.1 任务描述 (1)
1.2 性能指标分析及实现方法 (1)
1.2.1 性能指标 (1)
1.2.2 性能指标实现方案 (1)
1.3 功能设计 (4)
第2章硬件电路工作原理分析 (5)
2.2 CPU的资源分配 (6)
2.3 显示电路设计 (7)
2.3.1 数码管显示 (7)
2.3.2 动态显示工作原理及实现 (8)
2.4 按键设计 (9)
2.5 信号输入及处理 (9)
2.6 AD转换 (9)
2.7 非易失性存储器 (11)
2.8 串行通讯 (11)
2.9 硬件电路焊接 (12)
2.10 硬件电路测试 (13)
第3章软件设计 (14)
3.1 软件总体设计方案 (15)
3.2 软件的模块规划 (15)
3.3 数据结构的选择 (17)
3.4 显示函数模块设计与实现 (17)
3.5 主程序设计 (28)
3.5.1 主程序流程图 (28)
3.5.2 主程序代码说明 (28)
第4章开发文档记录 (30)
第5章总结 (31)
5.1 王一鸣总结 (31)
5.2 王天轶总结 (31)
参考文献 (32)
I
第1章任务描述及分析
1.1任务描述
工业控制中,经常要对各类模拟量信号进行采集和显示。
工业现场大多数的模拟量信号都经过变送器转变为DDZ-III型仪表的标准信号4~20mA,因此具有灵活配置功能的智能多路模拟量巡检仪是工业控制中的常用仪表之一。
在工业控制中,电压是最基本的检测参数之一,电压的检测和控制直接和安
全生产、产品质量、生产效率、节约能源等重大技术指标相联系。
随着半导体技
术的发展,以单片机为主题,将计算机技术与测量控制技术结合起来组成的智能
仪表在生产中得到了广泛的应用。
这些智能仪器自身带有微处理器,在结构上自
成一体,能独立进行测试,使用灵活方便。
然而在实际工业生产活动中常常包含
许多工业参数需要测量,如:温度、湿度、压力、水位、流量等,单独使用温度
计、湿度计、压力计等分别测量温度、湿度、压力等等生产现场的工艺参数已经
不能适应生产和生活的需要。
数字式智能多路巡检仪可以测量多个传感器数据,
通过巡回显示方式,在单台仪表上可以显示多个数据,因而可有效节省成本。
因此本次任务是设计一个可以测量多数据的智能巡检仪,具有显示、按键、报警、看门狗、掉电保护、通信功能的智能巡检仪。
1.2性能指标分析及实现方法
1.2.1性能指标
1.单通道模拟信号输入,精度0.5级
2.模拟量输入信号类型:0~5V,1~5V(4~20mA)
3.显示方式:双排数码管
4.带有按键,用户可以配置必要的信息
5.具有报警功能,报警输出方式为继电器触点
6.具有RS232通讯接口,具有标准的Modbus通讯协议
7.配置信息可以编程并保存,配置信息包括模拟量通道类型,模拟量量程,报警
上下限等
8.仪表供电电源:USB线提供+5V电源
1.2.2性能指标实现方案
1.单片机选择
从技术指标可以看出,仪表的功能虽然很多,但是工作并不复杂,都是常用的功能,对CPU的要求不高,而且对实时性要求也比较宽松,因此选择价格低廉、工作可靠、资源充足的单片机即可完成设计任务。
STC89C52RC/RD+系列单片机是新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路,并且价格便宜,应用简单。
2.多路模拟量选通和信号调理
原仪表可以输入4路模拟量信号,这4路模拟量信号都要进入AD转换器,现只用1路作为模拟量输入。
选择双4选1的模拟开关CD4052,通过单片机的IO引脚选择通道。
模拟信号进入CD4052之前要进行必要的处理。
低通滤波:RC低通滤波器,滤除高频干扰。
信号量程转换:转换为AD转换器的量程以内。
选用mcp3202模数转换器
mcp3202是Microchip(微芯科技)公司产的一款ADC芯片,相比于ADC0809成本低,使用方便。
器件特点
1.转换精度:12bit
2.转换速率:100ksps(最快)
3.伪差分输入
4.4线spi控制接口
5.使用简单,无须复杂的寄存器配置,直接通过spi获取转换数据
3.模拟量输入信号类型:0~5V,1~5V(4~20mA)
工业控制中,经常要对各类模拟量信号进行采集和显示。
工业现场大多数的模拟量信号都经过变送器转变为DDZ-III型仪表的标准信号4~20mA,因此具有灵活配置功能的智能多路模拟量巡检仪是工业控制中的常用仪表之一。
4.显示方式:双排数码管
在各类仪表中,常用的显示元件有:发光二极管显示器(LED)、液晶显示器(LCD)、荧光管显示器、简易的CRT接口等。
LED是各类仪表中最常用的显示元件。
LED常用的显示方法有两种,分别为静态显示和动态显示,根据LED数码管内各笔段LED发光二极管的连接方式,可将LED数码管分为共阴极和共阳极两大类。
对于显示,本设计使用双排数码管显示各种参数及其设定,采用动态扫描实现显示任务。
LED显示是由发光二极管作为显示字段的数码显示器件,如图3.3为一位LED显示器的外形和引脚图,其中七只发光二极管(a-g七段)构成字型“8”,另外还有一只发光二极管dp作为小数点。
内部为发光二极管,对于共阳的接法,可知当a~dp段为低电平,公共端为高电平,则发光显示。
图1-1 LED 显示器引脚图
5.带有按键,用户可以配置必要的信息
键盘处理程序的关键是如何识别键码,微型计算机对键盘控制的办法是“扫描”,键盘处理程序的关键是如何识别键码。
根据微型计算机进行扫描的方法又可分程控扫描法、定时扫描法以及中断扫描法三种。
多数使用中断扫描法这种办法的实质是:当没有键入操作时,CPU 不对键盘进行扫描,以节省出大量时间对系统进行监控和数据处理。
一旦键盘输入,即刻向CPU 申请中断。
CPU 响应中断后,立刻转到响应的中断服务程序,对键盘进行扫描,判别键盘上闭合键的键号,并做相应的处理。
若无键按下,CPU 执行主程序或处理其他事务。
这样节省了大量的空扫描时间,进而提高了计算机的工作效率。
6.具有RS232通讯接口,具有标准的Modbus 通讯协议
串口通信的概念非常简单,串口按位(bit )发送和接收数据。
尽管比按接收 据的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米(RS232)。
典型地,串口用于ASCII 码字符的传输。
通信使用3根线完成:(1)地线,(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据的同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus 或者USB 混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB 兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V ,负电平在-5~-15V 电平。
当无数据传输时,线上为TTL ,从开始传送数据到结束,线上电平从TTL 电平到RS-232电平再返回TTL 电平。
接收器典型的工作电平在+3~+12V 与-3~-12V 。
由于发送电平与接收电平的差仅为2V 至3V 左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s 。
RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7k Ω。
所以RS-232适合本地设
8SEG-LED3
备之间的通信。
7.非易失性存储器
用户的配置信息应该在仪表断电情况下不丢失。
这些配置信息包括给定值、模拟量输入类型、通道量程、报警上下限以及零点偏移和满度偏移等。
采用线性非易失性存储器作为保存配置信息的元件,每次仪表启动后都从非易失性存储器内部读取当前的用户配置。
采用X25045芯片,并利用其电源监视和看门狗功能加强仪表的可靠性。
8.仪表供电电源
为仪表内的元件所需要的电源包括:集成芯片工作电源(数字电源):+5V,AD 转换器参考电源:+5V。
为了便于调试,采用USB接口提供+5V电源。
1.3功能设计
报警功能:报警输出方式为继电器触点。
按键功能:采用独立式按键,分别为:增加,减小,回车和取消。
用户可以通过不同的按键操作,可以实现对仪表的配置功能。
存储功能:可以保证用户的配置信息在仪表断电情况下不丢失,同时采用X25045芯片来加强仪表的可靠性。
显示功能:采用共阳极的数码管,数量为8只,上下两排显示。
通讯功能:采用RS-232串行通讯,可以实现stc89c52单片机与计算机之间进行通信、数据的传输。
第2章硬件电路工作原理分析
2.1供电电源设计
电源模块的选择需要考虑一下几个方面:额定功率、封装形式、温度范围与降额使用、隔离电压、功耗和效率等。
如图2-1为USB供电电源设计,本次设计中使用的供电电源是USB提供的+5V 电源,采用一个开关来控制输入,当K1A按下闭合时,板子通电工作。
图2-1 USB供电设计图
2.2CPU的资源分配
图2-2 STC89C52引脚图
STC89C52单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统 8051单片机, 12时钟机器周期和时钟机器周期可以任意选择。
按图2-2分配单片机引脚资源
主要特性如下:
1.增强型 8051单片机,6 时钟/ 机器周期和 12 时钟/ 机器周期可以任意选择,指令代码完全兼容传统 8051.
2.工作电压: 5.5V~
3.3V(5V单片机) /3.8V ~2.0V(3V单片机)
3.工作频率范围: 0~40MHz,相当于普通 8051的 0~80MHz,实际工作频率可达48MHz
4.用户应用程序空间为 8K字节
5.片上集成 512字节 RAM
6.通用 I/O 口(32 个),复位后为:P1/P2/P3/P4 是准双向口 / 弱上拉,P0
口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序。
8.具有 EEPROM功能
9.具有看门狗功能
10. 共 3 个 16 位定时器 / 计数器。
即定时器 T0、T1、T2
11. 外部中断 4 路,下降沿中断或低电平触发电路, Power Down模式可由外部中断低电平触发中断方式唤醒
12. 通用异步串行口( UART),还可用定时器软件实现多个 UART
13. 工作温度范围: -40~+85℃(工业级) /0 ~75℃(商业级)
14. PDIP封装
2.3显示电路设计
2.3.1数码管显示
图2-3 显示模块
本次实践采用的是共阳极数码管,它的内部8个发光二极管的所有阳极全部连接在一起,电流连接时,公共端接高电平,因此我们要点亮的那个发光二极管需要阴极
来送抵电平。
数码管内部的发光二极管点亮时,需要5mA以上电流,而且电流不可过大,否则会烧毁发光二极管。
又因为单片机的I/O口送不出如此大的电流,所以数码管与单片机连接时需要加驱动电路,为此我们采用了74HC573锁存器来输出所需要的电流。
74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。
当使能为低时,输出将锁存在已建立的数据电平上。
输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。
LE则是输出端状态改变使能端,当LE为低电平,输出端Q始终保持上一次存储的信号(从D端输入),当LE为高电平时,Q紧随D的状态变化,并将D的状态锁存。
也就是说当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。
当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
2.3.2动态显示工作原理及实现
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
2.4按键设计
图2-4 按键原理图
图2-5采用独立式键盘,设置4个独立式按键,分别为增加,减小,模式切换,
测量。
由于位选通信号是灌电流驱动,因此CPU读入按键信息的引脚应该接下拉电阻。
2.5信号输入及处理
图 2-5 信号输入与调理
多路模拟量选通和信号调理的实现是选择双4选1的模拟开关CD4052,通过单片机的IO引脚选择通道。
CD4052是一个差分4通道数字控制模拟开关,有A、B两个二进制控制输入端和INH输入,具有低导通阻抗和很低的截止漏电流。
幅值为4.5~20V的数字信号可控制峰峰值至20V的模拟信号。
当INH输入端=“1”时,所有通道截止。
二位二进制输入信号选通4对通道中的一通道,可连接该输入至输出。
2.6AD转换
图2-6 AD转换原理图
MCP3202是一款具有片上采样和保持的12位逐次逼近型模数转换器。
它使用符合SPI协议的简单串行接口与器件通信。
器件在5V工作电压下的转换速率最高为100ksps。
MCP3202的工作电压范围比较宽,为2.7V~5.5V。
通过查阅MCP3202的中文数据手册可知,CS为片选信号。
CLK为同步时钟。
Din为MCP3202的数据输入,Dout 为MCP3202的数据输出。
如上,当片选信号有效时,并且Din为高电平时,当CLK第一个上升沿到来后,启动通信。
随后的三个数据输入信号为模式选择。
图2-7 MCP3202 时序图
时序图分析:
1. 片选线、时钟线与普通spi一致。
2. 数据输入(SDI):第一位为启动位,固定为1,第2、3位为配置选择位,具体选择信息如下;第4位MSBF,设置数据格式,高位/低位在前,一般情况下我们都使用“高位在前”的模式;后面的数据则为无关位。
3.数据输出(SDO):从第6个时钟周期开始,返回的数据为有效数据,共12位,高位在前。
器件使用:
1. 对应这类非标spi,可以通过模拟时序实现。
2. 通过硬件spi实现,其中此器件手册也有专门介绍如何通过硬件spi驱动(其他像ADI的器件就很少有说明),如图2-10。
图2-8 SPI驱动
2.7非易失性存储器
图 2-9 E2PROM&看门狗电路图
X25045是美国XICor公司的生产的标准化8脚集成电路,它将EEPROM、看门狗定时器、电压监控三种功能组合在单个芯片之内,大大简化了硬件设计,提高了系统的可靠性,减少了对印制电路板的空间要求,降低了成本和系统功耗,是一种理想的单片机外围芯片。
X25045引脚功能如下:
CS:片选择输入。
SO:串行输出,数据由此引脚逐位输出。
SI:串行输入,数据或命令由此引脚逐位写入X25045。
SCK:串行时钟输入,其上升沿将数据或命令写入,下降沿将数据输出。
WP:写保护输入。
当它低电平时,写操作被禁止。
Vss:地。
VCC:电源电压。
RESET:复位输出。
X25045在读写操作之前,需要先向它发出指令,指令名及指令格式。
EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器。
是一种掉电后数据不丢失的存储芯片。
EEPR OM 可以在电脑上或专用设备上擦除已有信息,重新编程。
一般用在即插即用。
用户的配置信息应该在仪表断电情况下不丢失,这些配置信息包括给定值、模拟量输入类型、通道量程、报警上下限以及零点偏移和满度偏移等。
采用线性非易失性存储器作为保存配置信息的元件,每次仪表启动后都从非易失性存储器内部读取当前的用户配置。
采用X25045芯片,并利用其电源监视和看门狗功能加强仪表的可靠性。
可以考虑使用CPU内部的Flash。
由于调节系统长期运行,为避免系统受到各种干扰后死机,因此使能电源监
视电路 MAX813L 的看门狗功能,其看门狗定时器溢出周期为 1.6s,即在该时间内未能使 WDI 输入信号的状态发生跳变(喂狗),则将使 WDO 引脚输出持续 200ms 以上的低电平,通过图 3.6 中的开关二极管 D2(4148)使手动引脚产生对应低电平,从而使复位输出有效(高电平),使系统复位,系统自行从死机中恢复。
对于本系统,将看门狗喂狗动作分解为拉高和拉低,然后分别安排在定时器 0 定时中断中和主程序中,其目的是为了既能有效防止系统失效(表现为不能产生拉
高操作),又能有效防止主程序跑飞导致的失效(表现为不能产生拉低操作),从而保证系统的顺畅运行。
2.8串行通讯
图2=10 ISP下载器原理图
芯片 MAX232比特率是每秒钟传输二进制代码的位数,单位:(bps)位/秒。
每秒钟传送 960 个字符,而每个字符格式包含10位(1个起始位、1个停止位、 8个数据位),比特率为:10 位×960个/秒=9600bps。
在串行通信中,收发双方对发送或接收数据的速率要有约定。
串口2条线的一个rx一个tx 。
spi是4线串口分别是cs(片选)clk(时钟)miso(数据输入)MOSI(数据输出)
串口一般是一对一接收。
spi可以挂载多个spi设备,通过cs选通设备。
标准RS232电平:3-15V,-3-(-15V)。
2.9硬件电路焊接
焊接注意事项
1.按元件高度从低到高的次序依次焊接。
2.注意元件的方向,包括DIP插座、电解电容、排阻、接插件、发光管、LED数
码管。
3.区分三极管9012,9013、9015和TL431,它们外观相同,焊接前检查。
4.电阻元件要先读色环,然后用万用表测量阻值后再焊接,还要注意电阻的功率,1/8W的体积小,1/4的体积大。
5.每个焊点的焊接时间不宜过长,一般焊点不超过3秒,粗的焊盘可以适当延长焊接时间,直到焊锡渗入焊点为止。
6.严格按印制板的丝网印刷的元件特征值取元件,相同类型的元件可以先插入焊盘后一起焊接。
7.有暂时不焊接的元件,包括RS485功能、2.4G无线功能、ICL7135功能和其他供电模式的相关元器件。
8.烙铁头有焊锡或者脏物时,只能用烙铁擦清理,禁止用其它任何物体擦拭、刮划烙铁头。
焊接中的问题
在焊接的过程中由于对于焊点焊接的太轻,出现了断接,用万用表及时发现了焊接失误的点改正。
2.10硬件电路测试
1.焊接完成后采用万用表测试电路焊接是否正常,是否有虚焊的情况,以及电容电阻是否正常
2.不上芯片通电检查灯亮不亮
3.烧录测试程序检查LED灯是否闪烁
4.检测数码管按键是否正常,烧录一个简单的程序检测是否都亮
第3章软件设计
3.1软件总体设计方案
本系统在Keil中用c语言进行编程,来控制单片机对数据进行处理。
本次软件设计数据结构主要应用到了对数组操作,因此对于数组,一般采用顺序存放的格式。
这样就可以用简单的下标运算来访问数组中的任一元素。
前台程序安排实时性要求较高的内容,本次专业实践是定时系统和中断。
对于中断资源,本次设计采用了两个中断服务程序。
第一个中断程序用于A/D数据的采集和简单的数据处理,使用定时器T0的定时溢出中断,通过传递处理后的数据用于上下限报警,显示,按键处理等。
第二个中断程序是RS-232数据的接收,使用定时器T1的串口中断,然后指令数据传递到后台的RS-232通讯数据处理程序,根据不同的指令发送或更改巡检仪的数据并在上位机(计算机)显示中断资源分配。
后台程序是主程序和一些子程序,子程序包括8位数码管的显示程序、按键程序、AD转换的MCP3202程序和串口通讯MAX232芯片程序。
3.2软件的模块规划
3.2.1规划模块文件
alarm.c
DELAY.c
Display.c
EEPROM52.c
Key_board.c
Main.c
Mcp3202.c
RS232.c
X25045.c
Reg52.h
alarm.h
DELAY.h
Display.h
EEPROM52.h
Key_board.h
Main.h
Mcp3202.h
RS232.h
X25045.h
3.2.2规划模块文件中的函数接口
1.报警函数
Alarm()
2.延时函数
delay_1ms(uint q)毫秒延时void delay_1us(uchar t)微秒延时3.显示函数
Bittran(uint c0)数码管位转换DisplayRef()显示刷新程序4.漏电保护
EEPROM52.c
打开ISP,IAP 功能
void ISP_IAP_enable()
关闭ISP,IAP 功能
void ISP_IAP_disable()
触发
void ISPgoon()
字节读
unsigned char byte_read()
字节写
void byte_write()
扇区擦除
void SectorErase()
把数据保存到单片机内部eeprom中
void write_eeprom()
把数据从单片机内部eeprom中读出来
void read_eeprom()
开机自检eeprom初始化
void init_eeprom()
5.键盘分析函数
Key_Scan()按键值获取
Analysiskey()按键分析
Upadd()上限值加设定
Downadd()下限值加设定
Updec()上限值减设定
Downdec()下限值减设定
H_Set()上限操作
L_Set()下限操作
6.AD转换程序
MCP3202()
7.x25045看门狗
tran()发送一字节数据子函数
Write_Reg()写命令函数
8.串口通信
void RS232initial()串口初始化
void send()发送一个字节的数据
void sendc()发送字符串
void uart()中断,如果给单片机发数据,将会在这里接收到3.2.3规划模块之间的参数传递
延时函数
typedef unsigned char uchar;
typedef unsigned int uint;
显示函数
unsigned char TempData[8];
unsigned char code DuanMa[]
键盘分析函数
uint limit_l; //报警值下限
uint limit_h; //报警值上限
uint limit;
AD转换程序
typedef unsigned char uchar;
typedef unsigned int uint
串口通信
unsigned char sending;
unsigned char buf;
x25045看门狗
bdata unsigned char com;
3.3数据结构的选择
选用选择分支结构(if结构)、循环结构(if结构和while结构)等数据结构来描述任务。
在函数外定义的变量是全局变量,全局变量可以为本文件中其它函数所共用,它的有效范围从定义变量的位置开始到文件结束。
全局变量:extern unsigned char xkey
extern unsigned int limit_l
extern unsigned int limit_h
extern unsigned int limit
静态全局变量,只在本文件可以用,虽然整个程序包含多个文件,但静态全局变量只能用在定义它的那个文件里,却不能用在程序中的其他文件里。
3.4显示函数模块设计与实现
1.报警函数
报警是微机控制系统的一项重要功能,主要用于保证生产过程正常运行和操作者的生命安全。
在生产过程中控制系统随时检测被控对象的一些重要参数,当超出允许范围时,控制系统便会发出声光报警信号,引起操作者注意以便采取相应的措施系统在报警电路中安装了红色发光二极管,超过上限或者下限时红色发光二极管闪烁
图3-1 报警函数流程图void Alarm()
{
AL_H=1;
AL_L=1;//报警灯灭
if (value>limit_h)//值大于上限
{
AL_H=0;//报警灯亮
}
if (value<limit_l)//值小于下限
{
AL_L=0;//报警灯亮
}
2.延时函数
delay_1ms(uint q);毫秒延时
void delay_1ms(uint q)//q个120 120*10*1/6*10^(-6)*12 {
uint i,j;
for(i=0; i<q; i++)
for(j=0; j<120; j++);
}
void delay_1us(uchar t);微秒延时
void delay_1us(uchar t)
{
while(--t);
}
3.显示函数
显示模块有8位共阳极数码管组成,第一排前四位显示功能(当前的电压值,上限值,下限值),第二排的后四位显示所对应的数据。
Bittran(uint c0);//数码管位转换
void Bittran(uint c0)
{
uint c1,c2,c3,c4,c5,c6;
c1=c0/1000;//取第一位
c2=c0-c1*1000;//取后三位
c3=c2/100;//取第二位
c4=c2-c3*100;//取后两位
c5=c4/10;//取第三位
c6=c4-c5*10;//第四位
TempData[0]=DuanMa[c1];
TempData[1]=DuanMa[c3];
TempData[2]=DuanMa[c5];
TempData[3]=DuanMa[c6];
DisplayRef();显示刷新程序
P2= 0x00;//选择第一个数码管
DULA=1;//锁存器p2^5
P0=TempData[i];//DuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,/*0-9 */0x88,0x83,0xc6,0xa1,0x86,0x8e,/*A-F*/0x7f,0xbf,0xff,0x89,0xc7,0xc1/*"." "-" " " "H" "L" "U"*/ //0-20个};// 显示段码值0~F和,H和-和L
DULA=0;
P0 = 0xff;//消影端口输出高电平使得数码管每段两端电平一样,无电位差就不会点亮i++;
delay_1ms(1);
图3-2 显示模块流程图
4.外部存储模块
为了防止系统在掉电情况下数据丢失,X25045来存储数据。
电路板上电后芯片初始化,按键或串口通讯设定数值后CPU直接将数据保存在X25045中,在紧急事件发生后,出现掉电进行应急处理,保护现场并存储数据,然后等待复位。