大神看看问题出在哪???

2020-01-30 13:52发布

RT;帖子发了几次,都没有得到满意的结果,本人自学单片机,实在找不去问题,也折腾很久,没辙,再发一次,望大神们不吝赐教,本人不胜感激!!

【目的】一个按键控制一个直流电机的转速变化——长按(大于等于2秒)电机转速增加,短按(小于等于2秒)电机转速减小。【程序可行,达到目标】因此,在前面这些基础上想实现两个按键控制两个直流电机的转速,就出毛病了。
【毛病】两个按键控制两个电机时,按键时电机转速没变化,在该程序下撤去一个电机,按键作用全为减速,而且保持一会之后又速度自己加上去了。
【PS】直流电机周期为400us,程序在这方面应该没问题(我自己认为的。或许第二个程序里有些赋值有问题没发现)。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
hansur
1楼-- · 2020-01-31 06:45
按键判断最好用状态机的方式
daxiaolijun
2楼-- · 2020-01-31 10:12
hansur 发表于 2012-12-4 10:24
按键判断最好用状态机的方式

就是这种吗?
if(key1==0) 执行1部分程序;
if(key2==0) 执行2部分程序;

void 1 部分()
{。。。}

void 2 部分()
{。。。}

感觉差不多吧?

把你的想法说的详细点,我再试试,谢谢!
daxiaolijun
3楼-- · 2020-01-31 12:22
怎么就没有想象中的那么多人呢?程序不是很难吧?高手在哪里?
metalmadman
4楼-- · 2020-01-31 16:47
 精彩回答 2  元偷偷看……
daxiaolijun
5楼-- · 2020-01-31 19:03
metalmadman 发表于 2012-12-7 10:47
不知LZ程序写好没有?我帮你写了一份,不知道是否符合要求,压缩包里面有个仿真文件,你可以试试 ...

不知道是效果不太明显(你在程序中加的指示灯也没亮,按键对两电机转速不起作用),也可能是硬件引脚什么的不同,没有达到效果,转速没变化。本来以为是按键的问题,但我又写了两个按键控制两组流水灯之间的切换时按键没问题。但是非常感谢你的程序,对我的启发很大,因为是新手以前写程序都没用过状态机,我再结合电机本身仔细分析分析你的程序。祝福你,好人一生平安。
skyxjh
6楼-- · 2020-01-31 19:19
给你一个思路:在10ms定时中断里检测两个按键,连续两次检测到低电平就认为按键按下,连续两次检测到高电平就认为按键释放,对按键按下到释放记时,超过2s(检测200次)就认为是长按,否则认为是短按,然后执行PWM占空比加减操作。两个按键可以同时检测。长按按键不放的话每隔一定时间PWM占空比增加一个步长。

一周热门 更多>