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

📄 display.c

📁 用TEA7567做的调频收音机,本人经测试通过的
💻 C
字号:
#include "global.h"
#include "display.h"
//**********************显示的开始***************************
    //显示函数,先显示万位,最后就是个位,是用共阳数码管的
      void Led_Display(void)             
      {
         Wan=1;
		 Qan=1;
		 Bai=1;
		 Shi=1;
		 Ge=1;  //显示控制口全为高电平时,关显示
		 switch(Mode)//显示切换
		 { 
		  case 0:{
//		  			if(Auto_Search_Flag==1)//如果在自动搜频模式下时
//		  		  	{
//						if(Flag_500ms==1)//计时大于0.5ms了
//							LED=0xff;//不显示
//						else
//							LED = Dis_Frequency[Dis_Index];//显示
//					}
//					else
		  				LED = Dis_Frequency[Dis_Index];
 			    }
				break;
		  case 1: LED = Dis_Volume[Dis_Index];    break;
		  case 2: LED = Dis_Delays[Dis_Index];    break;
		  case 3: LED = Dis_District[Dis_Index];  break;
		  case 4: LED = Dis_Node[Dis_Index];      break;
		  default:   break;
		 }
		 
		 switch(Dis_Index)   //各数码显示控制     
         {

		 		case 0: { Wan=0;Qan=1; Bai=1; Shi=1; Ge=1;}  break;
          		case 1: { Wan=1;Qan=0; Bai=1; Shi=1; Ge=1;}  break;
          		case 2: { Wan=1;Qan=1; Bai=0; Shi=1; Ge=1;}  break;
          		case 3: { Wan=1;Qan=1; Bai=1; 
							if(Auto_Search_Flag==1)//如果在自动搜频模式下时
							{
								if(Flag_500ms==1)//计时大于0.5ms了,不显示后两位
          						{	
									Shi=1; Ge=1;
								} 
								else
								{
									Shi=0; Ge=1;
								}
							}
						 	else
						 	{
						 		Shi=0; Ge=1;
						 	}
						 }
						break;
          		case 4: { Wan=1;Qan=1; Bai=1;
			    			if(Auto_Search_Flag==1)//如果在自动搜频模式下时
							{
								if(Flag_500ms==1)//计时大于0.5ms了,不显示后两位
          						{	
									Shi=1; Ge=1;
								} 
								else
								{
									Shi=1; Ge=0;
								}
							}
						 	else
						 	{
						 		Shi=1; Ge=0;
						 	}
 					    }
						break;
          		 
		 		default:   break;
		  }
		 Dis_Index++;         
		 if(Dis_Index>4)    Dis_Index=0;//回到最高位

     } 

	 //************************频率值转换函数*********************************************
	 void Frequency_Change(unsigned long i)
	 {
		Frequency_BCD[0]=i/100000;                  //万
		Frequency_BCD[1]=i%100000/10000;            //千
		Frequency_BCD[2]=i%100000%10000/1000;       //百
		Frequency_BCD[3]=i%100000%10000%1000/100;   //十
		Frequency_BCD[4]=i%100000%10000%1000%100/10;//个
	 	if(Frequency_BCD[0])
			Dis_Frequency[0]=Tab[Frequency_BCD[0]];          //求万位	
		else    	
			Dis_Frequency[0]=0xff;        //关显示万位
		Dis_Frequency[1]=Tab[Frequency_BCD[1]];//求个千位
		Dis_Frequency[2]=Tab[Frequency_BCD[2]]&0x7f;    //求得百位,加少数点了
		Dis_Frequency[3]=Tab[Frequency_BCD[3]];   //得得十位
//		Dis_Frequency[4]=0xc0;   //显示0
		Dis_Frequency[4]=Tab[Frequency_BCD[4]];   //显示个位
	 }

	 //波段切换时程序
	 void Band_Change(unsigned char i)
	 {
	 	if(i==0)
		{
			gdwPresetVCO=Ini_FreqH;//赋值高波段初值
			HighestFM=Max_FreqH;
			LowestFM=Min_FreqH;
		}
		else
		{
			gdwPresetVCO=Ini_FreqL;//赋值高波段初值
			HighestFM=Max_FreqL;
			LowestFM=Min_FreqL;
		}
		Mode=0;////显示频率
		Frequency_Change(gdwPresetVCO);//频率值转换
		Tuner_Preset (False,True,Low,gdwPresetVCO);    // Preset to searched station 0301 mao
	 }

     //音量值转换
	 void Volume_Change(unsigned char i)
	 {
	//	if(i/10)
			  Dis_Volume[0]=Tab[i/10];//十位
	//	else  Dis_Volume[0]=0xff;     //不显示十位

	    Dis_Volume[1]=Tab[i%10];//个位
	 }

	 //延时值转换
	 void Delays_change(unsigned char i)
	 {
	  	  if(i/100)
	 			Dis_Delays[0]=Tab[i/100];     //显示百位
		  else 	Dis_Delays[0]=0xff;      //关显示百位
		  Dis_Delays[1]=Tab[(i%100)/10]; //十位
		  Dis_Delays[2]=Tab[(i%100)%10]; //个位
	 }
	 
	 //区位值转换
	 void District_Change(unsigned char i)
	 {
	   	  unsigned char temp;
		  temp=i%100;
	 	  if(i/100)
		  {
  		  	Dis_District[0]=Tab[i/100];      //百位
			Dis_District[1]=Tab[temp/10]; //十位
			Dis_District[2]=Tab[temp%10]; //个位
		  }
	      else 	
		  {
		  	Dis_District[0]=0xff;      //关显示百位
			//if(temp/10)
		  		Dis_District[1]=Tab[temp/10]; //十位
		  	//else  
			//	Dis_District[1]=0xff; //关显示十位
		  }
		  Dis_District[2]=Tab[temp%10]; //个位
	  }

	  //结点值转换
	  void Node_Change(unsigned char i)
	  {
	      unsigned char temp;
		  temp=i%100;
	 	  if(i/100)
		  {
	  		Dis_Node[0]=Tab[i/100];   //百位
			Dis_Node[1]=Tab[temp/10]; //十位
			Dis_Node[2]=Tab[temp%10]; //个位
		  }
	      else
	  	  {
	  	  	Dis_Node[0]=0xff;         //关显示百位
		  	//if(temp/10)
		  		Dis_Node[1]=Tab[temp/10]; //十位
		  	//else  
			//	Dis_Node[1]=0xff;       //关显示十位
		  	Dis_Node[2]=Tab[temp%10];     //个位
		   }
	  }

	  void Ini_Data(void)
      {
	  //***************		  
		  VolSet(0);	
		  Frequency_Change(gdwPresetVCO);
		  WatchDog;//喂狗
		  Volume_Change(Volume);
		  Dis_Volume[2]=0xff;         //关
		  Dis_Volume[3]=0xa1;         //d
		  Dis_Volume[4]=0x83;         //b

		  Delays_change(Delay_s);
		  Dis_Delays[3]=0xff;         //关
		  Dis_Delays[4]=0x92;         //S

	      District_Change(District);
		  Dis_District[3]=0xc6;       //C
		  Dis_District[4]=0x89;       //H

		  Node_Change(Node);
		  Dis_Node[3]=0xab;           //n
		  Dis_Node[4]=0xa1;           //d

		  Start_Process();

		  

		  WatchDog;//喂狗		  
		   
      }

⌨️ 快捷键说明

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