专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

51单片机驱动8位数码管电路图+程序

作者:黄大垣   来源:本站原创   点击数:  更新时间:2013年11月28日   【字体:
电路图:



 JP10排线连接J12  J21跳线跳12处


测试程序 
 
#include<reg52.h>

 
typedef unsigned char BYTE;
typedef unsigned int WORD;

 

 
sbit LS138A = P2^2;   //定义138译码器的输入A脚由P2.2控制 
sbit LS138B = P2^3; //定义138译码器的输入脚B由P2.3控制
sbit LS138C = P2^4; //定义138译码器的输入脚C由P2.4控制
//此表为 LED 的字模, 共阴数码管   0-9  - 
BYTE code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; 
WORD LedOut[10];//数码管数组

 
/***************************************************************************
*

 
  *
*                    延时程序               *
****************************************************************************/

 
void Delay(WORD n)
{
    WORD x;

 
    while (n--)
    {
        x = 250;
        while (x--);
    }
}
/***************************************************************************
*

 
  *
*                    显示函数               *
****************************************************************************/
void display(WORD num)
{

 
         WORD i,LedNumVal ;
LedNumVal=num;   
   
LedOut[0]=Disp_Tab[LedNumVal%100000/10000]; //万位
    LedOut[1]=Disp_Tab[LedNumVal%10000/1000];  //千位
     LedOut[2]=Disp_Tab[LedNumVal%1000/100];   //百位
     LedOut[3]=Disp_Tab[LedNumVal%100/10];  //十位
LedOut[4]=Disp_Tab[LedNumVal%10]; //个位
  
     LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80;  //百位带小数点
     LedOut[6]=Disp_Tab[LedNumVal%100/10];   //十位
     LedOut[7]=Disp_Tab[LedNumVal%10];             //个位
 
for( i=0; i<8; i++)  //实现8位动态扫描循环
{  
P0 = LedOut[i];  //将字模送到P0口显示
         switch(i)  //使用switch 语句控制位选  也可以是用查表的方式  
    {    
case 0:LS138A=0; LS138B=0; LS138C=0;  break;         
   case 1:LS138A=1; LS138B=0; LS138C=0;  break;            
   case 2:LS138A=0; LS138B=1; LS138C=0;  break; 
   case 3:LS138A=1; LS138B=1; LS138C=0;  break; 
case 4:LS138A=0; LS138B=0; LS138C=1;  break;
case 5:LS138A=1; LS138B=0; LS138C=1;  break;
case 6:LS138A=0; LS138B=1; LS138C=1;  break;
case 7:LS138A=1; LS138B=1; LS138C=1;  break;
 
    }
 
Delay(1);

 
}
}

 
main()
{

 

 
while(1)
{
display(12345);
}

 
}
关闭窗口

相关文章