微机原理与接口技术实验讲稿(PPT)电子科技大学自动化工程学院(习友宝副教授)2005年6月实验项目实验箱简介基于EPP接口的LED显示8255并行接口原理及编程8253计数器原理及分频实验8253计数器在测频中的应用双积分式A/D转换器7109的原理及编程逐次比较式A/D转换器0809的原理及编程D/A转换器0832的原理实验DAC0832在程控信号源中的应用LED点阵显示基本并行输入/输出口在键盘接口中的应用8250串行通信电子称实验实验箱简介实验箱的组成原理▼实验主板的原理实验主板是由并行I/O、定时器/计数器、A/D转换器、D/A转换器及LED显示器等接口部件构成,采用了总线结构,各功能部件均通过内部总线进行连接,如下图所示。实验主板的内总线结构D0~D7外部扩展口并行数字显示A/D、D/A定时/计数器并行I/O译码器A0~A7▼实验主板的布局电源EPP接口LED数字显示A/D转换器(7109)应用8255并行口应用D/A转换器(0832)应用实验外接扩展板接口A/D转换器(0809)应用8253计数器应用实验EPP接口原理▼EPP信号特性,其引脚定义如下图引脚SPP信号EPP信号方向EPP功能描述1STOBEnWrite输出读写信号,低写高读2~9Data0~7Data0~7双向双向数据/地址线10ACKInterrupt输入中断请求线,上升沿触发11BUSYnWait输入握手信号,低表示开始一个周期,高表示结束一个周期12PE用户自定义输入按不同外设自定义13SELECT用户自定义输入按不同外设自定义14AUTOLFnDataSTB输出数据选通信号,低表示正在进行数据读写操作15ERROR用户自定义输入按不同外设自定义16INTInReset输出外设复位信号,低有效17SLCTINnAddrSTB输出地址选通信号,低表示正在进行地址读写操作18~25GNDGNDGND信号地▼EPP端口寄存器端口地址如表下图所示。表中BASE为并口基地址,地址端口名称方向BASE+0数据端口(SPP)写BASE+1状态端口(SPP/EPP)读BASE+2控制端口(SPP/EPP)写BASE+3地址端口(EPP)读/写BASE+4数据端口(EPP)读/写BASE+5未定义(16/32bitTransfer)-BASE+6未定义(32bitTransfer)-BASE+7未定义(32bitTransfer)-状态寄存器和控制寄存器各位具体定义如下图所示。中断使能位1有效××DIRIRQENASTRBINITDSTRBWRITE方向位1=输入0=输出地址选通位0有效初始化位1有效数据选通位0有效读/写状态位1=读0=写控制寄存器(BASE+2)D7D6D5D4D3D2D1D0WAITINTRUSER1USER2USER3××TMOUT状态寄存器(BASE+1)Wait状态位1有效中断请求状态位1有效用户自定义保留(EPP1.7)超时标志位(EPP1.9)1=超时;0=未超时▼EPP接口初始化在使用EPP之前应将并口置于正向传输模式(输出),即将控制寄存器的方向位(Bit5)置0。可编写EPP初始化函数epp_init()如下:voidepp_init(void){outportb(0x37a,0x04);}▼EPP时序数据/地址写周期时序nWritenWaitValidDatanDataSTBDataISA(IOW)nWritenWaitValidDatanAddSTBDataISA(IOW)数据/地址读周期时序nDataSTBnWritenWaitDataValidDataISA(IOR)nAddSTBnWritenWaitDataValidDataISA(IOR)▼EPP端口读写计算机要同外设实验箱通信,就要通过EPP接口来读写数据,因此,首先应向EPP地址端口(BASE+3)写入欲访问的外设地址,然后从EPP数据端口(BASE+4)读写数据,每次读写1个字节EPP端口写函数epp_write_data()voidepp_write_data(unsignedcharpaddr,unsignedchardata){outportb(0x37b,paddr);epp_check_clear();outportb(0x37c,data);epp_check_clear();}EPP端口读函数epp_read_data()voidepp_read_data(unsignedcharpaddr,unsignedchar*data){outportb(0x37b,paddr);epp_check_clear();*data=inportb(0x37c);epp_check_clear();}EPP接口与本实验平台的连接,如下ABCE1E2Y0Y1Y2Y3Y4Y5Y6Y7D1...D8CLKQ1Q2Q3Q4Q5Q6Q7Q8A0..A7EDIRB0...B7ABCE1E2Y0Y1Y2Y3Y4Y5Y6Y7nWait信号产生电路nDataSTBnAddrSTBnWritenWaitAD0...AD7WRRD1Y01Y11Y21Y31Y41Y51Y61Y72Y02Y12Y22Y32Y42Y52Y62Y7DB0...DB7EPP接口74LS24574LS273D0.....D7A0A1A5A6A7A2nReadDB0...DB7扩展接口扩展接口的原理及管脚定义如下图所示。A0EDIRB0B1B2B3B4B5B6B7ED0ED1ED2ED3ED4ED5ED6ED7D0RD1Y61Y7A0A1A21Y71Y6RDWRnDataSTBAIN+扩展接口15161712345678910111213141819202122232425262728293031323334AGNDAI7AI6AI5AI4AI3AI2F0FX+12V-12VAGNDVCCGNDINTERRUPTGND74LS245A7.............D7键盘、点阵实验扩展板,原理框图如下:ED0...ED7扩展接口ABCE1E2Y0Y7E374LS138ABCE1E2Y0Y7E374LS138D1D8CLRCLKQ1Q2Q3Q4Q874LS273.......VCCQ1~Q3Q1~Q3Q4VCCED0~ED7ABCE1E2E3Y0Y1Y2Y3Y4Y5Y6Y7Y0Y1Y2Y3Y7............................D1D8CLKQ1Q2Q3Q4Q5Q6Q7Q874LS2732Y4...2Y11Y4...1Y12A4...2A11A4...1A12G1G74LS244......键盘矩阵的行键盘矩阵的列ED0~ED2ED0~ED7CLRVCCA0A1A2nDataSTBVCC1Y71Y6RDWRGND2803VCCQ1Q8D1D8Q1~Q8D1D8CLRCLKQ1Q874LS273......VCCGND2803VCCQ1Q8D1D8Q1~Q8D1D8CLRCLKQ1Q874LS273......VCC.....................................VCCVCCED0~ED7.....ED0~ED7Q474LS13816*16点阵前八行16*16点阵后八行16*16点阵左边八列16*16点阵右边八列串口实验扩展板,原理框图如下:ED0...ED7扩展接口D0...D7CS0CS1CS2INTRXTAL1晶振源CTSRTST2inT1inR2outR1outT2outT1outR2inR1inDTRSOUTDSRSINBAUDOUTRCLKA0A1A21A1EN1YVCC输出电路OUT2OUT11Y7A0A1A2DISTRDOSTRRDWRRLSDDOSTRDISTRADSMR复位电路1Y6Interrupt实验箱配备的串口通讯线DTRTXDDSRRXDED0~ED7TC2328250端口地址为了方便同学们的在实验中更快,更方便的找到实验板上各个芯片的端口地址,在实验指导书上详细列出了各个端口的地址及其简要的功能描叙。头文件在本实验指导书的附录里,列举了部分实验的参考源程序,以便同学们在学习的过程中参考。为了使程序更简化、直观,将常用的地址端口和函数定义成头文件的形式,其头文件有:①paddr.h对实验板内地址进行了宏定义。②eppinit.hEPP接口初始化。③epprw.hEPP端口的读/写。④displed.hLED数字显示函数。实验一EPP接口驱动LED显示实验目的1.熟悉EPP接口的输入/输出及读/写操作。2.掌握七段LED显示驱动原理及接口方法。3.熟悉C语言。实验任务1.分析实验主板电路,指出输入/输出口地址。2.编写LED显示程序,使实验主板上的四个LED显示任意四位数字和任意一位的小数点,并通过调试。实验原理▼LED显示器原理7段LED显示器的结构和8位字节数的对应关系如下图:abcdefghhgfedcbaD7...............D01=亮;0=灭(共阴极)1=灭;0=亮(共阳极)(每一位相同)▼LED显示实验电路实验箱主板上带有的四位LED显示器采用四片CD4511(BCD-七段锁存译码器)来驱动。其原理图如下:D4~D72Y32Y02Y12Y12Y0D4~D7D0~D3D0~D3D0~D374LS273D0~D7CD4511CD4511CD4511CD4511▼4位LED显示的端口操作为:D7D6D5D4D3D2D1D02Y1第四位小数点亮;1=亮;0=灭第一位小数点亮;1=亮;0=灭第二位小数点亮;1=亮;0=灭第三位小数点;1=亮;0=灭D7D6D5D4D3D2D1D02Y0D7D6D5D4D3D2D1D02Y3第一位第二位第三位第四位8421本实验共用到的端口地址及其功能介绍00H(2Y0):输出口,用作后两位显示译码驱动器4511的锁存使能信号。01H(2Y1):输出口,用作前两位显示译码驱动器4511的锁存使能信号。03H(2Y3):输出口,用作4位小数点锁存器74LS273的控制CLK信号。编程与调试▼程序说明该程序设计功能为:①先从最高位开始依次显示1,2,3,4,显示时只有一位显示,其它位熄灭。②从高到低轮流点亮小数点。③依次显示0000,1111,2222,3333,......一直到9999。▼编程思路开始EPP初始化结束LED显示数字▼编程步骤①调用自定义头文件#includepaddr.h#includeepprw.h#includedispled.h#includeeppinit.h②EPP端口初始化epp_init();③LED的数字显示在LED上显示某个数,只要在对应的字节上写入这个数即可,例如:要在第二位LED上显示1,第一位LED上显示5,只要先向EPP地址端口写入这两位的地址0x00(D_LED),再向EPP数据端口写入相应的数据。epp_write_data(D_LED,0x15);如果想要熄灭某个LED,只要在相应的位上写入10到15的任意一个数。程序中利用此方法循环点亮LED。思考和练习题1.若不对EPP接口进行初始化,会发生什么现象?为什么?2.编写循环点亮四位小数点的程序。3.可以同时点亮四位的小数点吗?如果可以,应怎样设置其端口控制字?实验二8255并行接口原理及编程实验目的1.熟悉8255内部结构和外部引脚定义。2.熟悉8255并行接口的原理和接口方法。3.掌握8255的简单应用编程。实验任务1.编写出8255的初始化程序。2.编写出循环控制发光二极管的显示程序,并运行通过3.编写出交通灯控制模拟程序。4.理清8255的一些与实验板上其他芯片相连接的I/O端口电路。5.掌握对8255PC口的位操作。实验原理▼8255工作原理8255有8条数据引脚D0~D7,它们全部是双向、三态,用来与数据总线相连接;另外,还有6条输入控制引脚,分别是:①RESET:复位输入信号,高电平有效。当RESET有效时,