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

📄 sc1.c

📁 关于RST12864显示程序
💻 C
📖 第 1 页 / 共 5 页
字号:
     set('3');   
   // set('1');     
     set('+');
    set_end();     
}
void set_dec_p(void)//fuyang
{set ('P');  
  if(manual_flag==0)
     set('1');
     else
      set('3');     
// set('1');     
 set('-');
 set_end();     
}
void set_add_a(void)//fangwei
{set ('A');   
  if(manual_flag==0)
      set('1'); 
     else
     set('3');   
// set('1');     
 set('+');
 set_end();     
}
void set_dec_a(void)
{set ('A'); 
  if(manual_flag==0)
     set('1'); 
     else
     set('3');     
 //set('1');     
 set('-');
 set_end();     
}

void set_add_sc(void)
{set('C');
 set('1');
 set('+');
  set_end(); 
}
void set_dec_sc(void)
{set('C');
 set('1');
 set('-');
  set_end(); 
}


void set_add_c(void)//jihua
{
  set ('C');  
 
    if(go_flag==0)//go
       set('+'); 
     else
       set('s');   //stop    

  set_end();
}
void set_dec_c(void)//jihua
{ set ('C');

  if(go_flag==0)
     set('-');
     else
     set('s');               
  set_end();
    
}
void set_jiaoling_jihua(void)
{ char sk[6]={'\0'};
   if(SendSequence_Len<70)
   {
    set('D');     
    set('p');    
    sprintf(sk,"%5.1f",param_jihua);//have problem "+/-"
    setnum(sk,5);
    set_end(); 
   }  
}

void set_jiaoling_fangwei(void)
{ char sk[6]={'\0'};
   if(SendSequence_Len<70)
   {
     set('D');
     set('a');     
     sprintf(sk,"%5.1f",param_fang);
     setnum(sk,5);
     set_end(); 
   }  
}

void set_jiaoling_fuyang(void)
{ char sk[5]={'\0'};
   if(SendSequence_Len<70)
   {
    set('D');    
    set('e');     
    set('0');    
    sprintf(sk,"%4.1f",param_fuyang);
    setnum(sk,4);
    set_end();
}  
}


void PIN_CLEAR()
{
      PINDATA=0x01;//P4=0x01; 
      PINRSC;//RS=0;
      PINRWC;//RW=0;
      PINEN;//E=1;
      Delay(100);
      PINENC;//E=0;
}

void Write_command( char CMD)
{
      
      PINDATA=CMD;//P4=CMD; 
      //Delay(10);
      PINRSC;//RS=0;
      PINRWC;//RW=0;
      PINEN;//E=1;
      Delay(100);
      PINENC;//E=0;
    
}

void Write_data(char CMD)
{
      PINDATA=CMD;//P1=CMD; 
     // Delay(10);
      PINRS;//RS=1;
      PINRWC;//RW=0;
      PINEN;//E=1;
      PINENC;//E=0;
    //  Delay(10);
}
void charactertolcm(unsigned line, char char_temp[])//非绘图模式写入4个字符
{
      int i=0;
      char ch[8];
      char line_temp;
      line_temp=line;
      for(i=0;i<8;i++){
      ch[i]=char_temp[i];}  
     
      for(i=0;i<8;i++)
      { 
        if(!i%2){ 
        Write_command(line_temp); 
        line_temp++;}
        Write_data(ch[i]);
      }
}

void all_show(char sstr[][16],unsigned StartLine,unsigned LineNum)//整屏写入
{unsigned char i,j,l;
 Write_command(0x30);
 for(i=0;i<LineNum;i++)
  {
 
   for(j=0;sstr[i][j]!='\0';j++)
   show_buf[i][j]=sstr[i][j];
   for(l=j;l<17;l++)
   show_buf[i][l]=' ';
  } 
  if(LineNum<4)
   for(i=LineNum;i<4;i++)
    for(j=0;j<17;j++)
     show_buf[i][j]=' ';
  Write_command(0x80);
  for(i=0;i<16;i++)
  Write_data(show_buf[0][i]);
   Write_command(0x90);
  for(i=0;i<16;i++)
  Write_data(show_buf[1][i]);
   Write_command(0x88);
  for(i=0;i<16;i++)
  Write_data(show_buf[2][i]);
     Write_command(0x98);
  for(i=0;i<16;i++)
  Write_data(show_buf[3][i]);   
 
 }
void clear()//
{
    unsigned char add_x,add_y;
    Write_command(0x34);
  for(add_y=0x80;add_y<0xa0;add_y++)
 {    
      Write_command(add_y) ;
      Write_command(0x80) ;
      for(add_x=0;add_x<0x10;add_x++)
      {   
          Write_data(0x00);
      }
 }
for(add_y=0x80;add_y<0xa0;add_y++)
 {    
     
      Write_command(add_y) ;
      Write_command(0x88) ;
      for(add_x=0;add_x<0x10;add_x++)
      {   
          Write_data(0x00);
      }
      }
}
     

void Uart0_Initialization(void)//接收
{
    /*USART Settings:*/
    /*UART function, Idle line multiprocessor Protocol,
    //19200 baud, 8 data bits, NO Verification, 1 stop bit*/
    _DINT();//
    UCTL0 &=~SWRST;    //USART IS START
    UCTL0 = 0x10;
    
        UBR00 = 0x82;/*GPS 4800bps baud rate*/
        UBR10 = 0x06;    	
   
    UMCTL0 = 0x07; 
    UTCTL0 = 0x50;            
    URCTL0 = 0x00;  
    ME1 &=~0x80;    //串口0发送模块使能置0
    IE1 &=~0x80;    //串口0发送中断使能关
    IE1 |= 0x40;    //接收中断使能开          
    IFG1 &= ~(BIT6+BIT7);  //发送接收中断标志置0  
    P3SEL |= 0x30;   //P3.4,3.5引脚为外围功能模块
    P3DIR |= 0x10;   //P3.4为输出方向
    P3DIR &=~BIT5;   //P3.5为输入方向
    ME1 |= 0x40;     //串口0接收模块使能开
    _EINT();         //开中断
 }
 
 
 
#pragma vector= 0x12
__interrupt void Uart0_Rx(void)
{
  
}

void Uart1_Initialization(void)
{
    UCTL1 &=~ SWRST;  
    UCTL1 = 0x10;          
 //   UBR01 = 0x05;  //  //Gradient 9600bps baud rate
 //  UBR11 = 0x0D; // 
    UBR01 = 0x82;//0x41;//4800bps
    UBR11 = 0x06;//0x03;  
    UMCTL1 = 0x1f;//0x07;  ???????????
    UTCTL1 = 0x50;            
    URCTL1 = 0x00;            
    IE2 |= 0x30;   //发送接收中断使能开            
    IFG2 = 0x00;    //发送接收中断标志为0
}

void Uart_TX1(void)//发没问题,确定发送寄存器的地址
{
    TXBUF1=*(SendSequence);//发送寄存器
    Delay(10);
    Reset = FALSE;
}
#pragma vector=0x04
__interrupt void Uart1_TX(void)
{
    IFG2 &=~BIT5;//清发中断标志
    signal|=BIT3;
}
void handle_TX1(void)//对发送寄存器中的数据进行处理,前移一位
{
    int i;
    if(SendSequence_Len>0)
    SendSequence_Len--;
    for(i=0;i<SendSequence_Len;i++)
    *(SendSequence+i)=*(SendSequence+i+1);     
    if(SendSequence_Len>0)
    TXBUF1 = *(SendSequence);
    else 
    {
        Reset = TRUE;
    }
}
 void watch2(void)
 { 
 
    if(SendSequence_Len>0 && Reset==TRUE)         
      Uart_TX1();           
     while(Reset==FALSE)
      {
        if((signal&BIT3)==BIT3)
        {
              signal &=~BIT3;
              handle_TX1();
        }         
      }
 }
#pragma vector=0x06
__interrupt void Uart1_Rx(void)
{
  IFG2 &=~BIT4; //清串口1收中断标志
  if(ReceiveSequence_Len<80)
   {
    ReceiveSequence[ReceiveSequence_Len] = RXBUF1 & 0x00ff;//接收字符
   if((ReceiveSequence[ReceiveSequence_Len]==0x0A)|(ReceiveSequence[ReceiveSequence_Len]=='!'))//
  // if((ReceiveSequence[ReceiveSequence_Len]=='o')|(ReceiveSequence[ReceiveSequence_Len]=='!'))//
     flag+=1;// flag表示一个命令
    ReceiveSequence_Len++;
   }
}

   
void RS_go(int m)//接受数据前移m位  
{for(i=0;i<ReceiveSequence_Len;i++)
    ReceiveSequence[i]=ReceiveSequence[i+m];
    ReceiveSequence_Len-=m;
}
void RS_clr()
{ if(ReceiveSequence_Len>100)     
  ReceiveSequence_Len=0;     
}

void  find_ctr(void)
 {
  if(ReceiveSequence_Len==0)
   return;
 while(ReceiveSequence[0]!=0x0A & ReceiveSequence[0]!='!')
 {
   RS_go(1);
     if(ReceiveSequence_Len>100)
      {
        ReceiveSequence_Len=0;
        return;
      }
 }
 RS_go(1);
 if(ReceiveSequence_Len>100)
  ReceiveSequence_Len=0;
 }
 
 float judge_num(char sk[],int len,int bi)
 {  char sk1[50]={'\0'};
    char i=0,j=0;
    float back;
    for(j=0;j<len;j++)
    {sk1[i]=sk[i];
    i++;}
    back=atof(sk1)/bi;
    sk1[0]='\0';
    return back;
 }


void Judge_Instruction_And_Go(char char1,char char2)//监控命令处理函数 
{   
// Delay(6000);//波特率9600时延时2000收无误,波特率已改为4800
// Delay(1000);

 IE2 &=~BIT5;//串口1发中断关
 switch(char1)
  { 
   case  'A'://方位
          RS_go(1);
          RS_clr() ;   
         if(ReceiveSequence[8]==0x0A)
         // if(ReceiveSequence[8]=='o')
         {                 
          saveparam_fang=judge_num(ReceiveSequence,4,10);
          RS_go(5);
          saveparam_fuyang=judge_num(ReceiveSequence,3,10);        
          RS_go(4);
          RS_clr();
          lock1=1;

⌨️ 快捷键说明

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