找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

求助帖,用单片机+独立按键控制电机无效

查看数: 3885 | 评论数: 19 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-6-19 17:30

正文摘要:

像用独立按键控制电机,然后发现独立按键比如看k1按下去之后,除了P1^1从高电压变成低电压,别的地方没有任何变化,很苦恼,求大神指点。 //这是源代码 #include<reg52.h> #include<intrins.h> typede ...

回复

ID:332444 发表于 2020-6-27 07:57
我也是嫌教程写得过于啰嗦,看明白后就直接简化掉了,8个IO口若有用单独的一二个,可以单独定义,能整合的尽量不用单独去定义,直接使用整个8个口直接操作即可简化很多。
另外如按键代码也都是可以简化的,通常的那按键一堆代码就懒得去看,还有嵌套循环等这些凡是写一大堆代码的看着都累,而这些一堆代码都是可以简化的,不是不能简化。
简化后代码量也少,逻辑看得也清晰,心情也舒畅,修改也方便。
ID:332444 发表于 2020-6-27 07:36
那只是为了观察仿真用的是否加载正确,因为我写的好几个程序编译同一个名称,有时加载有问题,看图上是没接线的,让其循环可直观程序是否加载对否,当按键未操作时。
ID:97554 发表于 2020-6-26 16:46
xianfajushi 发表于 2020-6-26 11:35
解释写得明白,就是按键按下的值,按键接地,自然是低电平。

我也是没入门的业余爱好者,但是看了大佬写的程序茅塞顿开,楼主的程序思路就是那些搞开发板的典型程序,我开始也是跟着开发板学,由于年纪过大,十多年了也没入门,后来觉得不用开发板学倒是简单了不少。大佬的程序还有一个地方请教,P3 = ++j;这句的用处是什么?想了半天没想明白,还请赐教。
ID:332444 发表于 2020-6-26 16:22
有人如此解释我的程序,忽然有一种感觉,就好像狄仁杰到深山古堡念的诗:烂柯终年无人行,意外今日远客迎。莫道深山无知己,贵人临堡夜风停。 夙山留凤凤自停,贱客远游似浮萍。忽闻一阵香风过,吹来贵主好门庭。
ID:332444 发表于 2020-6-26 11:35
杨雪飞 发表于 2020-6-26 09:27
数组用的是10进制数,最后一个127就是十六进制的7F,意思是当P1.7口是低电平?是这个意思吗?

解释写得明白,就是按键按下的值,按键接地,自然是低电平。
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= 是驱动输出状态。
ID:97554 发表于 2020-6-26 09:27
xianfajushi 发表于 2020-6-20 11:06
稍微解释:数组前4个元素是控制L298输入端的信号,同时控制2片L298,数组后8个是按键按下时的值,用于定义 ...

数组用的是10进制数,最后一个127就是十六进制的7F,意思是当P1.7口是低电平?是这个意思吗?
ID:332444 发表于 2020-6-22 09:55

ID:332444 发表于 2020-6-20 21:07
4按键控制4电机.rar (68.8 KB, 下载次数: 13)

ID:342822 发表于 2020-6-20 12:52
wufeng391 发表于 2020-6-19 19:21
另外你们button函数不应该写在主函数main()内的while循环里边吗?
main()
{

支持 :随时扫描按键应写在循环中
ID:332444 发表于 2020-6-20 12:46
输入与输出都时一样的道理,赋值控制输出,按键按下读取即输入,都可以看作是一个值。
ID:332444 发表于 2020-6-20 11:13
把数组中的值送给指定P就会出现想要的8个IO的高低电平,就这么简单,没虾米特别的道理。
ID:332444 发表于 2020-6-20 11:06
稍微解释:数组前4个元素是控制L298输入端的信号,同时控制2片L298,数组后8个是按键按下时的值,用于定义按键的功能。
ID:332444 发表于 2020-6-20 11:02
别管那么多,照抄就是,获取些许经验,以后就会慢慢知道的。
ID:779880 发表于 2020-6-20 10:26
xianfajushi 发表于 2020-6-20 09:02

大佬这什么意思啊,我刚学单片机10天,看不太懂,请指教
ID:332444 发表于 2020-6-20 09:02


ID:779880 发表于 2020-6-19 21:03
wufeng391 发表于 2020-6-19 19:04
电机向芯片上接的时候应该是一根线拉out,另一端接电源正极或Gnd,如果你的程序没有问题的话,这样试试!

这样不行吧,我是写的遥控车的一部分,如果电机的一根线拉正极或GND的话,就只能控制电机的启停,不能控制正反转了。
ID:782419 发表于 2020-6-19 19:21
另外你们button函数不应该写在主函数main()内的while循环里边吗?
main()
{
  while(1)
  {
    button();
  }
}
ID:782419 发表于 2020-6-19 19:04
电机向芯片上接的时候应该是一根线拉out,另一端接电源正极或Gnd,如果你的程序没有问题的话,这样试试!

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表