某基于 Mega128 单片机的嵌入式设备使用 5 位 LED 数码管作为显示输出其部分硬件接线和动态扫描显示程序如图所示, 数码管的 5 个位引脚分别连接至单片机 PB2 ~PB6 引脚; 1) 请根据动态扫描原理确定程序中位扫描码BitSelect[0] - BitSelect[4]的值: 2)若需要每隔约 2 秒周而复始地依次显示数组 digs[5]={123,5,22,2000, 0) 中的数据,在不使用定时器的情况下, 应当如何在此程序基础上编程实现(可用文字或结合流程图写出设计思路 ) ? 要求运行过程中数码管上的显示始终是稳定连续的,不能出现无显示或瞬间闪烁等状态 void Display(void) { unsigned char i; for(i=0;i<= 4;i++) { PORTA = table[DisBuffer[i]]; PORTB = BitSelect[i]; delay ms(5); PORTB = OXFF; } } int main(void) { Port Init(); WriteDisBuffer(dig); while(1) { Display(); delay_ms(20); } }
时间: 2024-04-01 20:37:18 浏览: 46
1) 根据动态扫描原理,BitSelect[0] - BitSelect[4] 的值应分别为 0x01, 0x02, 0x04, 0x08, 0x10,即分别对应着数码管的个位、十位、百位、千位和万位。
2) 不使用定时器的情况下,可以利用计数器来实现每隔约 2 秒周而复始地依次显示数组 digs[5]={123,5,22,2000,0) 中的数据。具体实现步骤如下:
- 在 main 函数中设置一个计数器 count,初值为 0。
- 在 Display 函数中添加一个判断语句,当 i=4 时,将 count 加 1,并将其对 5 取模,即 count = (count + 1) % 5。
- 在 Display 函数中,将 DisBuffer 数组设置为 digs[count],即每次循环时显示数组 digs 中的一个元素。
- 在 Display 函数中,将 delay_ms(5) 改为 delay_ms(2),以保证每隔约 2 秒钟显示一次数据。
- 在 while 循环中,将 delay_ms(20) 改为 delay_ms(2),以保证每隔约 2 秒钟循环一次。
流程图如下:
注:其中“计数器 count 加 1”、“计数器对 5 取模”、“DisBuffer 数组设置为 digs[count]”、“delay_ms(2)”这四个步骤可以放在 Display 函数中的任意位置,只要能够保证实现每隔约 2 秒钟显示一次数据即可。
阅读全文
相关推荐















