实验思路:
重定义P0.0管脚为LED1
定义一个延时函数delay_10us,用于LED闪烁延时
将unsigned int重命名为“U16",以提高代码编写效率
完整代码:
/*******************************声明区********************************* * 实验名称:控制1颗LED闪烁 * 文件名称:main.c * 版 本:V1.00 * 日 期:2021-11-24 * 编 著:gefon * 说 明:使用普中A7开发版,控制D1编号LED闪烁 ***********************************************************************/ #include "reg52.h" sbit LED1=P0^0; //将P0.0管脚定义为LED1 typedef unsigned int U16; /*******************************子程序********************************* * 函 数 名 :delay_10us * 函数功能 :延时函数,传入变量ten_us=1时,大约延时10us * 输 入 :ten_us * 输 出 :无 ***********************************************************************/ void delay_10us(U16 ten_us) { while(ten_us--); } /*******************************主程序********************************* * 函 数 名 :main * 函数功能 :主函数 * 输 入 :无 * 输 出 :无 ***********************************************************************/ void main() { while(1) { LED1=0; //点亮D1灯 delay_10us(50000); //晶振为12M时,延时约450ms;晶振为11.0592M时,延时约480ms LED1=1; //熄灭D1灯 delay_10us(50000); } }
实验分析:
要使LED灯闪烁需要点亮后再熄灭。如只是给LED低电平然后再给高电平,肉眼无法看到,需要给一定的延时时间。所以这里要有一定的延时,肉眼才能看到LED闪烁的过程。因此这里用到了一个延时函数"delay_10us",延时一定的时候熄灭。