题目:
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;
COMMENTS | NOTHING