微机原理课程设计电压报警系统.docx
《微机原理课程设计电压报警系统.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电压报警系统.docx(32页珍藏版)》请在冰豆网上搜索。
微机原理课程设计电压报警系统
重庆科技学院
课程设计报告
院(系):
_电子信息工程学院_班级:
学生姓名:
学号:
设计地点(单位)____________________
设计题目:
____电压报警系统______
完成日期:
2010年7月16日
指导教师评语:
_______________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):
________________
教师签名:
_________________________
课程设计任务书
设计题目:
电压报警系统设计
学生姓名
课程名称
微机原理与接口技术课程设计
专业班级
地点
起止时间
7月5日~7月16日
设计内容及要求
设计内容:
采集实验箱提供的0~5V的电压;当输入电压在额定值以内,用数码管显示实际电压值;当输入电压超过额定值3V,数码管显示“E.O”,并发出报警音,并将此电压限制到额定值后输出。
设计要求:
(1)控制系统硬件用8086系统构成:
CPU8086,定时器/计数器芯片,并行接口芯片,4位7段数码管单元,模数转换单元,蜂鸣器。
(2)设计控制系统应用软件。
(3)系统功能:
显示电压,报警,修正电压等功能。
设计
参数
(1)以十进制形式显示电压值并保留小数位1位;
(2)用硬件实现定时功能;
(3)报告正文字数约4000字以上(不包含程序清单),内容主要有总体设计方案,工作和组成原理(框图)或设计说明,采用的技术路线,接口电路设计,程序设计(程序框图和程序清单及注释),对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议。
进度
要求
7月5日--7月6日明确设计任务,学习相关知识;
7月7日--7月9日查阅相关资料,进行基础练习;
7月8日--7月14日根据题目要求,进行设计和实现;
7月15日--7月16日撰写课程设计报告,进行答辩。
参考资料
[1]赵树升,赵雪梅.现代微机原理及接口技术[M],北京:
清华大学出版社,2008年8月
[2]戴梅萼.微型计算机技术及应用——从16位到32位(第2版)[M],北京:
清华大学出版社,2003年2月
[3]西安唐都科教仪器公司.32位微机原理与接口技术实验教程.2005年
[4]西安唐都科教仪器公司.32位微机原理与接口技术用户手册.2005年
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
年月日
摘要
当代计算机是微电子学与计算数学相结合的产物。
微电子学的基本元件及其集成电路构成了它的硬件基础;计算数学的方法与数据结构则构成了计算机的软件基础。
世界上第一台计算机于1946年在美国宾夕法尼亚大学诞生,自1981年IBM公司推出IBM—PC后,计算机的发展进入了微机时代。
微型计算机的迅速普及,使得计算机广泛运用于工业、农业、科学技术和社会生活的各个领域,极大的改变了生产和生活的方式,并成为推动社会发展的巨大生产力。
数据采集系统是计算机在工业控制中最为普遍的应用系统。
它的任务是采集生产过程中的工况参数并经过A/D转换器送入内存,CPU将对这些参数,数据进行分析、运算和处理。
如数字显示、越界报警等功能。
若配上输出通道就可以组成计算机控制系统。
此设计是一个电压报警系统的模拟实验,采集箱提供0~5V的电压,当输入电压在额定值以内,用数码管显示实际的电压值;当输入的电压超过额定值3V,数码管显示“E.O”,并发出警告音,并将电压限制到额定的值后输出。
该系统具有显示电压,报警,修正电压的功能。
关键词:
接口A/D转换修正电压发声警告
1系统需求分析
1.1设计内容
电压报警系统是一个对超过额定电压就会产生蜂鸣效果,进行报警的系统。
它主要是通过采集实验箱提供的0~5V的电压;当输入电压在额定值以内,用数码管显示实际电压值;当输入电压超过额定值3V,数码管显示“E.O”,并发出报警音,并将此电压限制到额定值后输出。
1.2设计要求
(1)控制系统硬件用8086系统构成:
CPU8086,定时器/计数器芯片,并行接口芯片,4位7段数码管单元,模数转换单元,蜂鸣器。
(2)设计控制系统应用软件。
(3)系统功能:
显示电压,报警,修正电压等功能。
1.3芯片选择
在本系统中,主要采用的芯片有CPU8086、8254可编程定时/计数器芯片、8255并行接口芯片、A/D转换接口芯片ADC0809。
CPU8086主要是电压报警系统的核心芯片,协调着8254芯片,8255芯片,ADC0809芯片相互间的工作。
8254是可编程定时/计数器芯片,用来控制蜂鸣器。
8255是并行接口芯片,用来连接数码管显示单元和8254
ADC0809是A/D转换单元,用来模拟电压,将模拟信号转换为数字信号。
2芯片及数码管介绍
在整个电压报警系统中,所用到的元器件有了CPU8086、8254可编程定时/计数器、8255并行接口芯片、A/D转换接口芯片、数码管以及蜂鸣器。
2.1CPU8086
微处理器CPU是微机的核心芯片,是整个系统运算和指挥控制中心。
在电压报警系统中用到的CPU是字长为16位的,一次能处理16位数据的CPU8086。
CPU8086拥有运算器,控制器和寄存器组三大主要部件。
其功能部件包括指令执行部件EU和总线部件BIU,其寄存器结构由八个通用寄存器,四个段寄存器和二个控制寄存器组成。
在电压报警系统中,用到了XD0-XD7地址总线,XIOR,XIOW读写信号引脚,IOY0,IOY1,IOY2三个端口号,用来控制8255并行接口芯片,8254可编程定时/计数器芯片,A/D转换接口芯片。
2.28254可编程定时/计数器芯片
8254是Intel公司生产的可编程间隔定时器。
它具有以下基本功能:
1、有三个独立的16位计数器;
2、每个计数器可按二进制或十进制(BCD)计数;
3、每个计数器可编程工作于六种不同的工作方式;
4、8254每个计数器允许的最高计数频率为10MHz;
5、8254有读回命令,可以读出状态寄存器的内容;
6、计数脉冲可以是有规律的时钟信号,也可以是随机信号。
8254的工作方式如下述:
1、方式0:
计数到0结束输出正跃变信号方式。
2、方式1:
硬件可重触发单稳方式。
3、方式2:
频率发生器方式。
4、方式3:
方波发生器。
5、方式4:
软件触发选通方式。
6、方式5:
硬件触发选通方式。
8254的控制字有两个:
一个是用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。
这两个控制字共用一个地址,由标志位来区分。
控制字格式和读回控制字格式分别如图2-1和如图2-2。
当读回控制字的D4位为0时,由该读回控制字D1-D2位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。
状态字格式如图2-2所示。
图2-18254方式控制字
图2-28254读出控制字
图2-38254状态字格式
在电压报警系统中,8254采用的是定时器0,方式3来进行控制的,输入时钟频率为00502H,门控信号输入引脚GATE0与8255的PA0和PA1相连,OUT0与蜂鸣器相连,当门控信号接收到从8255的PA0和PA1传来的高电平,则蜂鸣器会发出报警声,否则蜂鸣器停止工作。
2.38255并口芯片
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A,B,C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0,方式1,方式2。
方式0是基本输入输出方式,方式1是选通输入输出方式,方式2是双向选通工作方式。
其工作方式控制字如图2-1。
在电压报警系统中,8255起到是一个桥梁作用,在本系统中,8255采用方式0基本输入输出方式,A口,B口,C口均为输出。
8255的D0-D7连接系统总线的XD0-XD7,RD,WD,CS分别连接系统总线的XIOR,XIOW,IOY0。
8255的A口低两位PA0,PA1控制8254可编程定时/计数器芯片。
8255的B口的PB0-PB7和C口的低四位PC0-PC3来控制数码的显示。
图2-48255工作方式控制字
2.4A/D转换接口芯片
ADC0809包括一个8位的逐次逼近型的ADC部分,并提供一个8通道的模拟多路开关和联合寻址逻辑。
用它可直接输入8个单端的模拟信号,分时进行A/D转换,在多点巡回检测、过程控制等应用领域中使用非常广泛。
在电压报警系统中,ADC08089的CS片选信号连接系统总线的IOY2端口,CLK连接系统总线CLK,WR,RD分别连接系统总线的XIOW和XIOR,它将模拟信号转换为数字信号存储在AL中,其输出范围为0-255。
2.5数码管显示单元
本系统中所用到的数码管显示单元是由4个7段数码管组成,其每个数码管结构图如图2-5所示。
图2-5数码管结构图
数码管的显示数字的原理其实是根据每个数码管发光来组成一个数字,在本系中给数码管给以低电平,则数码管发光,否则数码管熄灭。
其具体数字显示编码表表2-1如下:
dp
g
f
e
d
c
b
a
不带小数点
带小数点
0
0/1
0
1
1
1
1
1
1
3FH
BFH
1
0/1
0
0
0
0
1
1
0
06H
86H
2
0/1
1
0
1
1
0
1
1
5BH
DBH
3
0/1
1
0
0
1
1
1
1
4FH
CFH
4
0/1
1
1
0
0
1
1
0
66H
E6H
5
0/1
1
1
0
1
1
0
1
6DH
EDH
6
0/1
1
1
1
1
1
0
1
7DH
FDH
7
0/1
0
0
0
0
1
1
1
07H
87H
8
0/1
1
1
1
1
1
1
1
7FH
FFH
9
0/1
1
1
0
1
1
1
1
6FH
EFH
E
0/1
1
1
1
1
0
0
1
79H
F9H
表2-1数码管数字显示编码表
3硬件连线
3.18254可编程定时/计数器芯片接线图
在本系统中,8254门控信号输入引脚GATE0与8255的PA0和PA1相连,时钟输入信号CLK0与系统总线的CLK相连,OUT0与蜂鸣器相连,当门控信号接收到从8255的PA0和PA1传来的高电平,则蜂鸣器会发出报警声,否则蜂鸣器停止工作,具体接线图如下:
图3-18254可编程定时/计数器芯片接线图
3.28255并行接口芯片接线图
8255的D0-D7连接系统总线的XD0-XD7,RD,WD,CS分别连接系统总线的XIOR,XIOW,IOY0。
8255的A口低两位PA0,PA1控制8254可编程定时/计数器芯片。
8255的B口的PB0-PB7和C口的低四位PC0-PC3来控制数码的显示。
8255除了连接系统总线之外,还要连接数码管,数码管显示引脚是A,B,C,D,E,F,G,DP分别连接8255的PB0-PB7,数码管选择引脚X1,X2,X3,X4分别连接8255的PC0-PC4,具体接线图如下:
图3-28255并行接口芯片接线图
3.3A/D转换接口芯片接线图
在电压报警系统中,ADC08089的CS片选信号连接系统总线的IOY2端口,CLK连接系统总线CLK,WR,RD分别连接系统总线的XIOW和XIOR,具体接线图如下:
图3-3A/D转换接口芯片接线图
3.4数码管连线图
数码管显示引脚是A,B,C,D,E,F,G,DP分别连接8255的PB0-PB7,数码管选择引脚X1,X2,X3,X4分别连接8255的PC0-PC4,具体接线图如下
图3-4数码管接线图
4软件实现
4.1模块流程图
4.1.1主程序流程图
图4-1主程序流程图
4.1.2电压转换模块流程图
图4-2电压转换程序流程图
4.1.3电压显示模块流程图
图4-3电压显示模块流程图
4.1.4电压报警模块流程图
图4-4电压报警模块流程图
4.2代码设计
4.2.1主程序代码
主程序主要由电压转换模块和电压报警模块组成,首先给8255写方式控制字,然后在初始化8255,再启动A/D转换,将转换后的值读入AL中,最后再在电压转换模块中处理转换后的数据,然后检测数据的大小看是否需要报警,具体代码如下:
START:
MOVAX,DATA;初始化寄存器
MOVDS,AX
MOVDX,MY8255_MODE;8255初始化
MOVAL,80H;工作方式为0,A口,B口都为输出
OUTDX,AL
MOVDX,OFFSETSTR0
MOVAH,09H;显示STR0的内容
INT21H
START1:
MOVDX,ADC0809;启动A/D转换
MOVAL,0
OUTDX,AL;通过ADC0809输出
MOVCL,AL;将A/D转换后的值送到CL当中去
CALLDELAY;软件延时
CALLDELAY
CALLDELAY
MOVDX,ADC0809;读出转换结果
INAL,DX
MOVCL,AL
CALLDELAY;软件延时
CALLTRANSFORM;调用电压转换
CALLDELAY
MOVDX,MY8255_A;让报警器停止工作
MOVAL,00H
OUTDX,AL
CALLALARM;调用电压报警
CALLDELAY
MOVAH,01H
INT16H;判断是否有按键按下
JNEQUIT
JMPSTART1
4.2.2电压转换模块代码
在电压转换模块中,主要是对A/D转换后的数据进行处理,A/D转换后的数据范围是0-255,但是电压要求范围是0-5V,所以这里需要对转换后的数据进行缩小,缩小后,还需要精确到小数点,于是这里需要将除后的余数保留,并且将余数扩大10倍,在一次除以33H,则可以获得小数点后面的数字,具体代码如下:
TRANSFORMPROC;电压转换的子程序
CHANGE:
MOVAL,CL;将刚才送到CL的AD转换值有送到AL当中去
MOVBL,33H;将0-255的值转换为0-5V的电压值
DIVBL
MOVCL,AL;将除的商送到CL中去
MOVAL,AH;将除后的余数送到AL中去
MOVAH,00H
MOVBL,10
MULBL;对余数扩大10倍
MOVBL,33H;再除以刚才的除数
DIVBL
MOVCH,AL;将获得商送到CH中去
RET
TRANSFORMENDP
4.2.3数码管显示模块代码
8255并行接口芯片连接数码管,用高低电平来控制数码管的显示,具体代码如下:
DISPLAY0PROC;数码管显示子程序
SHOW:
MOVDX,MY8255_C;写C口
MOVAL,0111B;让第一个数码管亮
OUTDX,AL
MOVAL,CL
MOVBX,offsetDTABLE1;通过偏移地址寻地址
XLAT
MOVDX,MY8255_B;读B口
OUTDX,AL
CALLDALLY
MOVDX,MY8255_C;写C口
MOVAL,1011B;让第二个数码管亮
OUTDX,AL
MOVAL,CH
MOVBX,offsetDTABLE0
XLAT
MOVDX,MY8255_B;读B口
OUTDX,AL
CALLDALLY
RET
DISPLAY0ENDP;结束子程序
4.2.4电压报警模块代码
电压报警模块中,主要是对电压值的大小进行判断,若大于3.0V,则蜂鸣器工作,发出一定频率的声音,并在数码管显示E.0,若小于3.0V,则显示当前电压值,具体代码如下:
ALARMPROC;调用报警子程序
CMPCL,3;判断整数部分是否小于3
JBSHOW2;小于3则跳转到SHOW2
CMPCL,3;断整数部分是否等于3
JZSHOW3;等于3则跳转到SHOW3
JMPSHOW1;否则跳转到SHOW1
SHOW3:
CMPCH,0;判断小数部分是否等于3
JZSHOW2;等于则跳转到SHOW2
JMPSHOW1;否则跳转到SHOW1
SHOW1:
MOVDX,OFFSETSTR1
MOVAH,09H;显示STR1的内容
INT21H;报警
CALLXIANG
CALLDELAY
MOVAH,01H
INT16H;判断是否有按键按下
JNEQUIT
JMPSTART1
SHOW2:
MOVDX,OFFSETSTR2
MOVAH,09H;显示STR2的内容,不报警
INT21H
CALLDISPLAY0
;调用电压显示
MOVAH,01H
INT16H;判断是否有按键按下
JNEQUIT
JMPSTART1
ALARMENDP
总结
本系统是一个电压报警系统,是对超过额定电压值3.0后进行报警,并显示E.O,若没有超过则显示当前电压值。
在课程设计的开始,我在试验箱上模拟出该功能的实现,最开始只要一打开电源开关就会产生刺耳的蜂鸣音。
要么就是数码管显示不出应该有的数据,而是乱码,或者位数显示不全,这让我非常着急。
本系统有需要改进的地方,在报警的时候,数码管上的E会随着报警声的频率变化而不断闪烁。
在整个电压报警系统设计过程中,如何显示一个小数。
如何对额定电压值3.0V的判断。
本系统还可以如何设计提高系统总线的利用率问题,这样大大的提高了系统的运行效率。
要完善本系统的设计需要开发者有一定的硬件知识和过硬的编程基础。
致谢
本次课程设计几乎困难重重,对汇编语言的不熟悉导致分析问题不到位,影响了课程设计的进度。
在本次课程设计指导老师很细心的给同学们以启发,而不只是解决问题本身。
同时感谢学校给我们提供了丰富的教育资源,先进的实验设备。
这给我们的学习提供了丰富的物资条件。
同时要表达对同学的谢意,他们的细心讲解对我的课程设计帮助很大。
参考文献
[1]赵树升,赵雪梅.现代微机原理及接口技术[M],北京:
清华大学出版社,2008年8月
[2]戴梅萼.微型计算机技术及应用——从16位到32位(第2版)[M],北京:
清华大学出版社,2003年2月
[3]西安唐都科教仪器公司.32位微机原理与接口技术实验教程.2005年
[4]西安唐都科教仪器公司.32位微机原理与接口技术用户手册.2005年
附录
电压报警系统程序代码:
;***************8254芯片端口资源*******************
IOY1EQU0DA40H
MY8254_C0EQUIOY1+00H*4
MY8254_C1EQUIOY1+01H*4
MY8254_C2EQUIOY1+02H*4
MY8254_MODEEQUIOY1+03H*4
;***************8255a芯片端口资源*******************
IOY0EQU0DA00H
MY8255_AEQUIOY0+00H*4
MY8255_BEQUIOY0+01H*4
MY8255_CEQUIOY0+02H*4
MY8255_MODEEQUIOY0+03H*4
;***************ADC0809芯片端口资源*******************
IOY2EQU0DA80H;0809片选地址
ADC0809EQUIOY2+00H
DATASEGMENT
DTABLE0DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;键值表,0~9对应的7段数码管的段位值,不带小数点
DTABLE1DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;键值表,0~9对应的7段数码管的段位值,带小数点
STR0DB'***********WarningSystemStart!
***********$'
STR1DB'STR1Warning!
$'
STR2DB'STR2Normal!
$'
DATAENDS
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA;初始化寄存器
MOVDS,AX
MOVDX,MY8255_MODE;8255初始化
MOVAL,80H;工作方式为0,A口,B口都为输出
OUTDX,AL
MOVDX,OFFSETSTR0
MOVAH,09H;显示STR0的内容
INT21H
START1:
MOVDX,ADC0809;启动AD转换
MOVAL,0
OUTDX,AL;通过ADC0809输出
MOVCL,AL;将AD转换后的值送到CL当中去
CALLDELAY;软件延时
CALLDELAY
CALLDELAY
MOVDX,ADC0809;读出转换结果
INAL,DX
MOVCL,AL
CALLDELAY;软件延时
CALLTRANSFORM;调用电压转换
CALLDELAY
MOVDX,MY8255_A;让报警器停止工作
MOVAL,00H
OUTDX,AL
CALLALARM;调用电压报警
CALLDELAY
MOVAH,01H
INT16H;判断是否有按键按下
JNEQUIT