51单片机数码管显示(三)

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

目录

一、静态数码管显示

1、一位数码管

(1)LED数码管各段名称

(2)数码管引脚定义

(3) 共阴极(89C52RC单片机LED数码管采用共阴极方式)

(4)共阳极

2、四位一体数码管

(1)四位一体数码管引脚定义

(2)上面共阴极和下面共阳极

 3、数码管模块原理图详解

4、编写程序

5、实物展示

二、动态数码管显示

1、数码管的消影

2、编写程序

3、实物展示

4、数码管驱动方式


一、静态数码管显示

1、一位数码管

(1)LED数码管各段名称

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

(2)数码管引脚定义

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

接线服从就近原则

(3) 共阴极(89C52RC单片机LED数码管采用共阴极方式)

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

中间是二极管,电流只能从下面流向上面,所以所有接口共用一个阴极,上面接口接地,

给下面接口输入1时,LED二极管亮;输入0时,LED二极管灭。

(4)共阳极

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

 中间是二极管,电流只能从上面流向下面,所以所有接口共用一个阳极,上面接口接电源VCC,

当给下面接口输入0时,LED二极管亮;输入1时,LED二极管灭。

2、四位一体数码管

(1)四位一体数码管引脚定义

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

(2)上面共阴极和下面共阳极

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

89C52RC单片机采用共阴极方式,当给共阴极12、9、8、6为1101时,再给下面共用端口输入0110 0000时,LED段B、C亮,这时第三个LED数码管会显示1;如果给共阴极12、9、8、6为1001,则第二个数码管和第三个数码管都会显示1。

 3、数码管模块原理图详解

(1)138译码器

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件~51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件有上划线,代表低电平有效,如果没有上划线,表示高电平有效

 开发板上接的是74HC138,右侧LED1~LED8接到了数码管的公共端,通过138译码器,能够使由左侧P22、P23、P24三个端口来控制选择右边的8个端口LED1~LED8

例:当C、B、A输入为000时,输出Y0低电平有效,其他无效,即输出LED8~LED1为1111 1110。

C B A 输出(上面一横代表低电平有效)
0 0 0 Y0(1111 1110 )
0 0 1 Y1(1111 1101)
0 1 0 Y2(1111 1011)
0 1 1 Y3(1111 0111)
1 0 0 Y4(1110 1111)
1 0 1 Y5(1101 1111)
1 1 0 Y6(1011 1111)
1 1 1 Y7(0111 1111)

 左下角G1、G2A和G2B为使能端,当G1接VCC,G2A和G2B接地,138译码器才会工作。

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

89C52RC单片机采用的是共阴极数码管,右上角COM指公共端,所以如果想点亮第三个数码管,首先需要给LED1~LED8赋值1101 1111,这样第三个数码管就被选中了,然后给第三个数码管数据,需要给数码管下面的接口输入阳码(1为亮,0为灭)——如想让数码管显示1,需要输入      0110 0000。

74HC245为双向数据缓冲器,右上角VDD是电源接VCC,OE为使能端口,低电平有效,接地时芯片才开始工作,左下角GND为接地。

左侧A0和右侧B0为一 一对应的关系,左上角DIR为控制数据方向端口,如果DIR接高电平是将左侧数据A0~A8送到右侧B0~B8,如果DIR接低电平,是将右侧数据B0~B8送到左侧A0~A8,由于在电路板上LE始终与VCC连接,因此这里74HC245的作用是将左侧数据A0~A8送到右侧B0~B8

由于数码管为共阴极,给数码管下面接口输入阳码时,LED才亮,但是直接将P0~P7的高电平输入到数码管时,89C52RC单片机的I/O口是弱上拉类型,单片机高电平驱动能力有限,输出的最大电流不能太大,而低电平驱动能力更强一些因此过从P0~P7的数据,经过74HC245,就会使输入数码管的电流更小,这样驱动能力会更强一些

4、编写程序

#include <REGX52.H>

unsigned char shumaguanTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};	
					//定义数组注意后面要加分号,且左边是方框,右边是中括号
					//右边分别是0~9的数码管显示输入值的16进制	

void shumaguan(unsigned char Location,Number)
{
	switch(Location)		
	{					//通过switch函数判断输入的Location是1~8哪一个值
						//再由后面的138译码器来选择对应的数码管
        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=shumaguanTable[Number];	//Number输入0~9的任意数字,就会显示相应数字
}


void main()
{
	shumaguan(7,2);			//输入Location为7,Number为2,带入函数中
	while(1)
	{
	
	}
}

5、实物展示

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件


二、动态数码管显示

1、数码管的消影

在shumaguan(Location,Number)函数中,Location左边数字,段选控制选择哪个数码管亮;Number右边数字,位选控制数码管显示的值。

若主程序为

void main()
{
	shumaguan(1,1);		
	shumaguan(2,2);		
	shumaguan(3,3);
	while(1)
	{
	}
}

函数运行过程为(第一个函数)位选、段选、(第二个函数)位选、段选、(第三个函数)位选、段选。

由于人的视觉暂留效果,并且没有加延时,单片机运行速度太快,在上个函数的段选和下个函数位选之间会发生显示数据串位的问题,如下图所示。

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

 所以为了消除串位的现象,需要在每一个函数段选后,将其消0,这样就能实现动态数码管显示

2、编写程序

#include <REGX52.H>

unsigned char shumaguanTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};	
					//定义数组注意后面要加分号,且左边是方框,右边是中括号
					//右边分别是0~9的数码管显示输入值的16进制	

void Delay(unsigned int xms)		//延时函数,输入x多少,就延时多少ms
{
	unsigned char i, j;				
    while(xms--)						
    {
		i = 2;
		j = 239;
		do
	    {
			while (--j);
	    } while (--i);											
    }
     
}


void shumaguan(unsigned char Location,Number)	//数码管显示函数,Location是第几个数码管,Number是显示的数字
{
	switch(Location)		
	{					//通过switch函数判断输入的Location是1~8哪一个值
						//再由后面的138译码器来选择对应的数码管
		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=shumaguanTable[Number];	//Number输入0~9的任意数字,就会显示相应数字
	Delay(1);	//让数码管稳定显示数字,立刻清零的话,数码管会显示比较暗
	P0=0x00;	//在数码管显示数字后,将段选清零,消除串位重影现象
}


void main()
{
	while(1)
	{
	shumaguan(1,1);	
	shumaguan(2,2);		
	shumaguan(3,3);
	}
}

3、实物展示

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件

4、数码管驱动方式

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

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

TM1640就是这种专用驱动芯片。 

51 数码管,51单片机学习,51单片机,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-719578.html

到了这里,关于51单片机数码管显示(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 51单片机矩阵键盘——数码管显示

    当我们熟悉了数码管的位选与段选,并了解的矩阵键盘的扫描之后就可以编写程序了。 按下矩阵键盘S1并松开,数码管第一位(LED8)显示0;按下矩阵键盘S2并松开,数码管第一位显示1;...按下矩阵键盘S16并松开,数码管第一位显示F; 矩阵键盘扫描(输入扫描)     原理:

    2024年02月11日
    浏览(55)
  • 51单片机控制数码管动态显示

    首先打开proteus,导入8位数码管和89c51。 然后如图连线,分清断码和位码, 断码就是一个数码管的7个LED灯。 位码:就是第几位显示,由于是共阴极,所以哪位接地就显示哪位。 下面通过改变位码的接线就可以看出不同的效果 下面就编写程序,从第1位到第8位显示从0到7的八

    2023年04月21日
    浏览(46)
  • 51单片机数码管显示0-9

    初级代码:使用延时函数,延时; 进阶代码:使用定时器,延时:51单片机定时器控制数码管显示_学习笔记吧的博客-CSDN博客 初级代码: 电路接线图:  

    2024年02月12日
    浏览(40)
  • 51单片机动态数码管显示自己学号

    实验题目:使用51单片机实现动态数码管显示自己8位学号,例如20220018 在此原理图又分两种连接方式: 第一种是8位数码管接38译码器来减少端口使用。 第二种是,没有端口要求接好就可以那就是,把位选端接P3口,段选端接P0口,这样占用端口多,一般实验都是使用第一种接

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

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

    2024年02月02日
    浏览(60)
  • 【51单片机-数码管】:用51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s

             用普中51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s。         随机数码管 00-99  循环0.5s  显示。        数码管是一种数字显示器件,它由多个发光二极管(LED)组成,可以显示数字、字母、符号等

    2024年02月07日
    浏览(54)
  • 51单片机按键控制数码管显示0-9

    实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立按键控制合集_学习笔记吧的博客-CSDN博客 两个文章一结合就是一个新的产物,所以51单片机

    2024年02月11日
    浏览(52)
  • 51单片机入门教程(3)——数码管显示学号

    目录 1、数码管简介 2、静态显示 3、动态显示 4、小结 相信经过了流水灯的实现,大家已经弄清楚了Keil和Proteus是如何联动使用的,并且对51单片机也有了一定的认识,在这一章里,我带大家利用51单片机玩下数码管,看最终你们能不能把自己的学号显示出来。 LED数码管(LE

    2023年04月11日
    浏览(43)
  • C51单片机的电子时钟(数码管显示)

    普中科技51单片机开发板STC89C52 查看这两个原理图,我们可以发现控制这8个数码管由P22、P23、P24这三个控制,就相当于三个二进制数来控制数码管,三个二进制数(000-111)总共有8个,每一个二进制代表控制一个数码管。而控制数码管的发光二极管P0-P7控制,例如要想数码管显

    2024年02月11日
    浏览(51)
  • 51单片机实现矩阵键盘密码锁,数码管显示

    板子是普中的,按键按下10为0,按键11为确认,按键12为取消。 输入密码正确时LED D8闪烁(正确密码为5555) #include REGX52.H//头文件定义 unsigned char nixie[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示的段码 unsigned int Code = 0;//用于保存密码的变量 void Tim_int(void);//定时器初

    2024年02月02日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包