找回密码
 立即注册

QQ登录

只需一步,快速开始

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

动态驱动LED 如何使其中一位闪烁

[复制链接]
跳转到指定楼层
楼主
ID:52127 发表于 2013-7-22 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
动态驱动LED 如何使其中一位闪烁,最好有C 语言代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:7485 发表于 2013-7-23 08:32 | 只看该作者
例:设置一个标志位,如果需要0.5秒闪烁一次,标志0.5秒取反一次。显示的时候,如果标志为1(或为0),则显示正常数值,否则送显示信息0xff(共阳,共阴相反)。
回复

使用道具 举报

板凳
ID:52127 发表于 2013-7-24 15:23 | 只看该作者
0.5 秒定时是用定时器中断实现吗,在中断服务程序里将标志位取反
回复

使用道具 举报

地板
ID:52115 发表于 2013-7-24 23:45 | 只看该作者
这样可以,用定时器更加精准
回复

使用道具 举报

5#
ID:52127 发表于 2013-7-25 09:11 | 只看该作者
不用定时器中断可以实现吗
回复

使用道具 举报

6#
ID:7485 发表于 2013-7-26 08:14 | 只看该作者
本帖最后由 ahshmj 于 2013-7-26 08:16 编辑
维维 发表于 2013-7-24 15:23
0.5 秒定时是用定时器中断实现吗,在中断服务程序里将标志位取反

是的。不仅仅是因为可以“精确”,还在于这么长的延时而且是不间断的,如采用循环延时,长时间、不间断的占用mcu的机时,所以只能采用定时器中断方式。

循环延时是不可能在这里正常工作的。
回复

使用道具 举报

7#
ID:52127 发表于 2013-7-26 16:50 | 只看该作者
谢谢你,明白了
回复

使用道具 举报

8#
ID:52127 发表于 2013-7-26 17:02 | 只看该作者
如何用定时器中断生成 0.1 秒延时程序
回复

使用道具 举报

9#
ID:52066 发表于 2013-7-27 00:06 | 只看该作者
#include<reg52.h> void main() {          P1=0xfe;          }
回复

使用道具 举报

10#
ID:52066 发表于 2013-7-27 00:14 | 只看该作者
#include<reg52.h> #define uchar unsigned char void delay(uchar z) {         uchar x;         for(;z>0;z--)                    for(x=124;x>0;x--); } void main() {         while(1)        //等一直灭亮          {                 P1=0xfe;        //亮一只灯                 delay(100);        //延迟100毫秒,太快可以延迟短一些                 P1=0xff;        //灭掉                 delay(100);        //         }                    }
回复

使用道具 举报

11#
ID:52334 发表于 2013-7-27 17:45 | 只看该作者
控制其中一位的位选,一秒置1,一秒清零,就会出现闪烁
回复

使用道具 举报

12#
ID:52127 发表于 2013-7-29 08:52 | 只看该作者
回复

使用道具 举报

13#
ID:52127 发表于 2013-7-30 10:56 | 只看该作者
怎样产生你说的“1秒”

回复

使用道具 举报

14#
ID:52771 发表于 2013-8-8 16:24 | 只看该作者
定时器中断来实现,通过设置TH0和TL0的值达到1秒的效果。
回复

使用道具 举报

15#
ID:76287 发表于 2015-4-10 09:06 | 只看该作者
#include<reg52.h> #define uchar unsigned char void delay(uchar z) {         uchar x;         for(;z>0;z--)                    for(x=124;x>0;x--); } void main() {         while(1)        //等一直灭亮          {                 P1=0xfe;        //亮一只灯                 delay(100);        //延迟100毫秒,太快可以延迟短一些                 P1=0xff;        //灭掉                 delay(100);        //         }                    }
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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