找回密码
 立即注册

QQ登录

只需一步,快速开始

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

怎样使得单片机的LED灯闪烁又不影响主程序运行?

  [复制链接]
回帖奖励 25 黑币 回复本帖可获得 5 黑币奖励! 每人限 1 次
跳转到指定楼层
#
51单片机问题,紧急求助!
怎样使得单片机的LED灯闪烁又不影响主程序运行???
我想通过单片机接收串口命令让一个LED灯闪烁,但同时又不影响其他程序的运行,应该怎样去写这个程序呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩1
回复

使用道具 举报

47#
ID:388013 发表于 2018-8-23 15:30 | 只看该作者
加在while里面应该不影响其他程序运行
回复

使用道具 举报

46#
ID:387920 发表于 2018-8-20 16:03 | 只看该作者
用中断实现
回复

使用道具 举报

45#
ID:387939 发表于 2018-8-19 21:10 | 只看该作者
可以通过中断处理来实现,更高阶的应用则是可以用中断产生pwm来控制led的亮度

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

44#
ID:387916 发表于 2018-8-19 20:02 | 只看该作者
管脚口,看下有没有PWM波输出的复用管脚,没有的话使用定时中断
回复

使用道具 举报

43#
ID:387856 发表于 2018-8-19 16:37 | 只看该作者
在定时器中断里取反一个IO就行了,要控制闪的频率的话 就在中断里加一个变量,变量++,当变量等于一个值再取反。
回复

使用道具 举报

42#
ID:387852 发表于 2018-8-19 16:19 | 只看该作者
用中断实现,LED在中断程序里toogle就行了
回复

使用道具 举报

41#
ID:387824 发表于 2018-8-19 14:45 | 只看该作者
用中断定时器实现
回复

使用道具 举报

40#
ID:387801 发表于 2018-8-19 13:06 | 只看该作者
main(){cnt++; delay_ms(10); if(cnt%10)led=!led; }
回复

使用道具 举报

39#
ID:387767 发表于 2018-8-19 10:58 | 只看该作者
用中断来实现
回复

使用道具 举报

38#
ID:385372 发表于 2018-8-18 17:11 | 只看该作者
用中断来实现啊,在串口程序中触发LED闪烁的标志位,定时器中断监控这个位,并根据定时时长来改变LED状态
回复

使用道具 举报

37#
ID:387479 发表于 2018-8-18 10:15 | 只看该作者
用定时器中断实现
回复

使用道具 举报

36#
ID:362591 发表于 2018-8-18 09:46 | 只看该作者
用中断来写
回复

使用道具 举报

35#
ID:111634 发表于 2018-8-13 18:30 | 只看该作者
本帖最后由 zl2168 于 2018-8-14 18:13 编辑

介绍你几个参考案例,都有闪烁功能,又不影响主程序运行,自己去对照研究。
先Proteus仿真,确认有效。
实例91  具有校正功能的时钟1302LCD1602显示)
实例91 带校正时钟1302(LCD1602显示).rar (52.68 KB, 下载次数: 10)


实例93  具有校正功能的时钟1302LED数码管显示)
实例94  模拟电子钟(由80C51定时器产生秒时基) 实例94 模拟电子钟(由80C51定时器产生秒时基).rar (43.05 KB, 下载次数: 4)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1,书中电路和程序设计有详细说明,程序语句条条有注解。

实例93 带校正时分秒的时钟1302(6位LED数码管显示).rar

732.75 KB, 下载次数: 5

回复

使用道具 举报

34#
ID:385897 发表于 2018-8-13 17:25 | 只看该作者
可以使用DMA
回复

使用道具 举报

33#
ID:385895 发表于 2018-8-13 17:18 | 只看该作者
我是来要币的 想下个资料
回复

使用道具 举报

32#
ID:342142 发表于 2018-8-13 17:17 | 只看该作者
定时器中断就ok
回复

使用道具 举报

31#
ID:385695 发表于 2018-8-13 17:03 | 只看该作者
用定时器中断
回复

使用道具 举报

30#
ID:385885 发表于 2018-8-13 16:59 | 只看该作者
最简单的方法就是用中断,建议看看单片机手册
回复

使用道具 举报

29#
ID:385881 发表于 2018-8-13 16:49 | 只看该作者
定时器中断里 改变LED状态
回复

使用道具 举报

28#
ID:385864 发表于 2018-8-13 16:30 | 只看该作者
定时中断啊
回复

使用道具 举报

27#
ID:385861 发表于 2018-8-13 16:27 | 只看该作者
使用定时器,设定100Hz执行一次,避免一直等待
回复

使用道具 举报

26#
ID:381280 发表于 2018-8-13 15:49 | 只看该作者
定时器中断,延时设置好参数
回复

使用道具 举报

25#
ID:385808 发表于 2018-8-13 15:06 | 只看该作者
使用定时器产生中断去控制LED闪烁
回复

使用道具 举报

24#
ID:385798 发表于 2018-8-13 14:53 | 只看该作者
wulin 发表于 2018-8-11 17:28
//可以放在主函数循环中,不影响其它程序
void Twinkle()
{

太厉害了
回复

使用道具 举报

23#
ID:174087 发表于 2018-8-13 11:50 | 只看该作者
xiaoyuzhou123 发表于 2018-8-12 23:34
让LED闪烁怎么会影响其他程序?

LED闪烁必然会涉及到延时,如果是用最基本的循环延时或者nop延时肯定是要影响CPU的处理的
回复

使用道具 举报

22#
ID:385723 发表于 2018-8-13 11:46 | 只看该作者
采用定时器中断
回复

使用道具 举报

21#
ID:385727 发表于 2018-8-13 11:45 | 只看该作者
可以使用定时器终端,设置好时间间隔,在终端中实现led灯状态翻转
回复

使用道具 举报

20#
ID:385699 发表于 2018-8-13 10:50 | 只看该作者
使用timer中断,设置好中断时间间隔,也就是你需要led灯闪烁的间隔,每进入一次让LED状态改变一次,完成闪烁功能
回复

使用道具 举报

19#
ID:371798 发表于 2018-8-13 10:31 | 只看该作者
STM32的话就可以使用DMA,因为DMA不是由CPU执行的,不会影响到主程序。
回复

使用道具 举报

18#
ID:379051 发表于 2018-8-13 10:30 | 只看该作者
定时器中断是最合适的。
回复

使用道具 举报

17#
ID:104472 发表于 2018-8-13 09:59 | 只看该作者
中断计数延时置标,主函数判断动作
回复

使用道具 举报

16#
ID:385659 发表于 2018-8-13 09:53 | 只看该作者
使用定时器中断,或者主函数设标志查询
回复

使用道具 举报

15#
ID:385659 发表于 2018-8-13 09:45 | 只看该作者
使用中断实现,看门狗程序监控中断位置,或者是做一个函数,使得和其他程序一起运行
回复

使用道具 举报

14#
ID:385582 发表于 2018-8-13 08:59 | 只看该作者
单独写一个函数控制LED灯,然后在主函数的开头调用就行了啊
回复

使用道具 举报

13#
ID:385629 发表于 2018-8-13 08:21 | 只看该作者
单独的中断处理比较好
回复

使用道具 举报

12#
ID:385613 发表于 2018-8-12 23:34 | 只看该作者
让LED闪烁怎么会影响其他程序?
回复

使用道具 举报

11#
ID:355699 发表于 2018-8-12 22:29 | 只看该作者
中断不就是实现这个功能的吗
回复

使用道具 举报

10#
ID:385569 发表于 2018-8-12 20:09 | 只看该作者
可以用定时器中断,具体用法根据实际程序编写需要灵活运用
回复

使用道具 举报

9#
ID:364278 发表于 2018-8-12 19:43 | 只看该作者
通过计数的方法,就是达到这个数就跳出循环,时间很短,不会影响主函数运行
回复

使用道具 举报

8#
ID:385559 发表于 2018-8-12 19:19 | 只看该作者
定时器中断,或者主函数设标志查询
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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