任务4 8位数码管动态显示设计

设计要求

使用单片机P0和P2端口作为输出口,外接一个8位LED数码管,编写程序,使数码管动态显示“872AF635”。

硬件设计

由LED数码管显示方式可知,单片机控制8位LED数码管进行显示时,通常采用动态显示方式。使用单片机P0和P2端口控制8位LED数码管显示相应内容时,在硬件设计中应该考虑P0和P2端口的I/O驱动能力。通常P0端口控制每位LED数码管段码的亮或灭;P2端口实现LED数码管的片选控制。所以在硬件电路设计中,P0端口需接上拉电阻,然后与LED数码管的段码连接;P2端口通过电流驱动芯片(如74LS245)或三极管与LED数码管的片选端连接。

在桌面上双击图标,打开Proteus 8 Professional窗口。新建一个DEFAULT模板,添加表4-3所列的元器件,并完成如图4-11所示的硬件电路图设计。

表4-3 8位数码管动态显示设计所用元器件

程序设计

8位数码管要动态显示 “872AF635”,也需要将所显示的字形代码放在所创建的数组中。在定义数组时,应该先建立一个0~F的数组tab[],然后再建立一个数组dis_buff[]指定所显示的内容。当8位数码管动态显示时,P 2.0~P 2.7依次输出高电平,以控制对应的数码管点亮选通,同时P0端口输出相应的字形代码,使已选通点亮的LED数码管显示相应的内容。要实现这些控制,可以采用两种方式:顺序控制、循环赋值。8位数码管动态显示程序流程图如图4-12所示。

源程序

1顺序控制实现8位数码管动态显示的源程序

图4-11 8位数码管动态显示电路图

图4-12 8位数码管动态显示程序流程图

说明:顺序控制实现

2循环赋值实现8位数码管动态显示的源程序

调试与仿真

首先在Keil中创建项目,输入源代码并生成Debug.OMF文件,然后在Proteus 8 Professional中打开已创建的8位数码管动态显示电路图并进行相应设置,以实现Keil与Proteus的联机调试。单击Proteus 8 Professional模拟调试按钮的运行按钮,进入调试状态。8位数码管动态显示仿真效果图如图4-13所示。

如果将delay(1)指令中的数字改大,则会看到LED数码管显示不太稳定,有一定的闪烁感。如果更改数组dis_buff[]中数字,显示内容也会发生相应的改变。

图4-13 8位数码管动态显示仿真效果图