1 基础能力训练
一、设计任务
1.基础RGB流转灯
在RGB-LED上实现三种颜色轮流变化,变化间隔时间为1S。
2.手动RGB流转灯
通过按键KEY1控制流转灯按B-R-G顺序变化颜色,每次按键流转灯颜色变化一次,可循环实现。注:用查询、外部中断和定时器中断扫描三种方法编写按键程序。
3.变速RGB流转灯
流转灯初始间隔为200mS,通过按键KEY2改变流转灯的间隔,每次按键间隔时间增加200mS;当间隔时间增加到1S后再次按键间隔时间恢复为初始值200mS。
4.综合流转灯
通过按键KEY2实现基础流转灯和手动流转灯两种模式的切换。初始模式为基础流转灯模式。当处于基础流转灯模式时,KEY1用于改变流转灯的间隔时间,如上题中所述。当处于手动流转灯模式时,KEY1用于控制流转灯变换颜色,如“手动RGB流转灯”题所述。
二、任务分解及设计思路
1-1
任务拆分: (1)点亮每个灯
(2)加入delay延时
(3)进行循环
程序流程图:
1-2
查询:
任务拆分: (1)添加按键,将按键与次数挂钩
(2)设置次数与对应模式,并设置按键上限,使其在0,1,2中循环
(3)将函数写入while循环,设定次数的值,转到对应的模式
(4)加入循环
程序流程图:

外部中断:
任务拆分: (1)设置变量与对应模式,并设置按键上限,使其在0,1,2中循环
(2)把按键加入外部中断,当按键按下时常数加一,通过变量选择哪个灯亮
(3)加入循环
程序流程图:

定时器:
任务拆分: (1)添加按键,并设置按键上限,使其在0,1,2中循环
(2)把延时加入定时器的方法,每个灯亮的时间通过延时设置
(3)当按键按下时候常数加一,通过常数选择哪个灯亮
(4)加入循环
程序流程图:

1-3
任务拆分: (1)将按键与常数d(0—>4)挂钩
(2)设置常数a(0—>2),使其自动进行跑马灯
(3)再通过按键改变d的值,达到上限时候进行次数清零
(4)加入循环
程序流程图:


1-4
任务拆分: (1)确定按键消抖或抬手反应,将KEY1和KEY2按键与次数挂钩,并设置 按键上限,使其分别在0,1和0,1,2中循环
(2)确认好两个按键的分工
(3)在两个模式中都加入按键按下KEY2(P3^3)时切换模式
(4)将1-1和1-3(查询)分别设置为两个模式
(5)将两个模式分别写为两个函数,在主函数中反复扫描,根据到按键的次 数进行模式选择。
程序流程图:

三、设计中解决的关键问题
1-1基础RGB流转灯
知识点:
设置IO口的模式:将三色灯P0(P0^0、P0^1、P0^2)设置为准双向口(P0M0=0;P0M1=0;)

LED为共阳,输入0点产生电压差,灯点亮,输入1熄灭。
1-2手动RGB流转灯
知识点:
通过设置全局变量,改变全局变量来选择灯的改变
查询:while循环每循环一次,对按键KEY1是否按下查询一次
定时器:通过配置定时器0的TH0(高8位)和TL0(低8位)对定时时间进行准确配置。
下图来源于CSDN论坛: https://blog.csdn.net/chenwenjie666/article/details/

红线:TMOD选择由那个定时器工作,工作方式
蓝线:TCON决定定时器是否启动
黄线:外部输入由TH和TL进行累计
紫线:当TH和TL计数溢出时向TCON进行申请报告
绿线:所有的定时中断都由TCON向CPU进行中断申请
黑线(外部中断):外部中断直接向CPU进行中断申请
1-3变速RGB流转灯
知识点:
通过delay函数进行延时时间的确定,可以提前设置好延时函数的时长,在按键操作的时候对已经设定好的时间进行使用。
也可以设置全局变量i,按键每按下一次i的数值加一。i的数值即for循环的次数,for循环每循环一次,函数延时时长倍数+1,i的数值达到上限时使用if语句进行判断清零。
1-4综合流转灯
知识点:
在按键按下时使用break跳出当前函数保持当前灯的状态,按键操作改变变量,进入另一种灯模式,以此来控制灯在切换模式时不改变灯的颜色
2.关键程序流程图及程序说明
设置一个全局变量,当有相关操作时,改变LED内对应灯的输入电平


五、课程设计的收获
第一章训练了对STC8H系列单片机的入门逻辑程序以及c语言基础逻辑,是了解一个单片机的基本过程和步骤。但更重要的是,我的查错能力与修改错误的基础能力得到了有效的训练。
第一章的训练让我受益匪浅,了解到基础程序的严谨、规范化和函数封装非常重要。同时非常感谢老师对代码中局部变量和全局变量使用的讲解,了解了在不同情况下所使用变量不同造成的效果不同和状态差距较大。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/28705.html