欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 求大神幫忙提供一個(gè)51單片機(jī)的按鍵的程序設(shè)計(jì)思路(新手) [打印本頁(yè)]

作者: wxia0c    時(shí)間: 2020-2-23 11:09
標(biāo)題: 求大神幫忙提供一個(gè)51單片機(jī)的按鍵的程序設(shè)計(jì)思路(新手)
想用51單片機(jī)寫一個(gè)按鍵程序,當(dāng)按鍵按下去時(shí)(長(zhǎng)時(shí)間按住)執(zhí)行一個(gè)函數(shù),當(dāng)按鍵松開時(shí)執(zhí)行另一個(gè)函數(shù)。PS:要有實(shí)時(shí)性,因?yàn)橐还灿邪藗(gè)按鍵(要用51單片機(jī)做一個(gè)小車的遙控器,想用按鍵實(shí)現(xiàn):當(dāng)按鍵按住是小車一直走,當(dāng)按鍵松開時(shí)小車停止。)拜托各位大神了,實(shí)在是寫不出來(lái)了

作者: 51hei**1140    時(shí)間: 2020-2-23 13:03
你好!
你說(shuō)的個(gè)功能可以實(shí)現(xiàn),小車應(yīng)該是無(wú)線的吧,用的什么無(wú)線模塊
作者: baiyun1234    時(shí)間: 2020-2-23 13:34
//可以參照下,因?yàn)闆](méi)有上班沒(méi)給你調(diào)試,你自己調(diào)試下。
void key()
{
        sbit key1   =  P2^0;//按鍵1
        sbit key2   =  P2^1;
        .....                                //幾個(gè)按鍵只要IO夠就行
        sbit status =  P1^0;//狀態(tài)指示
        bit flag;
        int f;
        while(1)
        {
                f=1;
                switch (f)
                {
                        case 1:
                        {       
                                if(key1==0&&key2)                //你需要的功能可以繼續(xù)往下寫
                                        {
                                                delayms(20);                //防抖
                                                if(key1==0&&key2)
                                                {
                                                        z=2;
                                                }
                                        }
                                if(key2==0&&key1)               
                                        {
                                                delayms(20);
                                                if(key2==0&&key1)
                                                {
                                                        z=3;
                                                }
                                        }
                        }break;       
                        case 2:
                        {
                                delayms(500);
                                status=0;                //打開
                                delayms(500);
                                z=1;                        //返回第一步繼續(xù)等待
                        }break;
                        case 3:
                        {
                                delayms(500);
                                status=1;                //關(guān)閉
                                delayms(500);       
                                z=1;                     //同理返回第一步繼續(xù)等待
                        }break;
                }
        }
}
作者: xuyaqi    時(shí)間: 2020-2-23 13:47
void main()
{
  
        while(1)
        {

                讀鍵() ;//讀鍵
                if(鍵值==前進(jìn)){前進(jìn)();}
                if(鍵值==后退){后退();}
                。
                。
                。

                else{停();}
        }
}
作者: wxia0c    時(shí)間: 2020-2-24 07:36
51hei**1140 發(fā)表于 2020-2-23 13:03
你好!
你說(shuō)的個(gè)功能可以實(shí)現(xiàn),小車應(yīng)該是無(wú)線的吧,用的什么無(wú)線模塊

無(wú)線數(shù)傳模塊,大神可知道應(yīng)該怎么寫這個(gè)程序嗎?

作者: wxia0c    時(shí)間: 2020-2-24 09:17
baiyun1234 發(fā)表于 2020-2-23 13:34
//可以參照下,因?yàn)闆](méi)有上班沒(méi)給你調(diào)試,你自己調(diào)試下。
void key()
{

謝謝大神,還請(qǐng)大神講講這個(gè)程序,沒(méi)太看懂(新手小白)我想實(shí)現(xiàn)的功能是一個(gè)按鍵按下去執(zhí)行小車前進(jìn)這個(gè)函數(shù),松開時(shí)執(zhí)行小車停止這個(gè)函數(shù),而且按鍵比較多,因?yàn)檫@個(gè)按鍵控制小車所以想實(shí)時(shí)性好一點(diǎn)(不知道是不是要用中斷,還有就是程序的邏輯沒(méi)想出來(lái)),再次謝謝大神了!
作者: PDDDF    時(shí)間: 2020-2-24 10:26
void key_scan()
{
  static uchar a;
  if( key1 == 0)  {a++;}
  else if(key2 == 0) {a++;}
  else {a = 0;}
  if(xx<a)
  {
   if(key1 == 0) {key =1;}
   else if(key2 == 0) {key =2;}
   else {key = 0;}
  }
}
框架大概這樣吧,把掃描放中斷里,消抖效果根據(jù)自己的手感改時(shí)間就行,可以改一改看能不能用,我也是新手,不能保證好用
作者: hantu    時(shí)間: 2020-2-25 01:01
用狀態(tài)機(jī)的機(jī)制就行了,按鍵改變狀態(tài)值,由主執(zhí)行結(jié)構(gòu)(循環(huán)或定時(shí)器中斷)來(lái)動(dòng)作。
作者: 玉子屋    時(shí)間: 2020-3-2 18:57
這個(gè)是按鍵控制流水燈程序,可以看看框架。希望對(duì)你有幫助。
#include "reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit key1 =P3^0; //按鍵1
sbit key2 =P3^1; //按鍵2
sbit key3 =P3^2; //按鍵3
uchar flag1=0,flag2=0,flag3=0;
void delay_ms(uint z)
{
     uint i,j;
     for(i=0;i<z;i++)
     for(j=0;j<110;j++);
}
void O_to_E() //1,3,5,7與2,4,6,8交替閃爍
{
     P2=0Xaa;
     delay_ms(200);
     P2=~0Xaa;
     delay_ms(200);
}
void key_scan()    //鍵盤掃描
{
     if(!key1)
     {
          delay_ms(10); //延時(shí)消抖
          if(!key1)
          flag1=1;
     }
     if(!key2)
     {
          delay_ms(10); //延時(shí)消抖
          if(!key2)
           flag2=1;
         }
     if(!key3)
     {
          delay_ms(10); //延時(shí)消抖
          if(!key3)
           flag3=1;
     }
}
void main()
{
     uchar i;
     while(1)
     {
            key_scan();
            if(flag1)                               //按鍵一按下?               
            {
                   for(i=0;i<8;i++)            //從左至右亮,每次一盞            
                   {
                            P2=~(0x80>>i);
                            delay_ms(100);
                            key_scan();                 //按鍵掃描   
                            if(flag2||flag3){flag1=0;break;}        //如果有其它按鍵按下響應(yīng)其它按鍵
                   }
             }
             if(flag2)                                //按鍵一按下?                  
             {
                    for(i=0;i<8;i++)             //從右至左亮,每次一盞  
                   {
                            P2=~(0x01<<i);
                            delay_ms(100);
                            key_scan();
                            if(flag1||flag3){flag2=0;break;}
                   }
             }
              if(flag3)
             {
                   O_to_E();                             //奇偶交替閃爍
                   key_scan();
                   if(flag1||flag2)flag3=0;
              }
        }
}
作者: Edison.    時(shí)間: 2020-3-2 19:33
八個(gè)按鍵的c程序最好有程序說(shuō)明
作者: flyme123    時(shí)間: 2020-3-3 09:51
區(qū)別不大,pwm是一種調(diào)制方式而已,被控制的系統(tǒng)接受什么樣的pwm會(huì)有什么反應(yīng)是由被控制的系統(tǒng)決定的,我們只要看懂手冊(cè)輸出對(duì)應(yīng)的pwm波就行




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1