51单片机入门教程(3)——数码管显示学号

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

目录

1、数码管简介

2、静态显示

3、动态显示

4、小结


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

1、数码管简介

LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成的器件。常见的LED数码管为“8”字型的,共计8段。每一段对应一个发光二极管。

51单片机入门教程(3)——数码管显示学号

数码管有共阳极和共阴极两种。共阴极: 数码管的发光二极管的阴极连在一起,通常公共阴极接地。当阳极为高电平时,发光二极管点亮。共阳极: 数码管的发光二极管的阳极连在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。

51单片机入门教程(3)——数码管显示学号

2、静态显示

现在我们先来讲一下数码管静态显示,其实数码管的本质就是8个LED组成的一个“8”字形加一个点(dp),如果我们想要显示0,那么就是把上图(c)中的a、b、c、d、e、f六段数码管点亮,让g、dp熄灭,最后就显示数字0了。

在开始之前,大家先要弄懂2进制、10进制、16进制的转换关系,因为单片机只认识二进制,而我们习惯于使用10进制。那么为何我要提到16进制呢,这是因为1位16进制恰好能够表示4位二进制,为了程序的简单,我们一般使用16进制来写代码。比如3FH是什么意思呢,首先末尾的H表示16进制的标志,还有同学记得我们上一章讲到的HEX吗?我上一章说HEX就是16进制的意思,H就是HEX的首字母。所以我们知道了3F是个16进制数,考虑到大家刚入门,我教大家如何使用计算器转换成2进制。

51单片机入门教程(3)——数码管显示学号

51单片机入门教程(3)——数码管显示学号

51单片机入门教程(3)——数码管显示学号

我们可以看到3F对应的二进制是00111111,我看到这串数字我就知道这在共阴极的情况下显示的是0,为什么呢,我来给大家分析。

首先共阴极的情况下,1就是灯亮,0就是灯灭。00111111正好对应8段LED灯。由于右边是低位,所以a=1、b=1、c=1、d=1、e=1、f=1、g=0、dp=0。对应我们上面数码管图,显示的就是数字0。这其实就是数码管显示数字的原理。大家也可以想一下如果是共阳极的情况呢?

51单片机入门教程(3)——数码管显示学号

现在直接实践环节,我们一起来显示个数字0,大家也可以根据上面的码表自己选择数字或字母。就不再演示建工程了,直接写代码,有忘记怎么建工程的同学回到第一章看看。

首先还是从硬件开始,打开Proteus,设计原理图。

51单片机入门教程(3)——数码管显示学号

51单片机入门教程(3)——数码管显示学号

大家可以根据我的硬件图进行搭建,为什么需要排阻呢,因为P0端口内部没有上拉电阻,如何将P0端口作为I/O口时,它会处于悬空状态,无法输出高电平,所以我们要给他加一个上拉电阻,以此给负载提供电流。我在这里故意使用P0这个特殊的端口,就是为了让大家知道这个知识点,后续很多实际工程中,很多人使用了P0端口却没有加排阻,导致调试不出结果。(包括我本人也被这个点坑过),所以在这里告诉大家。

软件设计我们使用Keil写代码,生成HEX文件即可,代码比较简单,大家对照着图片敲一下,当作练习。这个代码的意思就是让P0口输出00111111,用16进制表示就是0x3f,其中0x表示16进制,3f就是00111111,这个在上面讲过了,就不多赘述。

51单片机入门教程(3)——数码管显示学号

编译结果如下,0错误0警告。

51单片机入门教程(3)——数码管显示学号

注:如果找不到HEX文件,可能是魔术棒那里没有打勾。

最后我们把HEX文件烧录到Proteus里的51单片机中,进行运行验证。

51单片机入门教程(3)——数码管显示学号

可以看到,数码管已经显示数字0,证明我们的静态显示工程成功了!大家也可以上面的码表修改一下数字,多练几遍。

3、动态显示

如果有两位的数码管,每个数码管要显示不同的字符,那么电路该怎么搭建呢?对于多位数码管,经常使用动态扫描的方法来显示。

无论在任何时刻只有一个LED数码管处于显示状态,利用人的视觉暂留效应,依次显示每个不同的数码管。某一时刻,只有一位LED数码管被选通显示,其余位则是熄灭的,但人眼看到的是若干位稳定的同时显示的字符。

硬件连接图如下,大家可以在Proteus中搭建出来。

51单片机入门教程(3)——数码管显示学号

51单片机入门教程(3)——数码管显示学号

这个硬件连接也不是很难,数码管左边A、B、C、D、E、F、G、DP就是控制段选的,右边1、2、3、4、5、6、7、8是控制8个数码管到底哪一个亮(一次只能亮一个数码管)。

下面是我们的软件设计部分,大家利用Keil新建工程,把下面代码复制到main.c。

#include <reg51.h>

#define uchar unsigned char
#define uint unsigned int

unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay (uint i)
	{
		uint m,n;
		for(m=i;m>0;m--)
		 for(n=200;n>0;n--);
	}
						
void main()
{
	uint j;
	while(1)
	{
		for(j=1;j<9;j++)
		{
			switch(j)
			{
				case 1:  P2=0xfe;P1=duan[3]; break;
				case 2:  P2=0xfd;P1=duan[1]; break;
				case 3:  P2=0xfb;P1=duan[9]; break;
				case 4:  P2=0xf7;P1=duan[4]; break; 
				case 5:  P2=0xef;P1=duan[0]; break;
				case 6:  P2=0xdf;P1=duan[3]; break;
				case 7:  P2=0xbf;P1=duan[0]; break;
				case 8:  P2=0x7f;P1=duan[6]; break;
			}	
				delay(1);		
		} 	
	}
}

51单片机入门教程(3)——数码管显示学号

51单片机入门教程(3)——数码管显示学号

编译成功,且顺利生成了HEX文件,接下来我们只需把文件放到51单片机中就可以运行验证就可以了。

51单片机入门教程(3)——数码管显示学号

这个时候,学号就显示出来了,其实这8个数字是一个接一个的亮,反复循环的,由于速度很快加上人眼的视觉残留,让我们感觉像是8个数码管一起在亮,大家也可以修改我的代码,看看能不能把自己的学号显示出来。提示一下大家,只需要修改switch语句里面的数字即可。

4、小结

对于数码管显示的学习到这里就结束了,其实回过头来看,数码管的显示本质还是LED,只是比较复杂的LED结构,需要考虑的因素多了一些罢了,这就需要大家多训练,在实践中感悟总结了。学到这一章,相信大家对于51单片机有了自己的理解和认识,入门51单片机的诀窍就是对I/O高低电平的理解,把这个理解清楚了,就基本入门了51单片机。文章来源地址https://www.toymoban.com/news/detail-410378.html

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

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

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

相关文章

  • 51单片机入门————数码管显示

    我们在马路上看到的红绿灯,就是由数码管来实现的,就是其中可能加入了一些延时和转换 数码管是通过控制138译码器与74HC245来控制数码管的亮灭与数字的显示 我们先讨论一个数码管 数码管有共阳极和共阴极,我们现在使用的STC89C52是共阴极的,说明数码管共用阴极 上面是

    2024年02月13日
    浏览(45)
  • 51单片机——数码管、按键、矩阵按键C语言入门编程

    目录 数码管: 1.静态数码管:第二位数码管显示0 2.动态数码管:每一位数码管依次显示对应位数 按键: 1.独立按键:按下按键对应LED亮灭 矩阵按键: 1.矩阵按键:按下的每个按键,数码管显示对应键码          数码管按段数可分为七段数码管和八段数码管,八段数码管

    2024年01月23日
    浏览(48)
  • 电力电子课设|数控产生PWM波|使用51单片机输出占空比可调PWM波(按钮控制、数码管显示)速成教程

    我们学校电气专业开始做电力电子的课设了,小组选了一项制作硬件电路的任务,里面有要求采用 数控方式 实现DC-DC电压变换的输出电压调节,数控在电路中的体现就是用单片机输出可调占空比的PWM波作用于IRF520模块,实现电压的变化,作用于SG3525芯片的2引脚。考虑到可能

    2024年02月16日
    浏览(49)
  • 51单片机数码管

    51单片机的数码管是一种常用的数字显示设备,用于在嵌入式系统中显示数字和一些特定的符号。数码管通常由七段LED组成,每个LED段可以显示数字0到9以及一些字母和符号。通过控制每个LED段的亮灭,可以显示不同的数字和字符。 在51单片机中,数码管通常连接到GPIO(通用

    2024年01月21日
    浏览(49)
  • 【51单片机】动态数码管

    0、前言 参考: 普中51单片机开发攻略–A2.pdf 上一章我们主要是介绍一位数码管的内部结构及控制原理。下面我们再来介 绍下多位数码管及动态显示原理的相关知识。 本章所要实现的功能是:控制动态数码管从左至右显示数字 0-7。 为了正规点,工程弄个正规文件夹: http

    2024年01月21日
    浏览(70)
  • 瑞萨MCU入门教程(非常详细的瑞萨单片机入门教程)

    得益于瑞萨强大的MCU、强大的软件开发工具(e² studio),也得益于瑞萨和RA生态工作室提供的支持,我们团队编写了《ARM嵌入式系统中面向对象的模块编程方法》,全书37章,将近500页: 讲解面向对象编程在单片机开发中的使用 结合FSP软件包实例分析外设驱动 讲解如何使用RASC配

    2024年02月08日
    浏览(47)
  • 二、51单片机控制数码管

    (1)数码管的外观: 数码管可分为单个的,联排的(2位、4位、8位) (2)数码管的作用: 数码管是显示器件,是用来显示数字的。 (1)数码管的亮灭是由内部的照明LED的亮灭实现的。 (2)一位数码管内部有八颗LED灯,利用内部的LED灯的亮和灭让数码管显示不同的数字。 (1)驱动方法的

    2023年04月09日
    浏览(52)
  • 51单片机(数码管可调时钟)

    1.数码管(共阴极)如何显示数字:位选+段选(单个) 位选:138译码器通过P22、P23、P24三个端口输入二进制数(011、000等)来选择连同译码器右边的哪一条线,而这些线又分别连着数码管的LED12345678、决定选择哪一个来显示数字 段选:决定输出什么数字,数码管下方又连着一

    2024年02月05日
    浏览(50)
  • 51单片机静态数码管显示

    51单片机静态数码管显示 数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件。   数码管从上右下左中有ABCDEFGDP,共10个引脚,其中3、8号引脚是连接到所有二极管的阴极,A二级管对应7号和38号引脚,B二极管对应6号和38号引脚。所有阴极

    2024年02月08日
    浏览(71)
  • 51单片机数码管显示(三)

    目录 一、静态数码管显示 1、一位数码管 (1)LED数码管各段名称 (2)数码管引脚定义 (3) 共阴极(89C52RC单片机LED数码管采用共阴极方式) (4)共阳极 2、四位一体数码管 (1)四位一体数码管引脚定义 (2)上面共阴极和下面共阳极  3、数码管模块原理图详解 4、编写

    2024年02月08日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包