标题: 动态驱动LED 如何使其中一位闪烁 [打印本页]

作者: 维维    时间: 2013-7-22 15:03
标题: 动态驱动LED 如何使其中一位闪烁
动态驱动LED 如何使其中一位闪烁,最好有C 语言代码
作者: ahshmj    时间: 2013-7-23 08:32
例:设置一个标志位,如果需要0.5秒闪烁一次,标志0.5秒取反一次。显示的时候,如果标志为1(或为0),则显示正常数值,否则送显示信息0xff(共阳,共阴相反)。
作者: 维维    时间: 2013-7-24 15:23
0.5 秒定时是用定时器中断实现吗,在中断服务程序里将标志位取反
作者: 小辉    时间: 2013-7-24 23:45
这样可以,用定时器更加精准
作者: 维维    时间: 2013-7-25 09:11
不用定时器中断可以实现吗
作者: ahshmj    时间: 2013-7-26 08:14
本帖最后由 ahshmj 于 2013-7-26 08:16 编辑
维维 发表于 2013-7-24 15:23
0.5 秒定时是用定时器中断实现吗,在中断服务程序里将标志位取反

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

循环延时是不可能在这里正常工作的。
作者: 维维    时间: 2013-7-26 16:50
谢谢你,明白了
作者: 维维    时间: 2013-7-26 17:02
如何用定时器中断生成 0.1 秒延时程序
作者: xiao1074234390    时间: 2013-7-27 00:06
#include<reg52.h> void main() {          P1=0xfe;          }
作者: xiao1074234390    时间: 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);        //         }                    }
作者: ppxw    时间: 2013-7-27 17:45
控制其中一位的位选,一秒置1,一秒清零,就会出现闪烁
作者: 维维    时间: 2013-7-29 08:52

作者: 维维    时间: 2013-7-30 10:56
怎样产生你说的“1秒”


作者: amy    时间: 2013-8-8 16:24
定时器中断来实现,通过设置TH0和TL0的值达到1秒的效果。
作者: livingliving    时间: 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);        //         }                    }




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1