微机原理电压报警器的设计.docx
《微机原理电压报警器的设计.docx》由会员分享,可在线阅读,更多相关《微机原理电压报警器的设计.docx(14页珍藏版)》请在冰豆网上搜索。
微机原理电压报警器的设计
上海电力学院课程设计报告
课名:
计算机硬件课程设计
题目:
电压报警器的设计
院系:
自动化工程学院
专业:
自动化
班级:
姓名:
学号:
时间:
2015年1月27日
电压报警器的设计
一、开发目的
课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。
它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。
通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。
让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。
二、设计方案以及原理
(一)设计方案
采集0~5V的电压,当输入电压在3V以内,显示电压值,如2.42。
当输入电压超过3V,显示ERR,并报警。
电压值可在七段数码管显示,点阵广告屏显示或液晶屏显示。
报警形式自行设计,可用灯光闪烁表示,蜂鸣器鸣响报警等形式。
(二)设计原理
首先,用滑动变阻器来模拟外界电压的变化。
滑动变阻器处于不同的阻值将会有不同的电压输入。
电压值通过0808A/D转换器将模拟量变为数字量,并将信号输入给8086微机。
8086获得电压值后,将该电压值与3V进行比较。
如果小于3V,8086会产生控制信号使数码管显示相应的电压值,同时8行8列的点阵显示“OK”。
如果电压值大于3V,8086会控制使得数码管显示“ERROR”、点阵显示“!
”。
再者,工作在方式3的8253定器会产生一个不可中断屏蔽信号来控制灯的闪烁和喇叭的鸣笛。
三、硬件原理图
(一)芯片选型
在本系统中,主要采用的芯片有CPU8086、74154译码器、8254可编程定时/计数器芯片、8255并行接口芯片、A/D转换接口芯片ADC0809。
CPU8086主要是电压报警系统的核心芯片,协调着8253芯片,8255芯片,ADC0809芯片相互间的工作;8253是可编程定时/计数器芯片,用来控制蜂鸣器;8255是并行接口芯片,用来连接数码管显示单元和8253芯片;ADC0809是A/D转换单元,用来模拟电压,将模拟信号转换为数字信号。
(二)硬件原理图
1、CPU8086和74154译码器模块
2、ADC0809模块
3、8255和8253模块
4、点阵显示模块
四、程序流程图
(一)主程序流图
(二)电压报警流图
五、汇编程序
.MODELSMALL
.8086
.data
buffdb4dup(0)
tabdb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
ledaequ800H
ledbequ802h
adc1equ902H
ledcequ804H
.code
movdx,806h;8255
moval,10000000b
outdx,al
movdx,306h;8253
moval,36h
outdx,al
movax,1000
movdx,300h
outdx,al
moval,ah
outdx,al
movdx,306h
moval,76h
outdx,al
movax,1000
movdx,302h
outdx,al
moval,ah
outdx,al
start:
movax,@data
movds,ax
moval,00h
movdx,ledb
outdx,al
movdx,600h
moval,00000000b
outdx,al
movdx,500h
moval,00000000b
outdx,al
movcx,0fh
lop1:
looplop1
moval,00h
movdx,adc1
outdx,al
nop
inal,dx;8位电压
movbl,al
cmpal,99h
jbnext
moval,01h
movdx,ledb
outdx,al
movdx,600h;点阵锁存!
moval,00011000b
outdx,al
movdx,500h
moval,00100000b
outdx,al
movcx,0fh
lop0:
looplop0
movcx,04fh
lop5:
looplop5
moval,00000111b
movdx,ledc;8255
outdx,al
moval,79h
movdx,leda
outdx,al
movcx,10d
loop$
moval,00001011b
movdx,ledc
outdx,al
moval,50h
movdx,leda
outdx,al
movcx,10d
loop$
moval,00001101b
movdx,ledc
outdx,al
moval,50h
movdx,leda
outdx,al
movcx,10d
loop$
moval,00001110b
movdx,ledc
outdx,al
moval,buff[3]
movah,0
movsi,ax
moval,tab[si]
movdx,leda
outdx,al
movcx,10d
loop$
deccx
jmpstart
next:
;计算
moval,bl
notal
movah,0
movbx,5000d
mulbx
movbx,255d
divbx
movbx,ax
movax,5000d
subax,bx
jmpbin2dec
con:
;led输出
moval,00000111b
movdx,ledc
outdx,al
moval,buff[0]
movah,0
movsi,ax
moval,tab[si]
addal,80h
movdx,leda
outdx,al
movcx,10d
loop$
moval,00001011b
movdx,ledc
outdx,al
moval,buff[1]
movah,0
movsi,ax
moval,tab[si]
movdx,leda
outdx,al
movcx,10d
loop$
moval,00001101b
movdx,ledc
outdx,al
moval,buff[2]
movah,0
movsi,ax
moval,tab[si]
movdx,leda
outdx,al
movcx,10d
loop$
moval,00001110b
movdx,ledc
outdx,al
moval,buff[3]
movah,0
movsi,ax
moval,tab[si]
movdx,leda
outdx,al
movcx,10d
loop$
deccx
jmpstart
bin2dec:
;转为十进制
pushbx
pushdx
pushcx
xordx,dx
movbx,1000
divbx
movcl,al
movbyteptrbuff[0],cl
movax,dx
movbx,100
xordx,dx
divbx
movcl,al
movbyteptrbuff[1],cl
movax,dx
movbx,10
xordx,dx
divbx
movcl,al
movbyteptrbuff[2],cl
movcl,dl
movbyteptrbuff[3],cl
popcx
popdx
popbx
jmpcon
END
六、程序运行结果分析与预测
连好硬件电路图、载入程序后,点击运行键,程序的运行与预期的结果很相近,能很好的完成电压报警功能。
当电压值大于3V时,警示灯会闪烁且会鸣笛。
同时数码管显示“ERROR”、点阵显示“!
”。
在没有超过3V时,改变滑动变阻器阻值后,数码管会显示相应的电压值。
实验过程中遇到的问题有:
1、数码管显示的值与实际电压值之间存在微弱的误差。
解决办法:
将滑动变阻器换成更灵敏的电压感应设备。
2、数码管显示数字时不太稳定。
解决的办法是:
在电路间加入锁存器和缓冲器等相关器件。
七、总结
在这次课程设计中也令我们学到了许多知识,从开始拿到题目无从下手到通过查找各种资料并通过资料能够完成系统的整体设计,并通过参考其他资料理解了系统程序运行流程。
通过这次的设计使我们认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,
尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂。
本次的设计使我们从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我们所学到的知识运用到我以后的实践中去。
在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的中去,此次的电压报警设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,对微机的概念和接口有了更加充分的理解。
欢迎下载,谢谢观看!
资料仅供参考学习