用单片机实现温度远程显示.docx

上传人:b****5 文档编号:7191292 上传时间:2023-01-21 格式:DOCX 页数:37 大小:271.78KB
下载 相关 举报
用单片机实现温度远程显示.docx_第1页
第1页 / 共37页
用单片机实现温度远程显示.docx_第2页
第2页 / 共37页
用单片机实现温度远程显示.docx_第3页
第3页 / 共37页
用单片机实现温度远程显示.docx_第4页
第4页 / 共37页
用单片机实现温度远程显示.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

用单片机实现温度远程显示.docx

《用单片机实现温度远程显示.docx》由会员分享,可在线阅读,更多相关《用单片机实现温度远程显示.docx(37页珍藏版)》请在冰豆网上搜索。

用单片机实现温度远程显示.docx

用单片机实现温度远程显示

用单片机实现温度远程显示

摘要:

文章介绍了用AT89S8252单片机的串行接口与智能温度巡回检测仪(XJ-08S)通过RS—485总线相互通讯实现热水温度远程显示的一种低成本解决方案,内容涉及RS—485总线通讯、单片机驱动数码管显示、数据转换以及键盘处理软硬件设计等内容。

关键词:

单片机RS—485总线数码管显示数据转换键盘处理

Keywords:

chipmicrocomputerRS—485bus

LEDdisplayDataConversion

Todealwithkeyboard

 

一、前言

目前检测温度一般采用热电偶或热敏电阻作为传感器,这种传感器至仪表之间一般都要用专用的温度补偿导线,而温度补偿导线价格很贵,并且线路太长也会影响测量精度。

在实际应用中往往需要对较远处(1KM左右)的温度信号进行监视。

现有的解决方案有很多,例如:

1、在现场用智能仪表对温度信号进行测量,用计算机作上位机与智能仪表进行通讯来实现远程温度监测(采用这种方案要增加计算机设备及相关计算机软件)。

2、NCU+DDC实现远程温度监测。

用两个DDC,一个安装在现场测量温度,另一个安装在监视地,两个DDC通过NCU进行通讯从而实现远程温度监测。

但以上方案都存在成本高的问题,有没有低成本的解决方案呢?

其实,在单片机应用日益广泛的今天,完全可以用单片机以极低的成本来实现远程温度监测。

二、控制要求及解决方案选择

1、两个热交换站分高低区共安装有8个热交换器,正常水温在45oC至65oC之间;两个热交换站与锅炉房的距离分别为500米和600米左右。

2、要求在锅炉房能以巡回及定点两种方式显示8个热交换器的热水温度,巡回方式以3秒为周期轮流更新及显示各热交换器热水温度。

定点方式时每按上键或下键一次则显示上或下一个热交换器热水温度,每3秒自动更新数据一次。

3、根据控制要求选择单片机+智能仪表的解决方案:

用带通讯接口的智能仪表安装在现场测量温度,设计制作一个单片机装置完成与智能仪表的通讯及数据显示。

三、通讯协议、智能仪表选择及其参数介绍

因热水温度信号变化较慢,因而对通信的速度要求不高,对于这种低速率远距离的通讯选用

RS-485总线适宜。

RS-485是EIA(美国电子工业联合会)在1983年公布的新的平衡传输标准,是工业界使用最为广泛的双向、平衡传输线标准接口,它以半双工方式通信,支持多点连接,传统驱动器允许创建多达32个节点的网络,且其具有传输距离远(最大传输距离为1200M),传输速度快(1200M时为100KBPS)等优点。

其连接方法如下图所示。

为了满足现场温度检测及与单片机装置通讯的要求,必须选择至少有5个温度检测点及具有RS—485通讯端口的智能仪表。

经过对市场上常用的温度检测仪进行分析,选择由重庆川仪十八厂生产的XJ-08S型巡回检测仪作现场测量仪表。

(一)该仪表主要特点如下:

1、多量程方式,热电偶、热电阻,1-5V标准信号混合输入,可通过键盘进行设置;

2、最多8个测量通道(能测量8个温度信号);

3、采用RS-485通讯标准,可将各通道最新数据向上位机传送。

(二)XJ-08S巡回检测仪通讯协议

1、通讯口设置

●通讯方式:

RS-485标准电平

●同步方式:

起停同步方式

●波特率:

9600BPS

●通讯距离:

不大于1200M

●通讯线:

二线

●数据代码:

ASCII码

●数据格式:

每字符10位,1个起始位,8个数据位,1个停止位

2、数据传输格式

●地址:

2字节(高字节在前,低字节在后);

●数据:

按地址顺序,仪表数据传输格式为十六进制2字节定点数;

2字节定点数=低字节高4位(ASCII码)+低字节低4位(ASCII码)

高字节高4位(ASCII码)+高字节低4位(ASCII码)

若数据为负数,则采用补码方式传输;

●在传输实时测量值时,传输完2字节定点数后,紧接着又传输2字节定点数,其中高字节低4位为小数点位数。

例:

(50.0)10表示为4634303130303031

低字节高字节小数位数

3、仪表通讯格式:

@DE帧类型帧数据CRCCR

●@:

通讯起始符

●DE:

仪表设备号(地址)

●帧类型:

操作命令

●帧数据:

各种操作命令所对应的命令及数据

●CRC:

校验字节(除@外CRC之前的其他几个字节的异或值)

●CR:

结束符(回车符)

4、应用中用到的命令及数据格式:

●读仪表全部动态数据命令帧@DERDCRCCR

●命令回送帧正确@DERD帧数据CRCCR

错误@DE**CRCCR

例:

读28号仪表的全部动态数据

命令:

’@1CRD64’,0D(ASCII码403143524436340d)

错误返回码‘@1C**72’,0D(ASCII码4031432A2A37320D)

正确返回数据’@1CRDXXXXXXXXXXXXXXXXXXXXXXXX

第0通道第1通道第2通道

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

第3通道第4通道第5通道第6通道

XXXXXXXXXX’,0D

第7通道校验

四、单片机选择及硬件电路设计

1、选用ATMEL公司生产的AT89S8252-24PC单片机,其主要参数及特点如下:

●与MCS-51产品兼容(其引脚图见原理图)

●具有8K字节可擦写的FLASH内部程序存储器,可擦写1000次;2K字节EEPROM,可擦写100,000次,SPI口(用PC机的并口连接5条线即可通过SPI口下载程序,下载软件可从网上下载,这样可节省购买编程器的费用;)。

●256字节RAM,32根可编程I/O线,可编程串行口,内置看门狗。

与看门狗有关的特殊功能寄存器WMCON地址=96H,与看门狗有关的控制位为96h第0、1、5、6、7位,第5、6、7位用于设置看门狗定时时间(具体见第5页表格),本应用中第5、6、7位均置1,设置看门狗溢出时间为2048ms,第0位为看门狗使能控制位,该位置1将使能看门狗,其第1位为复用位,向第1位写1将复位看门狗定时器,具体操作如下:

a,使能看门狗,并将其溢出时间设定为2048ms:

ORL96H,#0E1H;

b,看门狗定时器清0:

ORL96H,#2

2、按键设计:

为方便使用,设计了三个按键,分别为巡回/定点切换键、上键、下键。

切换键用于巡检与定点模式的切换,上键向上切换通道,下键向下切换通道;其中巡检/定点切换键通过外部中断1以中断方式工作,中断程序将巡回/定点标志取反后直接跳到主程序中巡回/定点标志判断程序前运行,由判断程序完成巡回/定点的切换。

按键信号由单片机P3.3,P3.4,P3.5引脚输入。

3、显示电路设计

为方便观察,选用三个二位共阳级8段数码显示管(TOD5201AE)动态显示,一位显示仪表地址(从A至F),一位显示通道号(从0至7通道),其余四位用来显示实时温度值;用单片机P1口驱动一片74HC244以吸收电流的方式控制段码,用单片机P0.0至P0.5引脚驱动六个PNP三极管(9012)控制位选。

4、电源选用5V/1A市售成品开关电源。

5、根据智能仪表通讯协议的要求,串行口定义为方式1工作,一帧10位:

1个起始位、8个数据位、一个停止位;用一片75176完成数据的发送与接收,由于RS-485为半双工,故用单片机P3.2引脚控制发送与接收的切换;两个智能仪表处于RS-485总线的两个端点,为提高可靠性,在RS-485总线的两个端点上分别并联一个120Ω、1/4W终端电阻。

●系统方框图如右示:

●单片机装置电原理图见下页:

 

五、单片机软件设计说明及程序流程图

为方便调试,采用模块化编程,共分1个主模块及5个子模块,各模块功能说明及流程图如下(源程序见附录):

1、主模块(rand_main.a51)

上电后程序显示初始化标志并等待3秒,然后进入巡回模式,自动检测地址为A(10)至F(15)的智能仪表,对在线的仪表及已使用通道以3秒为周期自动巡回读取实时温度并送数码管显示,仪表未在线或未用通道则自动跳过;定点模式时根据上、下按键情况自动向前或向后移动一个通道后等待下一次按键(向上至最高通道号时跳到上一个仪表的最低在用通道,向下至最低通道号时跳到下一个仪表的最高在用通道);等待期间以3秒为周期读取当前仪表当前通道实时温度并送数码管显示,另外,为了区分巡回、定点工作模式,定点工作模式时最低位数码管以约0.5Hz的频率闪烁显示。

当检测到巡回/定点切换键按下时自动在巡回及定点模式间转换,当检测到温度值低于-199.9度时显示-199.9度。

主模块流程图见下页:

 

2、数据转换子模块(rand_data.a51)

功能:

本模块先将ASCII码转换成BIN码,然后将BIN码转换成BCD码并将数据转换成可直接显示的格式

入口:

a=通道号

出口:

r1=个位,r2=十位,r3=百位,r4=千位(显示数据)

a=非0表示该通道未用

注:

本子模块中直接将小数点信息加到相应位数据上,如需在某位显示小数点,则将该位数据加10H,显示子模块根据此信息显示小数点。

各子程序功能介绍:

●bcd2_bcd1:

将r3,r4中的4位bcd码由低至高分别存入r1,r2,r3,r4中;

●ascii4_bcd3:

将(r0)为首地址的4字节ascii码转换成bcd码并将bcd码由低至高依次存放在r3,r4,r5中,r3,r4中各存放2位bcd码,r5中存放一位bcd码;

●bin_bcd:

将r1,r2中的bin码转换成bcd码并将bcd码由低至高依次存放在r3,r4,r5中,r3,r4中各存放2位bcd码,r5中存放一位bcd码;

●ascii4_bin2:

将(r0)为首地址的4字节ascii码转换成2位bin码存放在r1(低字节),r2(高字节)中;

注:

[(r0)指r0中内容]

●ascii_bin:

将(r0)为地址的一位ascii码转换成bin码存A中。

(高级子程序调用低级子程序以实现更强的功能,源程序中对各子程序有较详细的注释,故此处仅画出主流程图)

3、显示、软件看门狗、20ms定时器子程序(rand_disp.a51)

功能:

通过定时器0以1MS为周期动态显示缓冲区中的内容;同时完成20ms定时器及软件看门狗计数;当软件看门狗定时器溢出时自动复位。

入口:

以disp_buf为首地址依次存放从个位至十万位待显示数据,以disp_wc为首地址(位地址)依次存放个位至千位闪烁控制位信息,为'0'常亮,为'1'闪烁.

 

出口:

wdt中存放软件看门狗计数值,time_20ms中存放20ms的计数值。

Wdt溢出时跳至程序存储器0000H单元

 

 

●将定时器0设定为模式1定时工作,每ms产生一次中断,即显示一位,每10ms6位数据轮流显示1ms;为进一步提高可靠性,在该模块中设计了软件看门狗,实现方法见源程序。

模块流程图如本页所示:

 

4、命令发送及接收控制子模块(rand_send.a51)

功能:

发送命令缓冲区中命令并等待接收完毕,然后检查接收到的数据,接收错误则重发命令,达到设定的次数仍错则存入错误码后退出.

入口:

A=仪表地址

出口:

A=0表示接收正确1表示校验错'*'表示命令错'N'表示无模块流程图如下:

5、串行接收子模块(rand_rec.a51)

功能:

串行接收模块通过中断自动执行,程序检测到@时置ri_f标志并开始接收,检测到回车符时清ri_f后退出,接收到的数据存放在以rec_buf为首地址的缓冲区中。

串行中断(rand_rec.a51)流程图

巡回/定点键中断(rand_key.a51)流程图

6、巡回/定点转换检测模块(rand_key.a51)

功能:

模块通过外部中断1自动执行,检测到巡回/定点按键后先延时去抖动,并等待按键释放后将巡回/定点标志位取反,然后自动跳至主模块中start处

六、调测及运行

1、调试步骤:

●硬件连接:

将各芯片插在面包板上并用导线按原理图连接

●软件开发环境:

KeiluVision2forWindows,该软件的模拟调试器支持C语言及汇编语言源代码调试,其汇编程序支持宏汇编及模块化编程,使用方便。

●首先在模拟调试器中调试各子模块,各子模块调试正常后再将各子模块及主模块全部汇编连接成目标文件,最后将目标代码下载到单片机中并连接智能仪表进行统调。

2、该系统软件部分除报警子模块外已全部开发完成并实际测试通过,测试时用一对长度约1100M的0.5mm2普通电话线作为单片机装置与两个智能仪表的通讯线进行检验。

七、结束语

用单片机+智能仪表构成的温度远程显示系统较造价比较低,其硬件及软件的设计、制作都较简单,有一定的电子及单片机知识便可完成。

同时对该装置软件稍加修改即可与其他带有RS-485通讯端口的仪器仪表通讯(如变频器、电路传感器等),实现远程测量、监视及控制。

与发达国家相比,我国单片机应用的普及程度较低。

通过该实例说明,我们完全可以把我们学到的单片机知识应用到实际工作中,直接创造经济效益。

八、参考资料

《微型计算机原理与应用》西安电子科技大学出版社

王永山杨宏五杨婵娟编著

《单片机高级语言C51Windows环境编程与应用》电子工业出版社

徐爱钧彭秀华编著

《ATMEL89系列Flash单片机原理与应用》电子工业出版社

余永权主编

《标准集成电路数据手册高速CMOS电路》电子工业出版社

《ATMELAT89S8252数据手册》ATMEL公司

《XJ-08H(S)巡回检测仪使用说明书》重庆川仪十八厂

《工业控制计算机组成原理》清华大学出版社

孙廷才王杰孙中健编著

 

九、附录(源程序)

1、主模块(rand_main.a51)

;------------1--------rand_main.a51----------------

namerand_main

EXTRNCODE(I_T0,send_order,rec_si,ascii_bcd,key)

extrndata(DISP_buf,disp_wc,time_20ms,wdt)

extrnidata(rec_buf)

publicTH0_H,TL0_L,START,ri_f,wdt_time,key_work,key_f

progSEGMENTCODE;定义代码段

byte_buffsegmentdata;定义字节数据段1

byte_buffIsegmentidata;定义字节数据段2

bit_buffsegmentdatabitaddressable;定义位数据段

bit_flagsegmentbit

stacksegmentidata;定义堆栈数据段

rsegstack;为堆栈保留20个字节

ds20

CSEGAT00H;定义绝对代码段

USING0;选择工作寄存器组第0组

lJMPrand;复位时程序执行执行点

CSEGAT03H;外部中断0

RETI

CSEGAT0BH;定时器0中断

lJMPI_T0

CSEGAT13H;外部中断1

ljmpkey

RETI

CSEGAT1BH;定时器1中断

RETI

CSEGAT23H;串行中断

ljmprec_si

RSEGBYTE_BUFF

td_temp:

ds1

TD_n:

DS1;通道号

YD_n100:

ds1;仪表地址

;----------------------------------

rsegbit_flag

key_work:

dbit1

ri_f:

dbit1;串行口正在接收标志

;----主程序

RSEGprog

;------------------------------符号定义

key_fequp3.3

key_upequp3.4

key_downequp3.5

wdt_timeequ100;软件看门狗定时器计数值

scon_cequ01010000b;串行口设置为10位UART,允许接收

th1_hequ0fdh;晶振为11.0592M,波特率为9600时初值

tmod_nequ21h;设置定时器(T1作为波特率发生器工作在模式2,T0为模式1)

ie_nequ82h;设置串行,定时器0中断

ip_nequ12h;设置串行,定时器0中断为高级中断

TH0_HEQU0FCH

TL0_LEQU06BH;设定定时器0为1MS中断初值

;------------------初始化代码

clear_wdtmacro;清硬看门狗宏定义

orl96h,#2

ENDM

rand:

ORL96H,#0E1H;启动硬件看门狗

movp0,#0ffh

movr0,#20h

mova,#0

start_300:

mov@r0,a

incr0

cjner0,#128,start_300

setbkey_work;置巡回/定点标志

movp3,#0ffh

movp2,#0ffh

movdisp_wc,#0;初始化闪烁控制位

movip,#ip_n;设置串行,定时器0中断为高级中断

movscon,#scon_c

MOVTMOD,#tmod_n

MOVTH0,#TH0_H;设定定时器初值

MOVTL0,#TL0_L

movth1,#th1_h

movtl1,#th1_h

movie,#ie_n

movpcon,#0

SETBtr1

SETBTR0

;-------显示初始化提示

acallchuhao

CLEAR_WDT

start:

clrea

movsp,#stack-1

setbea

clrri_f;清接收中标志

clrp3.2;置75176为接收状态

jnbkey_work,db_work

;-----------------------------------

setbex1

movyd_n100,#0ah

movtd_n,#0

s_0:

anldisp_wc,#0f0h

movwdt,#0;清看门狗定时器

clear_wdt

mova,yd_n100

lcallsend_order

JNZs_1

movdisp_buf+5,yd_n100

mova,td_n

lcallascii_bcd

jnzs_2

movdisp_buf+4,td_n

acallmov_to_disp

movwdt,#0

clear_wdt

mova,#75

adda,time_20ms

cjnea,time_20ms,$

movwdt,#0

clear_wdt

mova,#75

adda,time_20ms

cjnea,time_20ms,$

s_2:

inctd_n

mova,td_n

cjnea,#8,s_0

movtd_n,#0

s_1:

incyd_n100

MOVA,YD_N100

cjnea,#10h,s_0

movyd_n100,#0ah

ajmps_0

;-----------------------------

db_work:

setbex1

orldisp_wc,#01h

d_3:

movwdt,#0;清看门狗定时器

clear_wdt

jbkey_up,d_4

mova,#2

adda,time_20ms

cjnea,time_20ms,$

jbkey_up,d_4

d_5:

movwdt,#0

clear_wdt

jnbkey_up,d_5;等待向上键松开

;------------------------------------------------

d_53:

mova,td_n

cjnea,#7,d_50

movtd_n,#0

d_52:

incyd_n100

mova,yd_n100

cjnea,#10h,d_51

movyd_n100,#0ah

ajmpd_51

d_50:

inctd_n

d_51:

mova,yd_n100

lcallsend_order

JNZd_52

movdisp_buf+5,yd_n100

mova,td_n

lcallascii_bcd

jnzd_53

movdisp_buf+4,td_n

acallmov_to_disp

mova,#100;2秒钟定时设定

adda,time_20ms

ajmpd_3

;------------------------------------------------

d_4:

jbkey_down,d_10

mova,#2

adda,time_20ms

cjnea,time_20ms,$

jbkey_down,d_3

d_6:

movwdt,#0

clear_wdt

jnbkey_down,d_6;等待向下键松开

;-----------------------------------------------

d_43:

mova,td_n

cjnea,#0,d_40

movtd_n,#7

d_42:

decyd_n100

mova,yd_n100

cjnea,#9h,d_41

movyd_n100,#0fh

ajmpd_41

d_40:

dectd_n

d_41:

mova,yd_n100

lcallsend_order

JNZd_42

movdisp_buf+5,yd_n100

mova,td_n

lcallascii_bcd

jnzd_43

movdisp_buf+4,td_n

acallmov_to_disp

mova,#100;2秒钟定时设定

adda,time_20ms

ajmpd_3

;----------------------------------

d_10:

cjnea,time_20ms,d_30

mova,yd_n100

lcallsend_order

jnzd_30

m

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1