数码管流动显示(自己的单片机)

简介: /********************************************************************************** *  标题:                  试验数码管上显示数字( 单片机直接实现位选...
/**********************************************************************************
*  标题:                  试验数码管上显示数字( 单片机直接实现位选 共阴极)        *
*                                                                                  *
*  连接方法:P0与J12 用8PIN排线连接     P1与JP16 用排线连接                            *
***********************************************************************************
*                                                                                      *
* 请学员认真消化本例程,用573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管 *
***********************************************************************************/




#include <reg51.h> 


void delay(unsigned int i);      //函数声名
char DelayCNT;//定义变量
 
//此表为 LED 的字模, 共阴数码管 0-9  - 
unsigned char code   Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};  //段码控制


//此表为8个数码管位选控制, 共阴数码管 1-8个  - 
unsigned char code   dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};    //位选控制   查表的方法控制


/************主函数**********************/ 
main()
{  
   unsigned int i,LedNumVal=1 ;       //变量定义
   unsigned int LedOut[10];           //变量定义
   
   DelayCNT=0;


  while(1)
  {     
     if(++DelayCNT>=20)      //控制数字变化速度
     {
         DelayCNT=0;          //20个扫描周期清零一次
        ++LedNumVal;      //每隔20个扫描周期加一次
     }


     LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
     LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80;
     LedOut[2]=Disp_Tab[LedNumVal%100/10];
     LedOut[3]=Disp_Tab[LedNumVal%10];
     
     LedOut[4]=Disp_Tab[LedNumVal%10000/1000];       //千位
     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++) 
     {     
      P0 = LedOut[i];
      P1 = dispbit[i];   //使用查表法进行位选 
                  
/*      switch(i)               //使用switch 语句控制位选       
         {        
            case 0:P1 = 0x7F;  break;         
            case 1:P1 = 0xbF;  break;                 
            case 2:P1 = 0xdF;  break; 
            case 3:P1 = 0xeF;  break; 
            case 4:P1 = 0xf7;  break;
            case 5:P1 = 0xfb;  break;
            case 6:P1 = 0xfd;  break;
            case 7:P1 = 0xfe;  break;
          
         }       */
         
        delay(150);         //扫描间隔时间      太长会数码管会有闪烁感
      }
     
  }   
}    


/*******************延时函数**********************************************/
void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}
相关文章
单片机-蓝桥杯 用光敏电阻测量光照强度并显示在数码管上。
单片机-蓝桥杯 用光敏电阻测量光照强度并显示在数码管上。
233 1
单片机数码管显示热敏电阻实测温度,
单片机数码管显示热敏电阻实测温度,
105 0
|
传感器 存储 数据采集
单片机基于stm32单片机的数字温度计设计_kaic
古往今来,陶瓷在我们的生活中一直都是不可或缺的物品,而随着当今社会经济的快速发展,人们对于这些高档陶瓷产品的使用性能和产品质量上的要求也愈加严格。那么在陶瓷品的生产过程中,想要提高陶瓷品的品质和合格率,能够随时监测温度的温度计是必不可少的。 本课题的研究是基于单片机控制技术,设计出能够在陶瓷升温阶段对陶瓷温度进行检测和报警的温度计,以满足生产过程中对温度的实时检测的需求。 本文详细的阐述了温度计的设计原理以及它的硬件组成模块和软件设计方案。本课题是基于STM32单片机,使用K型热电偶温度传感器进行温度采集再通过OLED显示温度,并通过蓝牙模块进行远程控制和监测。在本课题的制作中,也考虑了本系统
|
编译器 芯片
单片机控制发光二极管的显示(2)
单片机控制发光二极管的显示(2)
|
编译器 芯片
单片机控制发光二极管的显示(1)
单片机控制发光二极管的显示(1)
|
测试技术 C语言 芯片
基于51单片机的自动打铃打鸣作息报时系统AT89C51数码管三极管时钟电路
基于51单片机的自动打铃打鸣作息报时系统AT89C51数码管三极管时钟电路
252 0
|
存储 编解码 芯片
基于单片机设计的遥控数字音量控制D类功率放大器设计
基于单片机设计的遥控数字音量控制D类功率放大器设计
280 1
基于单片机设计的遥控数字音量控制D类功率放大器设计
【51单片机】数码管显示
【51单片机】数码管显示
120 0