二、数码管显示原理及应用实现

这篇具有很好参考价值的文章主要介绍了二、数码管显示原理及应用实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数码管显示原理及应用实现

视频链接
对应课程:P11-P12

数码管显示原理

  1. 我们先看一下一个数码管是如何亮起来的。数码管内部电路如图所示:

    二、数码管显示原理及应用实现

    为了封装统一,生产商为单位数码管都封装了10个引脚,其中第3个和第8个引脚是连接在一起的。显示一个8字需要七个小段,另外还有一个小数点,所以其内部共有8个小的发光二极管,最后还有一个公共端。

    公共端可分为共阳极和共阴极,其内部原理图如图所示:

    二、数码管显示原理及应用实现

    对于共阴极数码而言,其8个发光二极管的阴极在数码管内部全部连接在一起,所以称为”共阴“,它们的阳极是独立的。当我们给数码管的任一个阳极加上一个高电平时,对应的发光二极管就点亮了。

    例如如果想让数码管显示”0“,只需要让”g“"dp"引脚送入低电平,而其余引脚全部输入高电平。

    共阳极数码同理,其8个发光二极管的阳极在数码管内部全部连接在一起,所以称为”共阳“,它们的阴极是独立的。当我们给数码管的任一个阴极加上一个低电平时,对应的发光二极管就点亮了。

    数码管内部发光二极管要想点亮,需要5mA以上的电流,但电流也不可过大,否则会烧毁发光二极管。由于单片机的I/O口送不出如此大的电流,所以数码管与单片机连接时需要加上驱动电路。

  2. 多位一体数码管

    以四位一体的数码管为例,其内部原理图如图所示:

    二、数码管显示原理及应用实现

    它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可知控制这个能点亮数码管亮什么数字。

    通常我们把公共端叫做位选线

    连接在一起的段线叫做段选线

    有了这两个线,通过单片机及外部电路就可以控制任意的数码管显示任意的数字了。

数码管静态显示

先来看巫妖王V2版数码管原理图:

二、数码管显示原理及应用实现

本实验板使用的数码管为共阴极,COM为公共端,若想让LED6亮,则赋LED6为0其余为1,此为”选中“,若想LED6显示1,则要给阳码:0110 0000 (1是亮 0是灭)

  • 74LS138(38译码器)

    LED1—LED8连接38译码器的输出端,即通过38译码器可实现P22、P23、P24这三个I/O口来控制LED1—LED8的输出。

  • 74HC573(锁存器)

    OE(使能端,低电平有效)

    LE连接VCC(跳帽连接)

    这样锁存器的输入端连接单片机的P0口,实现D0-D7的数据原封不动的送入Q0-Q7.

代码

先介绍C51数组

  • 数组:把相同类型的一系列数据统一编制到某一个组别中,可以通过数组名+索引号简单快捷的操作大量数据

  • 定义和引用:

    int x[3];	//定义一组变量(3个)
    int x[]={1,2,3};//定义一组变量并初始化
    
    x[0] 		//引用数组的第0个变量
    x[1] 		//引用数组的第1个变量
    x[2]		//引用数组的第2个变量
    引用x[3]时,数组越界,读出的数值不确定,应避免这种操作
    
  • Switch语句

    switch(变量)
    {
    	case 常量1:语句体1break;
    	case 常量2:语句体2break;
    	case 常量3:语句体3break;
    	case 常量4:语句体4break;
    	...
    	default:语句体x;break;
    }
    

    将变量与case后的各个常量对比,若有相等,则执行相应的语句体。若没有一个相等,则执行default后的语句体(default可以不写)

完整代码如下:

#include <REGX52.H>    //和#include <REG52.H>的区别

//段位表(共阴极数码管编码,对于的符号为0,1,2,3,4,5,7,8,9)
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

//数码管显示子函数
void Nixie(unsigned char Location,Number)
{
	switch(Location)		//位码输出,通过38译码器进而实现数码管的选中
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0=NixieTable[Number];	//段码输出          
}												
                                                
void main()
{
	while(1)
	{
		Nixie(3,0); //在第3个数码管位置显示0
	}
}	
/*
当P0等于0x3f,换算成2进制为 0011 1111
P0.0是低位,P0.7是高位,则P0.0-P0.7:1111 1100
由于是共阴极连接,1是亮,0是灭,则g,dp不亮,其余亮,显示为数字0
*/

数码管动态显示

数码管驱动方式通常有两种:

  • 单片机直接扫描:硬件设备简单,但会耗费大量的单片机CPU时间

  • 专用驱动芯片:内部自带显存、扫描电路,单片机只需告诉它显示什么即可

数码管动态扫描,其实是轮流向各个数码管送出字形码和相应的位选,利用发光管的余晖和人眼视觉暂留作用,使得人的感觉好像数码管同时都在显示,实际上多位数码管是一位一位轮流显示的,只是轮流的速度非常快,人眼无法分辨出来。文章来源地址https://www.toymoban.com/news/detail-450263.html

#include <REGX52.H>    //和#include <REG52.H>的区别

//段位表(共阴极数码管编码,对于的符号为0,1,2,3,4,5,7,8,9)
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//延时子函数
void Delay1ms(unsigned int xms)		//@12.000MHz
{
	while(xms--)
	{
		unsigned char i, j;
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}	
}
//数码管显示子函数
void Nixie(unsigned char Location,Number)
{
	switch(Location)		//位码输出,通过38译码器进而实现数码管的选中
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0=NixieTable[Number];	//段码输出 
	Delay1ms(1);    //
	P0=0x00;        //消影
}												
                                                
void main()
{
	while(1)
	{
		Nixie(1,0); //八个数码管依次显示为01234567
		Nixie(2,1); 
		Nixie(3,2); 
		Nixie(4,3); 
		Nixie(5,4);
		Nixie(6,5);
		Nixie(7,6); 
		Nixie(8,7); 
	}
}  


到了这里,关于二、数码管显示原理及应用实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • <微机原理>[汇编语言]-[实验七]数码管动态显示实验

    <微机原理>[汇编语言]-[实验七]数码管动态显示实验

    实验一 软件开发环境和简单程序设计 实验二 I_O输入输出实验 实验三 键盘扫描显示实验 实验四 中断实验 实验五 定时器实验 实验六 串行口实验 实验七 数码管动态显示实验 实验八 矩阵键盘应用实验 实验九 电子时钟 微机原理实验课程,会陆续根据目录更新文章 掌握LED八段

    2024年02月07日
    浏览(11)
  • 数码管显示原理:共阴极和共阳极的区别,静态显示程序。

    LED发光原理是PN结光电二极管将电能转化为光能的结果。当半导体芯片两端加正反向电压时,当电子从n区域注入p区域时,它们与p区的空穴结合并释放能量,这些能量以光子的形式发射出来,从而实现了光的发光。 为了使LED点亮,需要在电路中建立一个电流通路,以使电流通

    2024年02月04日
    浏览(7)
  • FPGA项目(5)--FPGA控制数码管动态显示的原理

    FPGA项目(5)--FPGA控制数码管动态显示的原理

            数码管是现在电子产品上常用的显示器件,它有驱动简单、显示清晰、价格低廉等优势。数码管的实物图:          数码管的内部结构图如下所示:          从图中可以看出,它由八个段组成,即A B C D E F G DP(小数点),只要将这八个段按规律组合点亮,就

    2024年02月11日
    浏览(7)
  • 学习笔记|小数点控制原理|数码管动态显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第十集:数码管动态显示

    学习笔记|小数点控制原理|数码管动态显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第十集:数码管动态显示

    上述图片引用自:51单片机初学2-数码管动态扫描 用一排端口来控制段码,需要显示哪几个就点亮哪几个段,和看电影一样,一个一个的打开,关闭,一个个的画面,组成动画。 具体的控制的流程如图所示,N表示有几个数码管! 其中需要注意每个延时不能太短,我们这边程

    2024年02月07日
    浏览(12)
  • 【汇编语言与微机原理】实验五:键盘按键与数码管显示

    熟悉星研集成开发环境,掌握微机接口程序编写调试的基本方法。 掌握矩阵式键盘工作原理及识别按键的方法。 掌握8段数码管显示数字或字符的工作原理和它的使用方法。 掌握用8255扫描键盘及用8255刷新数码管的显示方法。 在2*8(看 着像4*4,实际上是2*8 )的小键盘上按下

    2024年02月16日
    浏览(13)
  • 6、七段数码管显示译码器设计与应用

    6、七段数码管显示译码器设计与应用

    掌握七数码管显示原理 掌握七段码显示译码设计 进一步熟悉 Xilinx ISE 环境及 SWORD 实验平台 任务 1:原理图设计实现显示译码 MyMC14495 模块 任务 2:用 MyMC14495 模块实现数码管显示 1.创建工程并绘制原理图 建立工程 MyMC14495,创建原理图文件 MyMC14495,按原理图绘制 2.原理图仿真

    2024年02月07日
    浏览(11)
  • verilog实现数码管静态显示

    verilog实现数码管静态显示

    六个数码管同时间隔0.5s显示0-f。要求:使用一个顶层模块,调用计时器模块和数码管静态显示模块。 本文介绍了数码管显示原理,数码管驱动方式等等,并通过代码实现了数码管静态显示

    2024年02月16日
    浏览(12)
  • 【51单片机】矩阵按键实现数码管显示

    【51单片机】矩阵按键实现数码管显示

    闲的没事看一看玩一玩········· 矩阵按键 数码管是一种导体发光器件,其基本单元是发光二极管。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管 共阴极数码管是指将所有发光二极管的阴极接到一起形成共阴极的数码管,共阴极的数码管在应用时将公共

    2024年02月02日
    浏览(15)
  • 底层驱动实现数码管显示温湿度数值功能

    开发板:STM32MP157A 温湿度传感器:si7006 显示器(数码管):m74hc595 遇到的问题:循环采集温湿度传感器数值,并将数值发送给数码管的时候两者存在竞态关系,导致数码管显示亮度很暗 解决办法:采用多线程或者多进程解决内核竞态问题 驱动代码 应用层代码 头文件

    2024年02月12日
    浏览(13)
  • Vivado 实现4个7位数码管显示数字

    目前只是实现了4位分别显示0~9的功能的7位数码管,后期有添加内容还会有删改。 就不用提数码管的原理了(像什么共阳极,共阴极之类的),我会把每一步都解析标注出来。 首先是实现4个数码管显示相同数字。 由于没有具体选择4个数码管的哪一个所以4个都会显示同样的

    2024年02月13日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包