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

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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)按鍵控制燈問(wèn)題,不能按照我的要求工作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:237797 發(fā)表于 2018-12-9 20:37 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
要求K1,K2都能控制燈,控制邏輯關(guān)系是:K1一直按下,燈亮6S后,如果K2按下燈微亮(亮度10%),K2沒(méi)有按下燈全亮,K1松開(kāi)不按下燈滅;如此反復(fù)循環(huán)。


編譯沒(méi)有問(wèn)題,現(xiàn)在不能按照我的要求工作。現(xiàn)象是:按下K1燈亮6S后,如果K2按下燈微亮(亮度10%),K2沒(méi)有按下燈全亮,K1松開(kāi)不按下燈應(yīng)該滅,現(xiàn)在燈不滅了,也不循環(huán)。程序一直工作在循環(huán)(whlie)里面沒(méi)有跳出來(lái),若是把while注解了不用,K1按下延時(shí)6S燈滅。問(wèn)題出在哪里?

本人寫(xiě)的單片機(jī)程序如下:
  1. #include<reg51.h>
  2. typedef unsigned char U8;
  3. sbit led=P1^0;
  4. sbit sun=P1^1;
  5. sbit pir=P1^2;
  6. void delay10ms(unsigned int c)
  7. {
  8. unsigned char a,b;
  9. for(;c>0;c--)
  10.   for(a=38;a>0;a--)
  11.    for(b=130;b>0;b--);
  12. }
  13. //可調(diào)pwm函數(shù)
  14. void pwm(unsigned char a)   //改變a的值調(diào)整占空比
  15. {
  16. U8 i;
  17. led=0X00;
  18. {
  19.   for(i=0;i<255;i++)
  20.   {
  21.    if(i<a)        //改變a的值調(diào)整占空比
  22.     led=0xFF;
  23.    else
  24.     led=0x00;
  25.   }
  26. }
  27. }
  28. void main()
  29. {
  30. if(sun==0)
  31. {
  32.   led=1;
  33.   delay10ms(600);
  34.   while(1)
  35.   {
  36.    if(pir==1)
  37.     led=1;
  38.     else
  39.      pwm(25);    //改變1到255的大小值調(diào)整占空比         
  40.   }
  41.   }
  42.   else
  43.   {
  44.   led=0;
  45.   }
  46.   }
復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:410399 發(fā)表于 2018-12-10 08:11 | 只看該作者
把while括住整個(gè)main函數(shù)的內(nèi)容
回復(fù)

使用道具 舉報(bào)

板凳
ID:359468 發(fā)表于 2018-12-10 09:21 | 只看該作者
好好檢查一下邏輯和共陰陽(yáng)極
回復(fù)

使用道具 舉報(bào)

地板
ID:443039 發(fā)表于 2018-12-10 09:29 | 只看該作者
要了解單片機(jī)的工作流程啊,裸機(jī)工作你的工作代碼都要放在while里面,初始化代碼放在while外面
回復(fù)

使用道具 舉報(bào)

5#
ID:443178 發(fā)表于 2018-12-10 12:17 | 只看該作者
你的共陽(yáng)極是不是倆摩羯錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

6#
ID:443178 發(fā)表于 2018-12-10 12:17 | 只看該作者
檢查一下共陽(yáng)極和共陰極是否混亂
回復(fù)

使用道具 舉報(bào)

7#
ID:237797 發(fā)表于 2018-12-10 15:46 | 只看該作者
sprouty195 發(fā)表于 2018-12-10 09:21
好好檢查一下邏輯和共陰陽(yáng)極

共陽(yáng)極的
回復(fù)

使用道具 舉報(bào)

8#
ID:237797 發(fā)表于 2018-12-10 15:47 | 只看該作者
mosqu 發(fā)表于 2018-12-10 08:11
把while括住整個(gè)main函數(shù)的內(nèi)容

while整個(gè)main函數(shù),運(yùn)行就停在開(kāi)機(jī)延時(shí)哪里,K2不起作用了
回復(fù)

使用道具 舉報(bào)

9#
ID:443406 發(fā)表于 2018-12-10 16:16 | 只看該作者

void main()
{
  while(1)
  {
   if(sun==0)
   {
     led=1;
     delay10ms(600);

     if(pir==1)
      led=1;
      else
       pwm(25);    //改變1到255的大小值調(diào)整占空比         
    }
    else
    {
      led=0;
    }
  }
}
回復(fù)

使用道具 舉報(bào)

10#
ID:304235 發(fā)表于 2018-12-10 16:43 | 只看該作者
6S用定時(shí)器中斷來(lái)定時(shí)。main函數(shù)內(nèi)先初始化變量 然后再用while函數(shù)進(jìn)行循環(huán)。
下面程序有個(gè)框架, 你再根據(jù)自己的需求改一改,調(diào)試調(diào)試。。
#include<reg52.h>
typedef unsigned char U8;
sbit led=P1^0;
sbit sun=P1^1;
sbit pir=P1^2;
U8 j;

void pwm(unsigned char a)  
{
U8 i;
led=0X00;
{
  for(i=0;i<255;i++)
  {
   if(i<a)      
    led=0xFF;
   else
    led=0x00;
  }
}
}

void delay10ms(unsigned int c)
{
unsigned char a,b;
for(;c>0;c--)
  for(a=38;a>0;a--)
   for(b=130;b>0;b--);
}

void Timer1Init(void)               
{       
        TMOD &= 0x0F;               
        TL1 = 0x00;               
        TH1 = 0xDC;       
        TF1 = 0;               
        TR1 = 1;               
}

void main()
{
        Timer1Init();
        while(1)
        {
                if(j == 600)
                {
                        led = 1;
                        TR1 = 0;
                }
               
                if(!pir)
                {
                        delay10ms(5);
                        if(!pir)
                        {
                                 pwm(25);
                        }
                }
               
                if(!sun)
                {
                        delay10ms(5);
                        if(!sun)
                        {
                                 led = 0;
                                 TR1 = 1;
                        }
                }
               
        }
}

void Timer0() interrupt 1
{
        if(!sun)
        {
                TL1 = 0x00;               
                TH1 = 0xDC;
                j++;
        }else
        {
                j = 0;
        }
}
回復(fù)

使用道具 舉報(bào)

11#
ID:237797 發(fā)表于 2018-12-11 08:00 | 只看該作者
djh635498852 發(fā)表于 2018-12-10 16:43
6S用定時(shí)器中斷來(lái)定時(shí)。main函數(shù)內(nèi)先初始化變量 然后再用while函數(shù)進(jìn)行循環(huán)。
下面程序有個(gè)框架, 你再根 ...

今天晚上用你的方法試試。
回復(fù)

使用道具 舉報(bào)

12#
ID:237797 發(fā)表于 2018-12-11 08:03 | 只看該作者
futon18 發(fā)表于 2018-12-10 16:16
void main()
{
  while(1)

我開(kāi)始程序就是你這樣的,進(jìn)去燈一直亮。不受控制。我也想了好久,感覺(jué)邏輯上沒(méi)有錯(cuò),控制就是不正常;后面才把while放在我貼上來(lái)的程序位置。
回復(fù)

使用道具 舉報(bào)

13#
ID:237797 發(fā)表于 2018-12-11 21:14 | 只看該作者
#include<reg52.h>
typedef unsigned char U8;
sbit led=P1^0;
sbit sun=P1^1;
sbit pir=P1^2;
U8 j;

void pwm(unsigned char a)  
{
U8 i;
led=0X00;
{
  for(i=0;i<255;i++)
  {
   if(i<a)      
    led=0xFF;
   else
    led=0x00;
  }
}
}

void delay10ms(unsigned int c)
{
unsigned char a,b;
for(;c>0;c--)
  for(a=38;a>0;a--)
   for(b=130;b>0;b--);
}

void main()
{
  while(1)
  {
   if(sun==0)
   {
//     led=1;
//     delay10ms(600);

     if(pir==1)
      led=1;
      else
       pwm(25);    //改變1到255的大小值調(diào)整占空比         
    }
    else
    {
      led=0;
    }
  }
}
我按照這樣把開(kāi)燈后燈亮這6S注釋了,能滿足我的K1,K2控制燈的要求,就是K1按下要工作6S不行,也要這6S期間K1也是一直按下去的,在這6S之間要的K1斷開(kāi),要求燈也要滅。
回復(fù)

使用道具 舉報(bào)

14#
ID:237797 發(fā)表于 2018-12-11 21:15 | 只看該作者
本帖最后由 lclbf 于 2018-12-12 07:50 編輯
djh635498852 發(fā)表于 2018-12-10 16:43
6S用定時(shí)器中斷來(lái)定時(shí)。main函數(shù)內(nèi)先初始化變量 然后再用while函數(shù)進(jìn)行循環(huán)。
下面程序有個(gè)框架, 你再根 ...

按照你這個(gè)程序我沒(méi)有調(diào)試出來(lái),按下K2的時(shí)候燈變暗了,但是燈還會(huì)閃爍。后來(lái)發(fā)現(xiàn)燈閃爍是因?yàn)殚_(kāi)關(guān)按下加了消抖延時(shí)的原因。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91电影| 国产成人精品免费视频大全最热 | 国产精品一区二区三区在线 | 超碰成人免费观看 | 一区二区三区在线 | 亚洲欧美在线视频 | 欧美国产亚洲一区二区 | 免费国产精品久久久久久 | 久久免费香蕉视频 | 91久久精品一区二区三区 | 国产一区二区三区四区五区加勒比 | 久久午夜国产精品www忘忧草 | 亚洲一级视频在线 | 国产久视频 | 国产精品久久久久av | 91精品国产91久久久久久最新 | 日韩中文字幕久久 | 成人国产精品 | 久久久久国产精品一区二区 | 色综合天天天天做夜夜夜夜做 | 成年人网站国产 | 激情国产视频 | 青青草免费在线视频 | 日韩精品在线播放 | 亚洲不卡在线观看 | 精品小视频 | 久久久蜜桃 | 国产高清免费 | 国产精品久久久久aaaa樱花 | 欧美视频精品 | 在线观看国产精品一区二区 | av国产精品 | 亚洲精品乱码8久久久久久日本 | 婷婷综合色 | 久久网国产 | 亚洲一区二区三区免费在线观看 | 色婷婷一区二区三区四区 | av一级久久 | 91久久 | 一级黄色影片在线观看 | 一区在线观看 |