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

📄 main.c

📁 飞思卡尔芯片的LED显示
💻 C
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


char b;
int nDataToDisplay=0,nIndex=0,a=0;
char Table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

//LED动态扫描注意事项

/*LED动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象,
一般只要在1S内一个发光管亮24次以上,如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,
所以一般均取几个ms左右为宜。每次LED点亮的时间维持2MS以上,则人眼感觉不到闪烁。	 */



void SPI_Init(void)			 //SPI初始化
 {
 	 DDRB=0XFF;
   SPI0CR1 = 0x50;
  SPI0CR2 = 0x00;		 /*初始化SPI端口的主模式,主入从出MISO*/
  SPI0BR = 0x77;  //设置波特率
 
  SPI0DR=0x00;    /*虚写,初始化SPI标帜*/
 
       PTH_PTH1=1;
       DDRH_DDRH1=1;
       PTH_PTH0=1;
       DDRH_DDRH0=1;
       
   
 }


void delay(unsigned int j)   /*延时*/
    {
		unsigned char i;
		for(i=0;i<255;i++)
			{    
       		for(j=0;j<10;j++)
				{}
			}	
     }

 

 void Update_LED() 				//显示程序
{
 

  int nTemp;
  nTemp=nDataToDisplay;
  
     
   PORTB_BIT5=0;
  
 if((nTemp>0)||(nTemp==0))
  { 
  
  nIndex=nTemp%10;
 	
  while((SPI0SR & 0X80)==0);
  
  SPI0DR=Table[nIndex];
  PORTB_BIT5=0;
    
 	  delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
     
  PORTB_BIT5=1;  	  
 	 
   
  }
  

   nTemp=nTemp/10;  	  
    
 				 
  if(nTemp>0)
  {
  
   
  nIndex=nTemp%10;
  
  while((SPI0SR & 0X80)==0);
 
  SPI0DR=Table[nIndex];
   PORTB_BIT4=0;   
 
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    
 	PORTB_BIT4=1;
  	 
  }
  
   nTemp=nTemp/10; 
  
   if(nTemp>0)
  {
  
   
  nIndex=nTemp%10;
  
  while((SPI0SR & 0X80)==0);
 
  SPI0DR=Table[nIndex];
   PORTB_BIT3=0;   
 
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
     
  	PORTB_BIT3=1;
  	 
  }
  
  
  nTemp=nTemp/10; 
  
   if(nTemp>0)
  {
  
   
  nIndex=nTemp%10;
  
  while((SPI0SR & 0X80)==0);
 
  SPI0DR=Table[nIndex];
   PORTB_BIT2=0;   
 
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
     
  	PORTB_BIT2=1;
  	 
  }
   	
   nTemp=nTemp/10; 
  
   if(nTemp>0)
  {
  
   
  nIndex=nTemp%10;
  
  while((SPI0SR & 0X80)==0);
 
  SPI0DR=Table[nIndex];
   PORTB_BIT1=0;   
 
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
     
  	PORTB_BIT1=1;
  	 
  }
 
  nTemp=nTemp/10; 
  
   if(nTemp>0)
  {
  
   
  nIndex=nTemp%10;
  
  while((SPI0SR & 0X80)==0);
 
  SPI0DR=Table[nIndex];
   PORTB_BIT0=0;   
 
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
    delay(1000000000);
     
 	PORTB_BIT0=1;
  	 
  }
   
  
}		 


void main(void) 
{
    SPI_Init();
    DDRB=0xff;
    PORTB_BIT5=0;
    PORTB_BIT4=0;
    PORTB_BIT3=0;
    PORTB_BIT2=0;
    PORTB_BIT1=0;
    PORTB_BIT0=0;
 	
	 while(1)
    {
    	   
    		Update_LED();
    	   nDataToDisplay= nDataToDisplay+1;
    	   if(nDataToDisplay>999999)
    	   {
    	      nDataToDisplay=0;
    	   }
    }	  
	
}

 

⌨️ 快捷键说明

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