微机原理流水彩灯的设计Word文档格式.docx
《微机原理流水彩灯的设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理流水彩灯的设计Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
![微机原理流水彩灯的设计Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/11/eeba9a9d-c6e0-4781-9cf7-286b7b873269/eeba9a9d-c6e0-4781-9cf7-286b7b8732691.gif)
1)循环彩灯的循环速度可调;
2)按键要求
①启动/暂停,按SW0开关启动系统,按SW1开关停止系统工作。
②花型变换,由开关SW2、SW3进行四种花型切换;
指导教师签名:
2015年12月28日
二、指导教师评语
年月日
三、成绩
验收盖章
年月日
一、设计目的
1.巩固和加深课堂所学知识;
熟悉各种指令的应用及条件;
2.学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;
3.深入了解与掌握8255A在PC机系统的典型接法和8255A的工作方法及应用编程。
二、设计要求
1)循环彩灯的循环速度可调;
三、设计思路
根据所学容和对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
控制字寄存器
xxxxxx11
端口A寄存器
xxxxxx00
端口B寄存器
xxxxxx01
端口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:
写A端口
calldelay
rolal,1
loopk1
jmpselect
----------------------------------------------------
cont2:
moval,80h
k2:
outdx,al
roral,1
loopk2
-----------------------------------------------------
cont3:
movbl,0bh
leasi,dz
diz:
moval,[si];
向左递增子程序
incsi;
加1存在si里面
decbl
jnzdiz;
bl!
=0则继续跳到diz执行
---------------------------------------------------
cont4:
movdx,MY8255_A
moval,55h
moval,0aah;
xoral,0ffh
delayproc;
定义延时子程序
pushcx
pushbx
movcx,0fh
d1:
movbx,0fh
d2:
decbx
jnzd2
popbx
popcx
ret
endendp
delay:
延时子程序
pushf
pushcx;
保护现场
movbx,0e0h
lp2:
movcx,176h
lp1:
pushf;
标志入栈
popf;
标志出栈
looplp1
jnzlp2
popf
ret
codeends
endstart