基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.15)

1.任务所需实现基本功能

关机状态时白灯亮蓝灯灭,此时长按按键无反应,白灯亮度降低的状态,蓝灯保持灭的状态。点按按键一次,白灯熄灭,蓝灯亮此时W引脚控制的灯亮。继续点按按键。蓝灯亮,此时W引脚控制的灯灭,Y引脚控制的灯由灭到亮。再短按一次W引脚、Y引脚控制的灯与蓝灯齐亮。在开机状态时可以通过长按按键来控制W引脚、Y引脚控制的灯亮度。

2.仿真时为什么一直显示Device Type not Match,看文档原因说明是所选芯片与连接的仿真器不匹配

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.15)_第1张图片

软件报错界面

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.15)_第2张图片

解决方案,采用其他版本的IDE

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.15)_第3张图片

3.目前的计划思路

假设在硬件的处理中,触摸按键时,会有一个事件发生,那么这个时候就要在一个循环里无时无刻地检测这个事件是否发生,如果发生的话那么就执行控制蓝白灯的程序。

第一个难点就在于如何区分长按还是点按

目前的思路是短时间内触发多次按键按下事件视为长按,其他未达到该事件数视为短按。

第二个难点就是根据长按或者短按单片机会执行不同逻辑的代码段,例如说控制灯的状态切换或者是控制相应的灯亮度变化。

目前的思路:利用状态机或者说switch case语句来对状态进行切换。至于说控制灯的亮度变化的话就通过事件的多少来按比例计算PWM的占空比大小。还有一个思路就是利用定时器来判断,如果代表长按事件正在发生的标志位为1是就可以适当对PWM的占空比进行设置,这样就可以达到控制灯零度达到最低或者最高亮度的时长。

4.目前的疑惑

1.如何观察调试信息,比如说其他单片机可以利用串口来打印调试信息,那么这个在线仿真的打印信息可以在哪里以何种方法获知呢?

2.在仿真板上实现了对应的功能再烧录到样品板上。这样做不是又需要更改引脚吗,为什么不直接用样品板来仿真?

3.在仿真板上未观察到贴片的LED灯,是需要自己再进行焊接吗?

你可能感兴趣的:(实习,单片机,c语言)