精华内容
下载资源
问答
  • 单片机数码管显示,利用中断控制可以显示0至f,
  • 全套集合:51单片机数码管时钟电路+代码+hex文件+报告+演示视频,全套齐活包满意
  • 数码管简述 这是一个数码管内部电路原理图,a~h每个数字代表一个发光二极管,v是公共端,可以接地或者电源,对应共阴极和共阳极接法。a~g段数码管用来显示数字,h显示小数点。为了便于封装,数码管的外部一共10个...

    数码管简述

    5cf6a467d857f55af2eb4ac0c6124048.png

    这是一个数码管内部电路原理图,a~h每个数字代表一个发光二极管,v是公共端,可以接地或者电源,对应共阴极和共阳极接法。a~g段数码管用来显示数字,h显示小数点。为了便于封装,数码管的外部一共10个引脚,5和10连在一起接公共端,其余各对应一个发光二极管:

    683b5025f7852016cfcf0eff44802ae1.png

    例如,如果我们想显示数字“0”,那么就需要a~f这六个数码管亮;如果显示数字“1”,那么就需要b、c两个数码管点亮,以此类推。一般情况下,单片机的IO口和数码管的连接方式如下:

    166b23c957328767013e7a7a7209d2d4.png

    如果我们将数码管接到P1口上,显示数字“0”的话,那么P1口的八个引脚电平(共阴极数码管)应为:0011 1111转换成二进制就是P1=0x3f,如果是共阳极数码管,则P1=~0x3f,按位取反就可以。如果我们想让小数点显示出来,那么应该将P0.7置1(共阴极),对应引脚电平为1000 0000,二进制0x80,为了简便,我们直接参与按位或的方式,即:

    P1=(0x3f|0x80) 共阴极 P1=~(0x3f|0x80) 共阳极

    设计实例(数码管静态显示)

    Proteus中的数码管有几种形式:内置编码器的数码管、七段数码管(共阴极、共阳极)、八段数码管(共阴极、共阳极),我们分别看一下:

    1. 带有编码器的数码管:

    c6cf8208675e278ec0b38d262eaf74da.png

    一共四个引脚,最右边是低位,最左边是高位,直接将对应数据的16进制输入即可,例如我们将上图数码管四个管脚由右边到左边依次接P1.0~P.3,如果我们想显示0的话,P1=0x00,显示1的话P1=0x01以此类推。这种数码管使用方便,但是没有使能端,一般只用作静态显示。

    1. 七段数码管(共阴极为例)

    7367ab693f9e9e313bff5dc6203bb9b8.png

    七段数码管一共七个数据端口,还有一个公共使能端,也叫做位选端。对于共阴极数码管,当公共端接低电平时候,数码管才可以正常工作。七个数据端口上为最低为、下边为高位,接单片机的IO口。例如,单片机的P1.0~P1.1依次接数码管的七个数据端,如果显示0,那么P1=0x3f,以此类推。

    1. 八段数码管(以共阳极为例)

    489a20d72db424599d23ff536871eb3b.png

    Proteus中八段数码管如图,有八个数据位(第七位同七段数码管,第八位为小数点),由一个位选端。如果想显示数字0,我们没有必要去推导每一位,直接按照共阴极按位取反,即P1=~0x3f,即为共阳极数码管显示数字0的方法。如果想显示小数点,直接按位或0x80,即P1=~(0x3f|0x80),此时显示的即为数字0加小数点。

    小福利

    共阴极七段数码管0~F的编码:

    unsigned char code t_display[]={      
    0x3F, 0x06, 0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

    实例2 数码管动态显示

    不知道大家看完上边的例子有没有想过,一个数码管需要单片机一个IO口的7~8个引脚,那么两个、三个呢,如果这么算,一个单片机只能驱动四个数码管,除此之外什么也干不了,那你可就小看单片机了,接下来就介绍一下51单片机数码管的动态显示。

    首先看一下Proteus中的数码管:

    7b12dc93b569b6f33dd4b0c0e04be345.png

    四个数码管的段选端口是连接在一起的(A~G,DP端口是小数点的显示);1、2、3、4是位选信号。如果我们将段选信号输入到端口,那么所有的数码管显示的数字是一样的,这不是我们想要的效果,所以就需要用到位选信号1~4,每次只让一个位选信号使能,其他三个就禁止。可是这样你会觉得,每次只有一个数码管显示啊,对的,每个时刻确实只有一个数码管显示,但是下一时刻我们就切换要显示的数字,然后换一个数码管显示,这样的效果就是看到四个数码管轮流显示,每次显示的数字不一样,还不是我们想要的效果。那如果我们将每个数码管切换的时间间隔缩小呢,比如,10ms,这个间隔肉眼是无法分辨出来的,这就是数码管动态显示的原理!我们直接上干活:

    数码管动态显示Proteus仿真电路图:

    fb5c718f564d13d59d2c539041ae1d99.png

    然后是代码,有详细注释哦~

    #include <reg51.h>
    unsigned char num,num2=0;//num用于计数,刷新数码管,num2用于选择要显示的数字
    unsigned char code display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//数码
    unsigned char com[]={0x01,0x02,0x04,0x08};//位选地址
    
    void main()
    {
    	TMOD=0x01;//设置定时器0工作方式1
    	TH0 = (65536-917)/256;		//1ms延时初值计算
    	TL0 = (65536-917)%256;;		
    	EA=1;//开总中断
    	ET0=1;//定时器0中断
    	TR0=1;//开始计时
    	while(1){
    		if(num==10){  //定时器中断10次,也就是10ms
    			num=0;  //清零
    			P1=~com[num2];//送入位选信号
    		  P2=0xff;//消影
    		  P2=display[num2];//送入段选信号
    			num2++; //num2=0~3,四个数码管轮流显示。
    			if(num2>=4)
    			num2=0;
    		}
    	}
    }
    
    void Timer0() interrupt 1  //定时器中断
    {
      TH0 = (65536-917)/256;	//重新赋值
    TL0 = (65536-917)%256;;	
    num++;//
    }

    然后就是一个使用点的例子,实现59s的计时,电路图和上边是一样的,直接上代码:

    #include <reg51.h>
    unsigned char code display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    unsigned char com[]={0x01,0x02,0x04,0x08};
    
    unsigned char num,num2=0,time[4];
    unsigned int num3;
    
    void main()
    {
    	TMOD=0x01;
    	TH0 = (65536-917)/256;		
    	TL0 = (65536-917)%256;;		
    	EA=1;
    	ET0=1;
    	TR0=1;
    	time[0]=0;
    	time[1]=0;
    	time[2]=0;
    	time[3]=0;
    	while(1){
    		if(num==10){		
    			num=0;
    			P1=~com[num2];
    		  P2=0xff;
    		  P2=display[time[num2]];
    			num2++;
    			if(num2>=4)
    			num2=0;	
    		}
     
    			if(num3==1000)//计数1000次,计时1s
    			{
    				time[3]++;//更新第四位
    				if(time[3]>=10)
    				{
    					time[3]=0;
    					time[2]++;//更新第三位
    					if(time[2]>=6)
    						time[2]=0;
    				}
    				num3=0;
    			}
    	}
    }
    
    void Timer0() interrupt 1
    {
      TH0 = (65536-917)/256;		
    	TL0 = (65536-917)%256;;	
    	num++;
    	num3++;
    }

    主要程序和上边是一样的,多了一部分计时1s的程序。

    展开全文
  • 本文主要为51单片机数码管动态时钟电路图,下面一起来学习一下
  • 89C51单片机数码管显示

    万次阅读 多人点赞 2018-12-09 20:50:23
    1.数码管电路图 2.译码器 3.进制转化 直接上图 数码管电路数码管电路的接法有共阴和共阳两种,这里采用共阴接法 从其中取出一个数码管进行分析 单个数码管 此处为一个8位的数码管,想要数码管显示出...

    数码管显示分为静态数码管显示动态数码管显示
    学习掌握数码管相关的内容,可以从以下三方面入手:
    1.数码管电路图
    2.译码器
    3.进制转化

    直接上图

    数码管电路图

    在这里插入图片描述
    数码管电路的接法有共阴和共阳两种,这里采用共阴接法
    从其中取出一个数码管进行分析
    单个数码管
    在这里插入图片描述
    此处为一个8位的数码管,想要数码管显示出想要的数字,则需要对数码管进行高低电平的设置
    1为高电平,0为低电平
    分别对 a,b,c,d,e,f,g,dp进行1和0的编写,此处可以理解为二进制进行十六进制的转化
    在这里插入图片描述
    如图中所示,数字2的 八位二进制就可以表示为 0101 1011,读数为从dp依次读到a,转化为十六进制则是0x5b
    数码管中各个数值对应的字节
    0: 0x3f 1: 0x06 2: 0x5b 3: 0x4f 4: 0x66 5: 0x6d 6: 0x7d 7: 0x07
    8: 0x7f 9: 0x6f A: 0x77 B: 0x7c C: 0x39 D: 0x5e E: 0x79 F: 0x71

    在这里插入图片描述
    打开电脑中的计算器中的程序员模式就可以进行检验
    下面就剩译码器的问题,本次采用的138译码器,译码器的不同可能会有所差别

    先来了解下138译码器的电路图
    在这里插入图片描述
    在138译码器中主要是P22,P23,P24管角的问题,三个管角对数码管LED1~8的控制

    138译码器

    管角定义
    在这里插入图片描述
    管角说明
    在这里插入图片描述
    真值表
    在这里插入图片描述
    看懂138译码器的真值表非常重要,H代表高电平,L代表低电平,当A0,A1,A2同时为L时,Y0(LED1)才会亮

    简单代码演示

    #include "reg51.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    sbit LSA=P2^2;
    sbit LSB=P2^3;
    sbit LSC=P2^4;
    
    u8 code dizhi[]={0x3f,0x5e};
    
    void main(){
       LSC=0;		   
       LSA=0;
       LSB=0;
       P0=dizhi[0];
    }
    

    通过按键实现数码管转化视频

    展开全文
  • 绍利用51单片机的一个并行口实现多个LED数码管显示的方法,给出了利用此方法设计的多路LED显示系统的硬件电路结构原理图和软件程序流程,同时给出了采用51汇编语言编写程序。
  • 基于51单片机数码管显示

    千次阅读 2020-10-24 19:46:24
    基于51单片机数码管显示,定时器,数码管时间显示 ## 数码管显示原理 数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极...

    基于51单片机数码管显示

    ## 数码管显示原理

    1. 数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示,如图所示。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、3位、4位、5位、6位、7位等数码管。
    2. 按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极的数码管,共阴数码管在应用时应将公共极接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

    根据数码管共阴共阳连接,通过单片机给单片机I/O口送高低电平就可以控制数码管每一段的显示。

    ## 共阴级数码管编码

    符号编码符号编码符号编码符号编码
    00x3f40x6680x7fc0x39
    10x0650x6d90x6fd0x5e
    20x5b60x7dA0x77E0x79
    30x4f70x07b0x7cF0x71

    一位数码管显示数字代码

    #include <reg51.h>
    unsigned char code LED[] = {0x3f,0x06,0x5b,0x4f,
                                0x66,0x6d,0x7d,0x07,
                                0x7f,0x6f}//数码管显示0-9数字编码,写成数组直接给I/O口送进数组元素就欧克
    void main(){
    P1=LED[1];//可以根据电路图所接单片机I/O口改变向数码管接口
    }                  

    当数码管多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部连接在一起, 独立的公共端可以控制多位 一体中的哪一 位数码管点亮,连接在-起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”,有了这两个线后,通过单片机及外部驱动电路,就可以控制任意的数码管显示任意的数字了。
    一般单位数码管有10个引脚,二位数码管也是10个引脚,四位数码管是12个引脚,关于具体的引脚及段、位标号大家可以查询相关资料,最简单的办法是用数字万用表测量。 若没有数字万用表,也可用直流电源串接1k电阻后测量,将测量结果进行记录,通过统计便可绘制出引脚标号。
    多位数码管显示需要用到段选与位选信号,也就是当你用到那一位数码管的时候,需要打开位选端,只有这样才可以向那一位传输数据,传输段选信号时还要打开段选段,这样才能可控的任意选择给哪一位数码管送入那一段数据;

    多位数码管显示代码

    #include <reg51.h>
    #define uint unsigned int
    #define uchar unsigned char
    void delay(uint x);
    sbit wela = P2^7; //定义位选IO口
    sbit dula = P2^6‘、//定义段选IO口
    uchar code D[] = {0x3f,0x06,0x5b,0x4f,
                      0x66,0x6d,0x7d,0x07,
                      0x7f,0x6f};//0-9段选编码  
    uchar code W[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//I/O口位选编码
    
    void main()
    {
     uint i;
     for(i=0;i<8;i++)//i可以控制几位数码管
     {
       delay(500);
       wela=1;
       P0=W[i];
       wela=0;
       P0=0xff;//消隐防止数码管亮的不均衡
       dula=1;
       P0=D[i];
       dula=0;
     }
     
    }
    //延时函数 这里是软件代码空运行延时
    void delay(uint x){
    uint i,j;
     for(i=0;i<x;i++){
      for(j=0;j<110;j++);
     }
      
    }
    展开全文
  • 51单片机数码管显示

    2021-08-25 12:50:17
    1.原理: 1.我们常用的数码管有两种:共阴极数码管和共阳极...5.数码管显示,仅靠单片机 IO 口来驱动是不行的,这里就需要增加外部驱动芯片74HC245 此外,还可以用138译码电路来控制位选。 2.原理图:(普中A2开.

    1.原理:

    1.我们常用的数码管有两种:共阴极数码管和共阳极数码管。
    2.一般数码管有8个段,分别是a,b,c,d,e,f,g,dp(小数点)。
    3.我们通过段选和位选来控制数码管的显示,段选来控制要显示的数据,
      而位选是来选择让哪一个数码管显示。
    4.动态数码管现实的原理就是:利用位选线不同时选择通断,改变段选数据来实现的。
    5.数码管显示,仅靠单片机 IO 口来驱动是不行的,这里就需要增加外部驱动芯片74HC245
      此外,还可以用138译码电路来控制位选。
    

     2.原理图:(普中A2开发板)

     

     

     3.程序说明:

    我们使用4位数码管来动态显示数字2030

     4.源程序:

    #include <reg51.h>
    
    sbit LA=P2^2;
    sbit LB=P2^3;
    sbit LC=P2^4;
    
    unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极
    /*延时函数*/
    void delay(unsigned int i)
    {
    	while(i--);
    }
    
    /*显示函数*/
    void show(unsigned int n)
    {
    	int i;
    	for(i=1;i<=4;i++){
    	switch(i)
    	 {
    		case 1:
    			LA=0;LB=0;LC=0;P0=table[n%10];break;
    		case 2:
    			LA=1;LB=0;LC=0;P0=table[n%1000%100/10];break;
    		case 3:
    			LA=0;LB=1;LC=0;P0=table[n%1000/100];break;
    		case 4:
    			LA=1;LB=1;LC=0;P0=table[n/1000];break;
    	 }
    		delay(100);
    	}
    	i=1;
    }
    	
    
    void main()
    {
    	unsigned int d=2030;
    	while(1)
    	{
    	show(d);
    	}
    }
    	

     5.开发板运行结果:

     光线太亮,看不太清,但的确地是数字2030


    以上就是51单片机的数码管实验了 

    想要了解更多的单片机实验,请查看我的51单片机专栏

    展开全文
  • 51单片机数码管显示历史键值TGU想说的话单片机程序设计实验目的实验内容实验原理矩阵键盘数码管动态显示实验环境实验代码 想说的话 这个单片机实验要求是我的同学把别人的设计要求发给我,让我帮忙做一下,但是做着...
  • 51单片机数码管显示数字及小数点

    千次阅读 2021-03-17 17:20:24
    51单片机数码管显示(共阴极) 1.先看一下显示的结果: 源代码: #include <reg51.h> typedef unsigned int u16; typedef unsigned char u8; u8 code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x...
  • 数码管显示电路设计 数码管分为共阴和共阳两种,一种是将LED内部所有的阳极连 到一起,并通过com端引出。共阴则反之。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,...
  • 该文设计了一种基于AT89S51单片机的海上液位测量系统。该系统采用分段电容检测的原理,以实现油水双液位的检测。合理搭建了微小电容测量的硬件电路。系统可以准确无误地应用于海上油位的测量。数码管显示电路
  • 温度传感器18B20在51单片机中用数码管显示,显示实时温度
  • 单片机数码管电路图,欢迎参考设计
  • 采用动态扫描方式编程时较为复杂,为解决此类问题,作者介绍了一款数码管显示专用驱动芯片MAX7219,MAX7219采用串行方式与单片机通信,仅占用3条口线,同时,片内集成硬件动态扫描显示控制电路,支持软件修改内部...
  • 本人刚学单片机,许多不会请指教 [img=https://img-bbs.csdn.net/upload/201704/10/1491809626_52911.png][/img] 这是单片机开发板上数码管显示电路,位选用74HC138,怎么多位显示?74HC138只能译一位啊···
  • 以AVR系列单片机ATMEGA16为控制核心,采用自带的AD模数转换器,按键控制电压电流测量转换,四位LED数码管显示
  • 51单片机数码管显示+proteus仿真

    千次阅读 2020-06-21 20:01:47
    七段数码管是一种常用的数字显示元件,可以用来显示数字0~F及相关符号,它具有功耗低、亮度高、寿命长、尺寸小等许多优点,在家电及工业控制中应用广泛。 外形 由7个条状的发光二极管排列而成,可实现数字“0~F”及...
  • 数码管显示电路设计,PCB+原理图 具体设计见附件
  • 这是一个完整的带仿真电路单片机动态显示数码管程序,希望对大家有用。protel和keil仿真奥。
  • 描述8个数码管滚动显示同一个数字8个数码管显示多个不同的字符8个数码管闪烁显示8个数码管滚动显示数字串#include__CONFIG(0x3B31);unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,...
  • 数码管仍是常用的显示方法,LED数码管电路实现方式有两种:静态显示和动态显示。本文介绍了常用的显示方法,研究了数码管显示时,如何有效的节约资源,主要是节约单片机的I/O资源。
  • 这是基于51或者51单片机数码管显示时钟与仿真原理图的资源; 其中包括c语言源程序与keil仿真生成的hex文件可以直接烧录到单片机上进行看实物效果,其中还包括preteus仿真的电路图 此资源用与验证数码管定时显示时钟...
  • MCS-51单片机数码管

    2011-12-18 20:50:03
    对于大学生实验设计有帮助。。 一、实验目的 1、掌握七段数码管的显示原理。 2、掌握单片机数码管显示电路和数码管动态扫描显示程序的设计方法。
  • 数码管循环显示,8个数码管循环显示0——7,时间可以用延时自己控制,也可用中断,(本人用的延时)
  • 学习单片机驱动数码管动态显示电路设计和编程方法 理解动态显示电路图,参考驱动程序,单片机P0口作段码输出控制,P1口作位码控制,使单片机驱动6个7段数码管输出实验当天年、月、日六位数字。
  • C51单片机数码管动态显示

    万次阅读 多人点赞 2018-08-27 21:49:25
    数码管作为最廉价的输出设备,在各种自动化设备中有很大的应用,最简单普通的显示方式为动态刷新显示,称为假动态显示,即通过分时扫描每一位,利于人眼的视觉停留现象,造成一种静态显示的效果,如下图所示: ...
  • 基于51单片机数码管显示时钟电路图与c程序 有原理图和PCB 源代码 调试成功,保证好用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,937
精华内容 2,374
关键字:

单片机数码管显示电路