本节通过使用P3口控制其外接8位LED流水点亮,来介绍单片机I/O口的使用方法。本节采用的电路原理图如图3-11所示。
图3-11 流水点亮P3口8位LED的电路原理图
可通过循环执行以下操作来实现。
(1)先点亮P3.0引脚LED,利用延时程序延时一段时间,其实现程序为:
(2)接着点亮P3.1引脚LED,利用延时程序延时一段时间,其实现程序为:
(3)最后点亮P3.7引脚LED,利用延时程序延时一段时间,其实现程序为:
先建立文件夹“ex6”,然后建立“ex6”工程项目,最后建立源程序文件“ex6.c”。输入以下源程序:
经Keil软件编译通过后,可利用Proteus软件进行仿真。在Proteus ISIS工作环境中绘制好图3-11所示仿真原理图,或者打开配套光盘中的“仿真实例\第三章\ex6”文件夹内的“ex6.DSN”仿真原理图文件。然后用鼠标右键单击图中的AT89C51,将编译好的“ex6.hex”文件载入AT89C51中。启动仿真,可以看到P3口的8位LED被流水点亮。图3-12所示为某时刻的仿真效果。
图3-12 流水点亮8位LED的仿真效果
程序仿真无误后,将“ex6”文件夹中的“ex6.hex”文件烧录入AT89S51芯片中。再将烧录好的单片机插入实验板上,为实验板通电,可看到P3口所接的8位LED被流水点亮。
通过本实例可知,单片机和外界信息的传递可以通过P0~P3口来实现,P0和P3实际上是单片机众多特殊功能寄存器中的两个。要使单片机实现各种控制功能,还必须了解单片机的特殊功能寄存器,这需要先明确单片机的地址和存储器的概念。