微机原理与接口技术课程设计-利用定时器生成随机数与数码管显示的设计与实现_第1页
微机原理与接口技术课程设计-利用定时器生成随机数与数码管显示的设计与实现_第2页
微机原理与接口技术课程设计-利用定时器生成随机数与数码管显示的设计与实现_第3页
微机原理与接口技术课程设计-利用定时器生成随机数与数码管显示的设计与实现_第4页
微机原理与接口技术课程设计-利用定时器生成随机数与数码管显示的设计与实现_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口设计报告学院:电子与信息工程学院T班级:15通信工程(1)班G学号:20151334034G姓名:浦奕星G指导老师:乔杰G完成时间:2017年06月02日G

TOC\o"1-4"\h\z\u目录微机原理与接口设计报告 1一、设计目的 1二、设计任务及要求 11、设计任务 12、设计内容 13、设计器材 2三、设计原理及设计方案的选择 21、设计原理 22、系统原理 4四、总体设计 7五、详细设计 81、电路设计 82、宏定义设计 83、定时器模块设计 104、按键查询程序设计 105、数码管显示模块设计 116、延时模块设计 12六、运行结果及说明 12七、参考文献 14八、程序源代码 14一、设计目的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-18086结构原理图图3-28253A连接图图3-38255A以及数码管、矩阵键盘连接图2、系统原理本次课程设计使用到芯片8255,使用这块芯片首先应该明白了解这块芯片的功能、工作方式以及初始化方式等。2.18255的工作原理及内部结构图3-48255的内部结构及引脚图1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。2)两个端口B和C:B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。3)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。8255A的工作方式:方式0基本输入输出方式;方式1选通输入输出方式;方式2双向选通输入输出方式。图3-58255工作方式控制字和C口按位置位/复位控制字格式2.2数码管显示原理图3-6单个数码管原理图在仿真时利用L1~L8这八个发光二级光来简单模拟。其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。2.2矩阵键盘按键原理图3-7矩阵键盘原理图在仿真时利用S1~S16,十六个按键组成矩阵键盘,8086不断读取PC0~PC3端口的值,使用查询方式进行读取。四、总体设计整体实验设计思想如图4-1所示:图4-1设计程序流程图五、详细设计1、电路设计本课题的设计采用的硬件电路仿真方案,由于Protues自带的8086DemoBorad上设计使用中占用端口较多,对实际设计实现功能无效,故仅考虑设计所需8255A、8253A、按键、数码管等部分功能,故在DemoBoard基础上加以修改调整的设计。去除了8251A可编程串行接口芯片。同时加入了外部时钟源作为8086和8253Timer0的时钟源,使两者时钟同步,解决时序问题。2、宏定义设计根据电路仿真方案的设计,采用部分宏定义以方便程序编写,增强代码可读性、可查性。具体定义如下:IO0EQU0x0000IO1EQU0x0200IO2EQU0x0400;I/O地址总线解码ADR_TIMER_CONTROLEQU(IO2+0x06)ADR_TIMER_DATA0EQU(IO2+0x00)ADR_TIMER_DATA1EQU(IO2+0x02)ADR_TIMER_DATA2EQU(IO2+0x04)TIMER_COUNTER0EQU 0x00TIMER_COUNTER1EQU 0x40TIMER_COUNTER2EQU 0x80TIMER_LATCHEQU 0x00TIMER_LSBEQU 0x10TIMER_MSBEQU 0x20TIMER_LSB_MSBEQU 0x30TIMER_MODE0EQU 0x00TIMER_MODE1EQU 0x02TIMER_MODE2EQU 0x04TIMER_MODE3EQU 0x06TIMER_MODE4EQU 0x08TIMER_MODE5EQU 0x09TIMER_BCDEQU 0x01;定时器8253定义 ADR_PPI_PORTAEQU (IO1)ADR_PPI_PORTBEQU (IO1+0x02)ADR_PPI_PORTCEQU (IO1+0x04)ADR_PPI_CONTROLEQU (IO1+0x06)PPI_PORTA_INP EQU0x10PPI_PORTA_OUT EQU0x00PPI_PORTB_INP EQU0x02PPI_PORTB_OUT EQU0x00PPI_PORTCL_INP EQU0x01PPI_PORTCL_OUT EQU0x00PPI_PORTCH_INP EQU0x08PPI_PORTCH_OUT EQU0x00PPI_MODE_BCL_0 EQU0x00PPI_MODE_BCL_1 EQU0x04PPI_MODE_ACH_0 EQU0x00PPI_MODE_ACH_1 EQU0x20PPI_MODE_ACH_2 EQU0x40PPI_ACTIVE EQU0x80;8255A定义3、定时器模块设计在设计任务时,需要驱动定时器使其计数以读出计数值来生成随机数,在实际设计时,采用模式0,读写16位方式,计数初值为0。其程序设计如下:初始化:MOVDX,ADR_TIMER_CONTROLMOVAL,TIMER_COUNTER0|TIMER_MODE0|TIMER_LSB_MSBOUTDX,AL;定时器0模式0读16位MOVDX,ADR_TIMER_DATA0MOVAL,0x00OUTDX,ALMOVDX,ADR_TIMER_DATA0MOVAL,0x00OUTDX,AL;初值0000H读取计数值:RANDOM:MOVDX,ADR_TIMER_CONTROL;定时器0锁存命令MOVAL,TIMER_COUNTER0|TIMER_LATCHOUTDX,ALMOVDX,ADR_TIMER_DATA0INAL,DX;从OL读取低位字节XCHGAH,ALINAL,DX;从OL读取高位字节XCHGAH,AL;定时器0计数值读入MOVRANDOM_SEEK,AXJMPDISP4、按键查询程序设计按键查询程序用提供用户使用随机数生成器的按键,其程序如下:初始化: MOVDX,ADR_PPI_CONTROLMOVAL,PPI_PORTA_OUT|PPI_PORTB_OUT|PPI_PORTCL_INP|PPI_PORTCH_INP|PPI_MODE_BCL_0|PPI_MODE_ACH_0|PPI_ACTIVEOUTDX,AL;A、B输出,C输入,都为模式0查询按键:KEY_SCAN:MOVDX,ADR_PPI_PORTCINAL,DXMOVKEY_NUM,ALMOVAL,KEY_NUMANDAL,0F0HCMPAL,00HJNZKEY_XD;消抖JMPKEY_SCANKEY_XD:MOVDX,ADR_PPI_PORTCINAL,DXMOVKEY_NUM,ALMOVAL,KEY_NUMANDAL,0F0HCMPAL,00HJNZRANDOMJMPKEY_SCAN5、数码管显示模块设计通过8段数码管显示随机生成在0-9之间的数字,其程序如下:DISP:MOVAX,RANDOM_SEEKDIVWORDPTR10MOVRANDOM_NUM,DLMOVDX,ADR_PPI_PORTBMOVAL,RANDOM_NUMOUTDX,ALMOVDX,ADR_PPI_PORTAMOVAL,01HOUTDX,ALJMPKEY_SCAN;计算随机数并显示6、延时模块设计在设计任务时,由于需要按键消抖,加入延时子程序:DELAY1:PUSHAX PUSHCX MOVCX,0030HDELAY_2:CALLDELAY2 LOOPDELAY_2 POPCX POPAX RETDELAY2:PUSHCX MOVCX,8000HDELAY_1:LOOPDELAY_1 POPCX;延时程序RET 六、运行结果及说明通过Emu8086生成可执行文件,将其加载到Protues仿真软件的8086中。通过运行仿真可看到效果。当按下矩阵键盘中任意键时,在数码管中会随机显示0-9之间的任意数,且概率均等。如图6-1所示,在按下任意键后,在数码管上显示出随机数字。重复多次,得到不同数字,经多次测试统计,仿真中显示数字概率均等,符合设计要求。图6-1实际演示效果图

七、参考文献微机原理与接口技术主编:梁建武中国水利水电出版社IBM-PC汇编语言程序设计清华大学出版社单片机基础北京航空航天出版社八、程序源代码IO0EQU0x0000IO1EQU0x0200IO2EQU0x0400;I/O地址总线解码ADR_TIMER_CONTROLEQU(IO2+0x06)ADR_TIMER_DATA0EQU(IO2+0x00)ADR_TIMER_DATA1EQU(IO2+0x02)ADR_TIMER_DATA2EQU(IO2+0x04)TIMER_COUNTER0EQU 0x00TIMER_COUNTER1EQU 0x40TIMER_COUNTER2EQU 0x80TIMER_LATCHEQU 0x00TIMER_LSBEQU 0x10TIMER_MSBEQU 0x20TIMER_LSB_MSBEQU 0x30TIMER_MODE0EQU 0x00TIMER_MODE1EQU 0x02TIMER_MODE2EQU 0x04TIMER_MODE3EQU 0x06TIMER_MODE4EQU 0x08TIMER_MODE5EQU 0x09TIMER_BCDEQU 0x01;定时器8253定义ADR_PPI_PORTAEQU (IO1)ADR_PPI_PORTBEQU (IO1+0x02)ADR_PPI_PORTCEQU (IO1+0x04)ADR_PPI_CONTROLEQU (IO1+0x06)PPI_PORTA_INP EQU0x10PPI_PORTA_OUT EQU0x00PPI_PORTB_INP EQU0x02PPI_PORTB_OUT EQU0x00PPI_PORTCL_INP EQU0x01PPI_PORTCL_OUT EQU0x00PPI_PORTCH_INP EQU0x08PPI_PORTCH_OUT EQU0x00PPI_MODE_BCL_0 EQU0x00PPI_MODE_BCL_1 EQU0x04PPI_MODE_ACH_0 EQU0x00PPI_MODE_ACH_1 EQU0x20PPI_MODE_ACH_2 EQU0x40PPI_ACTIVE EQU0x80;8255A定义;堆栈段STACKSEGMENTSTACK'STACK';定义堆栈段DB100HDUP(0);设置堆栈段大小为100HTOPLABELWORD;TOP指向栈顶STACKENDS;数据段DATASEGMENT ;定义数据段 ;TODO:数据添加到下面RANDOM_SEEKDW0RANDOM_NUMDB0KEY_NUMDB0 ;//////////////////////////////////////////////////////////////DATAENDS;代码段CODESEGMENT ;定义代码段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK;关联段寄存器START:;主程序入口点MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXLEASP,TOP;各段地址初始化 ;TODO:添加主程序代码 ;MOVDX,ADR_TIMER_CONTROLMOVAL,TIMER_COUNTER0|TIMER_MODE0|TIMER_LSB_MSBOUTDX,AL;定时器0模式0读16位MOVDX,ADR_TIMER_DATA0MOVAL,0x00OUTDX,ALMOVDX,ADR_TIMER_DATA0MOVAL,0x00OUTDX,AL;初值0000HMOVDX,ADR_PPI_CONTROLMOVAL,PPI_PORTA_OUT|PPI_PORTB_OUT|PPI_PORTCL_INP|PPI_PORTCH_INP|PPI_MODE_BCL_0|PPI_MODE_ACH_0|PPI_ACTIVEOUTDX,AL;A、B输出,C输入,都为模式0KEY_SCAN:MOVDX,ADR_PPI_PORTCINAL,DXMOVKEY_NUM,ALMOVAL,KEY_NUMANDAL,0F0HCMPAL,00HJNZKEY_XD;消抖JMPKEY_SCANKEY_XD:MOVDX,ADR_PPI_PORTCINAL,DXMOVKEY_NUM,ALMOVAL,KEY_NUMANDAL,0F0HCMPAL,00HJNZRANDOMJMPKEY_SCANDISP:MOVAX,RANDOM_SEEK

温馨提示

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

评论

0/150

提交评论