8086课程设计报告书_第1页
8086课程设计报告书_第2页
8086课程设计报告书_第3页
8086课程设计报告书_第4页
8086课程设计报告书_第5页
免费预览已结束,剩余22页可下载查看

付费下载

下载本文档

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

文档简介

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

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

3、动按钮对应三种跑马灯显示效果 ,按下任意一个启动按钮 ,跑马灯显示对应的效果 ,按下停止按钮则跑马灯全部熄灭。由上分析可知 ,我们的硬件的电路需要另行搭建,电路中需包含四个按钮和八个跑马灯以及相关芯片 ,既有输入设备又有输出设备,经过分析可以使用芯片 8255A 来实现输入与输出 ,再加上锁存地址芯片74LS273 、译码芯片74LS154 以及相关门电路即可构成本设计的硬件电路基础。进一步分析最终决定用 8255A 的 A 口作为输出去控制跑马灯 ,B 口作为按钮信号输入 ,CPU 通过接收输入信号从而发出对应命令去控制 8255A 芯片 A 口输出,从而 A 口输出相应电平控制跑马灯有规律

4、的亮灭 。 连接好硬件电路后的主要任务就是编写相应程序,通过程序去控制和调度硬件电路的输入与输出 。1.2 系统连接图设计8255A 是一种通过可编程并行 I/O 接口芯片 。广泛用于几乎所有系列的微机系统中 ,8255A 具有三个带锁存或缓冲的数据端口 ,可与外设并行进行数据交换 ,8255A 有多种操作方式 ,通用性较强 ,可为 CPU 与外设之间提供输入 / 输出通道 。8255A 和各端口内具有中断控制逻辑 ,在外设与 CPU 之间可用中断方式进行信息交换 ,使用条件传输方式时可用 “联络 ”线进行控制 。在本次课程设计中 ,我们运用 8255A 为 CPU 与外设之间提供输入输出输出

5、通道来实现对跑马灯花样变换的控制。.专业专注.8086 微处理器 ,选择最小工作模式 ,所有的总线控制信号均由 8086 产生;8086CPU 的地址 数据总线 AD15-AD0 和地址 状态总线 A16/S3-A19/S6 是复用的 ,必须通过地址锁存器把地址总线和数据总线分离 。跑马灯硬件电路如图1 所示 。电路包括 8 个 LED 彩灯、三片 74LS273、一片 74LS154、一片 8086CPU、一片 8255A 以及若干导线和电阻 。 用 LED 可以观测在不同按键输入下 ,跑马灯花样的变化效果 。如图 1 所示我们利用启动按钮作为输入信号 ,通过 8255A 端口扩展芯片 ,调

6、节输出端口的电平变化,来控制共阳极的LED 灯的亮与灭 ,实现跑马灯不同的花样变化 。图 1 跑马灯硬件电路图锁存控制电路.专业专注.锁存控制电路电路如图2 所示,在微控制器单元 (MCU )中,寄存器是十分重要的资源 。 寄存器的主要作用是快速寄存算术逻辑运算单元(ALU )运算过程中的数据 ,其锁存功能利用74LS273 来实现, 74LS273 是一种带清除功能的 8D 触发器, 1D8D 为数据输入端 ,1Q8Q 为数据输出端 ,正脉冲触发 ,低电平清除 ,常用作数据锁存器 ,地址锁存器 。D0D7 :输入, Q0Q7 :输出;第一脚 WR:主清除端 ,低电平触发 ,即当为低电平时 ,

7、芯片被清除 ,输出全为 0(低电平);CP(CLK):触发端,上升沿触发 ,即当 CP 从低到高电平时 ,D0D7 的数据通过芯片 ,为 0 时将数据锁存 , D0D7 的数据不变 。CPU 向外部发出地址锁存允许信号 ,从而使 74LS273 锁存地址信号 ,在通过译码芯片 74LS154 控制接口芯片 8255A ,在此系统中充当一个桥梁的作用 。这部分电路将相应信号传送给 8255A 的 A0 、A1 和 CS 片选,进而 CPU 开始控制 8255A 从而驱动发光二极管显示不同的样式 。.专业专注.图 2 锁存控制电路可编程并行通信接口芯片8255A芯片 8255A 有三种工作方式 ,

8、他们分别是方式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 种; 故根据我们系统设计的要求 ,综上可知 ,选择 8255A

9、 为工作方式 0,A 口作为输出 、B 口作为输入 。8255A 的 3 种基本工作方式由方式控制字来决定,D7 1(特征位)表明是设定方式选择控制字 ;D7=0 ,则表示是端口C 按位置位 / 复位控制字 。 端口 C分成高 4 位(PC7PC4)和低 4 位(PC3PC0),可分别设置成输入端口或输出端口;端口 C 的高 4 位与端口 A 配合组成 A 组,端口 C 的低 4 位与端口 B 配合组成 B组。综上可得此系统需要满足A 端口为输出 ,输出数据给到 8 个 LED 彩灯;端口 B 为输入,需要检测按键的输入情况。.专业专注.图 3 芯片 8255A 接口电路1.3 算法说明本程序

10、涉及芯片 8255A 的初始化 ,因此首先需要确定端口地址 , CPU 向 8255A 送出方式控制字 ,进而 8255A 的 A 口作为输出 、 B 口作为输入 ;定义控制 LED 灯的相应数据段 ,由于需要 LED 亮后持续一段时间这就需要一个相应的延时程序片段 ,需要确定 B 口那个按钮开关按下 ,这就需要一个扫描 B 口开关按下的子程序 ,从而 CPU 发出相应控制等操作给 A 口送出相应电平 ,LED 显示相应的亮灭 。.专业专注.因此,主要要点就是找对端口地址,这个是程序能够运行的必需品,通过分析硬件线路可以正确找到A 口、B 口以及控制口的地址 。2 程序流程图设计及其说明主程序

11、流程图如图4 所示:.专业专注.开始初始化程序送控制字通过 A 口输出使灯全灭调用 ledflash 子程序图 4 主程序流程图检测按键延时控制LED 子程序流程图如图5 所示:.专业专注.开始图 5 子程序流程图检测 B 口信号输入Y是否为按键 1将 1 型走马灯的偏3 关键程序段落说明移地址送给 SIN3.1 数据段定义Y是否为按键 2将 2 型走马灯的偏.移地址送给 SI专业 专注NY将 3 型走马灯的偏.dseg segmentnumdw0data1db 0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,80h,00h,00hdata2db00h,00h,0FFh,00h,0

12、FFh,00h,0FFh,00h,80h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFhdata3db7Eh,3Ch,18h,00h,0FFh,00h,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

13、.2 程序初始化cseg segment para public 'code'assume ss:sseg,cs:cseg,ds:dsegstart:movax,dsegmovds,ax初始化程序 。.专业专注.3.3 芯片初始化mov dx,0206h;取 8255A 的控制端口的地址mov al,82h;初始化 8255A 的 A 口为输出模式 , B 口为输入模式out dx,al82h 即为 10000010b ,也就是说将 A 口定义在方式 0 下并且作为输出 ,B 口定义在方式 0 下并且作为输入 ,因此这个方式控制字不是唯一的 ,其通用形式为 1000X01X ,

14、 C 口没有定义故可以为任意二进制数 。mov dx,0200h;取 8255的端口 A 的地址mov al,0FFh;使 8255的 PA0-PA7 全为 1out dx,al上边这个程序段是往外送数据置LED 亮灭的 。mov dx,0202h;取 8255 的端口 B 的地址inal,dx;检测 B 口输入信号这个是将 B 口开关闭合信息读回来的,从而发出相应控制命令 。3.4 初始 LED 亮灭状态mov dx,0200h;取 8255 的端口 A 的地址mov al,0FFh;使 8255 的 PA0-PA7 全为 1out dx,al;使所有的灯 LED 全灭电路上电工作后首先要使

15、所有的LED 灯全灭,防止对后面的显示造成影响。3.5 检测按键开关子程序ledflash proc;检测开关闭合 ,以便确定哪种闪烁方式mov dx,0202h;取 8255A 的端口 B 的地址inal,dx;检测 B 口输入信号.专业专注.choice1:cmp al,0fehjne choice2mov si,offset data1 ;置第一种灯光变幻组合jmp herechoice2:cmp al,0fdhjne choice3mov si,offset data2 ;置第二种灯光变幻组合jmp herechoice3:cmp al,0fbhjne choice4mov si,of

16、fset data3 ;置第三种灯光变幻组合jmp herechoice4:;每盏灯亮完检测开关,如果停止开关没有按下跳到choice5 ,如果停止开关按下灯全灭cmp al,0f7hjne choice5jmp exutchoice5:cmp num,0h; 检测 num 是否为 0,若为 0 扫描开关 ,若不为 0 继续执行jne herejmp ledflashhere:mov bx,nummov al,si+bxmov dx,0200h;取 8255 的端口 A 的地址.专业专注.out dx,al;输出加电数据到端口Ainc num;改变数字变量的值cmpnum,09hje exit

17、mov cx,005fhdl4:mov bx,00ffhdl3:dec bxjnz dl3dec cxjnz dl4jmp ledflashexit:mov num,0retledflash endp检测到开关闭合置相应灯光变换。3.6 延时程序片段mov cx,04c9hdl4:mov bx,04c9hdl3:dec bxjnz dl3dec cxjnz dl4通过双层循环从而实现软件延时,延时计算公式为 (cx)*(bx)/f ,f 为 CPU 的频率,CPU 频率为 1500kHz ,可以计算得到程序大致延时为1s。.专业专注.3.7 灯光变换控制here:mov bx,nummov a

18、l,si+bxmov dx,0200h;取 8255 的端口 A 的地址out dx,al;输出加电数据到端口Ainc num;改变数字变量的值cmpnum,09hje exit通过指针移动 ,逐个选中相应的数据置相应的灯光变换 ,共八种即一轮 LED 显示完成。.专业专注.4 程序调试说明( 1)、内存空间分配 ,汇编语言的重要特点之一是能够直接利用机器指令或者伪指令为数据或者代码程序分配内存空间 ,86 系列(如 8086 微处理器 )的存储器结构是分段的 ,有代码段 ,数据段 ,堆栈段或附加段 ,在程序设计时要充分考虑分段结构 ,要执行的程序段应设在当前段 (活动段 )中;分配内存空间:

19、直接在 proteus 里面将 8086CPU 的 internal memory size设置成一个足够用的空间大小 ,如 0x1000 ,默认的空间大小是0x00000 ,如不改则仿真不成功。程序在运行时所需要的工作单元应尽可能的设在 CPU 寄存器中 ,这样存取速度快,而且操作方便 ;在此系统源程序中都采用 8086CPU 的全部通用寄存器 :累加器 AX,基数寄存器 BX,基数寄存器 CX,数据寄存器 DX;和堆栈指针寄存器SI。( 2 )、 调试过程中出现了问题, UNKOWN2-BYTE OPCODE AT 1010 :0192(EXTRA PART IS DECOMPOSED)!

20、FE07.检查了无数次后无果 ,凭我目前的能力并无法解决 。( 3)、 8255A 隐藏引脚问题 ,需要设置芯片 Hidden Pins 里的 GND 改为 VSS,( 4)、程序一开始是将延时环节作为一个独立子程序 ,运行过程中由于部分情况下不满足题设 ,故将延时子程序改为程序段落写到检测按键的子程序中问题得以解决 。.专业专注.5 结果记录及分析无数次的失败之后我并没有得到想要的结果,为此我请教了已经就业的亲戚,也没能彻底解决问题。最终我选择将我的所有目前成果上交,虽然没能运行到最后一步 ,但我确实没有更多的时间去改变。希望老师看到我的作业能够给我提出建议并改正我的错误,在此感谢 !.专业

21、专注.附 录程序清单sseg segmentdw 200 dup (?)sseg endsdseg segmentnumdw 0;初始化数字变量为0;3 种不同的灯光变幻组合data1db 0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,80h,00h,00hdata2db00h,00h,0FFh,00h,0FFh,00h,0FFh,00h,80h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFhdata3db7Eh,3Ch,18h,00h,0FFh,00h,0FFh,00h,0FFh,00h,18h,3Ch,7Eh,0FFhdseg endscseg segment para public 'code'assume ss:sseg,cs:cseg,ds:dsegstart:movax,dsegmovds,axmov dx,0206h;取 8255 的控制端口的地址mov al,82h;初始化 8255 的 A 口为输出模式 ,B 口为输入模式out dx,alexut:mov num,0h.专业专注.mov dx,0200h;取 8255 的端口 A 的地址mov al,0FFh;使 8255 的 PA0-PA7 全为1out dx,al;使

温馨提示

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

评论

0/150

提交评论