(3)非易失性温度报警触发器TH与TL。可通过软件写入用户报警上下限值。
(4)配置寄存器。配置寄存器为中间结果暂存器中的字节4。配置寄存器可以设置DS18B20温度转换的精度。可以设置成精度为9位、10位、11位、12位。上电缺省的分辨率为12位精度。用户可根据需要改写配置寄存器以获得合适的分辨率。DS18B20温度传感器的内部存储器包括一个中间结果暂存器和一个非易失性的电可擦除EEPROM,后者存放高温度报警TH、低温度报警TL和配置寄存器的值。暂存器包含了8个连续字节,前两个字节是测得的数字温度数值,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL,第五个字节是配置寄存器,这三个字节的值可以保存在电可擦除的只读存取器(EEPROM)中,掉电后数据不丢失,上电复位时数据从EEPROM载入中间结果暂存器。第六、七、八个字节内部保留。第九个字节是循环冗余检验CRC字节。
3.2.4.2 DS18B20的供电方式
DS18B20的电源供电方式有两种:外部供电方式和寄生电源方式。工作于寄生电源方式时,VDD和GND均接地,它在需要远程温度探测和空间受限的场合特别有用,原理是当1-Wire总线的信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一部分能量给内部电容充电,当DQ为低电平时释放能量为DS18B20供电。但寄生电源方式需要强上拉电路,软件控制变得复杂(特别是在完成温度转换和拷贝数据到EEPROM),同时芯片的性能也有所降低。因此,在条件允许的场合,尽量采用外供电方式。DS18B20与单片机连接的原理图:
图3.5 DS18B20与单片机连接的原理图
3.2.5 通讯部分
3.2.5.1 电平转换
为保证数据可靠传送,RS-232C标准规定发送数据线TXD和接收数据线RXD均采用EIA电平,即传送数字“0”时,传输线上的电平在-3~-15 V之间;传送数字“1”时,传输线上的电平在+3~+15 V之间。但单片机串行口采用正逻辑的TTL电平,这样就存在TTL电平与EIA电平之间的转换问题,例如当单片机与PC机进行串行通信时,PC机COM1或COM2口发送引脚TXD信号是EIA电平,不能直接与单片机串行口接收端RXD引脚相连;同样单片机串行口发送端TXD引脚输出信号采用正逻辑的TTL电平,也不能直接与PC机串行口COM1或COM2的RXD端相连。
RS-232C与TTL之间电平转换芯片主要有传输线发送器MC1488(把TTL电平转成EIA电平)、传输线接收器MC1489(把EIA电平转成TTL电平)以及MAX232系列RS232电平转换专用芯片。
其中传输线发送器MC1488含有4个门电路发送器,TTL电平输入,EIA电平输出;而传输线接收器MC1489也含有4个接收器,EIA电平输入,TTL电平输出,但由MC1488和MC1489构成的EIA与TTL电平转换器需要±12 V双电源,而单片机应用系统中一般只有+5 V电源,如果仅为了实现电平转换增加±12V电源,体积大、成本高。而MAX232系列芯片集成度高,单+5 V电源(内置了电压倍增电路及负电源电路)工作,只需外接5个容量为0.1~1μF的小电容即可完成两路RS-232与TTL电平之间转换,是单片机应用系统中最常用的RS-232电平转换芯片。
系统通过上位机实现对单片机系统、定时芯片的控制,MAX232通讯模块实现了这一功能。上位机通过VB界面以及VB中Comm Control 6.0控件组成上位机控制界面,与单片机系统中MAX232模块一起完成总体通讯、控制功能。
3.2.5.2 MAX232芯片介绍
MAX232产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。该器件包含2个驱动器、2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。
该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。 图3.6 MAX232引脚图
RS-232C串行接口标准主信道重要信号含义:
TXD:串行数据发送引脚,输出。
RXD:串行数据接收引脚,输入。
DSR:数据设备(DCE)准备就绪信号,输入,主要用于接收联络。当DSR信号有效时,表明本地的数据设备(DCE)处于就绪状态。
DTR:数据终端(DTE)就绪信号,输出。用于DTE向DCE发送联络,当DTR有效时,表示DTE可以接收来自DCE的数据。
RTS: 发送请求,输出。当DTE需要向DCE发送数据时,向接收方(DCE)输出RTS信号。
CTS:发送允许或清除发送,输入。作为“清除发送”信号使用时,由DCE输出,当CTS有效时,DTE将终止发送(如DCE忙或有重要数据要回送DTE);而作为“允许发送”信号使用时,情况刚好相反:当接收方接收到RTS信号后进入接收状态,就绪后向请求发送方回送CTS信号,发送方检测到CTS有效后,启动发送过程。
图3.7 通讯原理图
3.2.6 报警部分
执行机构为继电器,继电器带固态继电器,设计时考虑单片机使用的5V电源,所以,继电器我们也用5V控制比较方便,固态继电器的控制线圈100mA便可以驱动,在设计时选择5v、100mA的继电器。固态继电器选择380VAC、150A电流输出。这样就可以有效的切断主回路的电流。同时,我们可以提供采用蜂鸣器和二极管实现声光报警,如果该系统出现故障,进行相应的动作。原理图如下:
图3.8 报警原理图
3.2.7 电源部分[35]
目前市场上各式各样的模块电源、开关电源产品很多,可根据以下原则对电源模块进行选择。
1.掌握所需电源的一般性参数,在设计过程中,电压、电流以及必要的一些辅助功能。电压、电流是最基本的两个参数,例如电源是给主板CPU供电,需要5伏电压,电流需要根据系统功耗计算得知,如5A,那么我们在实际购买中是不是就选择5V/5A的电源呢?我们在设计时都会有一定的降额设计,一般我们选择略微比实际使用功率高20%,这样电源工作效果比较好,可靠稳定,系统轻微的过载也无关紧要。即:在选择功率时一般要比实际使用功率大于20%即可。
2.外形尺寸,根据设备的空间来选择合适的电源,一般我们要求越小越好,但是体积小、价格高,而且发热大,所以不要盲目追求小体积。
3.温度,确定电源使用的环境温度,选择适合的电源模块。模块电源厂家一般给出的温度是电源模块的壳温,如-25 ºC ~+85 ºC,那么85 ºC表示电源外壳温度最高可以达到85 ºC,如果超过85 ºC,电源就可能进入保护状态或损坏。在选择电源时一定要考虑自身的环境温度和电源的工作效率,效率高温升就低,反之效率低温升就高。
4.安装方式,模块电源有两种封装形式,一种是引针式,一种是端子式。引针式可以直接焊在PCB印制线路板上,选择这种电源时应尽量选择标准产品(即各厂家的引针方式都一样,便于更换厂家),这种形式电源如需散热,可配装散热器(一般厂家有配套产品)。端子式是用接线端子连接电源输出和用电设备,电源可直接固定于设备的外壳上,并借助外壳散热。
5.电压精度,也就是电压的稳定度。一般厂家所给出的电压精度为1%上下,是表示单路输出的情况,如果有两路或三路输出,只表示主路的电压精度,副路电压精度要低,我公司生产的多路产品副路的电压精度一般为3%范围。如果多路输出电压中,每路电压精度都要求比较高,那不能选择这样的电源,而需要选择每路独立稳压的电源,各路电压精度都比较高(相当于把多个电源做在一块板子上)。
6.可靠性,可靠性的指标用平均无故障时间MTBF来表示。
7.输入电压的范围。
综合以上,我选择了捷力达电源模块JME%-A2S05,可以将220V交流电转换为5V直流电,但体积较大。市场价格在四十元左右,代替了传统的变压器,可以装到PCB板上。220V交流电可以由三相电中的任一相与地线相连来提供。本实验中所使用的电源模块的原理图:
图3.9 电源原理图
3.2.8 ISP下载线
AT89S52单片机增加了在线编程功能,其硬件实现也非常简单。DB25针接头,一片74HC373。6个插针分别接ISP电源、单片机P1.5、P1.6、P1.7、ISP RST、ISP地线。在单片机系统中留出上述6个插头,制作好下载线可以随时修改程序,当然也可以在线编辑程序,在没有仿真器的情况下,大大提高了我们的工作效率,为我们编写调试程序提供了很大的方便。ISP下载线的原理图如下:
图3.10 ISP下载线的原理图
3.3 本章小节
本章中,通过对资料的详细了解,根据相关的原则对硬件进行了选择。本系统的完整硬件如下:以AT89S52单片机进行数据采集、处理、传输,结合定时芯片DS1302进行定时控制,显示芯片HD7279显示当前时间,当前温度及跳闸原因等,选用串行通信总线接口RS-232标准接口,来实现单片机与PC机双向通信的功能,通过上位机发送定时时间和报警时间。
第4章 软件设计
4.1 软件设计的原则 首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/8/8
通常软件设计先画程序流程图,然后根据流程图编写程序。常用的设计技术有三种:
一、模块法(Block Programming):把一个长的程序分成若干较小程序模块进行设计和调试,然后再把各个模块连接起来。此方法便于编程、纠错、调试。
二、自顶向下法(Top-down Programming):概括的说,就是从整体到局部,最后到细节。
三、结构化程序设计(Structured Programming):各程序模块可分别设计,一个模块只有一个入口,一个出口,然后用最小接口组合起来。结构化程序设计的程序其执行速度较慢,占用存储器较多。
4.2 主程序流程
本系统中主程序中,电机测温是完成其功能的核心。首先进行初始化,完成自检后进入数据采集过程,进行温度采集与设定值相比较,若达到设定值则单片机输出结果并跳闸显示,否则进入下一轮采样。显示功能应该实时进行,利用扫描的方式写。而那些出现频率不高的程序,如上位机通讯,应该利用中断方式编写。另外系统参数设置等应该运行一次,不能写入循环程序。具体的流程如图4.1所示:
图4.1 主程序流程
4.3 下位机软件设计
本系统在设计中采用模块化进行软件设计。主要有键盘显示模块、报警模块、温度模块、通信模块,采用模块法编写的程序易读易懂,结构清晰,模块法能更有利于程序的设计和调试。下位机程序主要完成以下几个任务:键盘显示、越限报警、温度显示、上位机通信等,采用C语言编程。
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
使用Keil C51编辑以及调试程序非常简便,与WINDOWS下的应用软件一样。Keil C51可直接生成.HEX文件,可直接通过ISP下载线烧写到单片机内。
4.3.1 键盘程序
键盘子程序主要完成当前时间、温度及故障类型的显示。系统正常工作时,LED循环显示当前的时间和当前的温度。按任意键可以实现温度与时间的切换。当故障出现时,LED显示出故障类型。
本系统的键盘显示部分摒弃了传统的串行移位寄存器驱动方式,采用专用的集成芯片HD7279a,它是一片具有串行接口的可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示键盘接口的全部功能。
(1)时序图分析
HD7279芯片输入输出方式为串行,编程时数据的写入读出按照其时序图编写,在片选使能后,在CLK管脚的下降沿写入读出数据,具体的时序图如图4.2所示:
图4.2 HD7279纯指令时序图