找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4358|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

開關(guān)延時(shí)燈

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:60515 發(fā)表于 2015-3-28 21:32 來自手機(jī) | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本人愛好電子。想做一個(gè),按1鍵LED1亮延時(shí)5分鐘滅,按2鍵LED2亮延時(shí)10分鐘滅。按3鍵停止延時(shí)。那位老師能幫忙寫一下C程序。謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:75575 發(fā)表于 2015-3-28 23:37 | 只看該作者
你可以使用中斷,挺好寫的,思路就是,啟動(dòng)--5min---關(guān)閉(K1);其他同,后面如果還不好,我試試,也是新手,不過我的帖子應(yīng)該可以給你靈感,http://www.torrancerestoration.com/bbs/dpj-32217-1.html

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:58502 發(fā)表于 2015-3-29 13:01 | 只看該作者
這程序很簡(jiǎn)單,屬于入門級(jí)的。你應(yīng)該自己先寫寫,有問題拿出來問,這樣對(duì)你學(xué)習(xí)才有幫助,假如都是拿別人的程序那么你永遠(yuǎn)學(xué)不會(huì)
回復(fù)

使用道具 舉報(bào)

地板
ID:75575 發(fā)表于 2015-3-29 14:35 | 只看該作者
liaolinhui 發(fā)表于 2015-3-29 13:01
這程序很簡(jiǎn)單,屬于入門級(jí)的。你應(yīng)該自己先寫寫,有問題拿出來問,這樣對(duì)你學(xué)習(xí)才有幫助,假如都是拿別人的 ...

贊同    !。。
回復(fù)

使用道具 舉報(bào)

5#
ID:60515 發(fā)表于 2015-3-29 20:53 來自手機(jī) | 只看該作者
liaolinhui 發(fā)表于 2015-3-29 13:01
這程序很簡(jiǎn)單,屬于入門級(jí)的。你應(yīng)該自己先寫寫,有問題拿出來問,這樣對(duì)你學(xué)習(xí)才有幫助,假如都是拿別人的 ...

#include <AT89X51.H>
#define uchar unsigned char
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;

void delay10ms(void)
{
  unsigned char i,j;
  for(i=20;i>0;i--)
  for(j=248;j>0;j--);
}
void main(void)
{
     EA=1;
     ET0=1;
     TMOD=0x01;
     TH0=(65536-500)/256;
     TL0=(65536-500)%256;
     TR0=1;
while(1)
    {
      if(K1==0)
        {
          delay10ms();
          if(K1==0)
            {
              if(num==200)
                {
                  num==0;
                  LED1=0;
                 }
             while(k3==0);
             }
        }  
  }
}

void time0() interrupt 1
{
     TH0=(65536-500)/256;
     TL0=(65536-500)%256;
     num++;

回復(fù)

使用道具 舉報(bào)

6#
ID:60515 發(fā)表于 2015-3-29 21:09 來自手機(jī) | 只看該作者
酸葡萄愛好者2 發(fā)表于 2015-3-28 23:37
你可以使用中斷,挺好寫的,思路就是,啟動(dòng)--5min---關(guān)閉(K1);其他同,后面如果還不好,我試試,也是新手 ...

還是不延時(shí)
回復(fù)

使用道具 舉報(bào)

7#
ID:58502 發(fā)表于 2015-3-30 00:51 | 只看該作者
不是這樣的,。你這樣寫就是按下按鍵判斷是否num==200等于的話就滅,而你按下的時(shí)候不會(huì)那么巧剛好200的
#include <AT89X51.H>
#define uchar unsigned char
uchar a,b;//計(jì)時(shí)標(biāo)志
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;

void delay10ms(void)
{
  unsigned char i,j;
  for(i=20;i>0;i--)
  for(j=248;j>0;j--);
}
void main(void)
{
     EA=1;
     ET0=1;
     TMOD=0x01;
     TH0=(65536-50000)/256;//定時(shí)50ms應(yīng)該要50000
     TL0=(65536-50000)%256;
     TR0=1;
LED1=1;
LED0=1;//我假設(shè)的是LED陰極接單片機(jī),陽極接VCC,所以輸出1是熄滅
while(1)
    {
      if(K1==0)
        {
          delay10ms();
          if(K1==0)
            {
             a=1;//按下按鍵后計(jì)時(shí)標(biāo)志為1
             LED0=0;//LED0亮
             }
        }
         if(K2==0)
        {
          delay10ms();
          if(K2==0)
            {
             b=1;//按下按鍵后計(jì)時(shí)標(biāo)志為1
             LED1=0;//LED1亮
             }
        }  

        if(num==6000)//20*50毫秒等于1秒5分鐘需要300個(gè)1秒,所以是300*20=6000
        {
        a=0;//清楚標(biāo)志
        LED0=0;//燈熄滅       
        }
        if(num==12000)//20*50毫秒等于1秒5分鐘需要300個(gè)1秒,所以是300*20=6000
        {
        b=0;//清楚標(biāo)志
        LED1=0;//燈熄滅       
        }
  }



}

void time0() interrupt 1
{
     TH0=(65536-50000)/256;
     TL0=(65536-50000)%256;
    if((a==1)|(b==1)) num++;//判斷計(jì)時(shí)標(biāo)志是否為1,為1就開始計(jì)時(shí)
回復(fù)

使用道具 舉報(bào)

8#
ID:60515 發(fā)表于 2015-3-30 19:50 來自手機(jī) | 只看該作者
liaolinhui 發(fā)表于 2015-3-30 00:51
不是這樣的,。你這樣寫就是按下按鍵判斷是否num==200等于的話就滅,而你按下的時(shí)候不會(huì)那么巧剛好200的
# ...

老師你好!還是實(shí)現(xiàn)不了?
回復(fù)

使用道具 舉報(bào)

9#
ID:60515 發(fā)表于 2015-3-30 20:22 來自手機(jī) | 只看該作者
liaolinhui 發(fā)表于 2015-3-30 00:51
不是這樣的,。你這樣寫就是按下按鍵判斷是否num==200等于的話就滅,而你按下的時(shí)候不會(huì)那么巧剛好200的
# ...

老師你好!還是實(shí)現(xiàn)不了?沒延時(shí),一按就亮。
回復(fù)

使用道具 舉報(bào)

10#
ID:58502 發(fā)表于 2015-3-31 00:52 | 只看該作者
GUOPK 發(fā)表于 2015-3-30 20:22
老師你好!還是實(shí)現(xiàn)不了?沒延時(shí),一按就亮。

我寫的是一按就亮,延時(shí)5分鐘滅啊,難道你是要按下延時(shí)5分鐘后才亮?
回復(fù)

使用道具 舉報(bào)

11#
ID:60515 發(fā)表于 2015-3-31 12:13 來自手機(jī) | 只看該作者
liaolinhui 發(fā)表于 2015-3-31 00:52
我寫的是一按就亮,延時(shí)5分鐘滅啊,難道你是要按下延時(shí)5分鐘后才亮?

我是想要亮5分鐘后滅
回復(fù)

使用道具 舉報(bào)

12#
ID:60515 發(fā)表于 2015-3-31 19:29 來自手機(jī) | 只看該作者
liaolinhui 發(fā)表于 2015-3-31 00:52
我寫的是一按就亮,延時(shí)5分鐘滅啊,難道你是要按下延時(shí)5分鐘后才亮?

謝謝老師!我改成功了,是把a(bǔ)=0;LED1=1;燈才會(huì)滅。做了很久到現(xiàn)在才成功。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表