工艺过程微机控制课程设计说明书.docx_第1页
工艺过程微机控制课程设计说明书.docx_第2页
工艺过程微机控制课程设计说明书.docx_第3页
工艺过程微机控制课程设计说明书.docx_第4页
工艺过程微机控制课程设计说明书.docx_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、工艺过程微机控制课 程设计 说明书 班级:无机 姓名: 一、 课程设计的目的 本课程设计的目的是培养学生使用计算机知识解决实际问题的能力。 通过课程设计,使学生能巩固加深课堂所学的工艺过程微机控制的原理知识,熟悉掌 握汇编语言编程技巧。 本课程设计是对学生基本微机开发使用技能的训练。 1学习掌握工业生产中温度采集的方法,标度变换的方式以及采用微机实施 温度控制的原理和方法,学习掌握微机用于数据采集和分析处理方面的知识。 2掌握相关课程内容,了解 A/D 转换的原理及微机接口,综合使用微机原理及使用, 计算机算法语言,测温仪表及热处理设备等方面的知识。 二 课程设计的内容 1 设计题目 选用工业

2、生产中使用最多 ,最具代表性的微机控制系统微机温度控制 系统软件作为本次课程设计的题目。 微机控温系统由工业炉,输入通道,微型计算机,输出通道和执行机构五部分组成的 闭环系统 ,对电炉来讲,作为被控量的温度信号首先由热电偶转变为毫伏电信号,竟放大后 再由 A/D 转换器变为数字量进入计算机。 而后,计算机对所测温度按某一控制算法进行运算, 比较,分析,然后直接经过接口去控制接触器或可控硅调功器,也可经 D/A 转换后去控制可 控硅调压器,来改变控制量电压或功率的大小,以达到控制温度的目的被控量(温度 )和 控制量 (电压或功率 )之间的定量关系,即是该系统的数学模型。 由于时间, 实验条件等各

3、方面的关系, 在本次课程设计中我们只进行控制软件的设计。 2 设计原理 控温系统控制软件编制在 586微型计算机上完成采用汇编语言编制源程序。根据A/D 转 换器原理,用OOFF范围之间的八位二进制代表电偶提供并放大的0+5伏热电势信号,键盘 输入, 根据范围不同的热电偶分度表, 将输入计算机的数字信号进行标度变换, 转换为和温 度热电势对应的温度值显示在计算机屏幕上, 并根据设定温度分别给加热, 保温及超温报警 系统。系统掌握如何利用计算机实现并对工业炉温的采集和控制输出。 3 设计内容 所设计的温度控制软件就包括以下内容: a)开头 b)包括标度变换常量表的设置及各段的设置 c)各预置温度

4、及运算结果的存放单元分配 d)保持温度和报警温度的输入及存放 e)系统初始化 f)拟热电势数字信号输入 g)标度变换,将热电势信号转换为相应的十进制温度值。 h)温度显示 i)设定温度比较,并根据比较结果分别显示加热、保温或报警。 4 设计说明(温度线性插值标度变换) 在实际工程中,温度和热电势的关系不是线性的,使用是时要对其进行线性化插值处 理,即将温度和热电势之间的曲线进行分段处理,用分段直线代替整条曲线。 分段方法如下: a. 将热电势非线形特性曲线进行等温度或等电势的分段,分别用T1 ,T2,T3,Ti+1 表示,对应的热电势用 VO, V1 , V2Vi+1表示,其中Vi是模拟量热电

5、势 Vx经过 A/D转换后的数字量(可根据 A/D转换器的精度和热电偶的测控温度的范围确定)。 b. 分段后,对每一段用直线代替曲线,写出每段的直线方程。Tx=AiVx+Bi c. 经分段处理后,Ai , Bi均为常数,编程是,先把 Vx , Ai , Bi编制成表格,形式如数 据段中。程序执行标度变换时,Vx和Vi依次比较,找到所在区间,再找到响应的Ai , V0 A0(小数) A0(整数) B0(低8位) B0(高8位) V1 A1(小数) A1 (整数) B1 (低8位) B2 (高8位) 0 5.调试程序 Bi,算出温度值。 (热电势原始数据见附表) Vi Ai(小数) Ai(整数)

6、Bi(低8位) Bi(高8位) Vmax Amax(小数) Amax (整数) Bmax (低 8 位) Bmax (高 8 位) d.标度变换数据表的存放格式, MASM 源程序编程完成后,仔细检查,在全屏幕编辑程序PE状态下输入,利用 汇编程序及DEBUG动态调试工具调试程序,完成后运行,给出结果。 附表: No 温度 热电势V ( mv) Ai Bi T/?C 未转换 A/D转换 D H D H 0 0 0 0 00H 0 00H,05H 0 00H,00H 1 100 4.10 21 15H 4.762 C3H,04H 0 00H,00H 2 200 8.13 41 29H 5 00H

7、,05H -5 0FBH,0FFH 3 300 12.21 62 3EH 4.762 C3H,04H 4.762 05H,00H 4 400 16.40 84 54H 4.545 8CH,04H 18.182 12H,00H 5 500 20.65 105 69H 4.762 C3H,04H 0 00H,00H 6 600 24.90 127 7FH 4.545 8BH,04H 22.727 16H,00H 7 700 29.13 149 95H 4.545 8BH,04H 22.727 16H,00H 8 800 33.29 170 0AAH 4.762 C3H,04H -9.524 0F5

8、H,0FFH 9 900 37.33 190 0BEH 5 00H,05H -50 0CDH,0FFH 10 1000 41.27 210 0D2H 5 00H,05H -50 0CDH,0FFH 11 1100 45.10 230 0E6H 5 00H,05H -50 0CDH,0FFH 12 1200 48.81 249 0F9H 5.263 43H,05H -110.526 91H,0FFH 13 1230 49.89 255 0FFH 5 00H,05H -45 0D2H,0FFH 三、程序清单及注释 NAME FUXIANGLAN; NAME WJZM; ;*定义数据段 DATA S

9、EGMENT PARA DATA V DB 00H,00H,05H,00H,00H DB 15H,0C3H,04H,00H,00H DB 29H,00H,05H,0FBH,0FFH DB 3EH,0C3H,04H,05H,00H DB 54H,8BH,04H,12H,00H DB 69H,0C3H,04H,00H,00H DB 7FH,8BH,04H,17H,00H DB 95H,8BH,04H,17H,00H DB 0AAH,0C3H,04H,0F7H,0FFH DB 0BEH,00H,05H,0CEH,0FFH DB 0D2H,00H,05H,0CEH,0FFH DB 0E6H,00H,0

10、5H,0CEH,0FFH DB 0F9H,43H,05H,91H,0FFH DB 0FFH,00H,05H,0D3H,0FFH TH DB WELCOME TO USE THIS PROGRAM,PLEASE INPUT THE HOLD TEMP:,0AH,0DH,$ TA DB PLEASE INPUT THE ALARM TEMP:,0AH,0DH,$ TB DB PLEASE INPUT THE CODE:,0AH,0DH,$ TC DB THE CODE IS WRONG,PLEASE INPUT AGAIN:,0AH,0DH,$ TD DB DO YOU WANT TO HEAT?

11、(Y/N),0AH,0DH,$ V1 DB PLEASE INPUT THE VOLT:,0AH,0DH,$ BY DB THANK FOR YOUR USE,GOODBYE!,OAH,ODH,$ TE DB THE TEMP IS:,0AH,0DH,$ C1 DB STOP HEATING!,0AH,0DH,$ C2 DB HEATING.,0AH,0DH,$ C3 DB DANGER RUN AW AY!,0AH,0DH,$ C4 DB ,0AH,0DH,$ C5 DB Oah,Odh,ERROR!THE HOLD TEMP SHOULD BE SMALLER THAN THE ALARM

12、 TEMP!PLEASE INPUT AGAIN:,0AH,0DH,$ C6 DB 0AH,0DH,THE TEMP SHOULD BE IN THE RANGE(01230) PLEASE INPUT AGAIN:,0AH,0DH,$ RE DB 0,0,0,0 V2 DB 0,0 TH2 DB 0,0,0,0 TA2 DB 0,0,0,0 DATA ENDS 定义堆栈段 * STACK SEGMENT PARA STACKSTACK STA1 DB 234 DUP(?) TOP EQU LENGTH STA1 STACK ENDS ;* 程序初始化 * CODE SEGMENT PARAC

13、ODE ASSUME CS:CODE,DS:DA TA ASSUME SS:STACK,ES:DATA STAR PROC FAR PUSH DS XOR AX,AX MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SI,AX ;* 显示 TB 字符串 * MOV DX,OFFSET TB MOV AH,09H INT 21H ;* 从键盘输入不显示的密码 * MOV AH,8 INT 21H ;* 从键盘输入的密码和设定的密码比较 * LP:CMP AL,38H JA AA CMP AL,38H JB

14、 AA JMP MM ;* 显示 TC 字符串 * AA:MOV DX,OFFSET TC MOV AH,09H INT 21H MOV AH,8 INT 21H JMP LP ;* 显示 TH 字符串 * MM:MOV DX,OFFSET TH MOV AH,09H INT 21H ;* 输入保持温度 * JMP OUT0 OUT1: MOV DX,OFFSET C6 MOV AH,09H INT 21H OUT0: CALL INDA CMP BX,1230H JA OUT1 PUSH BX ;若大于 1230 显示 C6 字符串 ;若小于等于 1230 保存并显示 C4 字符串 MOV

15、DX,OFFSET C4 MOV AH,09H INT 21H * 显示 TA 字符串 * MOV DX,OFFSET TA MOV AH,09H INT 21H * 输入报警温度 * JMP OUT2 OUT3: PUSH BX MOV DX,OFFSET C5 MOV AH,09H INT 21H JMP OUT2 OUT4: PUSH BX MOV DX,OFFSET C6 MOV AH,09H INT 21H OUT2: CALL INDA MOV DX,BX POP BX CMP DX,BX JB OUT3 CMP DX,1230H JA OUT4 ;输入温度小于 TH ;显示 C5

16、 字符串 ;重新输入 ;输入温度大于 1230 ;显示 C6 字符串 ;重新输入 ; 和 TH 作比较 ;和 1230 比较 PUSH BX ; 显示 C4 字符串 PUSH DX LEA DX,C4 MOV AH,09H INT 21H * 输入电压值 * MOV DX,OFFSET V1 ; 显示 V1 字符串 MOV AH,09H INT 21H LEA SI,V2 XOR CX,CX MOV CX,2 INV1: MOV AH,8 INT 21H CMP AL,30H JB INV1 ; 判断是否是 09 CMP AL,3AH JB INV2 CMP AL,41H JB INV1 CM

17、P AL,47H JB INV2 CMP AL,61H JB INV1 CMP AL,66H JA INV1 ;判断是否是 AF ; 判断是否是 af INV2: MOV SI,AL MOV DL,AL MOV AH,2 INT 21H INC SI LOOP INV1 XOR AH,AH LEA SI,V2 MOV BX,2 COM1: MOV CL,SI CMP CL,40H JB COM2 CMP CL,60H JB COM5 SUB CL,20H ;满足条件则在屏幕上显示出来 ;数字转到 COM2 ;小写字母转到 COM5 ;大写字母减 20H 再转到 COM5 ;*ASCII 码转数

18、字 * COM5: SUB CL,37H MOV SI,CL INC SI DEC BX CMP BX,00H JZ COM3 JMP COM1 COM2: SUB CL,30H MOV SI,CL INC SI DEC BX CMP BX,00H JZ COM3 JMP COM1 COM3: LEA SI,V2 MOV AL,SI MOV CL,4 ;COM3 实现将转换完了的结果保存在 AL 中 SHL AL,CL MOV BL,SI+1 ADD AL,BL ;* 标度转换读入 * MOV SI,OFFSET V COM4: MOV BL,SI CMP AL,BL JBE CON1 ;CO

19、M4 实现将 SI 指针转移 ;到相对应的 A/D 值区间内 ADD SI,5 JMP COM4 乘法运算 * CON1: MOV BH,SI-3 MOV BL,SI-4 MUL BX ;实现将 BX 乘以 AX 并保存到 AX MOV CL,8 SHR AX,CL SHL DX,CL ADD AX,DX 加法运算 * CON2: MOV BL,SI-2 MOV BH,SI-1 ADC AX,BX ;* 十六进制转换十进制 * MOV BL,10 DIV BL LEA SI,TH2 MOV SI+3,AH XOR AH,AH DIV BL MOV SI+2,AH XOR AH,AH DIV B

20、L MOV SI+1,AH MOV SI,AL MOV CL,4 MOV AH,SI SHL AH,CL ADD AH,SI+1 MOV AL,SI+2 SHL AL,CL ADD AL,SI+3 PUSH AX MOV DX, OFFSET C4 MOV AH,9 INT 21H ;* 实际温度输出 * MOV DX,OFFSET TE ; 显示 TE 字符串 MOV AH,9 INT 21H MOV CX,4 LEA SI,TH2 TN1: MOV AL,SI ;TN1 实现将数字转换成相应的 ASCII 码 ADD AL,30H MOV SI,AL INC SI LOOP TN1 LEA

21、 SI,TH2 MOV CX,4 TN2: MOV DL,SI ;TN2 实现显示功能 MOV AH,2 INT 21H INC SI LOOP TN2 LEA DX,C4 MOV AH,9 INT 21H ;换行回车 数据比较 * POP AX POP DX POP BX CMP AX,DX JB HOLD ;比较 TE,TA 报警 * MOV DX,OFFSET C3 ;TE 大于 TA 显示 C3 字符串 MOV AH,09H INT 21H MOV CX,10H QQ:MOV DL,07H MOV AH,2 INT 21H LOOP QQ HLT JMP EXIT 继续加热 * ;比较

22、 TH,TE HOLD: CMP BX,AX JB STOP ;* 显示 TD 字符串 * MOV DX,OFFSET TD MOV AH,09H INT 21H ;* 从键盘输入不显示的字母 * MOV AH,8 INT 21H ;* 从键盘输入的字母和设定的字母比较 * CMP AL,4EH JA NN JMP EXIT NN:MOV DX,OFFSET C2 MOV AH,9 INT 21H ;TE 小于 TH 显示 C2 字符串 JMP EXIT 停止加热 * ;TE 大于 TH 显示 C1 字符串 STOP: MOV DX,OFFSET C1 MOV AH,9 INT 21H 程序结

23、束 * ;判断是否为 BACKSPACE ;判断是否为回车 ;判断是否是数字 ;若位数字则显示 ;若为 BACKSPACE , CX 加 1, ;SI-1 ;将原数字覆盖 EXIT: MOV DX,OFFSET BY MOV AH,9 INT 21H MOV AH,1 INT 21H POP DS MOV AH,4CH INT 21H RET ;* 数据读入子程序 * INDA PROC MOV CX,4 LEA SI,TA2 ;* 数据的键盘输入 * IN1: MOV AH,8H INT 21H CMP AL,08H JE IN8 CMP AL,0DH JE IN2 CMP AL,30H J

24、B IN1 CMP AL,39H JA IN1 MOV SI,AL MOV DL,SI MOV AH,2 INT 21H INC SI LOOP IN1 JMP IN5 IN8: INC CX DEC SI MOV DL,08H MOV AH,2 INT 21H MOV DL,20H MOV AH,2 INT 21H MOV DL,08H MOV AH,2 INT 21H JMP IN1 IN2: XOR BX,BX MOV BL,30H ADD SI,BL ADD SI+1,BL ADD SI+2,BL ADD SI+3,BL CMP CX,4 JE IN5 IN3: CMP CX,3 JB

25、 IN4 MOV BH,SI-1 MOV SI+2,BH MOV SI-1,BL MOV SI+1,BL MOV SI,BL JMP IN5 IN4: CMP CX,2 JB IN6 MOV BH,SI-1 MOV SI+1,BH MOV BH,SI-2 MOV SI,BH MOV SI-2,BL MOV SI-1,BL JMP IN5 IN6: MOV BH,SI-1 MOV SI,BH MOV BH,SI-2 MOV SI-1,BH MOV BH,SI-3 MOV SI-2,BH MOV SI-3,BL IN5: MOV CX,4 LEA SI,TA2 IN7: MOV AL,SI ;先将

26、 SISI+3 中的数制设定为 ;判断是否未输入 ;判断是否输入为 1 位数 ;判断是否输入为 2 位数 ;输入为 3 位数的情况 ;ASCII 码转数字 30H SUB AL,30H MOV SI,AL INC SI LOOP IN7 XOR AX,AX XOR BX,BX MOV CL,4 LEA SI,TA2 MOV AH,SI SHL AH,CL MOV BH,SI+1 ADD AH,BH MOV AL,SI+2 SHL AL,CL MOV BL,SI+3 ADD AL,BL MOV BX,AX RET INDA ENDP STAR ENDP CODE ENDS END STAR 四程

27、序编制及调试过程出现的问题及解决方案 1 输入保持温度没有和报警温度做比较。于是我们在输入报警温度后加了 CMP DX,BX, 实现了如果报警温度低于保持温度,提示error。 2 输入温度无限制。 应该通过和 1230比较,将报警温度和保持温度限制在 01230 之 间如输入数字大于 1230 则出现提示,重新输入,直至小于 1230 为止。 3 输入位数的问题。 温度可以输入 4位数,还可以实现 03 位数的输入而且不必补零。 回车键作为输入结束的标志。 实现方法: 先将输入的 ASCII 码值和 0DH 进行比较, 若相等则证明是回车。然后将输入结果向后移位,前面缺少的为上以 30H 补

28、充。 4 修改程序过程中,会出现乱码,溢出等现象,需要继续进行修改,寻找正确的解决 办法,每次修改之后,运行之前都要保存下来。 5 原程序中子程序 INDA 中可以输入 ASCII 码大于 40H 的任意字符。本程序中,通 过和 30H 和 39H 作比较,将输入字符的范围设定为数字 09。如果输入大于 0到 9 和字母,不予显示。 6 若输入错误,可通过键入 BACKSPACE 键重新输入。通过将 AL 和 08H 比较,判 断是否为 BACKSPACE ,如为 BACKSPACE 则用空格将原输入数字屏蔽, 通过 CX+1 实现总位数保持不变。 7 报警温度限制。通过和保持温度比较,将报警

29、温度限制在保持温度以上。若输入报 警温度小于保持温度则出现提示,重新输入,直至大于保持温度为止。 五程序流程图 1 主程序流程图(见后页) 2、INDA 子程序流程图(见后页) 3、程序功能说明 程序能实现将输入的两个字节的16进制电压值V转化为相应的温度值 TE。并能比较 TE和TH和TA的大小关系。 当TETA 时,输出“ DANGER RAN AWAY ”;当TETH 时, 输出“ HEATING ”;当 THTETA 时,输出“ STOP HEATING ”。 要求: 1. 在“ PLEASE INPUT THE HOLD TEMP: ” 和“ PLEASE INPUT THE ALARM TEMP: ”的提示下输入保持温度和报警温度,两温度须为10进制数(09), 其他输入值不予显示; 2. 输入温度值可为14位数,输入13位数时以回车作为输入结束的标志,输 入4位时自动转入下一步,输入错误时可用BACKSPACE清除并重新输入。 3. 要求

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论