微机原理流水彩灯的设计.docx
《微机原理流水彩灯的设计.docx》由会员分享,可在线阅读,更多相关《微机原理流水彩灯的设计.docx(13页珍藏版)》请在冰豆网上搜索。
微机原理流水彩灯的设计
微机原理课程设计报告书
课题名称
流水彩灯的设计
姓名
学号
院系
专业
指导教师
2010年12月14日
一、设计任务及要求
设计一个循环彩灯控制系统,能输出四种花型,输出花型如下:
1)00000001 左循环(1时亮,0时灭)
2)10000000 右循环
3)按00000001,00000011,00000111-----11111111规律递增,后同时闪烁一次,循环不断。
4)按01010101,10101010(或红、绿彩灯) 交替闪烁。
功能要求:
1)循环彩灯的循环速度可调;
2)按键要求
①启动/暂停,按SW0开关启动系统,按SW1开关停止系统工作。
②花型变换,由开关SW2、SW3进行四种花型切换;
指导教师签名:
2015年12月28日
二、指导教师评语
指导教师签名:
年月日
三、成绩
验收盖章
年月日
流水彩灯的设计
一、设计目的
1.巩固和加深课堂所学知识;熟悉各种指令的应用及条件;
2.学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;
3.深入了解与掌握8255A在PC机系统的典型接法和8255A的工作方法及应用编程。
二、设计要求
设计一个循环彩灯控制系统,能输出四种花型,输出花型如下:
1)00000001 左循环(1时亮,0时灭)
2)10000000 右循环
3)按00000001,00000011,00000111-----11111111规律递增,后同时闪烁一次,循环不断。
4)按01010101,10101010(或红、绿彩灯) 交替闪烁。
功能要求:
1)循环彩灯的循环速度可调;
2)按键要求
①启动/暂停,按SW0开关启动系统,按SW1开关停止系统工作。
②花型变换,由开关SW2、SW3进行四种花型切换;
三、设计思路
根据所学内容和对8255A的应用,整个系统硬件采用8086微处理器,74LS373锁存器,和8255A可编程并行接口芯片和8个led彩灯。
Intel8255A是一种通用的可编程并行接口芯片,由于它是可以编程的,可以通过程序来设置芯片的工作方式,通用性强,使用灵活,可为多种不同的CPU与外设之间提供并行输入/输出的通道;8086微处理器,选择最小工作模式,所有的总线控制信号均由8086产生;8086CPU的地址\数据总线AD15-AD0和地址\状态总线A16/S3-A19/S6是复用的,必须通过地址锁存器把地址总线和数据总线分离
四、电路及连线设计
图1信号发生器系统框图
五、程序设计
5.1主程序设计
主程序主要是将开关的信号读入到8255A的C口,通过读取开关的状态,与设定的数值进行比较,若两数值相等时则转入到相应的程序段,分别产生方波、锯齿波、三角波、梯形波及正弦波。
图2程序流程图
5.2源程序设计(见附录)
5.3仿真实物连接图
六、设计总结
回顾起此次微机原理课程设计,我感慨颇多,从选题到定稿,从理论到实践,在接近两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。
而且在做课程设计的过程中,不仅是考验自己所学的知识,更是要锻炼自己的分析问题的能力和解决实际问题的能力,而在在此次课程设计过程中得到了充分的体现。
虽然在设计的过程遇到了各种各样的问题,但同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。
七、参考文献
[1]楼顺天,周佳社.微机原理与接口技术[M].北京:
科学出版社,2006:
295-325.
附录1
循环彩灯系统汇编源程序清单:
00010000(10h)
SW1停止系统工作
00100000(20h)
SW0开始系统工作
00100000(20h)
SW2花型1左循环
00100001(21h)
SW2花型2右循环
00100010(22h)
SW3花型3循环不断
00100011(23h)
SW3交替闪烁
CS
A1
A0
端口
对应地址
0
1
1
控制字寄存器
xxxxxx11
0
0
0
端口A寄存器
xxxxxx00
0
0
1
端口B寄存器
xxxxxx01
0
1
0
端口C寄存器
xxxxxx10
datasegment
MY8255_Aequ90h;8255的A端口地址
MY8255_Bequ92h;8255的B端口地址
MY8255_Cequ94h;8255的C端口地址
MY8255_MODEequ96h;8255控制寄存器地址
MODE_Adb10001001b;控制字89h;A端口输出工作方式0,端口C输入
dzdb01h,03h,07h,0fh,1fh,3fh,7fh,0ffh,00h,0ffh,00h,0ffh
dataends
codesegment
assumecs:
code,ds:
data
start:
movdx,MY8255_MODE
moval,MODE_A
outdx,al;控制字初始化
;--------------------------------------------------
select:
movdx,MY8255_C
inal,dx;读取C端口地址
goexit:
testal,10h
jzexit;结果是0,CF=1,跳转到exit去执行
set:
testal,20h
jzselect;若是结果是0,则继续检测按键
;*******************;四种花型的判断
andal,0fh;屏蔽al的高四位
cmpal,00h
jzcont1;花型1循环左移
cmpal,01h
jzcont2;花型2循环右移
cmpal,02h
jzcont3;花型3依次递增后闪烁
cmpal,03h
jzcont4;花型4交替闪烁
jmpselect
;-----------------------------------------------------
exit:
movah,4ch
int21h;4ch系统功能调用,返回操作系统
;----------------------------------------------------
cont1:
movcx,08h
movdx,MY8255_A
moval,01h
k1:
outdx,al;写A端口
calldelay
rolal,1
loopk1
jmpselect
;----------------------------------------------------
cont2:
movcx,08h
movdx,MY8255_A
moval,80h
k2:
outdx,al
calldelay
roral,1
loopk2
jmpselect
;-----------------------------------------------------
cont3:
movdx,MY8255_A
movbl,0bh
leasi,dz
diz:
moval,[si];向左递增子程序
outdx,al
calldelay
incsi;加1存在si里面
decbl
jnzdiz;bl!
=0则继续跳到diz执行
jmpselect
;---------------------------------------------------
cont4:
movdx,MY8255_A
moval,55h
outdx,al
calldelay
moval,0aah;xoral,0ffh
outdx,al
calldelay
jmpselect
;-----------------------------------------------------
;delayproc;定义延时子程序
;pushcx
;pushbx
;movcx,0fh
;d1:
movbx,0fh
;d2:
decbx
;jnzd2
;popbx
;popcx
;ret
;endendp
;----------------------------------------------------
delay:
延时子程序
pushf
pushbx
pushcx;保护现场
movbx,0e0h
lp2:
movcx,176h
lp1:
pushf;标志入栈
popf;标志出栈
looplp1
decbx
jnzlp2
popcx
popbx
popf
ret
codeends
endstart