1 引言
单片机面向工业控制领域,控制功能强,在工业测控系统、智能仪表、智能通信产品、智能家用电器和智能终端设备等领域得到广泛应用。最常用的80C51系列单片机有4个并行端口(P0,P1,P2,P3端口),但对稍复杂的应用系统,真正可供用户使用的并行端口只有P1端口,且常因扩展I2C和SPI的器件需占用P1端口,迫使用户不得不扩展并行端口以满足实际需要。
这里研究80C51系列单片机中的AT89S51并行I/O端口的扩展,采用并行可编程接口器件Intel 8155扩展并行I/O端口,并在扩展的I/O端口上实现数码管动态显示。
2 系统设计
2.1 系统硬件设计
Intel 8155与AT89S51接口方法(图1):P0接8155的地址数据线AD0~AD7;单片机的ALE接8155的ALE;8155的CE与单片机的 P2.6相连接;8155的复位线RESET与单片机复位线RESET相连接;8155的RD和WR与AT89S51的RD和WR一一对应相连;IO/M 和P2.7相连。
为节省I/O端口线,常使用数码管动态显示方式。将所有数码管的a,b,c,d,e,f,g,sp引线并联在一起,由一个8位I/O端口控制,而公共端由另一个I/O端口控制。动态方式显示时,各数码管分时轮流选通,在某一时刻只选通一位数码--管,并送出相应的段码,在另一时刻选通另一位数码管。并送出相应的段码。依此规律循环,即可使各位数码管显示将要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可给人以同时显示的感觉。
Intel 8155的PB0~PB7接3个共阴极数码管的a~dp引脚,PA0~PA2接3个共阴极数码管的com端,B端口送段码.A端口送位选通;共阴极数码管的a~dp引脚分别接上拉电阻以提高数码管显示的亮度。系统硬件电路如图1所示。
2.2 系统软件设计
系统软件采用汇编语言编写,设计原理为LED数码管动态扫描,8155初始化设置A端口,B端口为输出端口,R5中查表项数为0,R3中为位选通码,采用查表法查出段码,送至8155的B端口,LED数码管位选通码送至A端口,延时,在最左边的数码管上显示0;查表项数加1,位选通左移,查出段码送至8155的B端口,位选通码送至A端口,延时,在中间的数码管上显示1,3个数码管轮流显示循环往复。图2为软件流程。
3 设计及调试
3.1 单片机最小系统
单片机最小系统是指用最少的元件组成的单片机可以工作的系统。对于80C51系列单片机,最小系统一般应包括:单片机、晶振电路、复位电路、显示输出等。
3.1.1 最小系统电路的组成
图3为单片机最小系统电路图,其组成有:
(1)单片机:1片AT89S51;(2)晶振电路:典型的晶振取12 MHz,C2和C3选用30 μF的电容;(3)复位电路:具有上电复位和手动复位功能的复位电路,由电容串联电阻并在电容上并接复位按键构成,由图3并结合“电容电压不能突变”的性质,可知,当系统上电或复位键按下后,RST引脚均会出现高电平,高电平持续时间由电路的RC值决定。典型的51单片机当RST引脚的高电平持续2个机器周期以上将复位。所以,适当组合RC的取值就可保证可靠复位。设计中C1取10μF,R2取1 kΩ;(4)对于31引脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的 0000H开始执行。此设计将程序烧写到AT89S51内部ROM中,因此,31引脚(EA/Vpp)接高电平。(5)为在P1端口实现LED灯显示, P1.7端口上外接发光二极管,发光二极管接3.6 kΩ的上拉电阻。
3.1.2 单片机最小系统的调试
对单片机最小系统进行测试:将P1.7引脚所接的LED二极管闪烁程序代码烧写到AT89S51单片机片内ROM中,在单片机最小系统电路板上插上单片机,接通电源,若发光二极管闪烁则说明最小系统电路工作正常,反之则需要检查错误。
3.2 系统电路的调试
3.2.1 调试方法
在最小系统电路中按照图1完成并行I/O端口扩展的系统硬件电路。编写系统软件程序并在Keil C软件环境下编译、连接、调试程序,修改错误。用ISP编程器将实验程序代码写入AT89S51单片机片内ROM中。在单片机系统硬件电路板上插上单片机,开机运行,若3个数码管依次显示“0”、“1”、“2”,则说明系统工作正常。
3.2.2 调试中出现的问题及原因
在调试初期,由于未考虑8155复位比单片机复位慢,一开始未加100 ms延时程序,系统运行时出现3位数码管显示均为“8.”。为找出发生此现象的原因,将数码管改由AT89S51单片机P1口送段码,P2口送位选通,将动态显示的程序做相应修改,调试通过后用ISP编程器将代码写入AT89S51单片机片内ROM中,开机运行,3个数码管动态显示“0”、“1”、 “2”。此实验现象说明8155器件工作不正常。按照图1连线,核实连线及端口地址无误后,再次用ISP编程器将实验程序代码写入AT89S51单片机片内ROM中,开机运行,3个数码管显示均为“8.”。此现象说明8155器件工作不正常的原因不是硬件电路的问题。研究8155的特性参数后发现8155 复位比单片机复位慢,在系统初始化时存在时差。在系统复位后应加100 ms的延时,以保证8155完成复位工作。在设计实验程序开始加100 ms延时程序,将实验程序代码写入AT89S51单片机片内ROM中,开机运行,3个数码管动态显示“0”、“1”、“2”,达到设计目标。
4 结论
通过AT89S51与Intel 8155器件接口实现了并行I/O端口的扩展,实现了3个数码管动态显示。由实验可知,采用8155扩展并行I/O端口方便、实用、成本低、且扩展的FO 端口可编程。由于Intel 8155内部自带256B的SRAM和一个14位的加1计数器,因此在单片机外扩展8155不仅增加了并行I/O端口,同时丰富了SRAM与计数器等资源。值得注意的是8155复位比单片机复位慢,在程序开始应加延时程序,调整系统初始化时,应调整Intel 8155和单片机的复位时差。