找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 126|回复: 8
打印 上一主题 下一主题
收起左侧

初学单片机:两个LED交替闪烁的实现思路请教

  [复制链接]
跳转到指定楼层
楼主
ID:1168250 发表于 2026-3-16 09:54 来自触屏版 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好~我是刚接触单片机的新手,这次作业要求用Proteus绘制电路并编写代码,实现两个LED交替闪烁的效果。

目前我的思路是:
1.用51单片机的两个IO口分别控制两个LED,通过延时函数实现交替亮灭。
2.电路部分:LED串联限流电阻后接到P1.0和P1.1口,另一端接GND。
3.代码部分:在while循环里轮流给两个IO口高低电平,配合delay延时。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:227818 发表于 2026-3-16 11:01 | 只看该作者
思路是可以实现,不过 程序是阻塞式的,也就是说延时是通过“死等”实现的,程序最好是无阻塞运行,可以看看这篇帖子:
http://www.51hei.com/bbs/dpj-195153-1.html
回复

使用道具 举报

板凳
ID:619259 发表于 2026-3-16 11:14 | 只看该作者
newlined 发表于 2026-3-16 11:01
思路是可以实现,不过 程序是阻塞式的,也就是说延时是通过“死等”实现的,程序最好是无阻塞运行,可以看 ...

人家是新手
回复

使用道具 举报

地板
ID:69038 发表于 2026-3-16 11:41 | 只看该作者
还可以是一个IO,输出高点亮一个LED,输出低点亮另一个LED
回复

使用道具 举报

5#
ID:1153341 发表于 2026-3-16 12:05 | 只看该作者
后续升级程序尽量使用定时器,这样不会阻塞程序的运行。
回复

使用道具 举报

6#
ID:996773 发表于 2026-3-16 13:11 | 只看该作者
newlined 发表于 2026-3-16 11:01
思路是可以实现,不过 程序是阻塞式的,也就是说延时是通过“死等”实现的,程序最好是无阻塞运行,可以看 ...

高手也是从死等过来的,其实也符合新手,因为单片机就点了一个灯也不干其他啥事,那只能死等喽
等程序越来越复杂,需要去点亮一个液晶屏,然后再去查询一下按钮,发现有迟缓卡顿了,自然知道不
能让单片机死等了,先死等程序也没错,要一步步走,比那种一辈子死扛手动编程要好
回复

使用道具 举报

7#
ID:230500 发表于 2026-3-16 13:30 | 只看该作者
你的思路完全正确。什么优化不优化的先不要考虑, 以先实现目标任务为主。
回复

使用道具 举报

8#
ID:774370 发表于 2026-3-16 15:28 | 只看该作者
2.电路部分:LED串联限流电阻后接到P1.0和P1.1口,另一端接VCC。详见单片机IO拉电流与灌电流
回复

使用道具 举报

9#
ID:296348 发表于 2026-3-16 16:53 | 只看该作者
单片机GPIO输出电流能力有限,尽量控制为低电平开启高电平关闭(VCC-- R限流 -- +LED- -- GPIO )。初步尝试可以先用delay在while中循序,考虑到目前还在点灯阶段未接触到定时器可以采用如下方式减少系统延迟:
  1. while(1)
  2. {
  3.    delay_ms(10);  //10ms 心跳
  4.    count++;
  5.    if(count>100)
  6.    {
  7.       LED0 = 0;
  8.       LED1 = 1;
  9.      count = 0;
  10.    }
  11.   else
  12.   {
  13.       LED0 = 1;
  14.       LED1 = 0;
  15.    }
  16. }。
复制代码


注:建议都尝试几种思路有利于提高编程能力。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表