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

📄 017_符点数在数码管上显示.c

📁 本代码是关于符点数在数码管上显示的
💻 C
字号:
#include <REGX51.H>



#define PORTA P0
#define PORTC P2
#define LEDDATAPORT PORTA
#define LEDBITPORT  PORTC
const unsigned char LEDDATA[]={0x3f,0x06,0x5b,0x4f,0x66,
                               0x6d,0x7d,0x07,0x7f,0x6f,
							   0x77,0x7c,0x39,0x5e,0x79,0x71,
							   0x00,0x40,
							  };
							  
void Delay(unsigned int t)
{
  while(t)t--;
}






void main(void)
{
  unsigned char i;
  unsigned char LEDBuffer[8]={0,16,16,16,16,16,16,16};
  unsigned char ScanLEDCount;
  
  unsigned int SecondCount=0;
  unsigned char SwitchFunction=0;
  
  unsigned char DotPosition=0;
  unsigned char NagFlag=0;
  
  float Temp[10]={
                  3.1416,0.3621,0.0286,0.0094,0.0005,
				          12.763,0.3   ,0.48  ,0.06  ,0.008 ,
				         };
  
  long TempA;
  
  	
  
  while(1)
    {
	  if(DotPosition!=0)
	    {
		  if(DotPosition==ScanLEDCount)LEDDATAPORT=LEDDATA[LEDBuffer[ScanLEDCount]]|0x80;
		    else LEDDATAPORT=LEDDATA[LEDBuffer[ScanLEDCount]];
		}
		else LEDDATAPORT=LEDDATA[LEDBuffer[ScanLEDCount]];
	  LEDBITPORT=ScanLEDCount;
	  ScanLEDCount++;
	  if(ScanLEDCount==sizeof(LEDBuffer))ScanLEDCount=0;
	  Delay(664);
	  
	  SecondCount++;
	  if(SecondCount==1920)
	    {
		  SecondCount=0;
		  
		  Temp[SwitchFunction]=0-Temp[SwitchFunction];
		  TempA=Temp[SwitchFunction]*100000;
		  SwitchFunction++;
		  if(SwitchFunction==sizeof(Temp)/4)SwitchFunction=0;
		  
  		  NagFlag=0;
  		  if(TempA<0)
    	    {
	  		  TempA=~TempA;
	  		  TempA++;
	  		  NagFlag=1;
			}
  
          for(i=0;i<sizeof(LEDBuffer);i++)LEDBuffer[i]=16;
          LEDBuffer[0]=0;
		  
  		  if(TempA>=10000)DotPosition=5;
    	    else if(TempA>=1000)DotPosition=4;
	  	      else if(TempA>=100)DotPosition=3;
	    	    else if(TempA>=10)DotPosition=2;
		  	      else if(TempA>=1)DotPosition=1;
  	 	  for(i=DotPosition;i<6;i++)LEDBuffer[i]=0;
  		  DotPosition=5;
		  
  		  if(NagFlag==1)
		    {
			  if(TempA>=1000000)LEDBuffer[DotPosition+2]=17;
			    else LEDBuffer[DotPosition+1]=17;
			}
  		  
  		  i=0;
  		  while(TempA)
    	    {
	  	      LEDBuffer[i]=TempA%10;
	  		  TempA/=10;
	  		  i++;
		    }
  		    
  		  while(LEDBuffer[0]==0)
    	    {
	  	      for(i=0;i<sizeof(LEDBuffer);i++)LEDBuffer[i]=LEDBuffer[i+1];
	  		  LEDBuffer[sizeof(LEDBuffer)-1]=16;
	  		  DotPosition--;
		    }		  
		}	  
	}
}

⌨️ 快捷键说明

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