您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 79接口技术计算器设计课程设计
目录一、引言……………………………………………………………………………4二、实验题目及要求………………………………………………………………5三、硬件电路………………………………………………………………………52.1、键盘输入模块…………………………………………………………………52.2、可编程并行通信接口芯片8255A……………………………………………62.3、可编程定时器/计数器………………………………………………………9四、源程序……………………………………………………………………………10六、课程设计体会……………………………………………………………………25七、参考文献…………………………………………………………………………262引言本学期我们学习了微型计算机技术及应用这门应用性很强的课程,通过平时的上机实验,使我们初步了解了8086系统的硬件结构以及部分芯片结构,为了进一步巩固和检测所学知识,我选择基于8086CPU的模拟计算器设计。要完成设计首先需要构建简单的微型计算机应用系统,其次是确定组成各部件的芯片,然后画原理图,根据相应的原理以及实现过程,编写出相应的汇编代码。再根据原理图连接硬件电路,电路连接完成后进行调试。设计过程中我们用到了8088CPU、可编程计时器8253、可编程并行输入/输出芯片8255A、74LS138、矩阵式键盘、六位七段LED数码管。我们的模拟计算器能实现2位十进制数以内的及减法运算。3模拟计算器设计一、概述设计题目及要求:1.通过小键盘做加减运算。七段数码管显示器作输入数据和结果数据的显示。2.数字用小键盘0~9,R,P,M,G作功能键R开始运算(包括撤销运算),显示‘0'p+m-g=E退出返回dos3运算顺序:a.输入一原始数据显示器跟随显示b.按+或-显示器内容不变c.再输入一数据,显示器跟随显示。d.按=显示器显示结果数据,当超出能显示的最大值,显示F(溢出)e.按R重新开始运算f.按E,结束退出设计思路:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现2位十进制数以内的及减法运算。运算完成后将运算的结果储存并显示到LED显示器上。二、硬件电路设计硬件电路键盘输入及LED数码管通过8255A接口与系统总线连接,键盘的16个按键组成8*2矩阵,其中8根矩阵线作为8255A的输出线与PB7~PB0连接,2根矩阵线作为8255A的输入线与PC7、PC6连接。键盘采用逐次扫描原理,16个按键中0~9座位数字健,+、-、=作为加、减和等号功能键,C为清零键。41、键盘输入模块键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,如果是独立按钮的话必须要需要一个I/O口对它进行检测,而键盘往往这需要键盘按钮数一半的I/O口数对它进行检测,也许对一个比较简单的系统I/O口数一般不是问题,但对于一个大型、复杂的系统来说I/O资源就显得非常珍贵了,尽量减少I/O使用是非常利于降低成本,另外一方面键盘比用独立按键要美观。我们设计时使用的是8*2行列式键盘,如图2-1所示。图中有8行2列,8根行线与PA口相连,2根列线与PC口的PC6、PC7相连。PA、PB口要么全部输入或输出。PC口可以进行输入和输出。按键设置在行、类交点处(数字或字符为其键号),行、列线分别连接到按键开关的两端。当列线通过上拉电阻接+5V时,就被钳位在高电平状态。键盘中有无按键按下是由行线送入全扫描字、列线读入行线状态来判断。这就是:给航线所有I/O线均置成低电平,然后读入列线电平状态。如国有按键盘下,总会有一根列线电平被拉至低电平,从而使列线输入不全为1。图2-1键盘电路图2-2数码管电路2、可编程并行通信接口芯片8255A(1)并行输入/输出端口A,B,C8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作为输入或输出。通常将端口A和端口B定义为输入/输出的数据端口,而端口C则既可以作数据端口,又可以作为端口A和端口B的状态和控制信息的传送端口。(2)A组和B组控制部件5端口A和端口C的高4位(PC7~PC4)构成A组;由A组控制部件实现控制功能。端口B和端口C的低4位(PC3~PC0)构成B组;由B组控制部件实现控制功能。A组和B组利用各自的控制单元来接收读写控制部件的命令和CPU通过数据总线(D0~D7)送来的控制字,并根据他们来定义各个端口的操作方式。(3)数据总线缓冲存储器三态双向8位缓冲器,是8255A与8086CPU之间的数据接口。与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。(4)读/写控制部件8255A完成读/写控制功能的部件。能接收CPU的控制命令,并根据控制命令向各个功能部件发出操作指令。图2-3.8255A芯片图CS片选信号:由CPU输入,有效时表示该8255A被选中。RD,WR读、写控制信号:由CPU输入。RD有效表示CPU读8255A,WR有效表示CPU写8255A。RESET复位信号:由CPU输入。RESET信号有效,清除8255A中所有控制字寄存器内容,并将各个端口置成输入方式。图2-4.8255A内部结构68253111098765432D71D6D5D4D3D2D1D0CLK0OUT0GET0GND1214151617181920212223240UT1CLK1GATE1OUT2GATE2A1WRA0CSCKL2RD+5v13定义工作方式控制字:工作方式0:8255A中各端口的基本输入/输出方式。图2-5.8255A工作方式控制3、可编程计数器/定时器8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。(1)、8253内部结构8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。1.数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。这是8253与CPU之间的数据接口,它由8位双向三态缓冲寄存器构成,是CPU与8253之间交换信息的必经之路。2.读/写控制读/写控制分别连接系统的IOR和IOW,由CPU控制着访问8253的内部通道。7接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。A1A0:端口选择信号,由CPU输入。8253内部有3个独立的通道和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。这4个端口地址由最低2位地址码A1、A0来选择。一、源程序;386以上微机适用;纯dos下才能使用;tasm4.1或以上编译;*********************;;*LED*;;*********************;io_plx_device_idequ05406h;TPC卡设备IDio_plx_vendor_idequ010b5h;TPC卡厂商IDIO_PLX_SUB_IDEQU0905410B5H;TPC卡子设备及厂商IDTIM_CTLEQU203H-200H;8253端口地址TIMER0EQU200H-200HTIMER1EQU201H-200HMODE03EQU36H;8253端口数据MODE12EQU74HINTA00EQU20HINTA01EQU21HPORTSEGEQU211H-200H;数码管端口地址PORTBITEQU210H-200Hpa55equ218h-200H;8255端口pb55equ219h-200Hp55ctlequ21bh-200Hdatasegmentcsregdw?ipregdw?;旧中断向量保存空间8io_9054base_addressdb4DUP(0);TPC卡PCI接口芯片I/O基地址暂存空间io_base_addressdb4DUP(0);TPC卡I/O基地址暂存空间interrupt_linedb2DUP(0);TPC卡中断号暂存空间pcicardnotfinddb0dh,0ah,'TPCpcicardnotfindoraddress/interrupterror!!!',0dh,0ah,'$'io9054baseaddressdb0dh,0ah,'TPCpcicard9054ChipI/OBaseAddress:','$'iobaseaddressdb0dh,0ah,'TPCpcicardI/OBaseAddress:','$'intnumberdb0dh,0ah,'TPCpcicardInterruptLine:','$'enter_returndb0dh,0ah,'$'MESSDB'8253ATIMER0INMODE3!COUNT=0200H',0AH,0DHDB'8253ATIMER1INMODE2!COUNT=0aH',0AH,0DH,'$'irq_vectdb08h,09h,0ah,0bh,0ch,0dh,0eh,0fh,70h,71h,72h,73h,74h,75h,76h,77h;新的中断向量,中断0-7的向量为:08h-0fh,中断8-15的向量为:70h-77hirq_mask_0_7_tabledb011111110b,011111101b,011111011b,011110111bdb011101111b,011011111b,010111111b,001111111bdb011111011b,011111011b,011111011b,011111011bdb011111011b,011111011b,011111011b,011111011b;新的中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零irq_mask_8_15_tabledb0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffhdb011111110b,011111101b,011111011b,011110111bdb011101111b,011011111b,010111111b,001111111b;新的中断掩码,中断0-7时全一,中断8-15时从低至高相应位为零INTMASKDB?LEDDB3FH,06,5BH,4FH,66H,6DH,7DH,07,7FH,6FH,40HDB0AH,0DH,'$'table1dw0101h,0102h,0104h,0108h,0110h,0120h,0140h,0180hdw0201h,0202h,0204h,0208h,0210h,0220h,0240h,0280hdw0401h,0402h,0404h,0408h,0410h,0420h,0440h,0480hchardb'CDEFBA9845673210RPMG'mesdb'PLAYANYKEYINTHESMALLKEYBOARD!',0ah,0dhdb'ITWILLBEONTHESCREEN!ENDWITHRorANYKEY',0ah,0dh,'$';extradatanum1db6dup(?)num2db6dup(?)resultdb6dup(?)countdb0operatordb0LedNumdb6dup(?)dataendsstackssegment9db100dup(?)STADW512DUP(?)TOPEQULENGTHSTAstacksendscodesegmentassumecs:code,ds:data,ss:stacks,es:datastart:;EnableLocalInterruptInput.386climovax,datamovds,axmoves,axmovax,stacksmovss,axcallfindtpc;查找TPC卡资源并显示MOVDX,wordptrio_base_address;初始化8253
本文标题:79接口技术计算器设计课程设计
链接地址:https://www.777doc.com/doc-1919388 .html