第五周 第一套题
数码管模块第一个写
设置数据显示变量
用switch 判断 给seg buf 数组不同数据
显示不一样的效果
写mode
温度采集界面
buf0写个A
1,2 都灭
定义一个闪烁的变量,500ms,超过了255要用int 型变量
再定义一个标志位,取反,闪烁用
放在中断里面
闪烁就是三目操作符判断真假给值
可能会出现的问题,不加限制条件可能会卡在数码管显示的最后一位
所以加一个判断,如果最后一位数字没有被输入数据的时候.才会闪烁
数据显示界面
难写的部分可能是按下s11之后输入小数部分的问题
要先输入了一个数字之后才能输入小数点(不是自动补0)(限制输入一个数字之后才能输入小数点)(设计思路,只有第一位数字输入的地方不是- 才能输入小数点)
小数点输入条件 采集界面
一次输入的数据只能有一个小数点, 应定义一个标志位,按下小数点之后就把标志位拉高,再次输入小数点的时候就不能输入小数点了(限制输入一次小数点)
小数点的输入方式,并不是处理成了一个小数,而是说只是在数码管上面点亮一个点,所以有个疑问就是如果调用了这个数字的话 ,数字小数点的 位置应该怎么检测
建议用float 型 去读取数据,不是说拆分
定义变量按下s11之后马上记录按键, 按下按键之后,指针是会自动加加的,所以不能用指针进行判断,所以得定义新变量去用于判断
s16温度采集界面下判断数据是否合法,进行选择保存,若非采集界面就是将指针,数组,小数点的输入标志都复位,模式跳转到 seg mode 0 , if else 判断
如何判断数据输入是否合法,进行判断小数点是否使能?或者是指针小于3,就是无效的数据,跳转指针,小数点,数组都复位, else ,小数点使能,进入范围的判断
温度范围0-85,如果没有小数点,一定是超过了85
四舍五入的操作,最后一位加5
然后判断是否符合上限
浮点型显示在数码管上
参数设置界面
难点在于s14 s15 加减长按的实现,例如s14长按就是一直加,然后加到上限就回到下限,实现一个循环,松手的时候就不减,区分长按和短按区别,考点就在于区别长按和短按

需要用到三行代码里面的Key_Up
但是需要区分长按短按的区别, 意思就是需要进行长按短按的检测,这个时候就需要引入一个计时的变量,使用if进行判断

设置一个标注位Time_Flag 用于计时
如果标志位等于1就一直加,加到600ms就(其实可以不加限制,毕竟加到65535秒的傻逼还是比较少的)
如果在500ms 之内产生了上升沿,就复位,标志位加1,
如果在500ms 之外,还没有产生上升沿 , 此时key old 一直保持 s 14 按下, 就一直加, 抬起来的时候,上升沿检测到, 就加一,直到抬起就复位
问题 1 为什么 在运行的时候,数字加不是像正常的一样是流畅的加,而是卡一下卡一下的加
分析减速,数码管500ms 刷新, 按键是10ms 刷新, 10ms加一次,但是数码管 500ms 刷新一次,所以加减不连贯,把数码管的刷新时间缩短就行
很多芯片获取数据分析大概都是500ms ,信息处理函数的命名原则也是在这里,符合芯片处理数据的时间
亮度等级的设置
比如说亮度等级三个等级, 定义246三个数字,
和闪烁的原理差不多
在一定周期内, 亮多少时间, 灭多少时间,比如一条线.
!(file:///C:/Users/29035/AppData/Roaming/Typora/typora-user-images/image-20251230144945437.png?lastModify=1769412452)
如果亮到一半 然后灭一半, 就是一半的亮度
闪烁的话可能是周期设置的太长了,这个就是原理
定义一个周期的变量, 然后定义一个什么时候拉高拉低的变量

如果小于这个周期,就让他亮
如果大于这个周期, 就让灭,循环