单片机-数码管

数码管

  • 一个数码管的引脚是10个,显示8字需要7小段,另外还有一个小数点,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3脚和第8脚是连接在一起的
    在这里插入图片描述
    又由公共端可分为共阴极和共阳极
    共阴极数码管:发光二极管的阴极全部连接在一起,通常设计电路时将阴极接地;当我们给数码管的任一个阳极加高电平,对应的这个发光二极管就点亮了
    共阳极数码管:发光二极管的阳极全部连接在一起,通常设计电路时将阳极接高电平;当我们给数码管的任一个阴极加低电平,对应的这个发光二极管就点亮了
    用万用表检测数码管的引脚排列
    将数字万用表置于二极管挡,红表笔接在1脚,然后用黑表笔去接触其他各引脚,假设只有当接触到9脚时,数码管的a段发光,而接触其余引脚时则不发光。由此可知,被测数码管为共阴极结构类型,9脚是公共阴极,1脚则是数码管的a段。接下来再检测各段引脚,仍使用数字万用表二极管挡,将黑表笔固定接在9脚,用红表笔依次接2~10引脚时,数码管的其他段先后分别发光,据此便可绘出该数码管的内部结构和引脚排列图。而共阳极需将红、黑表笔对调。
    在这里插入图片描述

数码管静态显示

  • 当多位数码管应用于某一系统时,它们的"位选“是可独立控制的,而“段选“是连接在一起的,我们可以通过位选信号控制哪几个数码管亮,而在同一时刻,位选选通的所有数码管上显示的数字始终都是一样的,因为它们的段选是连接在一起的,所以送入所有数码管的段选信号都是相同的,那么它们显示的数字必定一样,数码管的这种显示方法叫做静态显示
    在这里插入图片描述
    • 在查看原理图时,原理图中标号相同的节点,在实际电路中是物理电气相连的,最上面一排是6个单位数码管,可以看到所有数码管的阳极,即标有a,b,c,d,e,f,g,h的引脚全部连接在一起,然后与下面的U1元件73HC573锁存器的数据输出端相连,锁存器的数据输入端连接单片机的P0口,P0口同时加了上拉电阻。数码管中WEl,WE2,WE3,WE4,WE5,WE6是它们的位选端,每一个数码对应一个位选端,与下面U2元件74HC573的数据输出端的低6位相连,U2的数据输入端也连接到单片机的P0口。两个锁存器的锁存端分别与单片机的P2.6和P2.7相连
    • 共阴极:
     #include <reg52.h>         //52系列单片机头文件
     sbit dula = P2^6;		   //申明U1锁存器的锁存端
     sbit wela = P2^7;		   //申明U2锁存器的锁存端
     void main()			  //主函数
     {
     		wela=1;	      //打开U2锁存器
     		P0=0xFE	;	      //送入位选信号
     		wela=0;		  //关闭U2锁存器
    
     		dula=1;	      //打开U1锁存器
     		P0=0x7F	;	      //送入段选信号
     		dula=0;		  //关闭U1锁存器
     		while(1);		  //程序停止到这里
     	}
    
    • 共阳极:
      #include <reg52.h>         //52系列单片机头文件
      sbit dula = P2^5;		   //申明U1锁存器的锁存端
      sbit wela = P2^6;		   //申明U2锁存器的锁存端
      void main()			  //主函数
      {
       wela=1;	      //打开U2锁存器
      	P0=0x01	;	      //送入位选信号
      	wela=0;		  //关闭U2锁存器
      
      	dula=1;	      //打开U1锁存器
      	P0=0x80	;	      //送入段选信号
      	dula=0;		  //关闭U1锁存器
      	while(1);		  //程序停止到这里
      }	
      
    • 可选择数码管哪位:
      #include<reg52.h>
      #define uint unsigned int 
      #define uchar unsigned char
      sbit dula=P2^6;
      sbit wela=P2^7;
      sbit HC138A = P2^0;
      sbit HC138B = P2^1;
      sbit HC138C = P2^2;
      uchar num;
      void delayms(uint xms){
      uint i,j;
      for(i=xms;i>0;i--)
    	 	for(j=110;j>0;j--);
      }
      uchar code table[]={0x3f, 0x06, 0x5b, 0x4f,0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
      void main(){
    	 wela=1;  	//打开U2锁存端
     	HC138A = 1;
     	HC138B = 0;
     	HC138C = 0;   //送入位选信号,低电平有效
     	wela=0;
     	while(1){
     		for(num=0;num<16;num++){	  //16个数循环显示
     			dula=1;		//打开U1锁存端
     			P0=table[num];
     			dula=0;
     			delayms(1500);
     			}
       		 }
      	}
    
    • 共阴极数码管编号:

数码管动态显示

  • 使六个共阴极数码管一次显示1~6:
  • 数码管的动态显示又称为数码管的动态扫描显示,即轮流向各位数码管送出字形码和相应的位选,利用发光二极管的余辉和人眼视觉的暂留作用,使人感觉各位数码管在同时显示
发布了67 篇原创文章 · 获赞 72 · 访问量 8264

猜你喜欢

转载自blog.csdn.net/fangweijiex/article/details/104202134