本文章 来自原创专栏《51单片机手把手教学》,讲解如何使用 Keil uVision
构建 51单片机 程序,发布文章并 会持续为已发布文章添加新内容! 每篇文章都经过了精打细磨!
↓↓↓通过下方对话框进入专栏主页↓↓↓
CSDN 请求进入专栏 _ O x
是否进入《51单片机手把手教学》?
确定
文章目录
一、数码管简介
又称LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成一个“8”字型的发光器件。
二、静态数码管 —— 显示数字
1. 原理
常见的数码管如上图,这是一个三位八段数码管。八段指的是数码管上有8个发光体(数字“8”上有7个段 + 右下角一个小数点)
使数码管显示数字的方法就是控制不同的发光体来发光,达到显示不同数字的目的。方法与上节流水灯一致。八段数码管中八个LED发光体有两种接法:共阴极 和 共阳极。所谓共阴极,即8个LED灯的负极接在一起作为数码管的公共端,如下图。

对于共阴极数码管,公共极接地,其余对应极接高电平时,对应发光体被点亮。如上图,数码管将要显示数字7
。
数码管内部原理图简化如下:
2. 使用方法及代码示例
假设数码管的a,b,c,d,e,f,g,dp
分别接到了P0.0, P0.1, P0.2, P0.3, P0.4, P0.5, P0.6, P0.7
则代码如下
(1)方法一:
以数字 "7"
为例:
#include "reg52.h"
sbit smg_a = P0^0;
sbit smg_b = P0^1;
sbit smg_c = P0^2;
sbit smg_d = P0^3;
sbit smg_e = P0^4;
sbit smg_f = P0^5;
sbit smg_g = P0^6;
sbit smg_dp = P0^7;
void main(){
smg_a = 1; // 点亮a段
smg_b = 1; // 点亮b段
smg_c = 1; // 点亮c段
smg_d = 0; // 如下,其余全熄灭
smg_e = 0;
smg_f = 0;
smg_g = 0;
smg_dp = 0;
while(1);
}
或者(仍以数字 "7"
为例:)
#include "reg52.h"
sbit smg_a = P0^0;
sbit smg_b = P0^1;
sbit smg_c = P0^2;
sbit smg_d