实时温度压力的主从式测控系统.docx
- 文档编号:27369152
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:32
- 大小:90.01KB
实时温度压力的主从式测控系统.docx
《实时温度压力的主从式测控系统.docx》由会员分享,可在线阅读,更多相关《实时温度压力的主从式测控系统.docx(32页珍藏版)》请在冰豆网上搜索。
实时温度压力的主从式测控系统
上海理工大学
计算机科学与工程系
实验报告
实验名称
实时温度/压力的主从式测控系统
课程名称
微机与接口课程设计
姓名:
王磊学号:
0916020226
日期:
2012-06-30地点:
系统楼
组员:
王磊、王松教师:
孙国强
一、实验要求
在从机(实验装置)上进行温度/压力的采样、变换、控制、显示、传输等,在DOS环境下用x86汇编完成面向芯片的低层开发
采样:
系统实时采样温度和压力值,根据压力大小确定设定温度,对应t=p/20+40(t为设定温度,p为压力值).如p=500克,则t为65度,通过温度传感器采集实时温度。
控制:
用加温和冷却使实时温度与设定温度拟合.
显示:
在PC机上显示相应操作和状况提示,在装置的段码显示器动态显示设定及实时温度。
通讯:
接受来自主机的运行和退出命令进行相应操作,运行期间,不间断地向主机送出即刻的设定和实时温度。
在主机(PC系统机)上进行界面设计、图形输出、对从机的实时控制等,在WINDOWS环境下用高级语言完成编程.
设定串行通讯的端口,帧格式,日期和时间等,有打开串行端口,运行,退出等按钮,后两个用于本身及对从机的运行控制,有定时接受从机全体数据的memo框和显示有效数据的edit框,将有效数据以曲线图形方式动态实时显示,主机和从机通过异步串行方式进行通讯
串行通讯:
RS232C标准,三线连接相同的帧格式波特率全双工方式
主机发送命令:
启动命令:
0DH(回车)退出命令:
1BH(ESC键)
从机发送数据
数据表达为ASCII码,设定温度以‘A’为数据前缀,实时温度以‘B’为数据前缀
每次采样后均向主机发送设定温度和实时温度
如‘A45.6B37.8’表示当前设定温度为45.6度,实时温度为37.8度
主机定时(如:
1000MS)读取接收数据,并以这批数据的第一个‘AXX.XBXX.X’为有效的设定温度和实时温度值
通信要注意的事项:
随时监听,保证不丢失(处理上收用中断,发可以用中断或查询)
保证通信数据正确:
通信上增加差错控制,数据包提供握手信号
主机设计要求:
串行端口和帧格式的选择,
所有接收数据的显示,如采用MEMO框,及从数据中截取的有效数据显示,如采用EDIT框
应有打开端口,启动,退出三个基本命令按钮
能将接收有效数据以曲线图形动态显示
二、设计方案
涉及的硬件芯片:
8255并行接口:
用于加温冷却控制,端口号:
218-21BH
8255管理显示键盘:
用于装置上的设定温度实时温度的动态显示,端口号:
210-212H
8250UART(PC内):
用于与主机的全双工串行通讯,端口号:
3F8H-3FFH(COM1),2F8H-2FFH(COM2)
0809A/D转换器:
作为压力(IN0通道)和温度(IN1通道)的A/D采样输入,端口号:
208H(压力),209H(温度)
从机流程和主机流程:
三,附加功能
通过程序控制二极管的亮和不亮,使得二极管在加热时候1,3,5,7灯亮,而冷却的时候是2,4,6,8灯亮
四,实验代码
DATASEGMENT
XHDB10H,10H,10H,10H;显示缓存8个单元
DB0FH,00H,00H,00H
STATUSDB00H;00H:
停机,0FFH:
运行
FLAGDB00H;00H:
不合理,0FFH:
合理
SSWDDW00H;实时温度
MAXVALUEDB00H,00H;上限值缓存
MINVALUEDB00H,00H;下限值缓存
TARGETRIGHTNUMBERDW00H;目标值右值
TARGETLEFTNUMBERDW00H;目标值左值
TARGETNUMBERDW00H;目标值
MISTAKENUMBERDW00H;误差值
ALARMNUMBERDW00H;报警值
MAXNUMBERDW00H;上限值
MINNUMBERDW00H;下限值
COUNTERDB00H;位数
MARKDB00H;标记
DMDB3FH,06H,5BH,4FH,66H,6DH;段码表
DB7DH,07H,7FH,6FH,79H,72H,73H
DB37H,3FH,00H,40H
R2DB?
R4DB?
PA55EQU218H
PB55EQU219H
PC55EQU21AH
P55CTLEQU21BH
PA255EQU208H
PB255EQU209H
PC255EQU20AH
P255CTLEQU20BH
CSADEQU230H
WDADEQU231H
DATAENDS
;##############################主程序######################
CODESEGMENT'code'
ASSUMECS:
CODE,DS:
DATA,SS:
DATA
START:
MOVAX,DATA
MOVDS,AX
;初始化变量值
MOVDX,P55CTL;初始化8255
(1)工作方式
MOVAL,90H;10010000(A口方式0输入,B口和C口方式0输出)
OUTDX,AL
MOVDX,P255CTL;初始化8255
(2)工作方式
MOVAL,80H;10001000(A口和B口方式0输出)
OUTDX,AL
MOVDX,PA255;8255
(2)A口清零
INAL,DX
MOVAH,AL;将原AL的值保存在AH中
ANDAL,0FFH;00H
OUTDX,AL
MOVDX,PB255;8255
(2)B口清零
INAL,DX
MOVAH,AL
ANDAL,00H
OUTDX,AL
;清温度控制
CALLINITTEMP
MYRUN:
NOP
CALLAD
CALLDIVSSWDTO3NUMBER
CALLDISPSTRING
CALLKEY
CMPSTATUS,0FFH
JNZMYRUN
;调用检测设置值是否合理子程序
CALLCHECKSETTING
CMPFLAG,0FFH
JNZMYRUN
;调用温度检测子程序
CALLCHECKTEMPERATURE
JMPMYRUN
MYEXIT:
MOVAH,4CH
INT21H
;***************************dividerealtimetemperature****************
DIVSSWDTO3NUMBERPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVSI,OFFSETXH
MOVAX,SSWD
MOVDX,00H
MOVBX,10H
DIVBX
MOVBYTEPTR[SI+7],DL
DIVBX
MOVBYTEPTR[SI+6],DL
DIVBX
MOVBYTEPTR[SI+5],DL
POPDX
POPCX
POPBX
POPAX
RET
DIVSSWDTO3NUMBERENDP
;***********************checktemperature****************************
CHECKTEMPERATUREPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
;温度采样
CALLAD
;判断当前温度是否小于报警值
MOVAX,ALARMNUMBER
;因为SSWD是扩大10倍的温度,所以警报值也要扩大10倍
MOVBX,16
MULBX
CMPSSWD,AX
JNBHANDLEALARM
;计算目标温度的正常范围
MOVAX,TARGETNUMBER
MOVTARGETRIGHTNUMBER,AX
MOVSI,OFFSETXH
MOVBX,WORDPTR[XH+2]
MOVBH,00H
ADCTARGETRIGHTNUMBER,BX
MOVAX,TARGETNUMBER
MOVTARGETLEFTNUMBER,AX
MOVSI,OFFSETXH
MOVBX,WORDPTR[XH+2]
MOVBH,00H
SUBTARGETLEFTNUMBER,BX
;判断当前温度是否在正常范围内
;将targetRightNumber扩大10倍
MOVAX,TARGETRIGHTNUMBER
MOVBX,16
MULBX
CMPSSWD,AX
JNBHANDLEALARM;大于正常范围上限
;将targetleftNumber扩大10倍
MOVAX,TARGETLEFTNUMBER
MOVBX,16
MULBX
CMPAX,SSWD
JNBHANDLEALARM;小于正常范围下限
;innomalarea~~
;将目标值扩大10倍
MOVAX,TARGETNUMBER
MOVBX,16
MULBX
CMPAX,SSWD
JNZCHECKDIRE
;当前温度和目标值相等,保持
CALLINITTEMP
CALLDISPLEDONE
JMPCTEXIT
CHECKDIRE:
CMPAX,SSWD
JNBNEEDHEAT
;冷却操作
CALLCOOLING
CALLDISPLEDLEFT
JMPCTEXIT
NEEDHEAT:
;加热操作
CALLHEATING
CALLDISPLEDRIGHT
JMPCTEXIT
HANDLEALARM:
CALLMYALARM;报警
JMPCTEXIT
CTEXIT:
POPDX
POPCX
POPBX
POPAX
RET
CHECKTEMPERATUREENDP
;*****************************AD*********************************
ADPROCNEAR
MOVBX,00H
MOVCX,08H;采样8次
BB1:
MOVDX,WDAD;启动AD采样
MOVAX,00H
OUTDX,AL
CALLDISPSTRING;等待AD转换
INAL,DX;读取AD值
ADCBX,AX;求平均值
LOOPBB1
RCRBX,1
RCRBX,1
RCRBX,1;除8
MOVAL,3
MULBL;一位等于0.3度
CALLCHANGTOBCD;扩大10倍
MOVSSWD,AX
RET
ADENDP
;*****************************ChangToBCD************************
CHANGTOBCDPROCNEAR
PUSHDX
MOVBX,AX
MOVAX,00H
MOVCL,10H
BB2:
CLC
RCLBX,1
ADCAL,AL
DAA
MOVCH,AL
MOVAL,AH
ADCAL,AL
DAA
MOVAH,AL
MOVAL,CH
DECCL
JNZBB2
POPDX
RET
CHANGTOBCDENDP
;****************************checkSetting**************************
CHECKSETTINGPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
;computing~~
;计算目标值
MOVAX,0FH
MOVBX,00H
MOVSI,OFFSETXH
MOVAL,16;10H
MOVBL,BYTEPTR[SI]
MULBL;乘10
ADCAL,[SI+1];加上个位
MOVAH,00H
MOVTARGETNUMBER,AX
;计算报警值
MOVAX,TARGETNUMBER
MOVBX,[SI+3]
ADCBX,AX;加上报警值
MOVBH,00H
MOVALARMNUMBER,BX
;计算上限值
MOVAX,00H
MOVBX,00H
MOVSI,OFFSETMAXVALUE
MOVAL,16;10H
MOVBL,BYTEPTR[SI]
MULBX;乘10
ADCAX,[SI+1];加上个位
MOVAH,00H
MOVMAXNUMBER,AX
;计算下限值
MOVAX,00H
MOVBX,00H
MOVSI,OFFSETMINVALUE
MOVAL,16;10H
MOVBL,BYTEPTR[SI]
MULBX;乘10
ADCAX,[SI+1];加上个位
MOVAH,00H
MOVMINNUMBER,AX
;判断误差值与报警值的大小
MOVBX,OFFSETXH
MOVAH,00H
MOVAL,BYTEPTR[BX+2]
MOVCH,00H
MOVCL,BYTEPTR[BX+3]
CMPAL,CL
JNBSETMISTAKELIGHT
;目标值>=上限值
MOVAX,TARGETNUMBER
MOVBX,MAXNUMBER
CMPAX,BX
JNBSETMISTAKELIGHT
;目标值<=下限值
MOVBX,MINNUMBER
CMPBX,AX
JNBSETMISTAKELIGHT
;movstatus,0FFH
;设置合理标记
MOVFLAG,0FFH
JMPCSEXIT
;设置错误灯亮
SETMISTAKELIGHT:
MOVAL,07FH;//8亮
MOVDX,PB255
OUTDX,AL
CALLDISPSTRING
;movstatus,00H;settingstatus
;设置不合理标记
MOVFLAG,00H
JMPCSEXIT
CSEXIT:
POPDX
POPCX
POPBX
POPAX
RET
CHECKSETTINGENDP
;*****************************alarm************************
MYALARMPROCNEAR
MOVAL,0DFH;//6亮
MOVDX,PB255
OUTDX,AL
CALLDISPSTRING
;设置停机状态
MOVSTATUS,00H
RET
MYALARMENDP
;***************************cooling*****************************
COOLINGPROCNEAR
MOVDX,PC255
MOVAL,01111111B
OUTDX,AL
RET
COOLINGENDP
;*****************************heating***************************
HEATINGPROCNEAR
MOVDX,PC255
MOVAL,10111111B
OUTDX,AL
RET
HEATINGENDP
;*****************************initTemperature********************
INITTEMPPROCNEAR
MOVDX,PC255
MOVAL,11111111B
OUTDX,AL
RET
INITTEMPENDP
;************************键盘子程序************************
KEYPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
WAIT3:
MOVR2,00H;选择行,根据138的连线情况
CALLDISPSTRING
CALLDISPSTRING
;calldispString
WAIT1:
MOVAL,R2;行扫描值送IO端口
MOVDX,PB55
OUTDX,AL
MOVDX,PA55;读列值存放在AL中
INAL,DX
CMPAL,0FFH;扫描程序判断有键按下的值
JNEWAIT2
INCR2;无键,则选择下一行
CMPR2,02H;只扫描两行
JZKEYEND
JMPWAIT1
WAIT2:
CALLDISPSTRING;延时,并二次扫描确定有键按下
CALLDISPSTRING
;calldispString
MOVAL,R2;行扫描值送IO端口
MOVDX,PB55
OUTDX,AL
MOVDX,PA55;读列值存放在AL中
INAL,DX;读键
CMPAL,0FFH;在判该行有无键按下
JEWAIT3;无键按下,重新扫描
MOVR4,00H;判断列值放入R4
LK3:
RCRAL,1
JNCLK4
INCR4
JMPLK3
LK4:
MOVAL,R2
CMPAL,01H;判是否第2行
JNZLK5
MOVAL,08H
ADDAL,R4
MOVR4,AL;R4存放键值,即键值送内存单元
LK5:
CALLDISPSTRING
CALLDISPSTRING
;calldispString
MOVAL,R4
;handlekey~~
;swithstructure
CMPAL,00H
JEKEYEND
CMPAL,09H
JNBFUNCTIONKEY
;处理数字键handlenumberkey
JMPNUMBERKEY
FUNCTIONKEY:
CMPAL,0AH
JZTARGETKEY
CMPAL,0BH
JZMISTAKEKEY
CMPAL,0CH
JZALARMKEY
CMPAL,0DH
JZMAXKEY
CMPAL,0EH
JZMINKEY
CMPAL,0FH
JZSTARTKEY
TARGETKEY:
MOVMARK,01H
JMPKEYEND
MISTAKEKEY:
MOVMARK,02H
JMPKEYEND
ALARMKEY:
MOVMARK,03H
JMPKEYEND
MAXKEY:
MOVMARK,04H
JMPKEYEND
MINKEY:
MOVMARK,05H
JMPKEYEND
STARTKEY:
MOVMARK,06H
JMPNUMBERKEY
NUMBERKEY:
CMPMARK,01H
JZMARK01
CMPMARK,02H
JZMARK02
CMPMARK,03H
JZMARK03
CMPMARK,04H
JZMARK04
CMPMARK,05H
JZMARK05
CMPMARK,06H
JZMARK06
JMPKEYEND
MARK01:
;处理目标值
MOVBX,OFFSETXH
CMPCOUNTER,00H
JNZMARK01TWO
;十位
MOVBH,00H
ADDBL,00H;存00H
MOVAL,R4
MOVBYTEPTR[BX],AL
INCCOUNTER
JMPKEYEND
MARK01TWO:
;个位
MOVBH,00H
ADDBL,01H;存01H
MOVAL,R4
MOVBYTEPTR[BX],AL
MOVCOUNTER,00H
JMPKEYEND
MARK02:
;处理误差值
MOVBX,OFFSETXH
MOVBH,00H
ADDBL,02H;存02H
MOVAL,R4
MOVBYTEPTR[BX],AL
JMPKEYEND
MARK03:
;处理报警值
MOVBX,OFFSETXH
MOVBH,00H
ADDBL,03H;存03H
MOVAL,R4
MOVBYTEPTR[BX],AL
JMPKEYEND
MARK04:
;处理上限值
MOVBX,OFFSETMAXVALUE
CMPCOUNTER,00H
JNZMARK04TWO
;十位
MOVAL,R4
MOVBYTEPTR[BX],AL
INCCOUNTER
JMPKEYEND
MARK04TWO:
;个位
INCBX
MOVAL,R4
MOVBYTEPTR[BX],AL
MOVCOUNTER,00H
;用双色灯显示已经保存上限值
;MOVDX,PA255;读取原来值
;INAL,DX
;MOVAH,AL;保存
;ORAL,00000010B
;OUTDX,AL
JMPKEYEND
MARK05:
;处理下限值
MOVBX,OFFSETMINVALUE
CMPCOUNTER,00H
JNZMARK05TWO
;十位
MOVAL,R4
MOVBYTEPTR[BX],AL
INCCOUNTER
JMPKEYEND
MARK05TWO:
;个位
INCBX
MOVAL,R4
MOVBYTEPTR[BX],AL
MOVCOUNTER,00H
;用双色灯显示已经保存下限值
;MOVDX,PA255;读取原来值
;INAL,DX
;MOVAH,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实时 温度 压力 主从 测控 系统