标题: 让两个LED灯一直亮灭亮灭 [打印本页]

作者: lebronda    时间: 2017-12-1 21:00
标题: 让两个LED灯一直亮灭亮灭
如果让两个LED灯按不同的频率亮灭,例如:while(1)
{
LED1隔一秒亮一次,LED2隔两秒亮一次;

}  
这样应该怎样解决,求C语言示例代码

作者: lxa0    时间: 2017-12-1 21:57
这个不难吧?
作者: xueliang    时间: 2017-12-1 22:32
先给一个高电平,第二条取反
作者: guoshu    时间: 2017-12-1 23:31
选择P1口其中两个个管脚作为输出控制
写一个1秒延时函数

根据设计电路 两个管脚输出相应电平 点亮对应发光二极管

以下为循环体内容

{
调用延时
管脚1 取反 改变灯状态
调用延时
管脚1取反 改变灯状态
管脚2取反 改变灯状态
}

作者: LGH850    时间: 2017-12-2 10:05
while(1)
{
LED1=1;
delay1S;
LED1=0;
LED2=1;
delay2S;
LED2=0;

}  

去试一下看!
作者: szb0321    时间: 2017-12-2 11:25
int i=0;
whiie(1)

           i++;
           delay_ms(500);//延时500ms
          if(i==1)            //到1s
               {
                   led0=~led0;    //状态取反  
              }
          if(i==3)           //到2s
           {
                 led1=~led1;
               i=0;                 //重新赋值
            }


作者: 会心一笑    时间: 2017-12-2 11:57
你可以调用一个延时函数
作者: 无量寿经    时间: 2017-12-2 12:00

12-用定时中断长延时实现P0口多个LED亮灭.rar (13.68 KB, 下载次数: 7)

/****************《51单片机轻松入门-基于STC15W4K系列》配套例程 *************
★★★★★★★★★★★★★★★★★★★★★★★★
《51单片机轻松入门-基于STC15W4K系列》 配套例程
// 用定时中断长延时实现P0口多个LED亮灭.rar
  ★★★★★★★★★★★★★★★★★★★★★★★★*/


#include "STC15W4K.H"         // 包含 "STC15W4K.H"寄存器定义头文件
sbit LED0=P0^0;
sbit LED1=P0^1;       
void main()
{
        TMOD=0x01;     // 定时器0_16位计数
        TH0=0x70;      // 经计算定时20ms初值是0x7000
        TL0=0x00;
        TR0=1;         // 定时器开始运行
        ET0=1;         // 开定时器0中断开关
        EA=1;                   // 开总中断开关
    while(1);
}  
void Timer0() interrupt 1
{       
        static         Count1=0;    // 静态变量计数器,静态变量只在首次运行时赋值1次*/
        static  Count2=0;    // 静态变量计数器
        Count1++;                     // 每次中断计数器加1
        Count2++;                     // 每次中断计数器加1
        if(Count1>=25)             // 如果计数器超过25
        {       
                LED0=!LED0;             // 取返P0.0
                Count1=0;             // 计数器清零  
        }
        if(Count2>=50)             // 如果计数器超过50
        {       
                LED1=!LED1;             // 取返P0.1
                Count2=0;             // 计数器清零  
        }
        TH0=0x70;                     // 重装定时初值
        TL0=0x00;
}



作者: wty714    时间: 2017-12-2 12:15
你可以调用一个延时函数
作者: 飞翔~哆啦    时间: 2017-12-2 12:33
比如说循环1秒内让它占空比20% 不亮占空比为80%
作者: 雨林木木风    时间: 2017-12-2 15:10
LED=0;delayms(1000);
作者: 雨林木木风    时间: 2017-12-2 15:12
LED1=0;delayms(1000);LED2=0;delayms(2000);就是用延时函数具体括号内的数字需要你自己调试。
作者: hebaobao    时间: 2017-12-2 16:47
用一个中断最好,比较准确
作者: 821221862    时间: 2017-12-2 23:08
led1=~led1;
作者: qq295027191    时间: 2017-12-3 04:55
一个简单的延时函数就搞定啦,
作者: lebronda    时间: 2017-12-3 10:54
szb0321 发表于 2017-12-2 11:25
int i=0;
whiie(1)

如果用两个定时器去完成,应该怎样写
作者: moshaomeng88    时间: 2017-12-3 12:20
i=200; while(i--) {if(i=100) LED1=1; if (i=1) LED2=1;}
作者: lebronda    时间: 2017-12-3 13:24
hebaobao 发表于 2017-12-2 16:47
用一个中断最好,比较准确

中断应该怎样写
作者: edwinc    时间: 2017-12-3 14:19
可以用延时,也可以用中断,中断比较精准
作者: Bright_Zhang    时间: 2017-12-3 15:47
加一个delay()函数
作者: 达人知命    时间: 2017-12-3 21:58
这个延时函数不能处理吗?我想着应该2个不同的延时时间就可以处理的吧
作者: jim19    时间: 2017-12-3 23:50
选择P1口其中两个个管脚作为输出控制 写一个1秒延时函数  根据设计电路 两个管脚输出相应电平 点亮对应发光二极管  以下为循环体内容  { 调用延时 管脚1 取反 改变灯状态 调用延时 管脚1取反 改变灯状态 管脚2取反 改变灯状态 }
作者: david888    时间: 2017-12-4 10:45
用一个1秒延时函数也可以实现,要2S就调用2 次就行了
作者: 634549059    时间: 2017-12-4 11:21
可以用中断或查询
作者: cgxz    时间: 2017-12-4 11:33
学习一下
作者: happy55    时间: 2017-12-4 12:38
marked
作者: 吾王美如画    时间: 2017-12-4 12:59
编写两个循环语句控制电流信号
作者: jekeytang    时间: 2017-12-4 14:45

led1=~led1;
作者: 宮梓萱    时间: 2017-12-4 15:06
这个可以使用定时器来做,这是在裸机的情况下。最容易实现的就是在操作系统上调用
作者: wxc19960311    时间: 2017-12-4 16:06
调用定时器中断,if判断执行不同的功能
作者: 499679277    时间: 2017-12-4 20:10

while(1)
{
LED1高;
延时1S;
LED1低;
LED2高;
延时(1S);
LED2低;
}
作者: 我要学51d    时间: 2017-12-4 20:42
用定时器定时1s和2s




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