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

QQ登錄

只需一步,快速開始

搜索
查看: 9830|回復(fù): 39
收起左側(cè)

單片機(jī)按鍵松手后就滅了,為什么

  [復(fù)制鏈接]
ID:65770 發(fā)表于 2014-12-10 00:17 | 顯示全部樓層 |閱讀模式
單片機(jī)按鍵松手后就滅了,為什么

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2014-12-10 01:51 | 顯示全部樓層
程序貼上來(lái)看看
回復(fù)

使用道具 舉報(bào)

ID:65770 發(fā)表于 2014-12-10 06:39 | 顯示全部樓層
admin 發(fā)表于 2014-12-10 01:51
程序貼上來(lái)看看

#include<reg52.h>
sbit key=P3^0;
sbit led1=P2^0;
sbit key1=P3^1;
sbit led3=P2^2;
void main()
{
unsigned int i;
unsigned char a;
         
         while(1)
         {        a=1;
                 if(key==0)
                 {
                  
                 for(i=0;i<100;i++);
                 if(key==0)
                 {
                   led1=0;
                  a++;               
                 }
                 {
                if(key1==0)
                  for(i=0;i<100;i++);
                                  if(key==2)  led1=1;


                   }
                 
                  
                }
          
        }
}
回復(fù)

使用道具 舉報(bào)

ID:67992 發(fā)表于 2014-12-10 10:37 | 顯示全部樓層
提問(wèn)題之前要說(shuō)明程序要實(shí)現(xiàn)的功能,才好幫你分析。
回復(fù)

使用道具 舉報(bào)

ID:223443 發(fā)表于 2017-7-31 19:26 | 顯示全部樓層
應(yīng)該是循環(huán)問(wèn)題吧!
回復(fù)

使用道具 舉報(bào)

ID:223443 發(fā)表于 2017-7-31 19:27 | 顯示全部樓層
admin 發(fā)表于 2014-12-10 01:51
程序貼上來(lái)看看

應(yīng)該是連續(xù)循環(huán)問(wèn)題吧
回復(fù)

使用道具 舉報(bào)

ID:223667 發(fā)表于 2017-7-31 21:21 | 顯示全部樓層
董亞偉 發(fā)表于 2014-12-10 06:39
#include
sbit key=P3^0;
sbit led1=P2^0;

沒(méi)看懂 key為什么可以等于2呢不是只有0和1嗎 條件都不成立  還有if語(yǔ)句可以這樣嵌套的嗎
回復(fù)

使用道具 舉報(bào)

ID:221453 發(fā)表于 2017-8-1 18:38 | 顯示全部樓層
加一個(gè)while循環(huán)程序就好了
回復(fù)

使用道具 舉報(bào)

ID:223988 發(fā)表于 2017-8-2 08:26 | 顯示全部樓層
因?yàn)槟?沒(méi)有 保持 。
回復(fù)

使用道具 舉報(bào)

ID:219921 發(fā)表于 2017-8-2 10:10 | 顯示全部樓層
判斷key==2? 還有   為什么要判斷兩次key==0啊
回復(fù)

使用道具 舉報(bào)

ID:224024 發(fā)表于 2017-8-2 10:21 | 顯示全部樓層
程序沒(méi)有掛起
回復(fù)

使用道具 舉報(bào)

ID:224028 發(fā)表于 2017-8-2 10:34 | 顯示全部樓層
#include<reg52.h>
sbit key=P3^0;
sbit led1=P2^0;
sbit key1=P3^1;
sbit led3=P2^2;
void main()
{
unsigned int i;
unsigned char a;
         
         while(1)
         {        a=1;
               
                 if(key==0)
                 {
                   led1=0;
                   for(i=0;i<100;i++);
                  a++;               
                 }
                 {
                if(key1==0)
                  for(i=0;i<100;i++);
                                  if(key==2)  led1=1;


                   }
                 
                  
                }
         
        }
}
回復(fù)

使用道具 舉報(bào)

ID:221909 發(fā)表于 2017-8-2 11:08 | 顯示全部樓層
董亞偉 發(fā)表于 2014-12-10 06:39
#include
sbit key=P3^0;
sbit led1=P2^0;

LED加電阻了嗎,好像不能直接接正極。再有就是好像還要加入去抖動(dòng)吧,我也是剛學(xué),前幾天看杜洋的視頻了好像有講這個(gè),你可以看看
回復(fù)

使用道具 舉報(bào)

ID:224096 發(fā)表于 2017-8-2 14:08 | 顯示全部樓層
同求解,謝謝各位
回復(fù)

使用道具 舉報(bào)

ID:224086 發(fā)表于 2017-8-2 14:13 | 顯示全部樓層
key==2怎么會(huì)亮?
回復(fù)

使用道具 舉報(bào)

ID:137261 發(fā)表于 2017-8-5 11:18 | 顯示全部樓層
你這個(gè)程序key=2是啥?
回復(fù)

使用道具 舉報(bào)

ID:225017 發(fā)表于 2017-8-5 16:52 | 顯示全部樓層
董亞偉 發(fā)表于 2014-12-10 06:39
#include
sbit key=P3^0;
sbit led1=P2^0;

沒(méi)有松手檢測(cè)把
回復(fù)

使用道具 舉報(bào)

ID:224474 發(fā)表于 2017-8-6 11:28 | 顯示全部樓層
應(yīng)為你設(shè)置的是檢測(cè)一次,如果連續(xù)檢測(cè)的話可以用眼石判斷來(lái)實(shí)現(xiàn)。
回復(fù)

使用道具 舉報(bào)

ID:225341 發(fā)表于 2017-8-7 06:47 | 顯示全部樓層
因?yàn)槟銢](méi)有保存到上一個(gè)值,,它只要低電平就亮,高電平就滅,所以必須先保存到這個(gè)之后,按下就會(huì)亮
回復(fù)

使用道具 舉報(bào)

ID:225626 發(fā)表于 2017-8-7 23:00 | 顯示全部樓層
少了一個(gè)松手檢測(cè)吧
回復(fù)

使用道具 舉報(bào)

ID:220121 發(fā)表于 2017-8-8 08:50 | 顯示全部樓層
定義兩個(gè)狀態(tài) bit  按下為1,抬起為0 當(dāng)抬起時(shí)將狀態(tài)取反
回復(fù)

使用道具 舉報(bào)

ID:225669 發(fā)表于 2017-8-8 10:35 | 顯示全部樓層
   if(key==2)  led1=1;   按鍵只有01 狀態(tài),怎么是2啊 ,
回復(fù)

使用道具 舉報(bào)

ID:204589 發(fā)表于 2017-8-8 10:50 | 顯示全部樓層
少了松手檢測(cè)吧
回復(fù)

使用道具 舉報(bào)

ID:225682 發(fā)表于 2017-8-8 10:52 | 顯示全部樓層
定義一個(gè)變量,按下取反。
回復(fù)

使用道具 舉報(bào)

ID:225017 發(fā)表于 2017-8-8 20:16 | 顯示全部樓層
加個(gè)松手檢測(cè)或者消抖不行。
回復(fù)

使用道具 舉報(bào)

ID:226857 發(fā)表于 2017-8-11 10:23 | 顯示全部樓層
增加一個(gè)記錄狀態(tài)的變量
回復(fù)

使用道具 舉報(bào)

ID:226896 發(fā)表于 2017-8-11 11:11 | 顯示全部樓層
加一個(gè)標(biāo)志位看看
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-8-12 20:34 | 顯示全部樓層
程序有問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:78850 發(fā)表于 2017-8-12 23:03 | 顯示全部樓層
加個(gè)延時(shí),把key==2改成key==1試試
回復(fù)

使用道具 舉報(bào)

ID:218870 發(fā)表于 2017-8-13 05:59 | 顯示全部樓層
要達(dá)到的要求是什么?
回復(fù)

使用道具 舉報(bào)

ID:218870 發(fā)表于 2017-8-13 05:59 | 顯示全部樓層
觸發(fā)方式
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-8-13 08:39 | 顯示全部樓層
本帖最后由 zl2168 于 2017-8-16 17:23 編輯

實(shí)例5  4種不同鍵控方式


單片機(jī)應(yīng)用系統(tǒng)中,根據(jù)按鍵閉合和釋放狀態(tài),有多種不同的鍵控方式,可編寫不同的程序予以實(shí)現(xiàn)。本例要求按以下4種不同方式分別鍵控VD0~ VD3
4種不同方式鍵控?zé)綦娐?jpg


① 無(wú)鎖按鍵:S0按下,VD0亮;S0釋放,VD0暗;

② 無(wú)鎖按鍵(前沿有效):S1按下,VD1亮;S1釋放,VD1延時(shí)2s后暗。

③ 無(wú)鎖按鍵(后沿有效):S2按下,VD2不亮;S2釋放,VD2亮,并延時(shí)2s后暗。

模擬有鎖按鍵:S3按第一次,VD3亮,并繼續(xù)保持;按第二次,VD3才暗。



Proteus仿真一下,確認(rèn)有效。
實(shí)例5 不同方式鍵控?zé)?rar (31.72 KB, 下載次數(shù): 15)
4種不同方式鍵控信號(hào)燈.jpg
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。


回復(fù)

使用道具 舉報(bào)

ID:223097 發(fā)表于 2017-8-13 15:16 | 顯示全部樓層
沒(méi)消抖吧
回復(fù)

使用道具 舉報(bào)

ID:226108 發(fā)表于 2017-8-13 18:46 | 顯示全部樓層
我也是同樣的問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:219008 發(fā)表于 2017-8-14 18:11 | 顯示全部樓層
少了一個(gè)去抖動(dòng)程序
回復(fù)

使用道具 舉報(bào)

ID:227635 發(fā)表于 2017-8-14 20:24 | 顯示全部樓層
你用兩個(gè)if只是去抖,并不能掛起程序,應(yīng)該用while語(yǔ)句
回復(fù)

使用道具 舉報(bào)

ID:208108 發(fā)表于 2017-8-15 12:04 | 顯示全部樓層
  if(key==2)  led1=1; 這個(gè)沒(méi)看明白,假如條件成立等同于if(key==1)  led1=1;
你這個(gè)并沒(méi)有嵌套在上一個(gè)for循環(huán)里,是和第一個(gè)if同級(jí)的,當(dāng)然松手會(huì)滅了。
回復(fù)

使用道具 舉報(bào)

ID:227744 發(fā)表于 2017-8-15 15:39 | 顯示全部樓層
不會(huì)的,肯定沒(méi)問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:227750 發(fā)表于 2017-8-15 16:19 | 顯示全部樓層
用一個(gè)變量記錄按鍵狀態(tài)就可以了,按一下亮,按一下滅,相應(yīng)的狀態(tài)也要改變
回復(fù)

使用道具 舉報(bào)

ID:227792 發(fā)表于 2017-8-15 20:14 | 顯示全部樓層
幫你頂吧!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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