关于51单片机的一个问题

请问各位大侠,我现在用一个51单片机控制一个电机,每隔单位时间就转一下,电机每转一下,数码管显示一个数字,这个数字是我通过键盘输入进去的(数字不连续)。也就是说单片机上电... 请问各位大侠,我现在用一个51单片机控制一个电机,每隔单位时间就转一下,电机每转一下,数码管显示一个数字,这个数字是我通过键盘输入进去的(数字不连续)。也就是说单片机上电后,我先输入n个数据,每输入一个数据用一个按键隔开,最后按个确定键,电机定时转动,每转动一次,显示一个我刚才输入的n个数据中的一个。这个程序该怎样去写?如果我现在想提高输入效率,在电机边转动的时候,我边输入数据,边转动边输入,电机没转动一次,依旧可以挨个显示数据,这样该怎么办?一个单片机能够解决问题吗?需要两个单片机串口通信吗?多谢了 展开
 我来答
zjp2531850
2012-12-31 · TA获得超过235个赞
知道答主
回答量:342
采纳率:0%
帮助的人:118万
展开全部
建议你先画出流程图,然后对照着些程序。

首先,输入的数据存储起来,
按下确定键,定时器定时,
到时间执行电机转动函数,再运行显示函数,
一直进行下去直到没有数据为止

对于你第二个问题,仍然给你些提示
定时器复用学过吧,比如你每100ms运行一次电机,40ms检测按键
那么定时器定时时间为20ms,定时器中断里面用IF语句,n=2时运行检测按键
n=5时运行电机,这样你就有时间边输入数据,边运行程序,
我也是读了一边你的问题,临时想出来的,不知道可不可行。
追问
您的意思我明白了,可是电机还有停的时候啊?并不是一直转的啊,这该怎么办呢?
ztcg8
2013-01-01
知道答主
回答量:27
采纳率:0%
帮助的人:11.7万
展开全部
一个单片机可以解决这个问题,也用不着串口通信,加一个外部存储,24c02之类的芯片,就可以了,51的内存可能没你要的那么大,在电机转动的时候写第二个缓冲区就可以了,但是,程序一定要知道,刚才的数据是有效的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2012-12-31 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
看你的电机驱动方式。如果驱动部分不需要单片机大费心思,那么这么点儿逻辑一个单片机足够了。
边输入边显示数据,自己建个RAM FIFO很好实现的,主程序无非就是定时检测一下按键输入,并且截取输入数字,到特定按键入队列;定时驱动电机旋转并更新数码管显示输出。

不过要看你这个单位时间有多长,如果单位时间远远超出输入所需的时间,会导致堆积待显示的数据过多,需要设置丢弃条件以免溢出。反之若单位时间太短,那么有若干次电机转动时数码管显示的数字会是一样的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2013-01-03 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
提高输入效率,在电机边转动的时候,我边输入数据,边转动边输入,电机没转动一次,依旧可以挨个显示数据,

----
利用定时器,一边计时,用来控制电机,一边扫描键盘,及时进行数据处理。

这不是很简单的事情吗?

想想数码管的动态扫描,同时还能处理其它很多事情。
从来没有听过过:显示数码时,就不干别的了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
61151767
2012-12-31
知道答主
回答量:22
采纳率:0%
帮助的人:7.8万
展开全部
我路过 ,给你推荐下 单片机的 PWD 模式 你自己研究下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式