精华内容
下载资源
问答
  • 单片机数码管电路图,欢迎参考设计
  • 本文主要为51单片机数码管动态时钟电路图,下面一起来学习一下
  • 全套集合:51单片机数码管时钟电路+代码+hex文件+报告+演示视频,全套齐活包满意
  • 单片机数码管显示,利用中断控制可以显示0至f,
  • 单片机静态方式点亮数码管电路图解 电路只驱动一个数码管,该数码管为共阴管,公共端接地,段管直连到单片机的P2口,所用单片机为AT89C52,电路图如下所示: 通过昨天对数码管的讲解,我们知道如果要点亮一个共阴型...
  • avr 单片机 八段数码管 电路图 源程序,绝对的入门好材料
  • STC89C51单片机驱动12个数码管 电路
  • 单片机数码管 密码锁

    2016-10-19 21:27:04
    单片机数码管 密码锁 矩阵键盘
  • 实验名称数码管的静态显示实验时间2020年7月26 日学生姓名实验地点钉钉群线上同组人员专业班级1、会使用单片机连接外部设备并构建单片机数码管电路。2、能使用工具软件绘制单片机硬件原理图、能编写简单的C51程序。3...

    实验名称

    数码管的静态显示

    实验时间

    2020年7月26 日

    学生姓名

    实验地点

    钉钉群线上

    同组人员

    专业班级

    1、会使用单片机连接外部设备并构建单片机数码管电路。

    2、能使用工具软件绘制单片机硬件原理图、能编写简单的C51程序。

    3、通过编程,学会在单片机上实现一种数字静态显示控制方法。

    2、任务设计要求

    1、LED数码管将按照程序设置的方式工作,每隔一段变化一次,依次循环显示0~9十

    个数字。

    2、程序开始先将“0~9”十个数字的字型码存入一维数组中,然后,每隔1段时间将

    数组中的对应字符的字型码通过P2端口送到显示器的段控端,实现相应字符的显示。程序

    设计利用for语句循环10次,调用延时函数,依次将“0~9”十个数字的字型码送到显示器

    的段控端。

    3、总体设计方案

    1、程序开始先将“0~9”十个数字的字型码存入一维数组中,然后,每隔1段时间将数

    组中的对应字符的字型码通过P0,P2端口送到显示器的段控端,实现相应字符的显示。

    2、P0口接共阴极数码管,P2口接共阳极数码管,程序设计利用for语句循环10次,调

    用延时函数,依次将“0~9”十个数字的字型码送到显示器的段控端。

    4、硬件电路设计

    124d160243b8f4cf6b3e19b28b1d1def.png

    5、软件程序设计

    #include

    #define uchar unsigned char

    #define uint unsigned int

    uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

    uchar i;

    void delay()

    { uint k,j;

    for(j=600;j>0;j--)

    for(k=248;k>0;k--);

    }

    void main(void)

    { while(1)

    {

    for(i=0;i<10;i++)

    {

    P0=table[i];

    P2=~table[i];

    delay();

    }

    }

    2)性能指标测试及结果分析

    7cc09f5ae944da5c4a0e449ffddd7d89.png

    程序运行

    7、项目总结

    这次的实验做得比较顺利,除了在编写程序的时候出现了错误,不过在老师和同学的帮助下程序正常生成了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单片机数模转换电路最小系统DAC0832数码管电路原理图和PCB
  • 单片机数码管显示驱动封装成一个函数,方便需要用到的时候直接调用1、数码管电路原理图2、数码管码表3、位选IO管脚定义4、延时函数5、动态显示一位数码管6、动态显示两位数码管7、动态显示三位数码管8、动态显示4...

    1、数码管电路原理图

    请添加图片描述

    2、数码管码表

    //数码管码表,共阳极
    unsigned char leddata[]={ 
     
                    0xC0,  //"0"
                    0xF9,  //"1"
                    0xA4,  //"2"
                    0xB0,  //"3"
                    0x99,  //"4"
                    0x92,  //"5"
                    0x82,  //"6"
                    0xF8,  //"7"
                    0x80,  //"8"
                    0x90,  //"9"
                    0x88,  //"A"
                    0x83,  //"B"
                    0xC6,  //"C"
                    0xA1,  //"D"
                    0x86,  //"E"
                    0x8E,  //"F"
                    0x89,  //"H"
                    0xC7,  //"L"
                    0xC8,  //"n"
                    0xC1,  //"u"
                    0x8C,  //"P"
                    0xA3,  //"o"
                    0xBF,  //"-"
                    0xFF,  //熄灭
                    0xFF  //自定义
     
                             };
    

    3、位选IO管脚定义

    sbit smg1 = P2^0;
    sbit smg2 = P2^1;
    sbit smg3 = P2^2;
    sbit smg4 = P2^3;
    

    4、延时函数

    //注意:必须包含<intrins.h>头文件才能使用
    void Delay1ms()		//@11.0592MHz
    {
    	unsigned char i, j;
    
    	_nop_();
    	i = 2;
    	j = 199;
    	do
    	{
    		while (--j);
    	} while (--i);
    }
    
    void delay_ms(unsigned int time)
    {
    	unsigned int i;
    	for(i=0; i<time; i++)
    	{
    		Delay1ms();
    	}
    }
    

    5、动态显示一位数码管

    //在数码管显示一位数字显示函数,
    //unsigned char i 输入0-9以内的数字
    void disply_one_digit(unsigned char i)
    {
    	P0 = leddata[i];
    	smg4 = 0;
    	delay_ms(5);
    	smg4 = 1;
    }
    

    6、动态显示两位数码管

    //在数码管显示两位数字显示函数,
    //unsigned char i 输入0-99以内的数字
    void disply_two_digit(unsigned char i)
    {
    	unsigned char shi,ge;
    	shi = i / 10;
    	ge = i % 10;
    	
    	P0 = leddata[ge];
    	smg4 = 0;
    	delay_ms(5);
    	smg4 = 1;
    	
    	P0 = leddata[shi];
    	smg3 = 0;
    	delay_ms(5);
    	smg3 = 1;
    }
    

    7、动态显示三位数码管

    //在数码管显示三位数字显示函数,
    //unsigned char i 输入0-999以内的数字
    void disply_three_digit(unsigned int i)
    {
    	unsigned int ge,shi,bai;
    	
    	bai = i / 100;
    	shi = i % 100 / 10;
    	ge  = i % 10;
    	
    	P0 = leddata[ge];
    	smg4 = 0;
    	delay_ms(5);
    	smg4 = 1;
    	
    	P0 = leddata[shi];
    	smg3 = 0;
    	delay_ms(5);
    	smg3 = 1;
    	
    	P0 = leddata[bai];
    	smg2 = 0;
    	delay_ms(5);
    	smg2 = 1;
    }
    

    8、动态显示四位数码管

    //在数码管显示四位数字显示函数,
    //unsigned char i 输入0-9999以内的数字
    void disply_four_digit(unsigned int i)
    {
    	unsigned int ge,shi,bai,qian;
    	
    	qian = i / 1000 % 10;
    	bai = i / 100 % 10;
    	shi = i / 10 % 10;
    	ge = i % 10;
    	
    	P0 = leddata[ge];
    	smg4 = 0;
    	delay_ms(5);
    	smg4 = 1;
    	
    	P0 = leddata[shi];
    	smg3 = 0;
    	delay_ms(5);
    	smg3 = 1;
    	
    	P0 = leddata[bai];
    	smg2 = 0;
    	delay_ms(5);
    	smg2 = 1;
    	
    	P0 = leddata[qian];
    	smg1 = 0;
    	delay_ms(5);
    	smg1 = 1;
    }
    

    9、主函数调用示例

    void main()
    {
    	while(1)
    	{
    //		disply_one_digit(5);
    //		
    //		disply_two_digit(9);
    //		
    //		disply_three_digit(123);
    		
    		disply_four_digit(1234);
    	}
    }
    
    展开全文
  • 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];
    }
    

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

    展开全文
  • 数码管电路的原理图如下图所示。 所谓“八位”指的是数码管上有八个子单元。每个子单元如下图所示。实际上开发板上的八位数码管是由两个四位八段共阴数码管组成。 所谓“八段”指的是每个子单元由8个发光...
  • 这是一个完整的带仿真电路单片机动态显示数码管程序,希望对大家有用。protel和keil仿真奥。
  • MCS-51单片机数码管

    2011-12-18 20:50:03
    对于大学生实验设计有帮助。。 一、实验目的 1、掌握七段数码管的显示原理。 2、掌握单片机数码管显示电路和数码管动态扫描显示程序的设计方法。
  • 51单片机数码管时钟

    2015-06-28 22:25:34
    51单片机下的六位数码管时钟,带C源代码和proteus仿真电路
  • 基于51单片机数码管显示

    千次阅读 2020-10-24 19:46:24
    基于51单片机数码管显示,定时器,数码管时间显示 ## 数码管显示原理 数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极...
  • 画出单片机电路原理图,编写程序,并通过开关按钮分别对小时、分钟、秒实现加减控制,实现在LED数码管时钟00.00.00格式时分秒。
  • 原理图 多数人也都知道,51单片机的入门第一篇就是Led灯的操作,当然了,那也是最基本的操作。上次玩完LED灯,就相当于是入门,今天我们来...由原理图可知,八个数码管并不是直接接在单片机的IO口上的,而是用了74H...
  • 这是基于51或者51单片机数码管显示时钟与仿真原理图的资源; 其中包括c语言源程序与keil仿真生成的hex文件可以直接烧录到单片机上进行看实物效果,其中还包括preteus仿真的电路图 此资源用与验证数码管定时显示时钟...
  • 51单片机数码管显示

    2021-08-25 12:50:17
    1.原理: 1.我们常用的数码管有两种:共阴极数码管和共阳极...5.数码管显示,仅靠单片机 IO 口来驱动是不行的,这里就需要增加外部驱动芯片74HC245 此外,还可以用138译码电路来控制位选。 2.原理图:(普中A2开.
  • 基于51单片机的矩阵键盘+数码管电路及c代码
  • 摘要:VC/C++源码,系统相关,单片机控制 C程序代码实现的DS1302单片机数码管读取及时钟显示程序,你可以了解到基于DS1302的日历时钟、1602液晶显示DS1302时钟、数码管读取演示及地址、数据发送子程序、Read1302()读...
  • C51单片机数码管动态显示

    万次阅读 多人点赞 2018-08-27 21:49:25
    数码管作为最廉价的输出设备,在各种自动化设备中有很大的应用,最简单普通的显示方式为动态刷新显示,称为假动态显示,即通过分时扫描每一位,利于人眼的视觉停留现象,造成一种静态显示的效果,如下图所示: ...
  • 本资源包括keil源程序和proteus电路仿真,能够实现数字0在8个数码管上依次显示,达到动态扫描的效果。
  • 基于51单片机数码管电子秤。系统部分主要包括STC89C52和扩展的外部数据存储器;数据采集部分由称重传感器,信号采用24位AD转换芯片HX711对传感器采集到的模拟量进行AD转换,四位共阴数码显示器,可以直观的显示...
  • 51单片机八位数码管时钟电路仿真

    千次阅读 多人点赞 2020-07-03 10:43:38
    器件选型有:AT89C51模块,八位阳极数码管显示模块,两个独立按键模块,还有P1口作为I/O口需要外加上拉电阻的电阻排,由于仿真的单片机模块内有时钟电路以及复位电路,这里省略了。 2、硬件设计与分析 电路原理图如...
  • 51单片机数码管显示历史键值TGU想说的话单片机程序设计实验目的实验内容实验原理矩阵键盘数码管动态显示实验环境实验代码 想说的话 这个单片机实验要求是我的同学把别人的设计要求发给我,让我帮忙做一下,但是做着...
  • 51单片机数码管详解

    千次阅读 多人点赞 2015-11-18 11:15:51
    数码管基础知识LED数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用的段数一般为7段,有的另加一个小数点 。LED数码管根据LED的接...

空空如也

空空如也

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

单片机数码管电路