单片机任务解析:串口读取字符串+l298n电机驱动

发表于 2023-12-06  133 次阅读


题目:

1.按下独立按键B1启动或关闭装置,装置启动后lcd显示-P-50,50为pwm的初始值

2.按下B2进入设置模式,lcd显示-S-50,要求设置模式下pwm值每1秒闪两次,不断闪烁

3.按下B3 pwm+10,按下B4 pwm-10,只有在设置模式中才能改变pwm值,lcd上的显示要同步改变.pwm要有上限100,pwm减小至负值电机要反转,pwm总范围-100——100,正负表示方向不同

4.通过串口给单片机发送”当前值-改变值”来修改pwm,当前值正确才可以修改,改变值可以为-100——100里任意值,lcd同步变化,只有在设置模式有效

5.按下矩阵键盘k1,把pwm值存在AT24C02中,断电再上电后pwm的初始值为存在AT24C02中的值

6.按下k2,关闭/开启电机,但不关闭/开启lcd

7.电机由电机驱动控制

 

我写的答案:

本内容需要登录后才能查看

解析:

串口接收字符串中,由于串口传入的数据为 当前值-改变值 ,所以应该使用文本模式来发送数据。我们定义一个函数来接受字符串,当超过一定时间是,函数结束,此时读出一个字符串。

由于串口通信会有误差,我们需要调整波特率来减小误差,并通过上面的函数方法使读取到的数据基本不出现误差,此处我们选择了9600波特率。

读取出字符串后,我们要对字符串进行分割处理,要把中间的- 转换为\0 ,并且要在末尾也加上\0,否则在解析数据时会出现问题(已遇到问题)。

实现PWM:我选择在定时器中发送pwm而不才用延时函数的方法。在定时器中定义一个比较量count,示例代码:

            if(countT<compare)
                IN1=1;
            else
                IN1=0;

 

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

mzqmountain.xyz 小萌新的小小博客~