UART(Universal Asynchronous Receiver/Transmitter):通用异步收发器,既能同步又能异步通信的硬件电路称为UART。UART是用于控制计算机与串行设备的芯片,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其他使用RS-232C接口的串行设备通信了。
80C51的串行通信口是一个功能强大的通信口,而且是相当好用的通信口。用于显示驱动电路非常合适,下面我们就根据这种需要用两个串行通信口线加上两根普通I/O口线,设计一个4位 LED显示电路。当然只要再加上两根 I/O口线即可轻易实现8位LED显示电路。
例1:如图1所示的电原理图,利用74LS164串行输入并行输出芯片作一个简单的电子钟,要求四个数码管显示时钟;其中LED1显示小时的十位,LED2显示小时的个位,LED3显示分钟的十位,LED4显示分钟的个位。
图1 串行动态LED扫描电路
解:采用单片机的串行口输出字形码,用74LS164和74LS139作为扩展芯片。
74LS164的功能是将80C51串行通信口输出的串行数据译码并在其并口线上输出,从而驱动LED 数码管。74LS139是一个双2-4线译码器,它将单片机输出的地址信号译码后动态驱动相应的LED。因74LS139电流驱动能力较小,故用末级驱动三极管9013作为地址驱动。将4只LED的字段位都连在一起,它们的公共端则由74LS139分时选通,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式,其优点使用串行口进行LED通信程序编写相当简单,用户只需将需显示的数据直接送串口发送缓冲器,等待串行发送完毕标志位即可。
参考程序如下:
上面是一个简单的动态扫描程序,如果再利用上第6章的定时器就可做成一个完整的电子钟,四个数码管显示为00:00这种形式。在本例中冒号就不显示出来了,分别用20H、21H 、22H、23H地址在放时间的时钟的十位、时钟的个位、分钟的十位、分钟的个位。用中断方式做一个不带时钟芯片的电子钟,请读者自己完成。