微机原理课设电风扇徐直.docx

上传人:b****1 文档编号:1921231 上传时间:2023-05-02 格式:DOCX 页数:22 大小:95.33KB
下载 相关 举报
微机原理课设电风扇徐直.docx_第1页
第1页 / 共22页
微机原理课设电风扇徐直.docx_第2页
第2页 / 共22页
微机原理课设电风扇徐直.docx_第3页
第3页 / 共22页
微机原理课设电风扇徐直.docx_第4页
第4页 / 共22页
微机原理课设电风扇徐直.docx_第5页
第5页 / 共22页
微机原理课设电风扇徐直.docx_第6页
第6页 / 共22页
微机原理课设电风扇徐直.docx_第7页
第7页 / 共22页
微机原理课设电风扇徐直.docx_第8页
第8页 / 共22页
微机原理课设电风扇徐直.docx_第9页
第9页 / 共22页
微机原理课设电风扇徐直.docx_第10页
第10页 / 共22页
微机原理课设电风扇徐直.docx_第11页
第11页 / 共22页
微机原理课设电风扇徐直.docx_第12页
第12页 / 共22页
微机原理课设电风扇徐直.docx_第13页
第13页 / 共22页
微机原理课设电风扇徐直.docx_第14页
第14页 / 共22页
微机原理课设电风扇徐直.docx_第15页
第15页 / 共22页
微机原理课设电风扇徐直.docx_第16页
第16页 / 共22页
微机原理课设电风扇徐直.docx_第17页
第17页 / 共22页
微机原理课设电风扇徐直.docx_第18页
第18页 / 共22页
微机原理课设电风扇徐直.docx_第19页
第19页 / 共22页
微机原理课设电风扇徐直.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理课设电风扇徐直.docx

《微机原理课设电风扇徐直.docx》由会员分享,可在线阅读,更多相关《微机原理课设电风扇徐直.docx(22页珍藏版)》请在冰点文库上搜索。

微机原理课设电风扇徐直.docx

微机原理课设电风扇徐直

沈阳航空航天大学

 

课程设计报告

 

课程设计名称:

微机系统综合课程设计

课程设计题目:

模拟电风扇动作

 

院(系):

计算机学院

专业:

计算机科学与技术

班级:

84010102

学号:

2008040101038

姓名:

徐直

指导教师:

毛艳娥

完成日期:

2011年7月15日

目录

第1章总体设计方案1

1.1设计原理1

1.2设计思路1

1.3实验环境2

第2章详细设计方案3

2.1硬件电路设计3

2.2主程序设计4

2.3功能选择模块的设计与实现5

第3章结果测试及分析6

3.1结果测试6

3.2结果分析6

参考文献7

附录8

第1章总体设计方案

1.1设计原理

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

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

1.2设计思路

首先需要一个总开关,用来控制电风扇的开关,可以用8255的输入端接收这一信号,信号为1时进入循环,此时彩色发光二极管通过红绿色灯显示风扇的转动效果,不为1时执行下一步。

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

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

还有就是彩色发光二极管的显示问题,只需将8255中控制彩灯显示的数据起始值设为01101010,然后循环左移两位即可。

(1)提出方案

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

为了能显示风扇的转动,我选用8255和实验箱右上角的彩灯来显示风扇的转动。

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

由于定时时要能显示时间及风扇转动时要有风速等一些功能的选择,所以还需要8279键盘显示接口芯片。

(2)方案论证

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

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

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

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

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

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主程序设计

图2.2主程序流程图

2.3功能选择模块的设计与实现

图2.3.1功能选择模块流程图

第3章结果测试及分析

3.1结果测试

编译并连接程序,然后全速运行,在数码管上就显示计时器的时间,开始时是全0。

此时双色彩灯是初始状态,即只有一个灯是红的,其余三个灯都是绿色。

然后,将开关K1向上扳去,时8255的PA0口输入高电平,此时发现双色彩灯还是循环亮红灯,并且只有一个灯是红色的,其余都是绿色,这样,当以一定的速度循环点亮四个灯,就会模拟出风扇的转动了。

在风扇转动时,按下键盘上的A、B、C键,则彩灯会分别以不同的速度循环点亮红色,这样就实现了通过键盘实现三级风速的选择功能了。

当风扇在某一风速下转动时,按下D键,则进入定时状态,接着只需按下键盘上的数字键,设定好定时的时间,然后再按下D键,风扇就将在设定的时间内转动,并且在数码管上显示时间的变化,逐渐减少,当减到0时,风扇就将停止转动。

这就是定时功能的实现。

3.2结果分析

开始运行时,发现双色彩灯并不是按理想顺序逐渐点亮红色,后来,检查程序发现并没有错,最后,检查硬件连线时发现,8255B口得导线与双色灯的借口连接顺序错了,调整了连接顺序后彩灯理想的顺序循环点亮了。

风扇正常运行了,但是在定时时发现数码管上的时间没有变化,过了定时的时间后,风扇也没有停止,开始以为程序问题,单步运行后发现一切正常,然后检查数码管显示也没发现问题,这时将接在INT0上的导线拔下,接在发光二极管上发现没有电流,最后,断定是8253并没有产生脉冲信号给8259,导致中断服务程序无法进入,使得计时功能失效,所以才会出现刚才的问题,于是,我测试了几根好用的导线从新将8253的连线连一遍,再运行时定时功能就好用了。

实验结果基本实现了课设的要求,虽然有些问题和程序还会有些不稳定,但是所要求的功能都实现了,那些问题我会在以后进行完善。

参考文献

[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

keykinddb0

oldkeydb0

kinddb0

isstopdb0

numbersdb3fh,6,5bh,0,0,0,0,0,0,0

dataends

codesegment

assumecs:

code,ds:

data

main:

                 

cli

movax,cs

movds,ax

movkind,0

movkeykind,0ah

movoldkey,0ah

movkind,06

movisstop,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,6ah

sti

dowhat:

pushax

dowait:

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;c口给0

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

pushax

moval,oldkey

movkeykind,al

popax

aa:

jmpdowhat

gotonext:

                 

movdx,211h

outdx,al

roral,1

roral,1

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:

;读键盘,是D键返回

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;初始化数码管显示数字表0-9

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-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2