I/O扩展模块EDP培训第三讲青岛科技大学李进4.3.1设计目的及任务1、设计任务:设计一个基于单片机的I/O扩展模块以及相应的外围电路。2、功能指标:扩展I/O数量大于16个,可以通过编程控制输入或者输出方向,电源为+5V供电。3、设计要求:所设计的I/O扩展模块应满足EDP实验仪系统设计要求,并能与整个系统有效结合。8155I/O扩展芯片的基本工作原理Intel8155芯片内包含有:1.256个字节RAM2.两个8位、一个6位的可编程并行I/O口3.一个14位定时器/计数器。8155可直接与MCS-51单片机连接不需要增加任何硬件逻辑。由于8155既有RAM又具有I/O口,因而是MCS-51单片机系统中最常用的外围接口芯片之一,图4-3-1:8155的引脚及内部结构内部寄存器与单片机的连接方式PC31PC42TIMERIN3RESET4PC55TIMEROUT6IO/M7CE8RD9WR10ALE11AD012AD113AD214AD315AD416AD517AD618AD719VSS20PA021PA122PA223PA324PA425PA526PA627PA728PB029PB130PB231PB332PB433PB534PB635PB736PC037PC138PC239VCC408155U?EA/VP31X119X218RESET9P37(RD)17P36(WR)16P32(INT0)12P33(INT1)13P34(T0)14P35(T1)15P10/T21P11/T2-EX2P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30(TXD)P3111(RXD)P3010VCC4089C52U?注:IO/M端接单片机的P2.0脚,CE端接单片机的P3.1脚。8155共有40个引脚,采用双列直插式封装。各引脚功能如下:AD7~AD0:地址数据总路线。CE:片选信号线,低电平有效RD:存储器读信号线,低电平有效。WR:存储器写信号线,低电平有效。LE:地址及片选信号锁存线,高电平有效,其后沿将地址及片选信号锁存到器件中。IO/M:I/O接口与存储器选择依赖线,高电平表示选择I/O接口,低电平选择存储器。PA7~PA0:A口输入/输出线。PB7~PB0:B口输入/输出线。PC5~PC0:C口输入/输出或控制信号线。用作控制信号线时,其功能如下:PC0:AINTR(A口中断信号线)。PC1:ABF(A口缓冲器满信号线)。PC2:ASTB(A口选通线)。PC3:BINTR(B口中断信号线)。PC4:BBF(B口缓冲器满信号线)。PC5:BSTB(B口选通线)TIMERIN:定时器/计时器输入端。TIMEROUT:定时器/计数器输出端。RESET:复位信号线。VCC:+5V电源。VSS:地。4.3.3设计内容1、试验仪8155模块接口定义试验8155模块接口定义如图4-3-2。EDP试验仪的显示采用6位共阴极动态扫描方式,段选码由8155的8位并行口PB提供,位选线则由8155的PA口提供。单片机通过一片I/O扩展芯片8155为LED显示器提供LED段选码和位选线。由于8155的I/O口不能提供足够的灌电流,因此,通过两次正向驱动器7407与LED段选线连接;通过一片反向驱动器7406与LED的位选线连接,以提供给LED足够的显示电流,详细的LED设计请参考4.4节。8155除了为LED模块提供扩展接口外,还同时为键盘和LCD模块提供外部扩展接口,请参考相关的章节。单片机通过片选线选通8155芯片,然后将要传输的数据通过D0~D7送8155芯片,8155芯片把输入的地址进行译码并通过PA、PB、PC口输出。3、软件设计方法软件设计中,首相定义8155的命令寄存器的外部地址是0x0fd00,定义PA和PB口的外部地址为0x0fd01和0x0fd02。然后定义一个数据缓存数组datadis_buffer[],存储显示数据。其流程见图4-3-5,根据软件流程的51单片机的C语言接口函数见例4-3-1。例4-3-1:8155测试程序#includereg51.h#includeabsacc.h//使用XBYTE必须使用的头文件#defineORDER8155XBYTE[0xfd00]//定义8155命令寄存器地址#definePA8155XBYTE[0xfd01]//定义8155PA口地址#definePB8155XBYTE[0xfd02]//定义8155PB口地址#defineucharunsignedcharuchardatadis_buffer[]={0x1,0x2,0x3,0x4,0x5,0x6};//位选线,1~6ucharcodetable[20]={0x06,0x5b,0x4f,0x66,0x6d,0x7d};//段选码,显示1~6/*****延时子程序******/voiddelay(ucharx){while(x--);}/*****显示子程序*****/voiddisplay(uchar*p){uchari,sel;ORDER8155=0x03;//设定8155工作在I/O口扩展方式sel=0x01;for(i=0;i=5;i++){PB8155=table[*p];PA8155=sel;del_ms(50);p++;sel=sel1;7}}voidmain(){while(1){display(dis_buffer);}}4、设计调试步骤1、把电源模块、CPU模块、8155扩展模块、LED显示器模块、串口通信模块插在正确的位置上,并把跳帽进行正确短接。2、建立Keil工程,编辑、编译源代码并生成可下载的HEX文件3、连接串口线,通过串口通信模块使用STC-ISP软件下载程序4、观察LED显示数据,如果以上步骤正确的话,在LED上应能显示0、1、2、3、4、5六个数字。4电子设计DIY设计要求:请参考上述8155模块电原理图在EDP试验仪的面包板上自行完成一个16路I/O扩展电路设计,画出电原理图并完成相应的硬件设计。电源为单5V。设计提示:可以采用并行8155或8255I/O扩展芯片或者串行I/O扩展芯片,与实验仪单片机的连接可以采用串行或并行方式。试验仪面包板的引脚定义可参照图4-3-6。ProtelDXP电子电路设计应用软件介绍仿真软件Proteus应用介绍仿真软件Multisim应用介绍