![]() |
多情不自作 发表于 2025-7-6 12:33 只要在MCU属性里设置晶振频率即可,VCC和RST都是系统默认的,不需要画出来。 |
WL0123 发表于 2025-7-5 21:25 可能是我别的地方有问题,你这个为什么不用搭最小系统吗 ![]() |
xianfajushi 发表于 2025-7-5 16:59 好像是的,谢谢大佬 |
### 问题分析 篮球计分器在按键操作时能正常计数,但松开后数码管显示固定为“88”,这是动态显示刷新机制不足导致的典型问题。在仿真环境中,由于缺乏实际硬件的电荷保持特性(如电容滤波、余晖效应),若动态扫描频率不足,数码管会因无法持续获取正确数据而显示异常。当前代码中`display()`函数仅在按键处理时被调用,主循环未实现高频扫描,导致非按键状态下数码管输出默认异常值。 ### 解决方案 修改后的代码通过优化动态显示逻辑与按键处理流程,确保数码管高频刷新: 在动态显示部分,增加静态变量`position`实现十位与个位的交替扫描,通过`P0=0x00; P2=0x00;`进行消隐处理以避免残影,并缩短单次显示延时来提升扫描频率。按键处理上,将检测逻辑封装为独立函数`key_scan()`,通过`key_pressed`标志位标记按键状态,在按键释放循环中持续调用`display()`以实时同步计数变化。主循环采用“先显示后按键”的结构,确保每轮循环都强制刷新数码管,避免因按键处理阻塞显示更新。 ### 关键改进说明 优化后的显示机制通过`position`变量实现分时扫描,配合消隐操作消除鬼影,使十位(P2口)与个位(P0口)的段码输出更稳定。针对仿真环境无硬件保持特性的特点,通过软件高频刷新确保`count`变量的实时值同步到数码管。若数码管仍显示异常,需检查仿真配置(如数码管是否为共阴类型、端口连接是否正确),或降低仿真速度以匹配软件扫描频率。该方案通过动态扫描频率优化,有效解决了仿真环境下的显示同步问题。 |
### 问题分析 篮球计分器在按键操作时能正常计数,但松开后数码管显示固定为“88”,这是动态显示刷新机制不足导致的典型问题。在仿真环境中,由于缺乏实际硬件的电荷保持特性(如电容滤波、余晖效应),若动态扫描频率不足,数码管会因无法持续获取正确数据而显示异常。当前代码中`display()`函数仅在按键处理时被调用,主循环未实现高频扫描,导致非按键状态下数码管输出默认异常值。 ### 解决方案 修改后的代码通过优化动态显示逻辑与按键处理流程,确保数码管高频刷新: 在动态显示部分,增加静态变量`position`实现十位与个位的交替扫描,通过`P0=0x00; P2=0x00;`进行消隐处理以避免残影,并缩短单次显示延时来提升扫描频率。按键处理上,将检测逻辑封装为独立函数`key_scan()`,通过`key_pressed`标志位标记按键状态,在按键释放循环中持续调用`display()`以实时同步计数变化。主循环采用“先显示后按键”的结构,确保每轮循环都强制刷新数码管,避免因按键处理阻塞显示更新。 ### 关键改进说明 优化后的显示机制通过`position`变量实现分时扫描,配合消隐操作消除鬼影,使十位(P2口)与个位(P0口)的段码输出更稳定。针对仿真环境无硬件保持特性的特点,通过软件高频刷新确保`count`变量的实时值同步到数码管。若数码管仍显示异常,需检查仿真配置(如数码管是否为共阴类型、端口连接是否正确),或降低仿真速度以匹配软件扫描频率。该方案通过动态扫描频率优化,有效解决了仿真环境下的显示同步问题。 |
程序写的不算好,但显示没有问题。 ![]() |
display() 里面先清0再赋值试试 |
这种情况通常是数码管无消隐处理代码导致。 |