按键控制流水灯课程设计报告_第1页
按键控制流水灯课程设计报告_第2页
按键控制流水灯课程设计报告_第3页
按键控制流水灯课程设计报告_第4页
按键控制流水灯课程设计报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE -PAGE . z.课 程 设 计题 目8086按键控制流水灯设计学 院机电工程学院专 业自动化班 级自动化姓 名指导教师2016年6月30日-. z.引 言微型计算机简称微机,由于具备人脑*些功能,所有又叫做微机。是由大规模集成电路组成的、体积较小的电子计算机。它是以微处理器为根底,配以内存储器及输入输出接口电路和相应的辅助电路构成的裸机。把微型计算机集成在一个芯片上即构成单片微型计算机。学习微机原理与接口技术,主要内容包括微型计算机体系构造、8086微处理器和指令系统、汇编语言、设计以及微型计算机各个组成局部,而其中很大一块就是汇编语言的学习。汇编语言是面向机器的程序设计语言,也

2、是利用计算机所有硬件特性并能直接控制硬件的语言。用汇编语言编写的程序由于目标程序占用内存少,运行速度快,它有着高级语言不可替代的用途。因此,学习汇编语言是很必要的,通过学习汇编语言可以体会它的作用。通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识联系实际,进一步学习微机原理与接口技术的相关知识,为以后深入学习打下良好的根底。1总体方案论证1.1功能分析此次课程设计的要求为,设计微型计算机最小系统,实现跑马灯的模拟显示功能。具体要求为:1、输入设备三个启动按钮、一个停顿按钮,输出设备为八个跑马灯;2、三个启动按钮对应三种跑马灯显示效果,按下任意一个启动按钮,跑马

3、灯显示对应的效果,按下停顿按钮则跑马灯全部熄灭。由上分析可知,我们的硬件的电路需要另行搭建,电路中需包含四个按钮和八个跑马灯以及相关芯片,既有输入设备又有输出设备,经过分析可以使用芯片8255A来实现输入与输出,再加上锁存地址芯片74LS273、译码芯片74LS154以及相关门电路即可构本钱设计的硬件电路根底。进一步分析最终决定用8255A的A口作为输出去控制跑马灯,B口作为按钮信号输入,CPU通过接收输入信号从而发出对应命令去控制8255A芯片A口输出,从而A口输出相应电平控制跑马灯有规律的亮灭。连接好硬件电路后的主要任务就是编写相应程序,通过程序去控制和调度硬件电路的输入与输出。1.2系统

4、连接图设计8255A是一种通过可编程并行I/O接口芯片。广泛用于几乎所有系列的微机系统中,8255A具有三个带锁存或缓冲的数据端口,可与外设并行进展数据交换,8255A有多种操作方式,通用性较强,可为CPU与外设之间提供输入/输出通道。8255A和各端口内具有中断控制逻辑,在外设与CPU之间可用中断方式进展信息交换,使用条件传输方式时可用联络线进展控制。在本次课程设计中,我们运用8255A为CPU与外设之间提供输入输出输出通道来实现对跑马灯把戏变换的控制。8086微处理器,选择最小工作模式,所有的总线控制信号均由8086产生;8086CPU的地址数据总线AD15-AD0和地址状态总线A16/S

5、3-A19/S6是复用的,必须通过地址锁存器把地址总线和数据总线别离。跑马灯硬件电路如图1所示。电路包括8个LED彩灯、三片74LS273、一片74LS154、一片8086CPU、一片8255A以及假设干导线和电阻。用LED可以观测在不同按键输入下,跑马灯把戏的变化效果。如图1所示我们利用启动按钮作为输入信号,通过8255A端口扩展芯片,调节输出端口的电平变化,来控制共阳极的LED灯的亮与灭,实现跑马灯不同的把戏变化。图1 跑马灯硬件电路图锁存控制电路锁存控制电路电路如图2所示,在微控制器单元MCU中,存放器是十分重要的资源。存放器的主要作用是快速存放算术逻辑运算单元ALU运算过程中的数据,其

6、锁存功能利用74LS273来实现,74LS273是一种带去除功能的8D触发器, 1D8D为数据输入端,1Q8Q为数据输出端,正脉冲触发,低电平去除,常用作数据锁存器,地址锁存器。D0D7:输入,Q0Q7:输出;第一脚WR:主去除端,低电平触发,即当为低电平时,芯片被去除,输出全为0低电平;CPCLK:触发端,上升沿触发,即当CP从低到高电平时,D0D7的数据通过芯片,为0时将数据锁存,D0D7的数据不变。CPU向外部发出地址锁存允许信号,从而使74LS273锁存地址信号,在通过译码芯片74LS154控制接口芯片8255A,在此系统中充当一个桥梁的作用。这局部电路将相应信号传送给8255A的A0

7、、A1和CS片选,进而CPU开场控制8255A从而驱动发光二极管显示不同的样式。图2 锁存控制电路可编程并行通信接口芯片8255A芯片8255A有三种工作方式,他们分别是方式0、方式1、方式2,电路如图3所示。方式0为简单I/O,查询方式,端口A、端口B、端口C均可使用;方式1为选通I/O,中断方式,端口A、端口B可以使用,选通的输入/输出方式;方式2为双向I/O,中断方式,只有端口A可以使用,双向的传输方式。方式0也叫根本输入/输出方式。一种方式,不需要应答联络信号,端口A、端口B和端口C的高4位及低4位都可以作为输入或输出端口。方式0的应用场合有无条件传送和查询传送2种; 故根据我们系统设

8、计的要求,综上可知,选择8255A为工作方式0,A口作为输出、B口作为输入。8255A的3种根本工作方式由方式控制字来决定,D71特征位说明是设定方式选择控制字;D7=0,则表示是端口C按位置位/复位控制字。端口C分成高4位(PC7PC4)和低4位(PC3PC0),可分别设置成输入端口或输出端口;端口C的高4位与端口A配合组成A组,端口C的低4位与端口B配合组成B组。综上可得此系统需要满足A端口为输出,输出数据给到8个LED彩灯;端口B为输入,需要检测按键的输入情况。图3 芯片8255A接口电路1.3算法说明本程序涉及芯片8255A的初始化,因此首先需要确定端口地址,CPU向8255A送出方式

9、控制字,进而8255A的A口作为输出、B口作为输入;定义控制LED灯的相应数据段,由于需要LED亮后持续一段时间这就需要一个相应的延时程序片段,需要确定B口那个按钮开关按下,这就需要一个扫描B口开关按下的子程序,从而CPU发出相应控制等操作给A口送出相应电平,LED显示相应的亮灭。因此,主要要点就是找对端口地址,这个是程序能够运行的必需品,通过分析硬件线路可以正确找到A口、B口以及控制口的地址。2程序流程图设计及其说明主程序流程图如图4所示:初始化程序开场送控制字通过A口输出使灯全灭调用ledflash子程序图4 主程序流程图检测按键延时控制LED子程序流程图如图5所示:开场检测B口信号输入是

10、否为按键1是否为按键2是否为按键3将1型走马灯的偏移地址送给SI将2型走马灯的偏移地址送给SI将3型走马灯的偏移地址送给SI是否终止开关Num是否为0延时YYYYYNNNNN完毕图5 子程序流程图3关键程序段落说明3.1数据段定义dseg segmentnum dw 0 data1 db 0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,80h,00h,00hdata2 db 00h,00h,0FFh,00h,0FFh,00h,0FFh,00h,80h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFhdata3 db7Eh,3Ch,18h,00h,0FFh,00h

11、,0FFh,00h,0FFh,00h,18h,3Ch,7Eh,0FFhdseg ends三种灯光变幻组合为:第一种为每隔1s依次亮起8个灯后保持2s然后全部熄灭第二种为8个灯全亮2s后闪烁3次,然后依次熄灭第三种为每个1s从两头同时依次亮起即先亮1、8,然后2、7,然后3、6,然后4、5,8个灯全部亮起后闪烁3次,然后向两头依次熄灭dw为灯光循环的控制次数。3.2程序初始化cseg segment para public codeassume ss:sseg,cs:cseg,ds:dseg start: mov a*,dseg mov ds,a*初始化程序。3.3芯片初始化mov d*,020

12、6h ;取8255A的控制端口的地址mov al,82h ;初始化8255A的A口为输出模式,B口为输入模式out d*,al 82h即为10000010b,也就是说将A口定义在方式0下并且作为输出,B口定义在方式0下并且作为输入,因此这个方式控制字不是唯一的,其通用形式为1000*01*,C口没有定义故可以为任意二进制数。mov d*,0200h ;取8255的端口A的地址mov al,0FFh ;使8255的PA0-PA7全为1out d*,al 上边这个程序段是往外送数据置LED亮灭的。mov d*,0202h ;取8255的端口B的地址in al,d* ;检测B口输入信号这个是将B口开

13、关闭合信息读回来的,从而发出相应控制命令。3.4初始LED亮灭状态mov d*,0200h ;取8255的端口A的地址mov al,0FFh ;使8255的PA0-PA7全为1out d*,al ;使所有的灯LED全灭电路上电工作后首先要使所有的LED灯全灭,防止对后面的显示造成影响。3.5检测按键开关子程序ledflash proc ;检测开关闭合,以便确定哪种闪烁方式mov d*,0202h ;取8255A的端口B的地址in al,d* ;检测B口输入信号choice1: cmp al,0feh jne choice2 mov si,offset data1 ;置第一种灯光变幻组合jmp

14、herechoice2: cmp al,0fdh jne choice3 mov si,offset data2 ;置第二种灯光变幻组合 jmp herechoice3: cmp al,0fbh jne choice4 mov si,offset data3 ;置第三种灯光变幻组合 jmp here choice4: ;每盏灯亮完检测开关,如果停顿开关没有按下跳到choice5,如果停顿开关按下灯全灭 cmp al,0f7h jne choice5 jmp e*utchoice5: cmp num,0h;检测num是否为0,假设为0扫描开关,假设不为0继续执行 jne here jmp led

15、flash here: mov b*,num mov al,si+b* mov d*,0200h ;取8255的端口A的地址out d*,al ;输出加电数据到端口A inc num ;改变数字变量的值cmp num,09h je e*it mov c*,005fh dl4: mov b*,00ffhdl3: dec b*jnz dl3 dec c* jnz dl4jmp ledflashe*it: mov num,0 retledflash endp检测到开关闭合置相应灯光变换。3.6延时程序片段mov c*,04c9h dl4: mov b*,04c9hdl3: dec b* jnz dl

16、3 dec c* jnz dl4通过双层循环从而实现软件延时,延时计算公式为(c*)*(b*)/f,f为CPU的频率,CPU频率为1500kHz,可以计算得到程序大致延时为1s。3.7灯光变换控制here: mov b*,num mov al,si+b* mov d*,0200h ;取8255的端口A的地址 out d*,al ;输出加电数据到端口A inc num ;改变数字变量的值 cmp num,09h je e*it通过指针移动,逐个选中相应的数据置相应的灯光变换,共八种即一轮LED显示完成。4程序调试说明1、内存空间分配,汇编语言的重要特点之一是能够直接利用机器指令或者伪指令为数据或

17、者代码程序分配内存空间,86系列如8086微处理器的存储器构造是分段的,有代码段,数据段,堆栈段或附加段,在程序设计时要充分考虑分段构造,要执行的程序段应设在当前段活动段中;分配内存空间:直接在proteus里面将8086CPU的internal memory size设置成一个足够用的空间大小,如0*1000,默认的空间大小是0*00000,如不改则仿真不成功。程序在运行时所需要的工作单元应尽可能的设在CPU存放器中,这样存取速度快,而且操作方便;在此系统源程序中都采用8086CPU的全部通用存放器:累加器A*,基数存放器B*,基数存放器C*,数据存放器D*;和堆栈指针存放器SI。2、调试过

18、程中出现了问题,UNKOWN 2-BYTE OPCODE AT 1010:0192(E*TRA PART IS DEPOSED)!FE07.检查了无数次后无果,凭我目前的能力并无法解决。3、8255A隐藏引脚问题,需要设置芯片Hidden Pins里的GND改为VSS,4、程序一开场是将延时环节作为一个独立子程序,运行过程中由于局部情况下不满足题设,故将延时子程序改为程序段落写到检测按键的子程序中问题得以解决。5结果记录及分析无数次的失败之后我并没有得到想要的结果,为此我请教了已经就业的亲戚,也没能彻底解决问题。最终我选择将我的所有目前成果上交,虽然没能运行到最后一步,但我确实没有更多的时间去

19、改变。希望教师看到我的作业能够给我提出建议并改正我的错误,在此感谢!-. z.附 录程序清单sseg segment dw 200 dup ()sseg endsdseg segmentnum dw 0 ;初始化数字变量为0;3种不同的灯光变幻组合data1 db 0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,80h,00h,00hdata2 db 00h,00h,0FFh,00h,0FFh,00h,0FFh,00h,80h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFhdata3 db7Eh,3Ch,18h,00h,0FFh,00h,0FFh,00h,0F

20、Fh,00h,18h,3Ch,7Eh,0FFhdseg endscseg segment para public code assume ss:sseg,cs:cseg,ds:dseg start: mov a*,dseg mov ds,a* mov d*,0206h ;取8255的控制端口的地址 mov al,82h ;初始化8255的A口为输出模式,B口为输入模式 out d*,al e*ut: mov num,0h mov d*,0200h ;取8255的端口A的地址 mov al,0FFh ;使8255的PA0-PA7全为1 out d*,al ;使所有的灯LED全灭begin: call ledflash ;调用灯光变幻过程 jmp e*it ledflash proc ;检测开关闭合

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论