【修炼01】51单片机点灯入门:P2.0口1秒闪烁
前言本实验基于STC89C52单片机12MHz晶振通过软件延时控制P2.0引脚LED实现亮1s、灭1s循环闪烁。采用REGX52.H标准头文件代码为基础IO输出入门案例Keil C51编译后可直接烧录测试适合新手理解IO电平操作与软件延时原理。硬件原理图51单片机P2口属于准双向IO口开发板LED多为共阳极接法引脚输出低电平时LED点亮高电平熄灭。12MHz晶振下单片机机器周期为1us利用双重for循环编写简易毫秒延时函数控制高低电平维持时间实现LED周期性闪烁。软件延时无需配置定时器代码简单直观是单片机入门经典实验。proteus8.17仿真图完整源码#include REGX52.H /* 主函数*/ sbit LED P2^0; void Delay_ms(unsigned int t) // 简单毫秒延时12MHz晶振 { unsigned int i,j; for(it; i0; i--) for(j110; j0; j--); } void main(void) { while(1) { LED 0; Delay_ms(1000); // 点亮保持1s LED 1; Delay_ms(1000); // 熄灭保持1s } }复制成功代码解析sbit LED P2^0; 位定义将LED映射至P2.0引脚。Delay_ms为通用毫秒延时函数适配12MHz晶振形参t设置延时毫秒。主函数while(1)无限循环拉低P2.0点亮LED延时1000ms拉高P2.0熄灭LED再次延时1000ms不断重复。问题排查闪烁时间不准软件延时属于粗略延时12MHz晶振可微调j的数值修正。LED不亮检查电路若是共阴极LED需要互换LED0与LED1。编译报错Keil工程选择51系列芯片确认REGX52.H头文件正常。实现效果预期效果p20口led小灯 一秒闪烁一次种瓜得瓜种豆得豆!