☰
【修炼01】51单片机点灯入门:P2.0口1秒闪烁
2026/10/13 3:24:39 网站建设 项目流程

前言

本实验基于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(i=t; i>0; i--) for(j=110; j>0; 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,不断重复。

问题排查

  1. 闪烁时间不准:软件延时属于粗略延时,12MHz晶振可微调j的数值修正。

  2. LED不亮:检查电路,若是共阴极LED,需要互换LED=0与LED=1。

  3. 编译报错:Keil工程选择51系列芯片,确认REGX52.H头文件正常。

实现效果

预期效果:p20口led小灯 一秒闪烁一次

种瓜得瓜,种豆得豆!!!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询