已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口设计报告学 院: 电子与信息工程学院 T班 级: 15通信工程(1)班 G学 号: 20151334034 G姓 名: 浦奕星 G指导老师: 乔杰 G完成时间: 2017年06月02日 G目录微机原理与接口设计报告1一、设计目的1二、设计任务及要求11、设计任务12、设计内容13、设计器材2三、设计原理及设计方案的选择21、设计原理22、系统原理4四、总体设计7五、详细设计81、电路设计82、宏定义设计83、定时器模块设计104、按键查询程序设计105、数码管显示模块设计116、延时模块设计12六、运行结果及说明12七、参考文献14八、程序源代码1419一、设计目的1) 了解随机数生成器以及数码管显示的基本工作原理。2) 熟练掌握8255A可编程并行接口芯片的接口编程方法,掌握8255A在不同工作方式下通过输出对显示数码管的控制以及对按键的查询工作。3) 熟练掌握8253芯片的编程及应用,掌握不同方式下定时计数的方法,知道用8253芯片控制时间和申请中断。4) 熟悉掌握对硬件的运用,能够通过软件编程来达到对硬件的控制。5) 掌握Protues下仿真问题的解决。6) 进一步学习微处理器的编程技术。二、设计任务及要求1、设计任务这次课程设计的题目是利用定时器生成随机数与数码管显示的设计与实现,主要是模拟计算机生成随机数。 利用定时器生成随机数与数码管显示的设计与实现主要是通过编写汇编语言程序利用8255A的A口和B口实现对数码管显示进行控制。首先,要了解的是8255A是如何工作的,包括它的A、B、C口和控制端口是如何写数据的,还包括芯片的初始化等。在编写程序时得先规划好数码管显示和按键查询所要接的端口,继而编写相应的端口控制程序。对于数码管显示的持续时间我用到的软件延时。最后要在实验室通过一个软件进行调试,调试通过后即可看到设计的结果。2、设计内容定时器生成随机数与数码管显示主要采用定时器在某一时刻的计数值来提供概率相同的随机性数值,关键是各个模块之间的时序配合和驱动控制,正是基于以上考虑,采用如下设计,通过设计实现以下功能:本实验主要用Protues软件借助标准8086模板进行设计仿真,在Protues软件仿真界面中,显示出通过定时器完成的0-9之间的随机数字。在按键控制下可可以实现在按键按下后,随机生成一个随机数并在数码管上显示图 2-1如图2-1所示,为Protues仿真硬件结构图。包括8086及其外部数字逻辑电路、8253A定时器、8255A可编程并行接口芯片、数码管、矩阵键盘。3、设计器材笔记本电脑 Protues仿真软件Emu8086汇编程序集成开发软件三、设计原理及设计方案的选择1、设计原理如图3-1所示为8086结构原理图,图3-2为8253A连接图,图3-3为8255A以及数码管、矩阵键盘连接图,8086在查询到有键按下后,通过定时器读取计数值,在将计数值作为随机数生成种子计算出生成的0-9数字,再通过数码管进行显示。图 3-1 8086结构原理图图 3-2 8253A连接图图 3-3 8255A以及数码管、矩阵键盘连接图2、系统原理本次课程设计使用到芯片8255, 使用这块芯片首先应该明白了解这块芯片的功能、工作方式以及初始化方式等。2.1 8255的工作原理及内部结构 图3-4 8255的内部结构及引脚图1) 数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。2) 两个端口B和C:B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。3) 读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。8255A的工作方式:方式0-基本输入输出方式;方式1-选通输入输出方式;方式2-双向选通输入输出方式。 图3-5 8255工作方式控制字和C口按位置位/复位控制字格式2.2 数码管显示原理图3-6 单个数码管原理图在仿真时利用L1L8这八个发光二级光来简单模拟。其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。2.2 矩阵键盘按键原理图3-7 矩阵键盘原理图在仿真时利用S1S16,十六个按键组成矩阵键盘,8086不断读取PC0PC3端口的值,使用查询方式进行读取。四、总体设计整体实验设计思想如图4-1所示:图4-1 设计程序流程图五、详细设计1、电路设计本课题的设计采用的硬件电路仿真方案,由于Protues自带的8086 Demo Borad上设计使用中占用端口较多,对实际设计实现功能无效,故仅考虑设计所需8255A、8253A、按键、数码管等部分功能,故在Demo Board基础上加以修改调整的设计。去除了8251A可编程串行接口芯片。同时加入了外部时钟源作为8086和8253Timer0的时钟源,使两者时钟同步,解决时序问题。2、宏定义设计根据电路仿真方案的设计,采用部分宏定义以方便程序编写,增强代码可读性、可查性。具体定义如下:IO0 EQU 0x0000IO1 EQU 0x0200IO2 EQU 0x0400 ;I/O 地址总线解码 ADR_TIMER_CONTROL EQU (IO2 + 0x06)ADR_TIMER_DATA0 EQU (IO2 + 0x00)ADR_TIMER_DATA1 EQU (IO2 + 0x02)ADR_TIMER_DATA2 EQU (IO2 + 0x04) TIMER_COUNTER0 EQU0x00TIMER_COUNTER1 EQU0x40TIMER_COUNTER2 EQU0x80TIMER_LATCH EQU0x00TIMER_LSB EQU0x10TIMER_MSB EQU0x20TIMER_LSB_MSB EQU0x30TIMER_MODE0 EQU0x00TIMER_MODE1 EQU0x02TIMER_MODE2 EQU0x04TIMER_MODE3 EQU0x06TIMER_MODE4 EQU0x08TIMER_MODE5 EQU0x09 TIMER_BCD EQU0x01;定时器8253定义 ADR_PPI_PORTA EQU(IO1)ADR_PPI_PORTB EQU(IO1 + 0x02)ADR_PPI_PORTC EQU(IO1 + 0x04)ADR_PPI_CONTROL EQU(IO1 + 0x06)PPI_PORTA_INPEQU 0x10PPI_PORTA_OUTEQU 0x00PPI_PORTB_INPEQU 0x02PPI_PORTB_OUTEQU 0x00PPI_PORTCL_INPEQU 0x01PPI_PORTCL_OUTEQU 0x00PPI_PORTCH_INPEQU 0x08PPI_PORTCH_OUTEQU 0x00PPI_MODE_BCL_0EQU 0x00PPI_MODE_BCL_1EQU 0x04PPI_MODE_ACH_0EQU 0x00PPI_MODE_ACH_1EQU 0x20PPI_MODE_ACH_2EQU 0x40PPI_ACTIVEEQU 0x80;8255A定义 3、定时器模块设计在设计任务时,需要驱动定时器使其计数以读出计数值来生成随机数,在实际设计时,采用模式0,读写16位方式,计数初值为0。其程序设计如下:初始化: MOV DX, ADR_TIMER_CONTROL MOV AL, TIMER_COUNTER0 | TIMER_MODE0 | TIMER_LSB_MSB OUT DX, AL ;定时器0 模式0 读16位 MOV DX, ADR_TIMER_DATA0 MOV AL, 0x00 OUT DX, AL MOV DX, ADR_TIMER_DATA0 MOV AL, 0x00 OUT DX, AL ;初值0000H读取计数值:RANDOM: MOV DX, ADR_TIMER_CONTROL ;定时器0锁存命令 MOV AL, TIMER_COUNTER0 | TIMER_LATCH OUT DX, AL MOV DX, ADR_TIMER_DATA0 IN AL, DX ;从OL读取低位字节 XCHG AH, AL IN AL, DX ;从OL读取高位字节 XCHG AH, AL ;定时器0计数值读入 MOV RANDOM_SEEK, AX JMP DISP4、按键查询程序设计按键查询程序用提供用户使用随机数生成器的按键,其程序如下:初始化: MOV DX, ADR_PPI_CONTROL MOV AL, PPI_PORTA_OUT | PPI_PORTB_OUT | PPI_PORTCL_INP | PPI_PORTCH_INP | PPI_MODE_BCL_0 | PPI_MODE_ACH_0 | PPI_ACTIVE OUT DX, AL ;A、B输出,C输入,都为模式0查询按键:KEY_SCAN: MOV DX, ADR_PPI_PORTC IN AL, DX MOV KEY_NUM, AL MOV AL, KEY_NUM AND AL, 0F0H CMP AL, 00H JNZ KEY_XD ;消抖 JMP KEY_SCANKEY_XD: MOV DX, ADR_PPI_PORTC IN AL, DX MOV KEY_NUM, AL MOV AL, KEY_NUM AND AL, 0F0H CMP AL, 00H JNZ RANDOM JMP KEY_SCAN5、数码管显示模块设计通过8段数码管显示随机生成在0-9之间的数字, 其程序如下:DISP: MOV AX, RANDOM_SEEK DIV WORD PTR 10 MOV RANDOM_NUM, DL MOV DX, ADR_PPI_PORTB MOV AL, RANDOM_NUM OUT DX, AL MOV DX, ADR_PPI_PORTA MOV AL, 01H OUT DX, AL JMP KEY_SCAN ;计算随机数并显示6、延时模块设计在设计任务时,由于需要按键消抖,加入延时子程序:DELAY1: PUSH AX PUSH CX MOV CX,0030HDELAY_2: CALL DELAY2 LOOP DELAY_2 POP CX POP AX RETDELAY2: PUSH CX MOV CX,8000HDELAY_1: LOOP DELAY_1 POP CX ;延时程序 RET 六、运行结果及说明通过Emu8086生成可执行文件,将其加载到Protues仿真软件的8086中。通过运行仿真可看到效果。当按下矩阵键盘中任意键时,在数码管中会随机显示0-9之间的任意数,且概率均等。如图6-1所示,在按下任意键后,在数码管上显示出随机数字。重复多次,得到不同数字,经多次测试统计,仿真中显示数字概率均等,符合设计要求。图6-1 实际演示效果图七、参考文献微机原理与接口技术 主编:梁建武 中国水利水电出版社IBM-PC汇编语言程序设计 清华大学出版社单片机基础 北京航空航天出版社八、程序源代码IO0 EQU 0x0000IO1 EQU 0x0200IO2 EQU 0x0400 ;I/O 地址总线解码 ADR_TIMER_CONTROL EQU (IO2 + 0x06)ADR_TIMER_DATA0 EQU (IO2 + 0x00)ADR_TIMER_DATA1 EQU (IO2 + 0x02)ADR_TIMER_DATA2 EQU (IO2 + 0x04) TIMER_COUNTER0 EQU0x00TIMER_COUNTER1 EQU0x40TIMER_COUNTER2 EQU0x80TIMER_LATCH EQU0x00TIMER_LSB EQU0x10TIMER_MSB EQU0x20TIMER_LSB_MSB EQU0x30TIMER_MODE0 EQU0x00TIMER_MODE1 EQU0x02TIMER_MODE2 EQU0x04TIMER_MODE3 EQU0x06TIMER_MODE4 EQU0x08TIMER_MODE5 EQU0x09 TIMER_BCD EQU0x01;定时器8253定义 ADR_PPI_PORTA EQU(IO1)ADR_PPI_PORTB EQU(IO1 + 0x02)ADR_PPI_PORTC EQU(IO1 + 0x04)ADR_PPI_CONTROL EQU(IO1 + 0x06)PPI_PORTA_INPEQU 0x10PPI_PORTA_OUTEQU 0x00PPI_PORTB_INPEQU 0x02PPI_PORTB_OUTEQU 0x00PPI_PORTCL_INPEQU 0x01PPI_PORTCL_OUTEQU 0x00PPI_PORTCH_INPEQU 0x08PPI_PORTCH_OUTEQU 0x00PPI_MODE_BCL_0EQU 0x00PPI_MODE_BCL_1EQU 0x04PPI_MODE_ACH_0EQU 0x00PPI_MODE_ACH_1EQU 0x20PPI_MODE_ACH_2EQU 0x40PPI_ACTIVEEQU 0x80;8255A定义 ; 堆栈段STACK SEGMENT STACK STACK ;定义堆栈段 DB 100H DUP(0) ;设置堆栈段大小为100H TOP LABEL WORD ;TOP指向栈顶 STACK ENDS ; 数据段 DATA SEGMENT;定义数据段 ;TO DO:数据添加到下面 RANDOM_SEEK DW 0 RANDOM_NUM DB 0 KEY_NUM DB 0 ;/DATA ENDS ; 代码段CODE SEGMENT;定义代码段 ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK ;关联段寄存器START: ;主程序入口点 MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP ;各段地址初始化 ;TO DO:添加主程序代码; - MOV DX, ADR_TIMER_CONTROL MOV AL, TIMER_COUNTER0 | TIMER_MODE0 | TIMER_LSB_MSB OUT DX, AL ;定时器0 模式0 读16位 MOV DX, ADR_TIMER_DATA0 MOV AL, 0x00 OUT DX, AL MOV DX, ADR_TIMER_DATA0 MOV AL, 0x00 OUT DX, AL ;初值0000H MOV DX, ADR_PPI_CONTROL MOV AL, PPI_PORTA_OUT | PPI_PORTB_OUT | PPI_PORTCL_INP | PPI_PORTCH_INP | PPI_MODE_BCL_0 | PPI_MODE_ACH_0 | PPI_ACTIVE OUT DX, AL ;A、B输出,C输入,都为模式0 KEY_SCAN: MOV DX, ADR_PPI_PORTC IN AL, DX MOV KEY_NUM, AL MOV AL, KEY_NUM AND AL, 0F0H CMP AL, 00H JNZ KEY_XD ;消抖 JMP KEY_SCANKEY_XD: MOV DX, ADR_PPI_PORTC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于购买木头合同范本
- 农村山林卖买合同范本
- 加盟合同如何终止协议
- 共享设备投放点协议书
- 养殖用水供水合同范本
- 合租合同人身安全协议
- 2026年投资项目管理师之宏观经济政策考试题库300道含答案【夺分金卷】
- 公司融资合作合同范本
- 初创公司用车合同范本
- 合成挖机租赁合同范本
- 2025年秋沪科版八年级数学上册 第12章 函数与一次函数 综合测试卷(含答案)
- 2025年中小学生安全知识知识竞赛试题库及答案
- 2025年执业药师《中药学综合知识与技能》考试真题及答案解析
- 打印机基础知识课件
- 2025年广西公需真题卷及答案
- 隐蔽工程报验管理办法
- 矿井电子围栏管理制度
- 产品批次追溯管理制度
- 甲亢教学课件
- 呼吸系统体格检查规范
- 中医院进修申请表
评论
0/150
提交评论