![单片机C语言程序设计实训100例:基于STC8051+Proteus仿真与实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/270/43738270/b_43738270.jpg)
3.5 分立式数码管循环显示0~9
在仿真电路中,单只分立式数码管连接在P0,并在程序运行时循环显示0,1,2,…,9。在设计调试程序时,要首先掌握共阴、共阳数码管的基本结构及数字段码设计。分立式数码管循环显示0~9的电路如图3-6所示。在图3-6中,附加了单个实物数码管的外部引脚正面视图。
![](https://epubservercos.yuewen.com/DF9E4A/23020648309755406/epubprivate/OEBPS/Images/42553-00-63-2.jpg?sign=1739096882-4TFGi2pqeELgEXXAzbeFzkC7KSoHWFg0-0-1b769b07f6e895c0316c9d440a74050d)
图3-6 分立式数码管循环显示0~9电路
1. 程序设计与调试
1)数码管简介
仿真电路中单个共阴数码管组件名称为7SEG-COM-CAT-GREEN。其中,7SEG表示七段(7 Segments);COM-CAT表示共阴(Common-Cathode);GREEN表示显示颜色为绿色。如果选择共阳数码管组件,则其名称为7SEG-COM-AN-GREEN。其中,COM-AN表示共阳(Common-Anode)。仿真电路给出了数码管的外部引脚,共阴数码管的COM引脚接GND,共阳数码管的COM引脚接VCC。
单个实物数码管尺寸有0.28、0.36、0.4、0.56in[1]等,对应型号为2811BS、3611BS、4011BS、5611BS或2811AS、3611AS、4011AS、5611AS等。在实物数码管型号中,带有B的表示是共阳数码管(对应于仿真元器件型号中的COM-AN:CA),带有A的表示是共阴数码管(对应于仿真元器件型号中的COM-CAT:CC)。其中,3611A/B、5611A/B等比较常用。
2)数码管段码表的编写
本案例电路中,共阴数码管段码引脚A~G连接在STC15的P0引脚。当P0某引脚值为1时,对应数码管段被点亮。在程序中,预设了数字0~9的共阴数码管段码表。数字0~9的段码按固定时间间隔由P0循环输出,形成数码管循环显示数字效果。
为便于理解段码的编写,表3-1给出了数字0与7的共阴、共阳数码管段码编写示例。
表3-1 数字0与7的共阴、共阳数码管段码编写示例
![](https://epubservercos.yuewen.com/DF9E4A/23020648309755406/epubprivate/OEBPS/Images/42553-00-64-1.jpg?sign=1739096882-s7rtqaTYfpMYTValQveYuqodgFhGp2Tm-0-a7ab9fa37158b0ff14edf5fcc3ca5f06)
说明:对于共阴数码管,要点亮的管段对应引脚必须为高电平;对于共阳数码管,要点亮的管段对应引脚必须为低电平;二进制段码最高位对应小数点DP,最低位对应A段。
单片机大量应用设计涉及数码管显示,数码管段码是相对固定的,本案例程序中提供的共阴数码管段码表SEG_CODE将在后续案例中继续使用。
2. 实训要求
① 仍使用程序中提供的共阴数码管段码表,在单个共阳数码管上滚动显示数字0~9。
② 将共阴数码管段码表改为共阳数码管段码表,改写程序使其仍实现相同功能。
③ 将两只分立数码管分别连接在P1、P2端口,实现00~99的循环显示。
3. 源程序代码
![](https://epubservercos.yuewen.com/DF9E4A/23020648309755406/epubprivate/OEBPS/Images/42553-00-64-2.jpg?sign=1739096882-q6sUxLzyqb32v4hC2cH58ghnnu9FMrKm-0-a6deedd97fc8db68262b6459712863a2)
[1] 1in=0.0254m。