⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数码管1.c

📁 74HC595驱动数码管显示的程序
💻 C
字号:
#include<at89x51.h>
#include<intrins.h>
#define unchar unsigned char
code unchar TAB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e};
unchar sz[2];
unsigned int a=0,d=0,m=9;
// 数码管驱动相关接口 
 sbit  SDATA_595 = P1^0 ;       /*串行数据输入*/  
 sbit  SCLK_595  = P1^2;       /*移位时钟脉冲*/
 sbit  RCK_595   = P1^1;      /*输出锁存器控制脉冲*/
static void  WR_595(unsigned char data num2 )
 {
   unsigned char data count1;
   
   for(count1=0;count1<=7;count1++)
   {
     if((num2&0x80)==0x80)  /*最高位为1,则向SDATA_595发送1*/
	    SDATA_595=1;        /*发出数据的最高位*/
	 else  
	    SDATA_595=0;
	 
	 num2<<=1;         /*右移位*/
	 SCLK_595=0;	   /*产生上生沿*/
	 SCLK_595=1;
    
	}  

 }
/*-------------------------------------------------------------------------------
                     打开锁存,更新74595输出子程序
---------------------------------------------------------------------------------*/
static void Out_595(void)
 {
   RCK_595=0;
   _nop_();
   _nop_();
   RCK_595=1;  /*上升沿锁存数据*/

 }
 /*------------------------------------------------------------------------
                                算法
---------------------------------------------------------------------------*/
void calculate(void)		//算法
  {if(a<100)
   {sz[0]=a/10%10;		//十位
   sz[1]=a%10;}   //个位
	else if(a>99)
	{sz[0]=m;
	sz[1]=m;
	}
	}
/*-----------------------------------------------------------------------
							 显示
--------------------------------------------------------------------*/
void disp(void)
{ 
WR_595(TAB[sz[0]]);
WR_595(0x01);
 Out_595();
 WR_595(TAB[sz[1]]);
WR_595(0x02);
 Out_595();
 WR_595(0xff);
WR_595(0x00);
 Out_595();
}
/*-----------------------------------------------------------------
						主函数
---------------------------------------------------------------*/
main()
{while(1)
{unsigned i,j,k;
 for(k=0;k<1;k++)
	for(j=0;j<5;j++)
		for(i=0;i<120;i++)
			{calculate();
			 disp();} 
             a++;
             if(a>105)
             a=0;
             if(a>99)
               {
                m++;
                if(m>15)
                m=10;
			   }
            }	   
}	  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -