lcodu_main.c

来自「卫星接受机控制卫星和LCD显示」· C语言 代码 · 共 334 行

C
334
字号

//*----------------------------------------------------------------------------
//* File Name           : lcodu_main.c
//* Object              : Main application written in C
//* Creation            : wp   200710
//* Modif               : wp    20071023
//*----------------------------------------------------------------------------
#include "Board.h"
#include "vars.h"
//#include "usart.h"
#include "hardctrl.h"
#include "spi.h"
#include "string.h"

#define SENDIND_DATA(x)  {if(x) send_msg_USART1();\
                          else  send_msg_USART0(); }
                         
extern void initiation(void);


//*--------------------------------------------------------------------------------------
//* Function Name       : Main
//* Object              : Software entry point
//* Input Parameters    : none.
//* Output Parameters   : none.
//*--------------------------------------------------------------------------------------

  
void Delay (unsigned int a) { while (--a!=0); }  // 延时函数

char const app_version[4]={64,32,0x03,0xE8}; //本程序版本:64.32.1000;十进制数1000 换算成16进制为0x03e8 
char const sate_vaule[64]={10,01,10,02,01,13,23,45,10,00,01,00,10,00,02,00,10,01,10,02,01,13,23,45,10,00,01,00,10,00,02,00,10,01,10,02,01,13,23,45,
                           10,00,01,00,10,00,02,00,10,01,10,02,01,13,23,45,10,00,01,00,10,00,02,00};
//static unsigned char old_synselect;
signed char v_at1b_temp_tb[15][2];
unsigned char v_at1b_index;
signed char v_at1b_step,v_at1b_jump;//v_at1b_step保存了AT1B有多少个点
struct satellite sate[240];
//即后两个字节算成一个十进制数  
unsigned int oldalarm;

//unsigned char old_crc_counter;
//unsigned int alive_always_counter;
/*
函数名: LED
功能:使LED按要求发出不同的光
作者:gj
*/
void LED()
{
  if ( (AT91C_BASE_PIOA->PIO_PDSR & PA8_LED ) == PA8_LED )
    {
        AT91C_BASE_PIOA->PIO_CODR= PA8_LED;
    }
    else
    {
        AT91C_BASE_PIOA->PIO_SODR= PA8_LED;
    }
  
  key_flag=0;

}

/*
函数名: display
功能:将用于输入的数字(频率)和当前信号强度显示在显示屏上
作者:gj
*/
void display()
{
  LED();
  

}



/*
函数名: odu_data_init
功能:参数初始化,从flash中读出各配置参数的值
作者:wp
*/
void data_init(void)
{  unsigned int address;
   unsigned char i;
   if(strcmp(app_version,(char const*)rfu_sw_version)!=0)//写版本
   {
      address=(unsigned int)&rfu_sw_version;
      at91f_flash_write(address,4,(unsigned char*)app_version);
             
   }
   if(satellite_num==0xFF)//写版本
   {
      address=(unsigned int)&sate;
      at91f_flash_write(address,64,(unsigned char*)sate_vaule);
      address=(unsigned int)&satellite_num;
      i=64;
      at91f_flash_write(address,1,(unsigned char*)&i);      
   }
   syn_select=0;
   change_display=0;
   select[0]=select[1]=select[2]=0;
   key_flag=0;
   page_flag=0;
   num=0;
   
   //sate[]
   //Set_TX_RX_RF(TX_RF,(v_tx_f_lo/1000));//设置PLL的TX频率
   Set_TX_RX_RF(RX_RF,(v_rx_f_lo/1000));//设置PLL的RX频率

   /*先找好每一个需要调整衰减的温度点,以及其对应的衰减值*/
}



/*
函数名: adc_status_collect
功能:   对信号发生器的功率进行采集
说明:
作者:gj
*/

void adc_status_collect()
{
  AT91C_BASE_ADC->ADC_CR=AT91C_ADC_START;
  while((AT91C_BASE_ADC->ADC_SR&AT91C_ADC_DRDY)!=AT91C_ADC_DRDY){}
  adc_temp=AT91C_BASE_ADC->ADC_LCDR;
  
}


unsigned char recv_msg(void)
{ 
  return 0x00;
}


void change_BCD(unsigned int temp)
{
  
  num_flag=temp-1;
  while(temp)
  {
    switch(value[temp-1])
   {
      case ONE:
        BCD[temp-1]=1;
        break;
      case TWO:
        BCD[temp-1]=2;
        break;
      case THREE:
        BCD[temp-1]=3;
        break;
      case FOUR:
        BCD[temp-1]=4;
        break;
      case FIVE:
        BCD[temp-1]=5;
        break;
      case SIX:
        BCD[temp-1]=6;
        break;
      case SEVEN: 
        BCD[temp-1]=7;
        break;
      case EIGHT:
        BCD[temp-1]=8;
        break;
      case NINE:
        BCD[temp-1]=9;
        break;
      case ZERO:
        BCD[temp-1]=0;
        break;
      default:
        break;
  
  }
  temp--;
  } 
}


void key_handle(void)
{
    switch(page_flag)
    {
    case 0://主界面
        switch(value[num-1])
        {
          case ONE:
            select[0]=1;
            page_flag=1;
          break;
          case TWO:
            select[0]=2;
            page_flag=2;
            break;
            //select[0]=0;
          default:
            break;
        }          
        break;
    case 1://显示参数
        switch(value[num-1])
        {
          case ONE:
            select[1]=1;
            page_flag=3;
          break;
          case TWO:
            select[1]=2;
            page_flag=4;
            break;
            //select[0]=0;
          default:
            break;
        }   
        break;
    case 2://频率设置
        switch(value[num-1])
        {
          case ONE:
            select[2]=1;
            page_flag=6;
          break;
          case TWO:
            select[2]=2;
            page_flag=5;
            break;
            //select[0]=0;
          default:
            break;
        }   
        break;
    case 3://功率告警显示
        break;
    case 4://显示频率
        break;
    case 5://频率输入
        break;
    case 6://卫星选择
         switch(value[num-1])
        {
          case UP:
            if()
            { } 
            break;
          case DOWN:
            if()
            { } 
            break;
          case ONE:
            break;
          case TWO:
            break;
          default:
            break;
        }   
        break;
    case 7://极化选择
        switch(value[num-1])
        {
          case ONE:
            break;
          case TWO:
            break;
          default:
            break;
        }   
        break;
    case 8:
        break;
    case 9:
        break;
    }
  
  if(value[num-1]==ENTER) 
  {
    change_BCD(num);
    num=0;
   
      
  }
  else
    if(value[num-1]==DELE)
    {
      if(num!=0)
      {num--;
      }     
    }
  
}


  
   


 
//*-----------------------------------------------------------------------------
//* Function Name       : main
//* Object              : the main function.The entrance of the software.
//* autor               : wang ping  
//* Input Parameters    : none
//* Output Parameters   : none.
//*-----------------------------------------------------------------------------
int main()
{
  
  initiation();
  spi_init();//初始化SPI以及初始化SYN
  data_init();//从EEPROM读数据到变量
  Delay(8000000);
  while(1)
  {
     adc_status_collect(); 
     if(key_flag==0x02)
     {
       key_handle();
       display();
     }
     if ((v_counter_forsend+TIME_5SECONDS)<AT91C_BASE_RTTC->RTTC_RTVR)
     {
       LED();
       //display();
       v_counter_forsend=AT91C_BASE_RTTC->RTTC_RTVR;
     }
     
  }
  
}

⌨️ 快捷键说明

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