蓝桥杯单片机第三周

蓝桥杯单片机第三周

时钟问题:
(1)c语言问题

(2)逻辑问题
1、按键失灵
2、界面切换时任然处在时钟显示界面
界面切换时将显示数组中的值传递给设置界面数组再将设置数值中的值给Seg_Buf通过Seg_Buf进行显示设置界面,区分等于号的使用情况,(==为判断两变量是否相等,=为赋值符号)
3、数码管显示(选中的数码管闪烁、所有数码管一起闪烁)
所有数码管闪烁:确定数码管以好多秒为周期闪烁,定义系统时钟变量与数码管显示标志位Seg_Flag,放入定时器进行累加,判断时间后,若为真则执行Seg_Flag^=1,在设置界面进行标志位的判断,0熄灭,1显示,完成数码管闪烁功能
选中数码管闪烁:

学习情况

1、完成b站基于定时器的倒计时以及时钟部分任务:

(1)采用分区块编程思路将大模板完成
Key_Proc()、Seg_Proc()、Led_Proc()、Timer0_Init()、Timer0_Server()、main()
tips:Key_Proc()、Seg_Proc()分别采用Key_Slow_Down、Seg_Slow_Down完成按键、数码管的延时

(2)按键检测功能
按键检测定义变量Key_Val、Key_Old、Key_Down完成按键检测功能 通过按键底层Key_Read()获取键值保存至Key_Val,通过Key_Down判断具体某一个按键按下

(3)完成数码管显示界面
Seg_Buf、Seg_Pos、Seg_Mode、Time_Count四个变量完成数码管显示。
Seg_Buf:数码管显示数据存储,通过定时器中断完成动态数码管显示
Seg_Pos:选择某一个数码管显示数据
Seg_Mode:实现显示模式与设置模式的切换
Time_Count:数码管倒计时显示内容

(4)逻辑功能实现
1、按键1:按下倒计时功能启动 Time_Count数值发生变化
tips:设定一个系统1000ms标志位Timer_1000ms,每当Timer_1000ms
累加到1000时,Time_Count–实现倒计时功能
2、按键3:通过改变Seg_Mode的值进行界面切换(Seg_Mode 0 显示界面 1 设置界面)通过Seg_Mode^=1,进行界面切换,从设置界面切换到显示界面时,需要将设置界面是的参数变量值传递给Time_Count完成设置参数功能
3、按键4:设置Seg_Dat 数组存放设置参数数据、Seg_Dat_Index实现素组下标索引,通过改变Seg_Dat_Index数值进行改变Seg_Buf[4]以及Seg_Buf[5]中的值进行改变倒计时数值
4、数码管闪烁功能 :亮0.5s 灭0.5s定义一个bit型标志位Seg_Flag、Timer_500ms标志位,将Timer_500ms放置在定时器中断中经进行自增,每500ms就执行Seg_Flag^=1的功能,Seg_Proc()中的设置界面执行闪烁功能 Seg_Flag=0执行显示功能 Seg_Flag=1时执行熄灭功能

总结

(1)定时器装载的数值必须正确 不然会导致定时时间不为1ms

(2)设置的变量需要保存到控制显示界面显示的变量上

(3)数码管有几个显示界面就定义几个数组

反思

1、设置界面切换回显示界面时设置数未成功

2、语句放的先后顺序会影响程序gong’neng