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

📄 highw.c

📁 基于DSP芯片TMS320LF2407的高速公路室外显示屏驱动程序
💻 C
字号:
int screen_length=15;   //屏的长度 单位:块  (即长度/32. screen_length=32 or 15, i.e. 1024 or 480}

long pp;
#define _FAC_TEST

#define BYTE unsigned char

int finish_process=1;
int cycle_len=0;
int my_second,div_second,i_delay;
int rt_second,rt_tenminute;
BYTE sms_kk;

int sms_time;
int error;
int de_sms;

#include ".\2407_add\lf2407.h"  
  
#include "general.h"

#include "hanzi.h"
//#include "math.h" 
#include "dsp_timer.h"
#include "dsp_com.h"
#include "dsp_flash.h"
#include "dsp_display.h" 
#include "REAL_TIME.h"

volatile unsigned char *p_cycle=(volatile unsigned char*)  0x0f80;
 
void main(){                          
 
    int i, j,b, mm=120, m,aa,cycle,n,k;
    BYTE kk;
    int main_temp;
    int test_gry;
   
    int num_main,i_start,i_end,flag,a_main;
    volatile unsigned int *pdata=(volatile unsigned int*)  0x8000;
      
   
    
    my_second=0;
    div_second=0;
    i_delay=0;
    
   
    
    init_sys();
    init_com(0);
    init_timer();
    timer1init();
    start_timer1();
    enable_int();
    /*
    for(i=0;i<124;i+=4)
         erase_sector(i);
      */
    chg_speed(0);   
    selectchip(0x08);  
    clr_dispRam(0x00ff);
    selectchip(0x18);  
    clr_dispRam(0x000a);
    selectchip(0x08);
     chg_speed(0); 
    /*save_cartoon(); 
    test_gry=15;
    while(1){
      test_cartoon();    
    }*/ 
       /*准备显示循环 */
    /*(pdata+0x17ff-128*2)=0x05;
    spec_disp(0x07);
    selectchip(0x18);   
    while(1); */
    aa=flash_read(0,p_flashbuf,0);  
    
    if(aa>3){
         if(aa<620)
		    cycle_len=(aa/5);
		 else
		    cycle_len=124;
		    	
		 for(i=0;i<cycle_len;i++)
		     p_cycle[i]=(p_flashbuf[5*i+2]&0x0F)*100+(p_flashbuf[5*i+3]&0x0F)*10+(p_flashbuf[5*i+4]&0x0F);
      }
    else{
         cycle_len=124;
         for(i=0;i<cycle_len;i++)
             p_cycle[i]=i;
      } 
   
      /*准备显示循环 */   
     
    aa=0x08;    
    my_second=0;
    finish_process=1;  
    sms_kk=1; 
    /*for(i=0;i<124;i++)
      erase_sector(i);
     
  /*  
    while(1){
        WSGR1=0x10;
    }
    my_second=2;
    while(my_second>0);
    read_time();
    */
    change_gray(15);
    
    
    test_gry=15;

       
  
///////////////////  斜线
  
     while(1){
      i=0;
      test_lean();    
     }  
////////////////////////////全亮     
/* while(1){
    selectchip(0x08);  
    clr_dispRam(0x00ff);
    selectchip(0x18);  
    clr_dispRam(0x00ff);
    if(test_gry==15){
       my_second=30;
       change_gray(test_gry);
       test_gry=0;
    }
    else{
       test_gry=15;
    }
    
    while(my_second>0);
       
    
    //test_lean();
    selectchip(0x08);  
    clr_dispRam(0x00ff);
    selectchip(0x18);  
    clr_dispRam(0x00ff);
        
    if(test_gry==0){
       my_second=3; 
       change_gray(test_gry);
       test_gry=15;
       }
    
    
    while(my_second>0);
    
        
   }*/    
/////////////////////////时钟   
   
   /*
   selectchip(0x03); 
   while(1){
     WSGR2=0x0b;
     aa=WSGR1; 
     WSGR2=0x0c;
     aa=WSGR1;
     WSGR2=0x0d;
     aa=WSGR1; 
     aa=(BYTE)(aa&0x00ff);
     WSGR2=0x11; 
     WSGR1=0x0a;
     WSGR2=0x11; 
     aa=WSGR1;
     aa=aa&0x00ff;
  }  */
   real_time_init();
   read_time();
   rt_second=0;
   rt_tenminute=0;
   
   
   chg_speed(0); 
///////////////////   
/*
    while(1){ 
                
        
        if(rt_tenminute==0){
          read_time();
          main_temp=p_flashbuf[4];
          main_temp=(main_temp&0x00FF);
          main_temp=(main_temp/16)*10+(main_temp%16);           
          time_change_gray(main_temp);
          rt_tenminute=5;
         }
                         
         
begin_sms:         
        if((finish_process==1)&&(my_second==0)){
       	      
       	     
       	     
       	     AT_init(); 
             init_SRbuf(3);
             div_second=1000;
       	     my_second=7;
             while(my_second>6);
             
             AT_read(sms_kk);
             de_sms=sms_kk;            
             sms_kk++;
             if(sms_kk>15){
                 sms_kk=1;
                     /////////////////////////////手机初始化
               }
                
             //init_SRbuf(3);
             div_second=1000;	
             my_second=3; 
             while(my_second>1);
             
           } 
        
        if((finish_process==0)&&(my_second<2)){
             analyse(&i_start,&i_end);
             num_main=i_end-i_start;  
             flag=JustYesNo(&i_start,&i_end);             
           
       	     
       	     
       	     AT_delete(de_sms);
       	     
       	     div_second=1000;	
             my_second=5;
             while(my_second>3);
             
             if((flag>0)&&(flag<10)&&(de_sms<3)){
                 set_time(); 
              }              
       	     
       	     ////////////////////////////flag=1
       	     if(flag==1){
       	            error=1;
       	            i_start=i_start+4;
       	            aa=(p_recbuf[i_start+8]&0x0f)*10+(p_recbuf[i_start+9]&0x0f);
       	            //change_gray(aa);    
       	            a_main=(p_recbuf[i_start]&0x0F)*100+(p_recbuf[i_start+1]&0x0F)*10+(p_recbuf[i_start+2]&0x0F);  ///??//
       	            a_main=a_main+4;
       	            flash_write(a_main,(p_recbuf+i_start+3),(num_main-16));    ////////////////////////写入flash
       	            
       	            a_main=(p_recbuf[i_start+13]&0x0F);    
       	            if(a_main==0)
       	                flash_write_old(1,(p_recbuf+i_start+14),4);
       	          
       	           my_second=6;
                   while(my_second>3);
                    
        	       AT_ack((i_start-4),num_main);////////发回去
       	            
       	                	     /////////////// 
       	           
       	           div_second=1000;	
                   my_second=30;
                   //init_SRbuf(3);       	            
       	                
       	       }
       	     ///////////////////////////////flag=1
       	     ////////////////////////////flag=3
       	     if(flag==3){
       	           error=1;
       	           i_start=i_start+4;    
       	           a_main=(p_recbuf[i_start]&0x0F)*100+(p_recbuf[i_start+1]&0x0F)*10+(p_recbuf[i_start+2]&0x0F);  ///??//
       	           a_main=a_main+4;
       	           flash_write(a_main,(p_recbuf+i_start+3),0);    ////////////////////////写入flash
                   my_delay(5000);
                   
                   my_second=6;
                   while(my_second>3);
        	       AT_ack((i_start-4),num_main);////////发回去
       	            
       	           div_second=1000;	
                   my_second=30;
                   //init_SRbuf(3);   	     
       	     
       	       }
       	     ///////////////////////////////flag=3
       	     ////////////////////////////flag=4
       	     if(flag==4){
       	         error=1;
       	         i_start=i_start+4;
   	          	 flash_write_old(0,&p_recbuf[i_start],num_main-13);
   	          	  
   	          	 my_second=6;
                 while(my_second>3);
       	         AT_ack((i_start-4),num_main);////////发回去
       	         
       	         ///////////////////////////////////
       	         aa=flash_read(0,p_flashbuf,0);
		         if(aa>=5){
		     	    cycle_len=aa/5;	
		            for(i=0;i<cycle_len;i++)
		                p_cycle[i]=(p_flashbuf[5*i+2]&0x0F)*100+(p_flashbuf[5*i+3]&0x0F)*10+(p_flashbuf[5*i+4]&0x0F);
                  }
                 else{
             	    cycle_len=124;
             	    for(i=0;i<cycle_len;i++)
             	        p_cycle[i]=i;
       	          }
       	     
       	           div_second=1000;	
                   my_second=30;
                   //init_SRbuf(3);
       	      }
       	     ///////////////////////////////flag=4
       	     ////////////////////////////flag=5
       	     if(flag==5){
       	           error=1;
       	           i_start=i_start+4;
    		       aa=flash_read(0,p_flashbuf,0);
    		       for(i=0;i<(num_main-13);i++)
    	                   p_flashbuf[aa+i]=p_recbuf[i_start+i];
    	           flash_write(0,p_flashbuf,aa+num_main-13);
    	           
    	           /////////////////////
    	           my_second=6;
                   while(my_second>3);
       	           AT_ack((i_start-4),num_main);////////发回去
       	           
       	           ////////////////////////////////
       	           
    	           aa=flash_read(0,p_flashbuf,0);
		           if(aa>=5){
		     	      cycle_len=aa/5;	
		              for(i=0;i<cycle_len;i++)
		                  p_cycle[i]=(p_flashbuf[5*i+2]&0x0F)*100+(p_flashbuf[5*i+3]&0x0F)*10+(p_flashbuf[5*i+4]&0x0F);
                    }
                   else{
             	      cycle_len=124;
             	      for(i=0;i<cycle_len;i++)
             	          p_cycle[i]=i;
       	            }
       	     
       	           /////////////////////
       	           div_second=1000;	
                   my_second=30;
                   //init_SRbuf(3);
       	     }
       	     ///////////////////////////////flag=5
       	     ////////////////////////////flag=6
       	     if(flag==6){
       	         error=1;
       	         
       	         i_start=i_start+4;    
       	         a_main=(p_recbuf[i_start]&0x0F)*100+(p_recbuf[i_start+1]&0x0F)*10+(p_recbuf[i_start+2]&0x0F);  ///??//
       	         
       	         fac_reset(a_main);
       	          
       	         div_second=1000;	
                 my_second=30;
                 //init_SRbuf(3);           	     
       	     }
       	     ///////////////////////////////flag=6
       	     sms_time=0;
       	     
       	     my_second=20;
       	     while(my_second>2);
       	     
       	     while((error==1)&&(sms_time<3)){
       	         sms_time++;
       	         ///////////////////////////////
       	         if(((*SCIRXST)&(0x80))!=0){
                     ///////////////////////////串口出错
                     *WDCR=0xA8;
                    } 
       	         
       	         ////////////////////////////
       	         AT_ack((i_start-4),num_main);
       	         my_second=20;
       	         while(my_second>2);
       	     }
       	             
       	     
       	        
       	     finish_process=1;
       	     
       	     init_SRbuf(3);
       	     
       	     if((flag>0)&&(flag<6)){
       	         my_second=0;
       	         goto begin_sms;
       	     
       	     }  
       	        
        }
        
       
       if(i_delay>0) continue;
              
       aa=0;
       if(cycle_len>124)
          cycle_len=124;
       do{
       	  
       	  i=flash_read((p_cycle[cycle]+4),p_flashbuf,0);
  	      cycle++;
  	      if(cycle>=cycle_len)
  	         cycle=0;
  	      if(cycle<0)
  	         cycle=0;
  	        aa++;
          }while((aa<cycle_len)&&(i<13));
                 
        
       //goto disp_next;
       if(i<13)  continue;*/
/*disp_next:
       m=17;
       n=0;
       k=1;
       do{
         getPic(pdata48,16,k,6,0);
	     sort_screen(m,n,pdata48,6,7); 
	     m=m+(n+6)/4;
	     n=(n+6)%4;
	     k++;
	     }while(m<32);
	     spec_disp(0x07);
*/	    
/*	   total_disp(p_cycle[cycle-1]+4); 
         
          
       if((g_flag&0x10)==0)
           g_flag=(g_flag|0x10);
       else  
           g_flag=(g_flag&0xEF);            
       selectchip(g_flag);
       
       if(((*SCIRXST)&(0x80))!=0){
          ///////////////////////////串口出错
           *WDCR=0xA8;
       } 
        ////////////低功耗
       while(i_delay>20){
          
          *SCSR1=(*SCSR1)&0xCFFF; 
         } 
      
      
        ////低功耗
     
          
      } */
         
      
}   
 
 
void interrupt  sciint(){
    
}
 
void interrupt  timer1(){
     
    int flag;
    
    flag=(*EVAIFRA)&0x0080;
    if(flag!=0x0080){ 
       enable_int();
       return;
       }
       
     *T1CNT=0x80;
     *EVAIFRA=(*EVAIFRA)&0x0080;
     if(chgYesNo>0)
          chgYesNo--;
     if(chgYesNo<0)
          chgYesNo=0;
     if(div_second>1000)
           div_second=1000;
     div_second--;
     if(div_second<=0){
       my_second--;
       i_delay--; 
       div_second=1000;
       rt_second++;
     }
     if((rt_second<0)||(rt_second>=60)){
        rt_second=0;
        if(rt_tenminute>0)
           rt_tenminute--;
        if((rt_tenminute<0)||(rt_tenminute>10))
           rt_tenminute=0;
        }
        
     if((my_second<=0)|(my_second>200))
         my_second=0;
     if((i_delay<0)|(i_delay>200))
         i_delay=0;  
         
     if(((*SCIRXST)&(0x80))!=0){
          ///////////////////////////串口出错
           *WDCR=0xA8;
       }     
         
     enable_int();

}

void interrupt  timer2(){

     ;

}        

void interrupt nothing(){

  return;
}

⌨️ 快捷键说明

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