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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4258|回復: 19
打印 上一主題 下一主題
收起左側

求助帖,用單片機+獨立按鍵控制電機無效

[復制鏈接]
跳轉到指定樓層
樓主
像用獨立按鍵控制電機,然后發現獨立按鍵比如看k1按下去之后,除了P1^1從高電壓變成低電壓,別的地方沒有任何變化,很苦惱,求大神指點。
//這是源代碼

#include<reg52.h>
#include<intrins.h>
typedef unsigned char u8;

sbit k1=P1^6;
sbit k2=P1^7;
sbit k3=P3^6;
sbit k4=P3^7;

sbit in1=P1^1;
sbit in2=P1^2;
sbit in3=P1^3;
sbit in4=P1^4;

sbit in5=P2^1;
sbit in6=P2^2;
sbit in7=P2^3;
sbit in8=P2^4;

void delay10ms(void)
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}
void button()
{
   if(k1==0)
         {delay10ms();
                 if(k1==0)//ǰ½ø
                 {
                        in1=1;
                        in2=0;
                        in3=1;
                        in4=0;
                        in5=1;
                        in6=0;
                        in7=1;
                        in8=0;
         while(!k1);
         delay10ms();
           }

         
   }

if(k2==0)
         {delay10ms();//oóíË
                 if(k2==0)
                 {
                        in1=0;
                        in2=1;
                        in3=0;
                        in4=1;
            in5=0;
                        in6=1;
                        in7=0;
                        in8=1;
           while(!k2);}
           delay10ms();
   }

if(k3==0)
         {delay10ms();//×ó×a
                 if(k3==0)
                 {
                        in1=0;
                        in2=1;
                        in3=0;
                        in4=1;
                  in5=1;
                        in6=0;
                        in7=1;
                        in8=0;
           while(!k3);}
           delay10ms();
   }


if(k4==0)
         {delay10ms();//óò×a
                 if(k4==0)
                 {
                        in1=1;
                        in2=0;
                        in3=1;
                        in4=0;
                        in5=0;
                        in6=1;
                        in7=0;
                        in8=1;
            while(!k4);
            delay10ms();}

         
   }

}

void main()
{
               
                        button();
            while(1);
}




51hei截圖20200619172911.png (114.37 KB, 下載次數: 81)

51hei截圖20200619172911.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:782419 發表于 2020-6-19 19:04 | 只看該作者
電機向芯片上接的時候應該是一根線拉out,另一端接電源正極或Gnd,如果你的程序沒有問題的話,這樣試試!
回復

使用道具 舉報

板凳
ID:782419 發表于 2020-6-19 19:21 | 只看該作者
另外你們button函數不應該寫在主函數main()內的while循環里邊嗎?
main()
{
  while(1)
  {
    button();
  }
}
回復

使用道具 舉報

地板
ID:779880 發表于 2020-6-19 21:03 | 只看該作者
wufeng391 發表于 2020-6-19 19:04
電機向芯片上接的時候應該是一根線拉out,另一端接電源正極或Gnd,如果你的程序沒有問題的話,這樣試試!

這樣不行吧,我是寫的遙控車的一部分,如果電機的一根線拉正極或GND的話,就只能控制電機的啟停,不能控制正反轉了。
回復

使用道具 舉報

5#
ID:332444 發表于 2020-6-20 09:02 | 只看該作者


回復

使用道具 舉報

6#
ID:779880 發表于 2020-6-20 10:26 來自觸屏版 | 只看該作者
xianfajushi 發表于 2020-6-20 09:02

大佬這什么意思啊,我剛學單片機10天,看不太懂,請指教
回復

使用道具 舉報

7#
ID:332444 發表于 2020-6-20 11:02 | 只看該作者
別管那么多,照抄就是,獲取些許經驗,以后就會慢慢知道的。
回復

使用道具 舉報

8#
ID:332444 發表于 2020-6-20 11:06 | 只看該作者
稍微解釋:數組前4個元素是控制L298輸入端的信號,同時控制2片L298,數組后8個是按鍵按下時的值,用于定義按鍵的功能。
回復

使用道具 舉報

9#
ID:332444 發表于 2020-6-20 11:13 | 只看該作者
把數組中的值送給指定P就會出現想要的8個IO的高低電平,就這么簡單,沒蝦米特別的道理。
回復

使用道具 舉報

10#
ID:332444 發表于 2020-6-20 12:46 | 只看該作者
輸入與輸出都時一樣的道理,賦值控制輸出,按鍵按下讀取即輸入,都可以看作是一個值。
回復

使用道具 舉報

11#
ID:342822 發表于 2020-6-20 12:52 | 只看該作者
wufeng391 發表于 2020-6-19 19:21
另外你們button函數不應該寫在主函數main()內的while循環里邊嗎?
main()
{

支持 :隨時掃描按鍵應寫在循環中
回復

使用道具 舉報

12#
ID:332444 發表于 2020-6-20 21:07 | 只看該作者
4按鍵控制4電機.rar (68.8 KB, 下載次數: 13)

回復

使用道具 舉報

13#
ID:332444 發表于 2020-6-22 09:55 | 只看該作者

回復

使用道具 舉報

14#
ID:97554 發表于 2020-6-26 09:27 | 只看該作者
xianfajushi 發表于 2020-6-20 11:06
稍微解釋:數組前4個元素是控制L298輸入端的信號,同時控制2片L298,數組后8個是按鍵按下時的值,用于定義 ...

數組用的是10進制數,最后一個127就是十六進制的7F,意思是當P1.7口是低電平?是這個意思嗎?
回復

使用道具 舉報

15#
ID:97554 發表于 2020-6-26 10:56 | 只看該作者
白帥比 發表于 2020-6-20 10:26
大佬這什么意思啊,我剛學單片機10天,看不太懂,請指教

大佬的意思就是把你
                        in1=0;
                        in2=1;
                        in3=0;
                        in4=1;
                        in5=1;
                        in6=0;
                        in7=1;
                        in8=0;
這種驅動298的寫法改成用一個IO口的八條線,比如你的in1  --  in8分別依次接入P1口的P1^0   P1^2 -- P1^7,你上邊的01011010就是5A,換成十進制就是90,另外的三組分別是A5    55    AA,對應的十進制就是165   85   170,也就是說按照大佬給的接線圖,用P2口做驅動,P1口做按鍵。那你的                        in1=0;
                        in2=1;
                        in3=0;
                        in4=1;
                        in5=1;
                        in6=0;
                        in7=1;
                        in8=0;
就可以簡單的寫成:
                       P2 = 5A;
大佬直接做了個10進制的數組,把按鍵和鍵盤的IO口電平狀態放在里邊,直接在下邊調用了,比如他前邊的那P1= DJ雖然是電機的首拼,但是這里是檢測按鍵狀態,后邊P2= 是驅動輸出狀態。
回復

使用道具 舉報

16#
ID:332444 發表于 2020-6-26 11:35 | 只看該作者
楊雪飛 發表于 2020-6-26 09:27
數組用的是10進制數,最后一個127就是十六進制的7F,意思是當P1.7口是低電平?是這個意思嗎?

解釋寫得明白,就是按鍵按下的值,按鍵接地,自然是低電平。
回復

使用道具 舉報

17#
ID:332444 發表于 2020-6-26 16:22 | 只看該作者
有人如此解釋我的程序,忽然有一種感覺,就好像狄仁杰到深山古堡念的詩:爛柯終年無人行,意外今日遠客迎。莫道深山無知己,貴人臨堡夜風停。 夙山留鳳鳳自停,賤客遠游似浮萍。忽聞一陣香風過,吹來貴主好門庭。
回復

使用道具 舉報

18#
ID:97554 發表于 2020-6-26 16:46 | 只看該作者
xianfajushi 發表于 2020-6-26 11:35
解釋寫得明白,就是按鍵按下的值,按鍵接地,自然是低電平。

我也是沒入門的業余愛好者,但是看了大佬寫的程序茅塞頓開,樓主的程序思路就是那些搞開發板的典型程序,我開始也是跟著開發板學,由于年紀過大,十多年了也沒入門,后來覺得不用開發板學倒是簡單了不少。大佬的程序還有一個地方請教,P3 = ++j;這句的用處是什么?想了半天沒想明白,還請賜教。
回復

使用道具 舉報

19#
ID:332444 發表于 2020-6-27 07:36 | 只看該作者
那只是為了觀察仿真用的是否加載正確,因為我寫的好幾個程序編譯同一個名稱,有時加載有問題,看圖上是沒接線的,讓其循環可直觀程序是否加載對否,當按鍵未操作時。
回復

使用道具 舉報

20#
ID:332444 發表于 2020-6-27 07:57 | 只看該作者
我也是嫌教程寫得過于啰嗦,看明白后就直接簡化掉了,8個IO口若有用單獨的一二個,可以單獨定義,能整合的盡量不用單獨去定義,直接使用整個8個口直接操作即可簡化很多。
另外如按鍵代碼也都是可以簡化的,通常的那按鍵一堆代碼就懶得去看,還有嵌套循環等這些凡是寫一大堆代碼的看著都累,而這些一堆代碼都是可以簡化的,不是不能簡化。
簡化后代碼量也少,邏輯看得也清晰,心情也舒暢,修改也方便。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表