【51单片机】七段数码管显示实验+详细讲解_七段数码管显示译码器实验-程序员宅基地

技术标签: C/C++  keil mdk  c语言  程序设计  嵌入式  单片机  


前言

继上次仿真实验——【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 <reg51.h>

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 <reg51.h>

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<n;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;
}

效果

在这里插入图片描述


总结

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cumtLeibnizDavid/article/details/115969981

智能推荐

山东工商学院 计算机科学与技术,实验中心-山东工商学院计算机科学与技术学院...-程序员宅基地

文章浏览阅读148次。计算机教学实验中心成立于1999年,隶属计算机科学与技术学院。实验中心现有软件、电子、网络、通信、大学生科技创新、AR技术研究所等41间实验室,实验面积5600平方米,固定资产3500万元,教(职)工26人。实验中心以先进精良的设备条件、整洁舒适的教学环境、科学严谨的管理方式为计算机科学与技术学院、信息与电子工程学院、管理科学与工程学院等学院的实验教学、课程设计、毕业设计等实践环节和全院计算机公共..._计算机科学与技术实验教学中心 山东

CUDA ERROR: device-side assert triggered at 问题及解决思路-程序员宅基地

文章浏览阅读10w+次,点赞45次,收藏82次。cuda errorRuntimeError: cuda runtime error (59) : device-side assert triggered at ...我之前还以为是因为GPU抽风了引发的BUG,所以第一次没有在意,直接又重新开始运行了一次,但是第二次就发现程序在同样的地方断掉了,这也就想起来我以前看到的一个博客,里面有句话的大概意思是这样的:每次都在同样的地方出错的..._cuda error: device-side assert triggered

HDOJ1556 树状数组简单应用_hdoj 树状数组基础-程序员宅基地

文章浏览阅读251次。Color the ballTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 23142 Accepted Submission(s): 11237Problem DescriptionN个气球排成一排,_hdoj 树状数组基础

浅析HTML_解析html-程序员宅基地

文章浏览阅读430次。HTML面试题整理以及一些自我理解_解析html

idea 启动报错: Failed to create JVM.JVM.Path XXXXXXX\jbr\ 我的解决办法-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏6次。idea 启动报错: Failed to create JVM.JVM.Path XXXXXXX\jbr\ 我的解决办法在C:\Users\Administrator\AppData\Roaming\JetBrains\PhpStorm2021.1的文件夹里,找到 phpstorm64.exe.vmoptions 这个文件,并改回原来的配置即可。因为这个路径下的vmoptions文件是我当时修改过的(Help->Edit custom VM Options) phpstorm64.exe.vmop_failed to create jvm

dB、dBFS、dBV、dBu...都是啥啊..-程序员宅基地

文章浏览阅读6.5k次,点赞8次,收藏27次。“7号球员夏普分球,传给了9号,9号也叫夏普,他们可能是兄弟,好球,传给10号传得非常好。咦?10号也叫夏普。可能外国印在球衣上的只是姓,就像韩国很多球员姓朴。漂亮,夏普连过两名队员破门得分!11号上前祝贺,11号也叫夏普...(停顿很久)对不起,夏普/Sharp 是赞助商的名字。” —— 韩乔生经过20年音频市场的普及和发展,音乐爱好者们玩得更深了,开始讨论信噪比、总谐波失真、声压级、最大电平... 就像玩车,上一代人只考虑“开宝马、坐奔驰”,而年轻人开始讨论最大功率、百里加速、扭矩、悬架类型、轮.._db、dbfs、dbv、dbu

随便推点

【虚拟仿真】Unity3D中拆分模型教程(多种类型模型拆分)_unity怎么拆分模型-程序员宅基地

文章浏览阅读1.4w次,点赞63次,收藏160次。推荐阅读CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。一、前言今天有小伙伴在我这篇文章【虚拟仿真】Unity3D对物体进行拆分实现下面问我如何一秒一拆:虽然我已经给出了思路,但是离实现还是有点思路,正好我对于我这篇文章也是不满意,就解答一下小伙伴的疑惑,然后再将文章内容进行升级。原文章:【虚拟仿真】Unity3D对物体进行拆分实._unity怎么拆分模型

ChatGLM2本地部署的实战方案-程序员宅基地

文章浏览阅读10w+次,点赞55次,收藏74次。本文主要介绍了ChatGLM2本地部署应用的实战方案,希望对学习大语言模型的同学们有所帮助。文章目录1. 介绍2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库3. 下载权重文件4. 运行ChatGLM2 4.1 方式一 4.2 方式二_chatglm2

r语言c1,R语言之主成分分析-程序员宅基地

文章浏览阅读568次。主成分分析R软件实现程序(一):>d=read.table("clipboard",header=T)#从剪贴板读取数据>sd=scale(d)#对数据进行标准化处理>sd#输出标准化后的数据和属性信息,把标准化的数据拷贝到剪贴板备用>d=read.table("clipboard",header=T)#从剪贴板读取标准化数据>pca=princomp(d,co..._r语言dcor什么意思

webGl学习-程序员宅基地

文章浏览阅读127次。开个新坑,不知道能不能做完学习地址:mdn地址浏览器支持范围:支持范围首先是创建一个容器,与canvas的canvas.getContext('2d')相似let canvas = document.getElementById('myCanvas');let gl = canvas.getContext('webgl');_webgl学习

基于大数据的音乐推荐系统的设计与实现-程序员宅基地

文章浏览阅读1.7w次,点赞20次,收藏328次。系统提供的功能有,音乐管理:管理员可以添加删除音乐,音乐查找:用户可以在系统中自行查找想要听的歌曲,音乐推荐:系统在收集了用户的行为数据之后为用户个性化推荐音乐,用户管理:管理员可以对用户进行删除,评论管理:管理员可以对评论进行删除,音乐下载:用户可以自行下载个人喜欢分歌曲。选择数据源要确定数据源数据是否可靠真实,要避免爬取音乐平台发布的虚伪的音乐数据,如不存在的歌唱家、专辑、音乐等。通过分析基于大数据的音乐推荐系统,即音乐推荐需要哪些数据,详细了解推荐机制,搞清楚这些数据需要被处理为什么格式。_基于大数据的音乐推荐系统的设计与实现

Nginx反向代理缓存服务器搭建-程序员宅基地

文章浏览阅读672次。Nginx反向代理代理服务可简单的分为正向代理和反向代理:正向代理: 用于代理内部网络对Internet的连接请求(如×××/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端:反向代理: 与正向代理相反,如果局域网向Internet提供..._o /usr/local/server/ngx_cache_purge-2.3/config was found error: failed to ru