久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

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

單片機(jī)紅外線調(diào)光控制臺(tái)燈問(wèn)題求助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:99548 發(fā)表于 2018-1-1 21:32 來(lái)自手機(jī) | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
大家好。最近準(zhǔn)備試做一個(gè)臺(tái)燈。紅外線和按鈕同時(shí)控制調(diào)光的。紅外線采用查詢into后計(jì)時(shí)的方式解碼。程序編完后只用遙控可以,只用按鍵控制也可以。但如果用遙控后,再用按鍵就不行了,不知為什么?求高手指教。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:151348 發(fā)表于 2018-1-2 19:58 | 只看該作者
應(yīng)該不是電路問(wèn)題,程序貼上來(lái)看看
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2018-1-2 20:34 | 只看該作者
是你的掃鍵程序與查詢into的構(gòu)思不好。程序執(zhí)行的時(shí)間按排不妥當(dāng)。
記住:?jiǎn)纹瑱C(jī)的軟件(CPU)在任何時(shí)間刻只能做一件事。
你合理的規(guī)劃一下,千萬(wàn)不要讓程序做一不做二,要以最短的時(shí)間輪流進(jìn)行掃鍵與處理紅外事件。
不能查鍵就顧不上紅外,處理紅外又顧不上查鍵。
提示:全部用中斷來(lái)做。用單片機(jī)中的硬件資源代替軟件的硬等待。
回復(fù)

使用道具 舉報(bào)

地板
ID:164602 發(fā)表于 2018-1-3 08:26 | 只看該作者
yzwzfyz 發(fā)表于 2018-1-2 20:34
是你的掃鍵程序與查詢into的構(gòu)思不好。程序執(zhí)行的時(shí)間按排不妥當(dāng)。
記住:?jiǎn)纹瑱C(jī)的軟件(CPU)在任何時(shí)間 ...

講得好!
其實(shí),紅外用中斷就好了,查鍵隨時(shí)查。
中斷的作用,就是對(duì)付不知道什么時(shí)候出現(xiàn)紅外信號(hào)這種突發(fā)事件。多件事兒都想適時(shí)執(zhí)行,就只有用中斷系統(tǒng)。
回復(fù)

使用道具 舉報(bào)

5#
ID:99548 發(fā)表于 2018-1-3 15:03 來(lái)自手機(jī) | 只看該作者
yzwzfyz 發(fā)表于 2018-1-2 20:34
是你的掃鍵程序與查詢into的構(gòu)思不好。程序執(zhí)行的時(shí)間按排不妥當(dāng)。
記住:?jiǎn)纹瑱C(jī)的軟件(CPU)在任何時(shí)間 ...

好的。謝謝!
回復(fù)

使用道具 舉報(bào)

6#
ID:99548 發(fā)表于 2018-1-3 21:32 | 只看該作者
yzwzfyz 發(fā)表于 2018-1-2 20:34
是你的掃鍵程序與查詢into的構(gòu)思不好。程序執(zhí)行的時(shí)間按排不妥當(dāng)。
記住:?jiǎn)纹瑱C(jī)的軟件(CPU)在任何時(shí)間 ...
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit K1=P3^6;
  5. sbit K2=P3^7;
  6. sbit JD1=P1^0;
  7. sbit JD2=P1^1;
  8. sbit JD3=P1^2;
  9. sbit IR=P3^2;


  10. bit kg;

  11. uchar kval;

  12. uchar a[4];
  13. uint lowtime,hightime;

  14. bit decode(void)
  15. {
  16.     uchar i,j;
  17.         uchar temp;
  18.         for(i=0;i<4;i++)
  19.         {
  20.           for(j=0;j<8;j++)
  21.            {
  22.              temp=temp>>1;
  23.                  TH0=0;
  24.                  TL0=0;
  25.                  TR0=1;
  26.                  while(IR==0);
  27.                  TR0=0;
  28.                  lowtime=TH0*256+TL0;
  29.                  TH0=0;
  30.                  TL0=0;
  31.                  TR0=1;
  32.                  while(IR==1);
  33.                  TR0=0;
  34.                  hightime=TH0*256+TL0;
  35.                  if((lowtime<370)||(lowtime>640))
  36.                  return 0;
  37.                  if((hightime>420)&&(hightime<620))
  38.                  temp=temp&0x7f;
  39.                  if((hightime>1300)&&(hightime<1800))
  40.                  temp=temp|0x80;
  41.                 }
  42.                 a[i]=temp;
  43.         }
  44.         if(a[2]=~a[3])
  45.         {
  46.         return 1;
  47.         }
  48. }

  49. void int0(void) interrupt 0
  50. {
  51.   EX0=0;
  52.   TH0=0;
  53.   TL0=0;
  54.   TR0=1;
  55.   while(IR==0);
  56.   TR0=0;
  57.   lowtime=TH0*256+TL0;
  58.   TH0=0;
  59.   TL0=0;
  60.   TR0=1;
  61.   while(IR==1);
  62.   TR0=0;
  63.   hightime=TH0*256+TL0;
  64.   if((lowtime>7800)&&(lowtime<8800)&&(hightime>3600)&&(hightime<4700))
  65.    {
  66.       if(decode()==1)
  67.           {
  68.            if(a[2]==0x0c)
  69.              {
  70.             JD1=0;JD2=1;JD3=1;
  71.                 }
  72.            if(a[2]==0x18)
  73.            {
  74.             JD1=0;JD2=0;JD3=1;
  75.                 }
  76.            if(a[2]==0x5e)
  77.            {
  78.             JD1=0;JD2=0;JD3=0;
  79.                 }
  80.            }
  81.         }
  82.         EX0=1;
  83. }


  84. delay()
  85. {
  86. uchar n,m;
  87. for(n=0;n<200;n++)
  88. for(m=0;m<100;m++);
  89. }

  90. void timeint() interrupt 3
  91. {
  92.   TR1=0;
  93.   if(K1==0)
  94.     {
  95.          delay();
  96.           if(K1==0)
  97.           {
  98.            JD1=0;JD2=1;JD3=1;
  99.            }
  100.         }
  101.    if(K2==0)
  102.      {
  103.           delay();
  104.            if(K2==0)
  105.            {
  106.             JD1=0;JD2=0;JD3=1;
  107.                 }
  108.          }
  109.    TH1=0X00;
  110.    TL1=0XDC;
  111.    TR1=1;
  112.    }


  113. void main()
  114. {
  115. EA=1;
  116. EX0=1;
  117. ET0=1;
  118. ET1=1;
  119. IT0=1;
  120. TMOD=0X01;
  121. TR0=0;
  122. TH1=0X00;
  123. TL1=0XDC;
  124. TR1=1;
  125. while(1);
  126. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

7#
ID:99548 發(fā)表于 2018-1-3 21:32 | 只看該作者
yzwzfyz 發(fā)表于 2018-1-2 20:34
是你的掃鍵程序與查詢into的構(gòu)思不好。程序執(zhí)行的時(shí)間按排不妥當(dāng)。
記住:?jiǎn)纹瑱C(jī)的軟件(CPU)在任何時(shí)間 ...

剛才是我程序的源代碼,麻煩您給看看
回復(fù)

使用道具 舉報(bào)

8#
ID:99548 發(fā)表于 2018-1-3 21:34 | 只看該作者
想用紅外線遙控和按鈕同時(shí)控制繼電器,但按如下程序如果單獨(dú)用遙控沒(méi)問(wèn)題,單獨(dú)用按鈕也沒(méi)問(wèn)題,但不能同時(shí)使用,不知為什么?
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit K1=P3^6;
sbit K2=P3^7;
sbit JD1=P1^0;
sbit JD2=P1^1;
sbit JD3=P1^2;
sbit IR=P3^2;


bit kg;

uchar kval;

uchar a[4];
uint lowtime,hightime;

bit decode(void)
{
    uchar i,j;
        uchar temp;
        for(i=0;i<4;i++)
        {
          for(j=0;j<8;j++)
           {
             temp=temp>>1;
                 TH0=0;
                 TL0=0;
                 TR0=1;
                 while(IR==0);
                 TR0=0;
                 lowtime=TH0*256+TL0;
                 TH0=0;
                 TL0=0;
                 TR0=1;
                 while(IR==1);
                 TR0=0;
                 hightime=TH0*256+TL0;
                 if((lowtime<370)||(lowtime>640))
                 return 0;
                 if((hightime>420)&&(hightime<620))
                 temp=temp&0x7f;
                 if((hightime>1300)&&(hightime<1800))
                 temp=temp|0x80;
                }
                a[i]=temp;
        }
        if(a[2]=~a[3])
        {
        return 1;
        }
}

void int0(void) interrupt 0
{
  EX0=0;
  TH0=0;
  TL0=0;
  TR0=1;
  while(IR==0);
  TR0=0;
  lowtime=TH0*256+TL0;
  TH0=0;
  TL0=0;
  TR0=1;
  while(IR==1);
  TR0=0;
  hightime=TH0*256+TL0;
  if((lowtime>7800)&&(lowtime<8800)&&(hightime>3600)&&(hightime<4700))
   {
      if(decode()==1)
          {
           if(a[2]==0x0c)
             {
            JD1=0;JD2=1;JD3=1;
                }
           if(a[2]==0x18)
           {
            JD1=0;JD2=0;JD3=1;
                }
           if(a[2]==0x5e)
           {
            JD1=0;JD2=0;JD3=0;
                }
           }
        }
        EX0=1;
}


delay()
{
uchar n,m;
for(n=0;n<200;n++)
for(m=0;m<100;m++);
}

void timeint() interrupt 3
{
  TR1=0;
  if(K1==0)
    {
         delay();
          if(K1==0)
          {
           JD1=0;JD2=1;JD3=1;
           }
        }
   if(K2==0)
     {
          delay();
           if(K2==0)
           {
            JD1=0;JD2=0;JD3=1;
                }
         }
   TH1=0X00;
   TL1=0XDC;
   TR1=1;
   }


void main()
{
EA=1;
EX0=1;
ET0=1;
ET1=1;
IT0=1;
TMOD=0X01;
TR0=0;
TH1=0X00;
TL1=0XDC;
TR1=1;
while(1);
}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本成人在线观看网站 | 亚洲自拍偷拍免费视频 | 精品久久久久久久人人人人传媒 | 国产精品日韩欧美一区二区三区 | 国产伦精品一区二区三区精品视频 | 在线播放一区二区三区 | 欧美日韩高清免费 | 九一视频在线播放 | 国产免费一级片 | 欧美在线观看一区 | 亚洲国产一区二区视频 | 久久久久久久av | 在线成人www免费观看视频 | 国产精品久久久久久久免费大片 | 黄色骚片| 欧美一级特黄aaa大片在线观看 | 99精品视频免费观看 | 日韩欧美一区二区三区免费观看 | 成人久久18免费网站 | 国产一级在线 | 成人免费视频网站在线看 | 久久精品视频在线观看 | 国产高清在线观看 | 国产精品99久久久久 | 国产精品国产 | 色女人天堂 | 91色视频在线观看 | 曰韩三级 | 欧美一区二区在线观看 | 亚洲色欧美另类 | 国产一级在线观看 | 国产欧美日韩在线播放 | 久热久热| 精品成人一区二区 | 在线观看免费黄色片 | 成人免费视频观看 | 亚洲视频中文字幕 | 亚洲夜夜爽 | 狠狠的日 | 欧美日韩亚洲一区 | 91天堂网|