项目实施
【技能训练】LED闪烁控制设计与实现
LED闪烁控制设计与实现是在AT89S52单片机P1.0引脚接LED(发光二极管)阴极,通过程序控制,使P1.0引脚交替输出高电平和低电平,使LED闪烁。
1.LED闪烁功能实现分析
LED闪烁控制电路同项目1技能训练图1-3,由AT89S52单片机最小系统和LED电路构成。
LED的阳极通过220Ω限流电阻器后连接到5V电源上,P1.0引脚接LED的阴极,P1.0引脚输出低电平时,LED点亮;输出高电平时,LED熄灭。
LED闪烁功能的实现过程如下:
(1)P1.0引脚输出低电平,LED点亮。
(2)延时。
(3)P1.0引脚输出高电平,LED熄灭。
(4)延时。
(5)重复第(1)步(循环),这样就可以实现LED闪烁。
2.LED闪烁控制程序设计
由以上分析,LED闪烁控制的C语言程序如下:
程序编程说明:
(1)由于单片机执行指令的速度很快,如果不进行延时,点亮之后马上就熄灭,熄灭了之后马上就点亮,速度太快,由于人眼的视觉暂留效应,根本无法分辨,所以在控制LED闪烁时需要延时一段时间,否则就看不到“LED闪烁”的效果了。
(2)延时函数是定义在前,使用在后。在这里使用了两条for语句构成双重循环(外循环和内循环),循环体是空的,实现延时的目的。如果想改变延时的时间,可以通过循环次数调整来实现。
如果延时函数是使用在前,定义在后,程序应如何编写?
(3)“unsigned char i,j;”语句是定义i和j两个变量为无符号字符型,取值范围为0~255。
3.LED闪烁控制调试及生成hex文件
LED闪烁程序设计好以后,还需要调试,看看是否与设计相符。首先要生成“LED闪烁.hex”文件。在以后的技能训练中不再详细叙述其具体过程。
(1)建立工程文件,选择单片机。工程文件名为“LED闪烁”,选择单片机型号为Atmel的AT89S52。
(2)建立源文件,加载源文件。源文件名为“LED闪烁.c”。
(3)设置工程的配置参数。Target选项卡的晶振频率为12MHz,Output选项卡中选中CreateHexFiles复选框。
(4)进行编译和连接。
(5)进入调试模式,打开P1口对话框。在调试模式中,单击Peripherals→I/O-Ports→Port1,打开P1口对话框。
(6)全速运行程序。单击按钮或调试工具栏的运行按钮,通过P1口对话框观察P1.0引脚的电平变化状态,以间接分析LED闪烁规律是否与设计相符。调试窗口如图2-33所示。
4.LED闪烁控制用Proteus仿真运行调试
LED闪烁控制用Proteus仿真运行调试相关内容如下:
(1)加载“LED闪烁.hex”目标代码文件。首先打开Proteus的“LED闪烁”电路,然后双击单片机AT89S52,在弹出的“编译元件”对话框中单击Program File栏的“打开”按钮,在弹出的“选择文件名”对话框中找到前面编译生成的“LED闪烁.hex”文件,单击“打开”按钮,完成“LED闪烁.hex”文件的加载。同时将Clock Frequency栏中的频率设为12MHz,单击“OK”按钮,即可完成加载目标代码文件操作,如图2-11所示。
(2)仿真运行调试。单击仿真工具栏的“单步运行”按钮,进入单步运行状态。单击“调试”→80C51 CPU Registers,单击“调试”→80C51 CPUSFR Memory,分别打开工作寄存器窗口和特殊功能寄存器窗口。单击源代码调试窗口的“单步执行”按钮一次,执行一行指令,通过各调试窗口观察指令执行后数据处理的结果,以加深对硬件结构和指令的理解。
(3)单击仿真工具栏的“运行”按钮,单片机全速运行程序。通过图形编译区LED闪烁电路图,观察LED闪烁规律是否与设计相符。同时可以通过P1.0引脚的电平变化状态,间接分析LED闪烁规律。LED闪烁控制Proteus仿真电路如图2-36所示。
图2-36 LED闪烁控制Proteus仿真电路