微机原理课程设计-键控数据采集及数值显示电路设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

二○一一~二○一二学年第一学期信息科学与工程学院课程设计报告书课程名称:微机原理与接口技术班级:自动化2009级3班学号:200904134101姓名:詹鹏指导教师:张雄希2011年12月23日键控数据采集及数值显示电路设计设计任务:按不同的数字键(0、1、2、3、4、5、6、7)采集0809相应数据通道的模拟量,并在LED数码管上显示值。设定输入模拟量在0—5V范围内,显示值在0—255范围内。设计要求:1.画出连接线路图或功能模块引脚连接图。2.采用8088CPU作主控制器,0809作A/D转换器,采用直接地址译码方法,给各芯片分配地址,选取芯片中必须包含有8255。3.采用3个共阴极型LED动态显示,只需显示0—255范围内的值。芯片功能:ADC0809是逐次逼近型8位模数转换器,具有8路模拟量(电压)输入通路,经芯片内部的多路开关却换,选择其中的一路进行模数转换。ADC0809与系统的接口包括两个输出口和一个输入口。第一个输出口用于控制芯片内部的模拟通道选择,CPU输出通道地址从ADC0809的引脚ADDA.ADDB.ADDC输入,并利ALE信号输入触发锁存;第二个输出口是哑元,用于触发ADC0809的引脚START启动转换。通常为了简化接口电路可以把两个输出口合而为一,在锁存通道的地址同时进行转换。当转换过程结束后,ADC0809的引脚EOC会产生一个高电平的状态信号,该信号可用于检测,也可用于申请中断。随后,CPU可以从ADC0809的引脚D0~D7输入转换后的数据。引脚D0~D7三态结构,引脚OE是三态门的控制信号。8255A的基本功能是以并行的方式在系统总线与I/O设备之间传输数据。8255A共有三个I/O端口,其中A口和B口均为8位,而C口既可作为8位端口,也可作为两个4位端口。8255A共有三种不同的工作方式,方式0为基本的I/O方式,方式1为选通I/O方式,方式2为双向I/O方式。端口A可选择方式0,1,2;端口B可选择方式0,1.而端口C首先要按照端口A和B得工作方式提供相应的联络线,剩余的部分只能按照方式0工作。A口和B口的输入输出都具有数据锁存功能,C口输出有锁存功能,而输入没有锁存功能。硬件设计:本设计以8088CPU为控制中心、以8255A作为并行接口芯片、以0809作为ad转换器实现CPU与外部的通信。CPU通过不断检测键盘的状态来判断采集0809哪个通道,采集的数据经CPU处理后送数码管显示。本设计采用3个共阴极数码管实现数据的动态显示,以74LS273作为数码管的片选信号。为了节约资源,使电路简化,键盘输入部分采用8个独立按键,以一片74ls244作为它与CPU的接口。本设计地址采用直接地址译码方法给给各芯片分配地址,具体的分配如下:8255A:380H-383H74ls244:005H电路原理图如下CSYNC1PCLK2ANE13RDY14READY5RDY26AEN27CLK8GND9RESET10RES11OSC12F/C13EFI14ASYNC15X216X117VCC188284U4GNDGNDVCC12Y1XTAL510R1510R2GNDVCCVCCGNDS?SW-PB0.1uC?CapCLKCLKVCC0.1uGNDGND1A142A133A124A115A106A97A88AD79AD610AD511AD412AD313AD214AD115AD016NMI17INTR18CLK19GND20RESET21READY22TEST23QS1(INTA)24QS0(ALE)25S0(DEN)26S1(DT/R)27S2(IO/M)28LOCK(WR)29RQ/GT1(HLDA)30RQ/GT0(HOLD)31RD32MN/MX33(SSO)34A19/S635A18/S536A17/S437A16/S338A1539Vcc408088U1GND&OUTA3A4A5A6A7A8A9A1A0A3A3A2A8A9AENA5A6A7A2A1A4IN3IN4IN5IN6IN7STARTEOCD3OECLKVccVREF(+)GNDD1D2VREF(-)D0D4D5D6D7ALEADDCADDBADDAIN0IN1IN2ADC0809U30809GNDVCCGNDVCCVCCGNDPCLKA0A4A5A6A7A2A1A4A3A0RDRWRDRWVCC10KGNDPA3PA2PA1PA0RDCSGNDA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB2PB3PB4PB5PB6PB7VccD0D1D2D3D4D5D6D7RESETWRPA7PA6PA5PA482558255D0D1D2D3D4D5D6D7CLKVCCGNDQ0Q1Q2Q3Q4Q5Q6Q774ls273K1f2g3e4d5K6c8DP7b9a10PB0PB1PB2PB3PB4PB5PB6PB7PB1PB2PB3PB4PB5PB6PB7PB0K1f2g3e4d5K6c8DP7b9a10PB2PB3PB4PB5PB6PB7PB8PB1K1f2g3e4d5K6c8DP7b9a10PB2PB3PB4PB5PB6PB7PB8PB1PA0PA1PA2PA3PA4PA5PA6PA7PA1PA2PA3PA4PA5PA6PA7PA0PC0PC1PC2PC4PC5PC6PC1PC2PC4PC5PC6PC0A4A5A6A7A2A1A3A0VCCGND1G2G1A11A21A31A42A12A22A32A41Y11Y21Y31Y4VCCGND2Y12Y22Y32Y474LS244VCCGNDK1K2K3K4K5K6K7K81234567816151413121110910KGND1A11A21A31A42A12A22A32A41A21A31A42A12A22A31A12A41A11A21A31A42A12A22A32A4VCCOUT74ls30A4A5A6A7A8A9A0A2A1A4A3AEN端口地址:005H端口地址:380H-383HPCLK&74LS04RDA5A6A7A8A9A0A1A3A4端口地址:080HA2A5AENOUTRW&2软件设计:软件部分大概可以分成键盘检测模块、数据采集模块、实时显示模块三个部分。1键盘检测模块由于是采用的独立键盘,可以通过直接采集74LS244输入端电平的变化,从而确定哪个键按下去了。另外,由于硬件电路里没有去抖电路,所以需在软件里延时去抖。流程图如下:是否是否2数据采集模块首先,初始化8255A,然后初始化0809。设置为端口A输入,端口B设置为输出,端口C工作在按位置位复位方式,作为控制端口,控制0809的工作和数码管的片选。3实时显示模块是否为ff开始读244端口延时去抖是否为ff读244端口判断那个键被按结束实时显示模块采用三个共阴极数码管动态显示数据。当数码管阴极置高电平是,不管其阳及是什么电平,其都不会显示;当其为低电平时,它才将阳极的数据显示出来。故通过将74ls273的Q0、Q1、Q2端循环置0使其中一个显示,利用人的视觉残留达到动态显示的目的。程序总的流程图如下:否是完整的程序代码如下:STACTSEGMENTDW32DUP(0)STACTENDSDATESEGMENTCHIPCHDB1H,2H,4HSEGCHDBBFH,86H,DBH,CFH,E6H,EDH,FDH,87H,FFH,E7H;段选,十进制数的字形代码高电平有效KEYCHDB01H,02H,04H,08H,10H,20H,40H,80H;按键编码开始初始化8255A通过8255初始化0809通过8255初始化74LS273初始化74LS244检测是否有键按下采集对应通道数据将采集的二进制数据转换为十进制将数据送数码管显示结束CODESSEGMENTASSUMECS:CODES,DS:DATES,SS:STACKSSTARTPROCFARPUSHDSSUBAX,AXPUSHAXMOVAX,DATEMOVDS,AXMOVDX,383H;8255方式选择控制字PORTA输入,PORTB输出,PORTC;输出,它们的工作方式均为方式0MOVAL,90HOUTDX,AL;按键检测CHKEY:MOVAL,0MOVDX,005H;74LS244芯片地址INAL,DX;读74LS244端口数据SUBAL,0FFH;判断有无键按下JZNOKEYMOVCX,100;有键按下,延时去抖,在判断LOOP$INAL,DX;读74LS244端口数据SUBAL,0FFH;判断有无键按下JZNOKEYNOTAL;确实有键按下,将有键按下的哪位置1,MOVAH,0MOVBX,KEYCHJAG:SUBAL,[BX+AH];判断到底是哪个键被按下了JZOKINCAHJUMPJAG;数据采集OK:MOVAL,AHMOVCL,4SHLAL,CL;0809通道选择为C端口的4、5、6位ADDAL,3;ADC0809的START信号,地址锁存信号,通道选择信号MOVDX,382HOUTDX,ALMOVCX500;延时等待转换LOOP$MOVAL,4;0809数据允许输出,OUTDX,ALMOVDX,380H;380H为端口A的地址,读端口A的数据,INAL,DXMOVAH,0PUSHAX;;保存采集的数据;实时显示NOKEY:MOVCL,10;将个位、十位、百位分别取出并显示MOVAH,0AGAIN:DIVCLPUSHAXMOVBX,CHIPCH+2PUSHBXMOVAL,[BX]MOVDX,080H;74LS273地址,写数码管片选信号OUTDX,ALMOVBX,SEGCH;将得到的数送数码管显示MOVAL,[BX+AH]MOVDX,381H;8255的B端口地址OUTDX,ALPUSHCX;保护除数MOVCX,1000;延时LOOP$POPCXPOPBXDECBX;指向显示十位的数码管片选POPAXSUBAH,0;商是否为零,不为零继续除十取余MOVAL,AHMOVAH,0JNZAGAINPOPAX;为循环做准备,接如果没键按下,那么显示上次采集的数据JUMPCHKEY:循环判断心得体会:这次课程设计虽然没有按规定的时间完成,但绝对是我做的最认真的一次!在写这份心得体会时很高兴,因为可以去吃饭了。作为一名自动化专业大三学生,我觉得做汇编课程设计室十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是理论知识,如何去锻炼我们的实践能力呢?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想,课程设计就为我们提供了良好的实践平台。在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完美,查阅这方面的资料是十分必要的,也是必不可少的。同时在我们设计的过程中也不免有许多不如意的地方,难免会遇到各种各样的问题,在解决问题的过程中我们发现、提出、分析、解决问题的能力都得到了提高,这将对我们以后的学习和工作产生很大的影响。

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功