我是大一新生 我有思路但是不会写程序 求教 急啊!!!
我是大一学生,刚接触了2周单片机,老师搞了个竞赛,现在要求是有电机A,老师给定电机B,电机B装有叶片(匀速转动,可以改变转速),我要使我的电机A可以与它的电机保持同转速(最好是相位都一样,我没打算做),在开始前和达到相同速度之后均以灯光方式表示。
用的芯片是AT89S51;
p0.0、p0.1是两个红色led,低电平亮;p2.1和p2.0是两个按动按钮,按下为低电平;p2.4是电机,低电平运行;p2.5是一个红外接受管,发射管始终发射,用来测叶片经过次数;p2.3是另外一套红外,用来测我自己电机的叶片(这红外就等于是一个光电门);复位电路和晶振(12mhz)都装好了。
我现在考虑:
1.我要电机可以匀速,我就给p2.4端口高低电平交替变换的方波,通过改变高低电平时间的比例来使它在不同速度稳定(要用计时器t0)
2.我要同时使用r1和r2来记录一定时间内(用计时器t1)叶片转过次数(p2.3和p2.5由高变低再变高的过程),通过比较来确定转速,以此来达到同转速的效果(这里要循环,但是我没想好怎么跳出循环,因为转速相同不好操作)
3.最后就是怎么加上灯光的提示,特别是最后的。
现在就是这样,第一天过去了,上午把板子焊好了,一下午就在研究怎么写代码,之前老师讲过一点汇编,所以最好有哪位大神可以给我把这个程序写一下啊,是在不行用c也可以啊,有说明就更加棒了!
明天还有一上午,求各路大神一起帮帮我啊!!
[解决办法]
基本上可以这样:
你设置一个有符号数据类型的计数器变量,用来保存和比较两个电机转动的周数。
你要做的,是不断地增减比较变量的值。
当检测到 A 转动一周,变量加 1;检测到 B 转动一周,变量减 1。
当变量绝对值在 0 和 1 之间跳变时,说明转速相同。
当绝对值大于某一个阈值时,说明相差太大,需要调整。
如果是正值,你就要提高电机 B 的供电电压,反之亦反。改变电压后,变量清零,进入新一轮检测。
[解决办法]
为什么不用 C,汇编看不懂