微机原理课设模拟电风扇工作.docx

上传人:b****3 文档编号:3899848 上传时间:2022-11-26 格式:DOCX 页数:21 大小:99.97KB
下载 相关 举报
微机原理课设模拟电风扇工作.docx_第1页
第1页 / 共21页
微机原理课设模拟电风扇工作.docx_第2页
第2页 / 共21页
微机原理课设模拟电风扇工作.docx_第3页
第3页 / 共21页
微机原理课设模拟电风扇工作.docx_第4页
第4页 / 共21页
微机原理课设模拟电风扇工作.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

微机原理课设模拟电风扇工作.docx

《微机原理课设模拟电风扇工作.docx》由会员分享,可在线阅读,更多相关《微机原理课设模拟电风扇工作.docx(21页珍藏版)》请在冰豆网上搜索。

微机原理课设模拟电风扇工作.docx

微机原理课设模拟电风扇工作

微机原理课设--模拟电风扇工作

 

课程设计报告

 

课程设计名称:

微机系统综合课程设计

课程设计题目:

模拟电风扇工作

 

院(系):

计算机学院

专业:

计算机科学与技术

 

第1章总体设计方案

1.1设计原理

利用芯片8259,8255,8253,8279,分别控制中断,单色发光二极管,时钟,和LED显示。

用受8253控制的8259给8255和8279产生每秒钟一次的中断,控制单色发光二极管和LED的显示。

1.2设计思路

首先需要一个总开关,用来控制电风扇的开关,可以用8255的输入端A接收这一信号,信号为1时进入循环,此时单色发光二极管不亮,当不为1时执行下一步。

其次需要实现的功能是三级风速的变换,可以设计三个变换延时的子程序,并根据键盘输入的不同来分别调用这三个步骤。

再次是要实现定时功能,用8253和8259实现这一功能并不困难,当时间减为零时,向8255的AL中输入OFFH,使单色发光二极管不显示。

还有就是单色发光二极管的显示问题,只需将8255中控制单色发光二极管显示的数据循环左移或右移即可。

(1)提出方案

总开关是用来控制风扇的启动停止的,所以只需有两种状态,即开和关,所以,选择用实验箱右下角的开关来实现这一功能。

为了能显示风扇的转动,选用8255和实验箱上的8个单色发光二极管来显示风扇的转动。

为了实现定时功能,选用8253定时,8259产生中断,用中断程序来控制定时。

由于定时时需要显示倒计时,所以还需要8279键盘显示接口芯片。

(2)方案论证

1)用8255和单色发光二极管模拟风扇的转动,所以,可以将8255的B口设为工作在方式0,输出状态,然后通过输出不同二进制数来控制单色发光二极管的显示,通过循环右移使单色发光二极管循环显示来实现风扇转动的模拟。

2)用右下角的开关控制风扇的转动与停止,所以,可将8255A口设为方式0,输入状态,来读取开关的状态,然后在程序中判断输入的是1还是0,进而控制风扇的转动与停止。

3)为了实现定时的功能,可以用8253的分频功能,将输入的脉冲信号分频,以输出1HZ的脉冲信号,然后输入到8259的INT0以产生周期为1s的中断,即每秒钟进一次中断,在中断服务程序中来实现时间的递减,当减到0时就将风扇停止,这样就实现了定时功能了。

4)为了实现三级风速的选择和定时功能、定时时间的变化显示等功能,需要8279的键盘显示功能,在键盘上设置A,B,C三个键分别控制三级风速,再设置一个D按键来控制定时功能的选择,当按下定时功能键D后,还需要键盘的数字键来实现定时时间的设定,设定完成后还需再次按下D键来确认。

最后就是用数码管显示时间的变化了。

1.3实验环境

·硬件环境:

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]西安:

西安电子科技大学出版社,2003

[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

movkind,0

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

moval,0

movdx,22ah

outdx,al

moval,30h

outdx,al

moval,7fh

sti

dowhat:

pushax

dowait:

moval,0ffh               ;单色灯清零

movdx,211h

outdx,al

movdx,210h

inal,dx

testal,1                ;判断开关

jzdowait

popax

callreadakey

cmpkeykind,0ah

jnza1

movkind,2

callgotonext

jmpaa

a1:

                   ;判断风速改变

cmpkeykind,0bh

jnza2

movkind,1

callgotonext

jmpaa

a2:

cmpkeykind,0ch

jnza3

movkind,0

callgotonext

jmpaa

a3:

cmpkeykind,0dh

jnza4

pushax

movdx,212h

moval,0

outdx,al

popax

movisstop,0

pushax

moval,oldkey

movkeykind,al

callreading

movdx,212h

moval,0ffh

outdx,al

popax

sti

jmpaa

a4:

cmpkeykind,0eh

jnzaa

notflags

pushax

moval,oldkey

movkeykind,al

popax

aa:

jmpdowhat

gotonext:

                 ;单色灯循环亮灭

movdx,211h

outdx,al

cmpflags,0

jnznoror

roral,1

noror:

cmpal,0feh

jnzcontinue

jmpcontinue

continue:

cmpkind,2

jnzmm1

callspeed2

jmpmm3

mm1:

                  ;改变风速

cmpkind,1

jnzmm2

callspeed1

jmpmm3

mm2:

cmpkind,0

jnzmm3

callspeed0

mm3:

pushax

mm33:

cmpisstop,0

jzmm4

movdx,211h

moval,0ffh

outdx,al

movdx,210h

inal,dx

testal,1

jnzmm33

movisstop,0

cli

mm4:

popax

ret

readakey:

               ;读取键盘输入

pushax

moval,keykind

movoldkey,al

movdx,22ah

inal,dx

andal,0fh

cmpal,0

jzgotoexit

moval,40h

movdx,22ah

outdx,al

movdx,228h

inal,dx

movkeykind,al

gotoexit:

popax

ret

speed1:

                 ;速度设置

pushcx

movcx,18000

sp1:

loopsp1

popcx

ret

speed2:

pushcx

movcx,50000

sp2:

loopsp2

popcx

ret

speed0:

pushcx

movcx,8000

sp0:

loopsp0

popcx

ret

readisd:

key:

movdx,22ah

inal,dx

andal,0fh

cmpal,0

jzkey

moval,40h

outdx,al

movdx,228h

inal,dx

cmpal,0dh

jnzkey

ret

reading:

                  ;输入时间

pushax

movn0,0

movn1,0

movn2,0

callreadanumber

movn0,al

calldisplay

callreadanumber

cmpal,0dh

jzreadexit

movah,n0

movn0,al

movn1,ah

calldisplay

callreadanumber

cmpal,0dh

jzreadexit

movah,n0

movn0,al

moval,n1

movn1,ah

movn2,al

calldisplay

callreadisd

readexit:

popax

ret

readanumber:

key2:

movdx,22ah

inal,dx

andal,0fh

cmpal,0

jzkey2

moval,40h

outdx,al

movdx,228h

inal,dx

ret

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

ret

display:

               ;时间显示

callcleardevice

movbx,offsetnumbers

moval,80h

movdx,22ah

outdx,al

moval,n0

xorah,ah

addbx,ax

moval,[bx]

movdx,228h

outdx,al

movbx,offsetnumbers

moval,81h

movdx,22ah

outdx,al

movdx,228h

moval,n1

xorah,ah

addbx,ax

moval,[bx]

outdx,al

movbx,offsetnumbers

moval,82h

movdx,22ah

outdx,al

movdx,228h

moval,n2

xorah,ah

addbx,ax

moval,[bx]

outdx,al

ret

intcount:

pushax

pushbx

pushdx

cmpn0,0

jznext1

decn0

jmpnext4

next1:

movn0,9

cmpn1,0

jznext2

decn1

jmpnext4

next2:

movn1,9

cmpn2,0

jznext3

decn2

jmpnext4

next3:

movn2,9

next4:

cmpn0,0

jnznext5

cmpn1,0

jnznext5

cmpn2,0

jnznext5

movisstop,1

movdx,212h

moval,0

outdx,al

next5:

calldisplay

popdx

popbx

popax

iret

init8255:

moval,90h

movdx,213h

outdx,al

ret

init8259:

moval,13h

movdx,220h

outdx,al

movdx,221h

moval,30h

outdx,al

moval,3

outdx,al

moval,0feh

outdx,al

ret

modifyint:

pushds

pushbx

pushax

xorax,ax

movds,ax

movbx,30h*4

movax,offsetintcount

mov[bx],ax

movax,8100h

mov[bx+2],ax

popax

popbx

popds

ret

init8253:

pushax

moval,35h

movdx,203h

outdx,al

movax,0ffffh

movdx,200h

outdx,al

moval,ah

outdx,al

moval,75h

movdx,203h

outdx,al

movax,27

movdx,201h

outdx,al

moval,ah

outdx,al

popax

ret

cleardevice:

pushax

pushdx

moval,0c1h

movdx,22ah

outdx,al

wait1:

movdx,22ah

inal,dx

testal,80h

jnzwait1

popdx

popax

ret

codeends

endmain

课程设计总结:

通过本次课程设计,使我对所学的微机原理知识有了更深的理解,对各芯片,特别是8255、8259、8253、8279等常用芯片的功能和使用方法有了更加深层的掌握,也能更加熟练的运用这些芯片来实现各种功能。

在用汇编语言编写程序时,使我更加熟悉各种语句的作用和使用方法,为我以后编写更加大型的汇编语言程序打下了坚实的基础。

但通过这次课程设计,我也发现了许多在学习中没有发现和注意到的缺点和不足,在调试运行时,程序很不稳定,这很有可能是我对软件和硬件的结构和功能还不是很透彻,加之第一次用汇编语言编写程序,不可能编写出高效又健壮的程序来,所以,这可能是运行时出现不稳定的主要原因;再有,调试程序时,一些调试方法不够熟练,很多调试方法和工具都不知道,但是,以后有机会我会多用相关软件编写汇编语言,这样就能更加熟练地使用软件使所编写的程序更加完美。

在本次课设中,不但培养了我专心致志的工作学习习惯,同时也使我懂得了作为学生要好问,在这期间我向同学和老师请教,可谓获益匪浅,也是这次课设我能顺利的完成的原因。

指导教师评语:

 

指导教师(签字):

      年月日

课程设计成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1