关于51单片机的一个问题
请问各位大侠,我现在用一个51单片机控制一个电机,每隔单位时间就转一下,电机每转一下,数码管显示一个数字,这个数字是我通过键盘输入进去的(数字不连续)。也就是说单片机上电...
请问各位大侠,我现在用一个51单片机控制一个电机,每隔单位时间就转一下,电机每转一下,数码管显示一个数字,这个数字是我通过键盘输入进去的(数字不连续)。也就是说单片机上电后,我先输入n个数据,每输入一个数据用一个按键隔开,最后按个确定键,电机定时转动,每转动一次,显示一个我刚才输入的n个数据中的一个。这个程序该怎样去写?如果我现在想提高输入效率,在电机边转动的时候,我边输入数据,边转动边输入,电机没转动一次,依旧可以挨个显示数据,这样该怎么办?一个单片机能够解决问题吗?需要两个单片机串口通信吗?多谢了
展开
展开全部
建议你先画出流程图,然后对照着些程序。
首先,输入的数据存储起来,
按下确定键,定时器定时,
到时间执行电机转动函数,再运行显示函数,
一直进行下去直到没有数据为止
对于你第二个问题,仍然给你些提示
定时器复用学过吧,比如你每100ms运行一次电机,40ms检测按键
那么定时器定时时间为20ms,定时器中断里面用IF语句,n=2时运行检测按键
n=5时运行电机,这样你就有时间边输入数据,边运行程序,
我也是读了一边你的问题,临时想出来的,不知道可不可行。
首先,输入的数据存储起来,
按下确定键,定时器定时,
到时间执行电机转动函数,再运行显示函数,
一直进行下去直到没有数据为止
对于你第二个问题,仍然给你些提示
定时器复用学过吧,比如你每100ms运行一次电机,40ms检测按键
那么定时器定时时间为20ms,定时器中断里面用IF语句,n=2时运行检测按键
n=5时运行电机,这样你就有时间边输入数据,边运行程序,
我也是读了一边你的问题,临时想出来的,不知道可不可行。
追问
您的意思我明白了,可是电机还有停的时候啊?并不是一直转的啊,这该怎么办呢?
展开全部
一个单片机可以解决这个问题,也用不着串口通信,加一个外部存储,24c02之类的芯片,就可以了,51的内存可能没你要的那么大,在电机转动的时候写第二个缓冲区就可以了,但是,程序一定要知道,刚才的数据是有效的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看你的电机驱动方式。如果驱动部分不需要单片机大费心思,那么这么点儿逻辑一个单片机足够了。
边输入边显示数据,自己建个RAM FIFO很好实现的,主程序无非就是定时检测一下按键输入,并且截取输入数字,到特定按键入队列;定时驱动电机旋转并更新数码管显示输出。
不过要看你这个单位时间有多长,如果单位时间远远超出输入所需的时间,会导致堆积待显示的数据过多,需要设置丢弃条件以免溢出。反之若单位时间太短,那么有若干次电机转动时数码管显示的数字会是一样的。
边输入边显示数据,自己建个RAM FIFO很好实现的,主程序无非就是定时检测一下按键输入,并且截取输入数字,到特定按键入队列;定时驱动电机旋转并更新数码管显示输出。
不过要看你这个单位时间有多长,如果单位时间远远超出输入所需的时间,会导致堆积待显示的数据过多,需要设置丢弃条件以免溢出。反之若单位时间太短,那么有若干次电机转动时数码管显示的数字会是一样的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提高输入效率,在电机边转动的时候,我边输入数据,边转动边输入,电机没转动一次,依旧可以挨个显示数据,
----
利用定时器,一边计时,用来控制电机,一边扫描键盘,及时进行数据处理。
这不是很简单的事情吗?
想想数码管的动态扫描,同时还能处理其它很多事情。
从来没有听过过:显示数码时,就不干别的了。
----
利用定时器,一边计时,用来控制电机,一边扫描键盘,及时进行数据处理。
这不是很简单的事情吗?
想想数码管的动态扫描,同时还能处理其它很多事情。
从来没有听过过:显示数码时,就不干别的了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我路过 ,给你推荐下 单片机的 PWD 模式 你自己研究下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询