微机原理课设模拟电风扇工作Word下载.docx
- 文档编号:16806065
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:21
- 大小:99.97KB
微机原理课设模拟电风扇工作Word下载.docx
《微机原理课设模拟电风扇工作Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理课设模拟电风扇工作Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
硬件环境:
AEDK实验箱,PC机。
软件环境:
LCA88ET应用软件。
第2章详细设计方案
2.1硬件电路设计
硬件电路由键盘显示接口芯片8279构成,如图2.1所示。
图2.1硬件电路连线图
8279是可编程设置型键盘/显示芯片,其特点是:
(1)可同时进行键盘扫描及文字显示;
(2)键盘扫描模式;
(3)传感器扫描模式;
(4)激发输入模式;
(5)8乘8键盘FIFO;
(6)具有接点消除抖动,2键锁定及N键依次读出模式;
(7)双排8位数或双排16位数显示器;
(8)右边进入或左边进入,16字符或8字符显示。
8255的A口工作在方式0,输入;
B口工作在方式0,输出;
C口工作在方式0,输出;
8253将脉冲源分频,产生周期为1s的脉冲信号,驱动8259产生周期为1s的中断。
8255、8259、8253、8279的端口地址分别接210H-217H、220H-227H、200H-207H、228H-22FH。
2.2主程序设计
下载到实验箱之后,由主控开关K控制程序运行,调节风速和设定定时由中断程序实现,电风扇模拟转动由8个单色灯实现。
当开关K断开或者定时到达时,电风扇停转,程序结束。
图2.2主程序流程图
2.3功能选择模块的设计与实现
2.3.1计时模块流程图
计时器模块,主要实现对电风扇的定时功能,并在定时期间支持改变风速的功能,对设定的时间进行减一操作,当剩余时间为0时,则停止电风扇的工作,结束程序。
图2.3.1功能选择模块流程图
2.3.2显示模块流程图
用于模拟电风扇的转速和旋转方向,由一个循环右移实现,使单色灯循环点亮。
图2.3.2显示模块流程图
2.3.3改变风速模块流程图
通过键盘的输入,8259产生中断,程序读取输入内容,A,B,C为改变风速,当读取到相应的内容时,改变为相应的风速。
图2.3.3改变风速模块流程图
第3章结果测试及分析
3.1结果测试
编译并连接程序,然后全速运行,在数码管上就显示计时器的时间,开始时是全0。
此时单色发光二极管为全灭。
将开关K1向上扳去,此时8255的PA0口输入高电平,PB口输出使单色发光二极管循环亮灯。
即以一定的速度循环点亮八个灯,模拟出了电风扇的转动。
当需要改变风速时,只需按下键盘上的A、B、C键,便可切换风速。
当需要设定运行时间时,只需要按下D键,则进入定时状态,接着只需按下键盘上的数字键,设定好定时的时间,然后再按下D键,风扇就将在设定的时间内转动,并且在数码管上显示时间的变化,以一秒为单位逐渐减少,当减到0时,风扇就将停止转动,单色灯全灭,如此便实现了定时功能。
如要让单色灯再亮,则需将总开关关掉再打开。
3.2结果分析
开始运行时,发现单色发光二极管并不是按理想顺序逐渐点亮红色,而是与风扇转动方向相反,检查硬件连线却并没有发现错误,后来,检查程序时发现将循环右移的代码写错了,从而导致了与旋转方向相反的循环点亮顺序,改正后完美运行。
风扇正常运行了,但是在定时时发现数码管上的时间变化过于缓慢,于是检查8253芯片的初始化程序,发现CLK1的输入时倍数太大,于是将其数值调小后运行,发现时间变化回归正常。
实验结果总的来说基本实现了课设的要求,虽然有些小问题和还会有些不稳定,这些问题我会在以后的不断学习中进行完善。
参考文献
[1]王爱英.计算机组成与设计[M]北京:
教育出版社,2003
[2]杨素行.微型计算机系统原理及应用[M]北京:
清华大学出版社,1996
[3]张雪兰.汇编语言程序设计[M]北京:
清华大学出版社,2006
[4]龚尚福.微机原理与接口技术[M]西安:
西安电子科技大学出版社,2003
[5]王中民.微型计算机原理[M]西安:
[6]沈美明,温冬婵.IBM-PC汇编语言程序设计[M]北京:
清华大学出版社,2001
附录
程序清单:
datasegment
isenddb0
n0db0
n1db0
n2db0
isrightdb1
keykinddb0
oldkeydb0
kinddb0
isstopdb0
flagsdb0
numbersdb3fh,6,5bh,0,0,0,0,0,0,0
dataends
codesegment
assumecs:
code,ds:
data
main:
;
主程序
cli
movax,cs
movds,ax
movkind,0
movisright,1
movkeykind,0ah
movoldkey,0ah
movisstop,0
movflags,0
movisend,0
movn0,0
movn1,0
movn2,0
callinitnumbers
callinit8255
callinit8259
callinit8253
callmodifyint
movdx,212h
moval,0
outdx,al
callcleardevice
calldisplay
movdx,22ah
moval,30h
moval,7fh
sti
dowhat:
pushax
dowait:
moval,0ffh ;
单色灯清零
movdx,211h
movdx,210h
inal,dx
testal,1 ;
判断开关
jzdowait
popax
callreadakey
cmpkeykind,0ah
jnza1
movkind,2
callgotonext
jmpaa
a1:
;
判断风速改变
cmpkeykind,0bh
jnza2
movkind,1
a2:
cmpkeykind,0ch
jnza3
a3:
cmpkeykind,0dh
jnza4
moval,oldkey
movkeykind,al
callreading
moval,0ffh
a4:
cmpkeykind,0eh
jnzaa
notflags
aa:
jmpdowhat
gotonext:
单色灯循环亮灭
cmpflags,0
jnznoror
roral,1
noror:
cmpal,0feh
jnzcontinue
jmpcontinue
continue:
cmpkind,2
jnzmm1
callspeed2
jmpmm3
mm1:
;
改变风速
cmpkind,1
jnzmm2
callspeed1
mm2:
cmpkind,0
jnzmm3
callspeed0
mm3:
mm33:
cmpisstop,0
jzmm4
testal,1
jnzmm33
mm4:
ret
readakey:
;
读取键盘输入
moval,keykind
movoldkey,al
andal,0fh
cmpal,0
jzgotoexit
moval,40h
movdx,228h
gotoexit:
speed1:
速度设置
pushcx
movcx,18000
sp1:
loopsp1
popcx
speed2:
movcx,50000
sp2:
loopsp2
speed0:
movcx,8000
sp0:
loopsp0
readisd:
key:
jzkey
cmpal,0dh
jnzkey
reading:
输入时间
callreadanumber
movn0,al
jzreadexit
movah,n0
movn1,ah
moval,n1
movn2,al
callreadisd
readexit:
readanumber:
key2:
jzkey2
initnumbers:
pushbx
movbx,offsetnumbers
movbyteptr[bx],3fh
movbyteptr[bx+1],6
movbyteptr[bx+2],5bh
movbyteptr[bx+3],4fh
movbyteptr[bx+4],66h
movbyteptr[bx+5],6dh
movbyteptr[bx+6],7dh
movbyteptr[bx+7],7
movbyteptr[bx+8],7fh
movbyteptr[bx+9],6fh
popbx
display:
时间显示
moval,80h
moval,n0
xorah,ah
addbx,ax
moval,[bx]
moval,81h
moval,82h
moval,n2
intcount:
pushdx
cmpn0,0
jznext1
decn0
jmpnext4
next1:
movn0,9
cmpn1,0
jznext2
decn1
next2:
movn1,9
cmpn2,0
jznext3
decn2
next3:
movn2,9
next4:
jnznext5
movisstop,1
next5:
popdx
iret
init8255:
moval,90h
movdx,213h
init8259:
moval,13h
movdx,220h
movdx,221h
moval,3
moval,0feh
modifyint:
pushds
xorax,ax
movbx,30h*4
movax,offsetintcount
mov[bx],ax
movax,8100h
mov[bx+2],ax
popds
init8253:
moval,35h
movdx,203h
movax,0ffffh
movdx,200h
moval,ah
moval,75h
movax,27
movdx,201h
cleardevice:
moval,0c1h
wait1:
testal,80h
jnzwait1
codeends
endmain
课程设计总结:
通过本次课程设计,使我对所学的微机原理知识有了更深的理解,对各芯片,特别是8255、8259、8253、8279等常用芯片的功能和使用方法有了更加深层的掌握,也能更加熟练的运用这些芯片来实现各种功能。
在用汇编语言编写程序时,使我更加熟悉各种语句的作用和使用方法,为我以后编写更加大型的汇编语言程序打下了坚实的基础。
但通过这次课程设计,我也发现了许多在学习中没有发现和注意到的缺点和不足,在调试运行时,程序很不稳定,这很有可能是我对软件和硬件的结构和功能还不是很透彻,加之第一次用汇编语言编写程序,不可能编写出高效又健壮的程序来,所以,这可能是运行时出现不稳定的主要原因;
再有,调试程序时,一些调试方法不够熟练,很多调试方法和工具都不知道,但是,以后有机会我会多用相关软件编写汇编语言,这样就能更加熟练地使用软件使所编写的程序更加完美。
在本次课设中,不但培养了我专心致志的工作学习习惯,同时也使我懂得了作为学生要好问,在这期间我向同学和老师请教,可谓获益匪浅,也是这次课设我能顺利的完成的原因。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 模拟 电风扇 工作