二○一一~二○一二学年第一学期信息科学与工程学院自动化系课程设计报告书课程名称:微机原理及应用课程设计班级:自动化0901班姓名:翁宇学号:200904134015指导教师:孟志华二○一一年12月15日设计题目:键控数据采集及数值显示电路设计设计要求:按不同的数字键(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范围内的值。题目分析:可实现的功能:由键盘输输入0至7数字,选择相应的数据通道,在LED数码管上显示出转化后的三位模拟量。当选定某一通道后,改变变电位器后,LED显示的数据随之改变。设计思路:将低三位数据线A0,A1,A2与ADC0809的ADDA,ADDB,ADDC分别连接,一输入数据的低三位作为选通信号。这样刚好可以与ADC0809的八选通信号对应。然后将ADC0809的数据线与8255的PB端口相连,把采集的信号写到8255中,从PA端口写到数据总线,通过数据总线,把8255存放的采集信号经转化后送入74LS273,以驱动LED数码管显示对应的转化位。总体设计思路图:键盘输入0至78088取低三位,启动ADC0809ADC0809转换,并从相应通道输出8255的PB端口写入,PA端口输出74LS273作为控制端,位码和段码LED数码管显示转换结果电路设计:可以分为几个部分:1.数据通道选择输入模块,2.信号采集与转化模块3.中央数据处理模块,数字显示模块(具体电路设计图见附录一)软件设计:软件设计主要是结合硬件电路,对相应端口进行数据输入输出。1.键盘输入的是0至7的ASCⅡ码,故需对其转化,取第三位。2.ADC0809的启动及通道选择。3.采集信号写到8255的PB端口。4.LED数码管的位码,段码编写及74LS273的控制。(程序流程图见附录二,源程序见附录三)各部分电路具体实现:1.数据通道选择输入模块输入模块电路图:由于键盘输入的0至7与ADC0809的IN0至IN7可以直接联系起来,即输入多少就相应的选通对应的采样输入通道。因此,可以把输入数的转化成选通控制端ADDA,ADDB,ADDC可识别的信号,直接将数据总线的低三位A0,A1,A2与选通控制端直接连起来就行了。对键盘输入数据的存储可用系统9号功能调用。键盘输入存的内存的是ASCⅡ码,故需要将其进行取低位操作。8088的地址线经74LS138译码器译码后,可引出外作为其他芯片的选通信号。ADC0809的启动就可以通过PS0的输出信号来实现。相应程序:LEADX,TEXT;9号功能调用,提示输入所选通道MOVAH,9INT21HMOVAH,1;1号功能调用,将输入的数据存入到AL中INT21HANDAL,0FH;取低三位MOVDX,380H;380为ADC0809的片选地址,启动转换OUTDX,AL;选择对应的通道2.信号采集与转化模块信号采集与转化模块电路图:数据采集及转化部分,主要用的芯片是ADC0809。ADC0809是逐次逼近型8位数模转换器,具有八路模拟量(电压)输入通道,经芯片内部的多路开关切换,选择其中的一路进行模数转换。ADC0809与系统的接口包括两个输出口和一个输入口,第一个输出口用于控制芯片内部的模拟通道选择,CPU输出的通道地址从ADC0809的引脚ADDA、ADDB、ADDC输入,并利用ALE信号触发锁存;第二个输出口是哑元,用以触发ADC0809的引脚START启动转换。当转换结束后,ADC0809的引脚EOC会产生一个高电平的状态信号,该信号用于检测,也可用于申请中断。随后,CPU可以从ADC0809的引脚D0-D7输入转换后的数据。模拟通道选择已在输入模块中介绍了。当数据采集通道选定后,经过延时确保转换完成后,将管脚EOC和职位高电平。当管脚EOC变为高电平时,并且管脚ENABLE有效时即可进行数据的输出。在调节电位器,改变输入量的大小时,模拟转化的数值也将随之改变。在本电路中,通过对端口PC0和端口PC1置位电平来控制转换后数据的输出。相应程序:MOVAX,50000;延时,等待转换结束WT:DECAXJNZWTMOVDX,393H;393为控制字寄存器的端口地址MOVAL,80H;方式选择字OUTDX,ALMOVAL,1;PC0的置位字OUTDX,AL;将ADC0809的EOC改为高电平MOVAL,03H;将PC1置位,使9号管脚ENABLE有效,OUTDX,AL;允许数据输出3.中央数据处理模块,数字显示模块数据处理模块电路图:这个部分所用的主要芯片是8255。8255是并行通信接口芯片,其基本功能以并行的方式在系统总线与I/O设备之间传送数据。8255A共有三个I/O端口,其中A口和B口J均为8位,而C口既可以作为8位端口,又可以分成两个4位端口。8255共有3种不不同的工作方式,方式0为基本的I/O方式,方式1为选通I/O方式,方式二为双向I/O方式。端口A可以选择方式0、1、2,端口B、C可以选择方式0、1,而端口C首先要按照端口A和B的工作方式提供相应的联络线,剩余部分则只能按照方式0工作。A口和B口的输入输出都具有数据锁存的功能,C口输出有锁存能力,而输入没有锁存能力。8522在这里的作用是将转换后的数据经PB端写入,并从PA段读出至内存。所以,PA,PB,PC三端口均工作在0方式,端口PA和PC用于输出,端口PB用于输入。三端口的选择用地址总线A0,A1决定,A1A0=00时,对端口PA操作,A1A0=01时,对端口PB操作,A1A0=10时,对端口PC操作.读写操作由与IOR和IOW分别相连的RD和WR来控制,均是低电平有效。相应程序:MOVDX,393;设置控制字,将PB端口设为输入MOVAL,82HOUTDX,ALMOVDX,391H;写端口PB,将转化结果写入8255INAL,DXMOVDX,393;设置控制字,将PA端口设为输出MOVAL,80HOUTDX,ALMOVDX,390;读PA端口,将结果写入内存OUTDX,AL数字显示模块电路图:本部分用的是数据寄存器74LS273和七段共阴极发光二极管显示器LED。74LS273是8D触发器,当他的时钟端CLK在脉冲上升延时,可将出现在1D至8D上的数据写入出发寄存器。七段共阴极发光二极管显示器LED的公共端为阴极,当对它的阳极端给高电平时,相应二极管会发亮。为了对LED数码管很好的控制,将其COM端分别由一片74LS273的某一位控制,其阳极端由另一片74LS273控制。通过对这两个寄存器的控制就可以控制数码管的显示,适当选择循环速度,利用人眼的视觉停留效应,使它看上去好像在同时显示。将74LS138译码器译码后的PS1和PS2分别作为两片74LS273的时钟信号。由此确定0至9十个数的段码和位码。电路中使用反向器是为了增大驱动能力。相应程序:MOVBL,DS:[BP+2];显示指针MOVAL,SHOW[BX]MOVDX,384H;输出段码OUTDX,ALMOVAL,AHMOVDX,388H;输出位码MOVCX,10000;延时,等待显示完成LOOP1:DECCXJNZLOOP1INCBP;改变指针,指向下一个要显示的数字SHRAH,1;调整位指针,选择下一个数码管ANDAH,AH;判断是否完全输出JNZDISPLAY课程设计小结:这次课程设计的主要目的是运用课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。我选择了键控数据采集及数值显示电路设计,这个设计需要将软件设计与硬件设计相结合。主要涉及到ADC0809、8255、74LS273等芯片以及七段显示译码器的应用,在设计过程中遇到了一些问题:1、在电路设计方面,芯片之间的连接比较麻烦。哪些管脚需要使用,哪些管脚需被屏蔽,这些都需要考虑周全。借助教材及实验指导数上的电路图的连线方法,完成了电路设计过程。虽说在理论上是可行的,但没有器件进行实际操作,无法检测器可行性。这可能是这次课程设计的不足吧。2、在软件设计方面,主要是寻址的问题。由于本次课程所设计中,所涉及的芯片比较多,而且各个端口的寻址都有所不同,一旦端口地址弄错了,在实际的操作过程中会出现意想不到的问题。用的最多的是数字通道接口。刚开始的时候,对地址的拓展不是很明白,虽说课堂上老师讲的很详细,但自己还是微囊完全消化。在做设计的时候,查了一些资料,终于弄明白了。8088的地址线的A5,A6,A7,A8,A9与IOW,IOR一起来控制输入输出的读写信号,而A4,A3,A2接74LS138译码器的A,B,C控制端来选通相应的地址通道,A0,A1是不确定的,这正是每个74LS138译码器每个输出通道有四个地址的原因,例如PS0有380H,381H,382H,383H。而这仅仅是寻址的基础。其他芯片的片选信号几乎都是有74LS138译码后的的地指线来确定的。3、开始的时候对于模数转换电路(ADC0809)及缓存器8255的端口连接存在着疑惑。首先,ADC0809如何启动,教材上讲的太过简略,不好理解。查过资料后才明白,只要给START管脚一上升沿的脉冲就可以了,于是可以用PS0来直接控制。其次,转化后的数据如何输出,也是通过资料,当管脚EOC变为高电平时,并且管脚ENABLE有效时即可进行数据的输出。转换模块的问题就可以解决了。本次课程设计,自己通过查阅资料,更加深入的了解了端口连接,各种设备之间工作的原理,数据线大多和DB连接,而其读入数据或者读出数据,主要是通过CPU控制地址译码电路选通相应的芯片,相应的端口进行数据的读入或者写出,达到最终的目的。课程设计巩固了课堂知识的学习,而且好多课堂上没弄明白的问题在课程设计的过程中都会遇到,并且这些问题都必须弄清楚后才能继续之后的过程。课程设计不比平时实验。做实验时多数是老师给出操作步骤,我们呢就机械性的照搬照做,可以说很能学到什么,虽说自己也好好想了实验该怎么做,程序该怎么写,可多多少少也会受到参考程序的影响,加上实验课时间就那么点,好多问题都不能及时解决。而这次课程设计给了我足够的时间与精力完完全全自己搞设计,自己发现问题,解决问。我觉得吧,这样才能学的东西。课程设计报告我改了好多次,而且好多地方隐隐约约觉得有问题,可问题在哪又说不出,或许这就是没有实践检验的缘故吧。参考文献:1.微机原理、汇编与接口技术(第二版)朱定华清华大学出版社2.微机原理及应用实验指导书孟志华武汉科技大学信息科学与工程学院3.微机原理实验指导邹道胜华中科技大学出版社4.数字电子技术吴建国张彦华中科技大学出版社5.PROTEL99E夏路易石宗义北京希望电子出版社附录一:总电路图123456ABCD654321DCBATitleNumberRevisionSizeBDate:18-Dec-2011SheetofFile:D:\DESIGNEXPLORER99SE\EXAMPLES\MyDesign.ddbDrawnBy:IN-026msb2-1212-220IN-1272-3192-418IN-2282-582-615IN-312-714lsb2-817IN-42EOC7IN-53ADD-A25IN-64ADD-B24ADD-C23IN-75ALE22ref(-)16ENABLE9START6ref(+)12CLOCK10U3ADC0809AD016A88AD115A97AD214A106AD313A115AD412A124AD511A133AD610A142AD79A1539A16/S338NMI17A17/S437INTR18A18/S536A19/S