【51单片机】七段数码管显示实验+详细讲解

发布者:BlissfulHiker最新更新时间:2024-04-07 来源: elecfans关键字:51单片机  七段数码管  显示实验 手机看文章 扫描二维码
随时随地手机看文章

前言

继上次仿真实验——【51单片机】矩阵键盘线反转法实验仿真之后,尽管也对点阵LED进行了学习,但是,点阵LED的显示效果不佳(仿真时的色彩、明亮程度等),加上大多数时候我们在计算器上看到的是七段数码管,所以在学习了学校课程之后,我也进行了尝试。这次主要是记录七段数码管的使用方法,在此之后,我考虑把键盘扫描(线反转法)、七段数码管、80C51结合起来,把整个计算器的功能完善,也算是完成一个小项目。

因为我认为光学理论只是很容易忘记,且容易磨灭兴趣,所以在学习过程中以做一个计算器为目标,循序渐进地学习,缺什么知识就补充什么知识,就像前几次所作的一样:
【51单片机】矩阵键盘线反转法实验仿真
【51单片机】点阵LED的显示实验
【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤
下面是这次七段数码管的学习记录。

一、兵马未动,粮草先行——认识七段数码管

1、关于显示器

我们常见的显示器一般分为LED、LCD和CRT,当然除此之外还有其他种类的显示器。其中:

  • LED是发光二极管,核心原理是半导体的电光转化,在电光转化过程中发热很少,相对白炽灯更节能,目前常用作照明工具;

  • LCD是液晶显示器,核心原理是液晶(介于液体和晶体的一种物质)的各向异性使特定区域透光、部分区域不透光来呈现画面;

  • CRT是阴极射线管,常用在示波器和老式电视机上,核心原理是控制电子束的偏转角来控制电子打在荧光屏上的不同位置,使之出现我们想要的图案。

2、七段数码管

今天要说的就是LED中的一员——七段数码管。七段数码管也叫七段LED显示器,是由数个LED组成的阵列,并封装在一个标准的外壳内。
在这里插入图片描述

如图,七段数码管通常有七段,但现在为了表示小数,加入了小数点,所以其实变成了名字叫七段数码管的八段数码管。图上a、b、c、d、e、f、g、dp则是每段的名字。cs管脚类似于片选信号。
我们只需要点亮特定的管脚就能形成一个数字或者字母。

3、七段数码管的结构

在这里插入图片描述
如图是七段数码管的内部结构,将图中的二极管按特定阵列排布就得到了常见的数码管。

  • 共阴极

    :顾名思义,这是将二极管的阴极连接到同一条导线上,只要某路地阳极变为高电平,该路LED就会被点亮。

  • 共阳极

    :二极管地阳极连接到一条到线上并连接电源。当某路阴极变为低电平,该路地LED就会亮起。

4、数码管显示方法

七段数码管显示也有两种方式,分别是静态显示和动态显示

  • 静态显示:在静态显示系统中,每一位显示器都应该有各自地锁存器、译码器和驱动器锁存器,如果软件译码,译码器也可以省略。锁存器用来所存待显示数字的BCD码,所以每次显示输出后都能保持不变。但是占用的位数很多,每一位需要8根数据线。

  • 动态显示

    :在动态显示系统中,微处理器要定时地向各个显示器进行扫描,只要扫描速率足够快,由于视觉暂留现象就会给人以恒定显示的表现。动态显示可以减少硬件的使用,但是需要微处理器一直为它工作。

二、数码管显示程序

1、静态显示

静态显示用到的元件有:74LS273(锁存器)×4、80C51、7SEG-MPX1-CA(七段数码管)×4、RESPACK-8(电阻)、GROUND、POWER和BUTTON
连接线路如图:
在这里插入图片描述

静态显示的代码如下:


#include

 

unsigned int d[4]={0xA4,0xC0,0xA4,0xf9};//共阳极的数码管显示的数字,一次是2、0、2、1

unsigned int cs[4]={0x0E,0x0D,0x0B,0x07};//片选,低电平时,锁存器打开,可以写入数据。高电平时锁存

void main(void)

 { 

   int i;

EA=1;//开中断

EX0=1;//开外部中断0

INT0=1;//下降沿触发INT0中断

for(i=0;i<4;i++){

P2=cs[i];//打开一个锁存器

P0=d[i];//向该锁存器写入数据

}

P2=0xff;//所有锁存器锁存CLK置高电平

 }

 

 void int0() interrupt 0{//终端服务程序

P2=cs[0];

P0=0x8E;

}


效果

在这里插入图片描述

2.动态显示

动态显示用到的元件有:8051、7SEG-MPX4-CA(4位七段数码管)、RESPACK-8(电阻)、GROUND、POWER和BUTTON
接线如图:
在这里插入图片描述


动态显示的代码如下:


#include

 

unsigned int d[4]={0x5B,0x3f,0x5B,0x06};//共阴极的数码管,输出为静态时的反码,由与所用的七段数码管内部不同所致。

unsigned int cs[4]={0x0E,0x0D,0x0B,0x07};//与静态不同,4位7段数码管的片选信号不由锁存器决定,自带的片选管脚功能为高电平选中

void delay(int n){//延时程序

int i;

int j;

for(i=0;i for(j=0;j<120;j++);

}

void main(void)

 { 

int i;

EA=1;

EX0=1;

INT0=1;

while(1){//因为是动态扫描,所以必须不停地扫描

for(i=0;i<4;i++){

P2=cs[i];

P0=d[i];

delay(10);

}

}

 }

 void int0() interrupt 0{

P2=cs[0];

P0=0x71;

}


效果

在这里插入图片描述


总结

以上就是两种类型的七段数码管(共阴极和共阳极)的两种不同的显示方式(静态和动态)。这里对七段数码管的学习,我会用到计算器的制作中,加以巩固。也希望和小伙伴们一起学习,有时间我也会多多分享学习的知识,记录学习过程。


关键字:51单片机  七段数码管  显示实验 引用地址:【51单片机】七段数码管显示实验+详细讲解

上一篇:【51单片机】七段数码管和矩阵键盘的综合实验——计算器
下一篇:【51单片机】矩阵键盘线反转法实验仿真

推荐阅读最新更新时间:2026-03-20 21:30

《逗比小憨憨51单片机Proteus仿真系列》第15期基于单片机的LCD12864显示图片实验
源代码: #include reg52.h #include intrins.h #define LcdDataPort P2 typedef unsigned char u8; typedef unsigned int u16; sbit Busy = P2^7; sbit Reset = P3^0; sbit RS = P3^1; sbit E = P3^2; sbit RW = P3^3; sbit CS1 = P3^4; sbit CS2 = P3^5; const u8 code table1 =
[单片机]
51单片机day2——数码管依次显示实验
/*** *八个八位数码管轮流显示0-9 *顺序:最后一位一次往前递进一位 *数码管接口: * 1.数码管为共阳数码管 * 2.数码管一端由P0口经74HC245芯片链接至数码管a-dp * 3.数码管另一端由P2^2-P2^4连接至74LS138译码器A-C管脚经处理后由74LS138译码器Y0-Y7管脚连接至数码管共阳端 * 原理: * 1.8位数码管内由8个发光二极管组成,一端高电平另一端低电平即可点亮1位数码管 * 2.有八个接口接到8位数码管的一端,8位数码管的另一端统一接正(共阳)/接负(共阴) * 3.单片机控制八个接口拉高/低控制数码管亮/灭组成不同字符 *思路: * 1.每个数码管显示0
[单片机]
51单片机】STC89C52数码管静态显示实验,含c代码(5)
1.参考教程: 清翔51单片机教程 2.基本原理 : 1)数码管位数:几个数码管连在一起,就是几位。 2)数码管共级:共阴极-数码管中间的线是GND。共阳极-数码管中间的线是VCC。用万用表测:黑表笔放GND(中间)处,红表笔放a处,若a灯亮起则是共阴极。 3)控制每段的亮灭,亮输入高电平,灭低电频。例:数码管显示数字1。对应二进制排列:00000110. 3.静态显示 每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直达送入新字形码为止。 1)锁存器原理 2)位选和段选 用两个锁存器分别进行位选和位选。 位选流程: ①P27赋高定平(也就是位选锁存器的LE脚打开
[单片机]
【<font color='red'>51单片机</font>】STC89C52数码管静态<font color='red'>显示</font><font color='red'>实验</font>,含c代码(5)
51单片机实验——用定时器0实现流水灯,要求每个led轮流显示1s
1.实验题目: 用定时器0实现流水灯,要求每个led轮流显示1s。 2.KEIL代码 #include reg51.h void main() { TMOD &=0X0F; TMOD |=0x01; TH0 = (65536 - 50000)/256;//高四位初值 TL0 = (65536 - 50000)%256;//低四位初值,每隔50ms溢出 EA = 1; //开总中断 ET0 = 1; //T1开时定时器溢出 TR0 = 1; //开启定时器 P1=0xff; while(1); } void Time0(void) interrupt 1 //定时中断 {
[单片机]
<font color='red'>51单片机</font><font color='red'>实验</font>——用定时器0实现流水灯,要求每个led轮流<font color='red'>显示</font>1s
基于C51单片机对液晶显示实验设计
程序一:在液晶屏上显示一个1 //在液晶屏上显示一个字符 #include #define uchar unsigned char #define uint unsigned int //端口设置 sbit lcden=P3^4; sbit lcdrs=P3^5; //延迟函数,大约1秒 void delay(uint z) { uint x,y; for(x=z;x》0;x--) for(y=110;y》0;y--); } //写命令 void write_com(uchar com) { lcdrs=0;//写命令 P0=com; delay(5)
[单片机]
基于C<font color='red'>51单片机</font>对液晶<font color='red'>显示</font>的<font color='red'>实验</font>设计
七段数码管
数码管 的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP(decimal point),其基本单元是发光二极管。 应用领域 七段数码管是一类价格便宜使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数的器件。 在电器特别是家电领域应用极为广泛,如显示屏、空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。 构造 一般的七段数码管拥有七个发光二极管(三横四纵)用以显示十进制0至9的数字外加小数点,也可以显示英文字母,包括十六进制中的英文A
[模拟电子]
单片机矩阵键盘与数码管显示实验实践指南
在单片机开发领域,掌握基础的输入输出控制是迈向复杂项目的关键一步。本次实验聚焦于利用单片机开发板,通过矩阵键盘实现学号后 8 位的输入与数码管显示,旨在掌握数码管显示、软件延时以及键盘扫描及去抖动等核心方法。接下来,就带大家深入剖析实验的全过程。 一、实验目的与内容 本次实验有着明确的目标,即熟练掌握数码管显示方法、软件延时方法以及键盘扫描及去抖动方法。围绕这些目标,实验内容具体为:利用单片机开发板的矩阵键盘,实现个人学号后 8 位的输入和显示;通过矩阵键盘 S1 – S10 输入数字 1 – 0;借助数码管 LED8 – LED1 从左到右显示 8 位学号。 二、实验设计与实现 (一)整体思路 实验采用模块化设计理念,将
[单片机]
单片机矩阵键盘与数码管<font color='red'>显示</font><font color='red'>实验</font>实践指南
MSP430+LCD1602显示实验
LCD12864同样适用 1、本实验用开发板 2、程序代码 3、实验效果 1、本实验用开发板 使用的模块是TI官方的MSP430F5529开发板,只需更改引脚即可适用于其他型号的MSP430开发板。 2、程序代码 代码如下: #include MSP430F5529.h #define uchar unsigned char #define uint unsigned int #define CPU_F ((double)8000000) //外部高频晶振8MHZ //#define CPU_F ((double)32768) //外部低频晶振32.768KHZ #define delay_us(x) __del
[单片机]
MSP430+LCD1602<font color='red'>显示</font><font color='red'>实验</font>
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved