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

📄 main.c.bak

📁 sed1335液晶驱动器源码
💻 BAK
字号:
#include "display.h"
void delay(unsigned int count)
{
     unsigned int a,b;
     for(a=0;a<count;a++)
        {
            for(b=0;b<100;b++);
        }
}
void delay_m(unsigned int t)
{  
	 unsigned int a=100;
   while(t!=0){
   	  while(a!=0){
   	  	  a--;
   	  	}
   	  t--;
   	}
}
void panel_led_open(void)
{
   PORTK_BIT0=1;
}
void panel_led_close(void)
{
   PORTK_BIT0=0;
}
void Port_Init(void)           
{
  //Lcd PORT direction set
  //DDRA = 0xc0;
  
  PORTA = 0x37;
  PORTB = 0xff;
  DDRA = 0xff;
  DDRB = 0xff;
    
  //PORTA = 0xc0;
 
  //DS1302 PORT direction set
    
  DDRM_DDRM3 = 1;       //DS1302 RST port direction is output
  DDRM_DDRM4 = 1;       //DS1302 SDA direction is output
  DDRM_DDRM5 = 1;       //DS1302 SCL direction is output
  
  PTM_PTM3 = 0;
  PTM_PTM4 = 0;
  PTM_PTM5 = 0;
    
  //SPI CS output PORT direction set
   
  DDRS_DDRS1 = 1;     //M_CS0
  DDRK_DDK3 = 1;      //M_CS2
  DDRS_DDRS0 = 1;     //M_CS1
  DDRP_DDRP4 = 1;     //L_CS0
  DDRK_DDK2 = 1;      //L_CS1
  DDRK_DDK1 = 1;      //L_CS2
  
  DDRK_DDK0=1;
  PORTK_BIT0=0;
  PTS_PTS1 = 1;	       //port is high output
  PORTK_BIT3 = 1;
  PTS_PTS0 = 1;
  PTP_PTP4 = 1;
  PORTK_BIT2 = 1;
  PORTK_BIT1 = 1;
  
  PTT_PTT5 = 1;
  PTT_PTT6 = 1;
  PTT_PTT7 = 1;
   
  DDRT_DDRT5 = 1;       //N_RST0
  DDRT_DDRT6 = 1;       //N_RST1
  DDRT_DDRT7 = 1;       //N_RST2

  DDRK_DDK4 = 1;      //F_WP(eeprom)
  PORTK_BIT4 = 1;     //F_WP is high,eeprom protected.
  
  //BG light PORT set(仪表背光灯驱动)
  
  DDRK_DDK0 = 1;      //BGCON  
  DDRH_DDRH4 = 0;
  DDRH_DDRH3 = 0;
  DDRJ_DDRJ0 = 0;
  
  PIEH_PIEH4 = 1;     //clear key interrupt enable(CLEAR)
  PPSH_PPSH4 = 0;			//fall edge trig
  PIEJ_PIEJ0 = 1;     //hour key interrupt enable (HOUR)
  PPSJ_PPSJ0 = 0;
  PIEH_PIEH3 = 1;     //minute key interrupt enable(MINU)
  PPSH_PPSH3 = 0;     
}
void main(void)
{
  char m_i=0;
  unsigned  int count=0;
  char flag_temp=0;
  unsigned char failure_count=0;
  unsigned char flag_failure_scan=1;
  unsigned char m_j=0;
  char m_n=0;
  char flag_m_clr=0;
  char flag_m_k=0;
  unsigned char failure_temp[20];
  unsigned char fail_num=1;
  unsigned char flag_system_failure=0;
  //unsigned int led_data=0x0001;
  DDRB=0XFF;
  DDRA=0xff;
  PORTA=0xff;
  Port_Init();
  flag_time=0;
  lcd_INIT();//lcd初始化
  key_init();//按键初始化
  timer_init();//定时器初始化
  NOP();
  SPI0_Init();						//SPI0、SPI1初始化
  SPI0_Enable();
  SPI1_Init();
  SPI1_Enable(); 
  for(m_n=1;m_n<13;m_n++){	  
  	  system_failure[m_n]=1;
  	}
  for(m_n=13;m_n<20;m_n++){	  
  	  system_failure[m_n]=0;
  	}
  cli();
  LED_Drive1(0xffff);			//仪表板指示灯亮
  LED_Drive2(0xffff);
  LED_Drive3(0xffff);
  variable_init();
  //lcd_display_OFF(0x56);
  lcd_open_display();
  //lcd_display_ON(0x56);
  delay(20000);
  LED_Drive1(0x0000);			//仪表板指示灯灭
  LED_Drive2(0x0000);
  LED_Drive3(0x0000);
  //lcd_bmp(0,0,40,200,1,back,0,zimode_left,zimode_right,first_page);
  delay(20000);
  delay(20000);
  delay(20000);
  lcd_display_OFF(0x56);
  lcd_clr_row(0,0,40,200,first_page);
	lcd_clr_row(0,0,40,200,secon_page);
	//sei();
	lcd_back();	
	//for(;;);
  
  lcd_display_ON(0x56);
  /*LED_Drive1(0xffff);			//仪表板指示灯灭
  delay(20000);
  delay(20000);
  delay(20000);
  LED_Drive2(0xffff);
  delay(20000);
  delay(20000);
  delay(20000);
  LED_Drive3(0xffff);*/ 
	for(;;)
	 {
	 	if(led_flash==1){
	 		if(led_flash_mode==0){
		 			if((led_count+1)/16==0){
		 		  	   LED_Drive1(0x0001<<(led_count%16));
		 		  	}
		 		  else if((led_count+1)/16==1){
		 		  	   LED_Drive2(0x0001<<((led_count-16)%16));
		 		  	}
		 		  else if((led_count+1)/16==2){
		 		  	   LED_Drive3(0x0001<<((led_count-32)%16));
		 		  	}
	 			}
	 		else if(led_flash_mode==1){
	 			  if(led_count%16==0)led_data=0x0001;
	 			  if((led_count+1)/16==0){
		 		  	   LED_Drive1((0x0001<<(led_count%16))|led_data);
		 		  	   led_data|=(0x0001<<(led_count%16));		 		  	   
		 		  	}
		 		  else if((led_count+1)/16==1){
		 		  	   LED_Drive2((0x0001<<((led_count-16)%16))|led_data);
		 		  	   led_data|=(0x0001<<((led_count-16)%16));
		 		  	}
		 		  else if((led_count+1)/16==2){
		 		  	   LED_Drive3((0x0001<<((led_count-32)%16))|led_data);
		 		  	   led_data|=(0x0001<<((led_count-32)%16));
		 		  	}
		 		  //led_data|=(0x0001<<(led_count%16));
	 			}
	 		else if(led_flash_mode==2){
	 			  if((led_count+1)/16==0){
		 		  	   LED_Drive1(0xffff>>(led_count%16));		 		  	   
		 		  	}
		 		  else if((led_count+1)/16==1){
		 		  	   LED_Drive2(0xffff>>((led_count-16)%16));
		 		  	}
		 		  else if((led_count+1)/16==2){
		 		  	   LED_Drive3(0x00ff>>((led_count-32)%16));
		 		  	}
		 		  //led_data=0x0001;	
	 			}  
	 		  led_flash=0;
	 		}
	 	if(flag_key_scan==1)
	 	  {  
	 	  	 LCD_LED_set();
	 	  	 count=0; 
	 	     if(key_code==key_left){
	 	     	   flag_m_clr=1;
	 	     	   lcd_screen_state++;
	 	     	   key_code=0;
	 	     	   if(lcd_screen_state>=3)lcd_screen_state=0;
	 	     	   if((lcd_screen_state==1)||(lcd_screen_state==2))flag_data_scan=1;	 	     	      
	 	     	}	 	    
	 	    else if((key_code==key_right)&&(lcd_screen_state==lcd_general)){
	 	    	   	  /*lcd_lich[0]=0x20;//分裏程清零;
						    lcd_lich[1]=0x20;
						    lcd_lich[2]=0x30;
						    lcd_lich[3]=0x2e;
						    lcd_lich[4]=0x30;
						    lcd_lich[5]=0x00;
                lcd_km_lich[0]=0;
				  		  gloat_m=lcd_km_lich[0]*100;
				  		  lcd_lich_to_ascii(gloat_m,lcd_lich);
				  		  flag_failure=1;*/
				  		  system_failure[fail_num--]=0;
				  		  if(fail_num==0)fail_num=12;
				  		  panel_led_open();
				  		  LCD_LED_set();
	 	    	}
	 	    else if(key_code==key_enter){
	 	    	      system_failure[fail_num++]=1;
	 	    	      if(fail_num>=13)fail_num=1;
	 	    	      panel_led_close();
	 	    	      LCD_LED_set();
	 	    	}	       
	 	    flag_key_scan=0;			 	 
	 	  }
	 	 for(m_j=0;m_j<20;m_j++){
	 	 	  if(system_failure[m_j]!=failure_temp[m_j]){
	 	 	  	  failure_temp[m_j]=system_failure[m_j];
	 	 	  	  flag_system_failure=1;
	 	 	  	}
	 	 	}
	   switch (lcd_screen_state)
	     {
	        case lcd_general:
	             if(flag_m_clr==1)
	               {  
	               	  lcd_display_OFF(0x56);
		               	lcd_clr_row(0,0,40,200,first_page);
		               	lcd_clr_row(0,0,40,200,secon_page);
		               	lcd_back();
		               	lcd_vol_indi(2,140,0,vol_num[1],secon_page);
		               	lcd_oil_indi(34,140,0,oil_num[1],first_page);
		               	lcd_display_ON(0x56);
	                }
	             if((lcd_km_rev[1]!=lcd_km_rev[0])||(flag_m_clr==1)){
	             	  lcd_rev_to_ascii(lcd_km_rev[0],lcd_rev);                 
	                lcd_ascii_string(20,172,lcd_rev,0,0,first_page);
	                lcd_km_rev[1]=lcd_km_rev[0];
	               }
	               
	             if((lcd_km_lich[1]!=lcd_km_lich[0])||(flag_m_clr==1)){
	             	  gloat_m=lcd_km_lich[0]*100;
  	              lcd_lich_to_ascii(gloat_m,lcd_lich);
	                lcd_ascii_string(24,148,lcd_lich,0,0,first_page);
	                lcd_km_lich[1]=lcd_km_lich[0];
	               }
	             if((vol_num[1]!=vol_num[0])||(flag_m_clr==1)){ 		         
					         lcd_vol_indi(2,140,vol_num[1],vol_num[0],secon_page);
					         vol_num[1]=vol_num[0];
					      }
					     if((oil_num[1]!=oil_num[0])||(flag_m_clr==1)){
					         lcd_oil_indi(34,140,oil_num[1],oil_num[0],first_page);
					         oil_num[1]=oil_num[0];
					      }
					     if((flag_failure==1)||(flag_system_failure==1))
					       {
					         for(m_j=0;m_j<20;m_j++){
					         	  if(system_failure[m_j]==1)failure_count++;					         	  
					         	}         
					         if(failure_count>4){	
					         	  failure_num=lcd_failure_cyc(failure_num+1,system_failure);
					         	  if(failure_num==0)failure_num=failure_num=lcd_failure_cyc(failure_num+1,system_failure);
					            lcd_failure_scroll(failure_num,scroll_enable);
					         	}
					         else if((failure_count<=4)&&(flag_system_failure==1)){
						            	  	failure_num=lcd_failure_cyc(0,system_failure);
						                  lcd_failure_scroll(failure_num,scroll_disable);			                
					            	}
					         flag_system_failure=0;   						            		          
					         failure_count=0;					       	 
					         flag_failure=0;
					       }
					      flag_m_clr=0;
	             break;
	        case lcd_input_display:
	             if(flag_m_clr==1){
	             	  //lcd_display_OFF(0x56);
	               	lcd_clr_row(0,0,40,200,first_page);
	               	lcd_clr_row(0,0,40,200,secon_page);
	               	flag_m_clr=0;
	               	//lcd_display_ON(0x56);
	               }
	             if(flag_data_scan==1){
	             	  //lcd_display_OFF(0x56);
	             	  lcd_input_data(shuru,input_data);
	             	  //lcd_display_ON(0x56);
	             	}
	             lcd_inout_change(input_data,input_data_temp,in_mode);
	             //flag_m_k=1;
	             break;
	        case lcd_output_display:
	             if(flag_m_clr==1){
	             	  //lcd_display_OFF(0x56);
		             	lcd_clr_row(0,0,40,200,first_page);
	               	lcd_clr_row(0,0,40,200,secon_page);
	               	//lcd_display_ON(0x56);
		             	flag_m_clr=0;
	             	}
	             if(flag_data_scan==1){
	             	  //lcd_display_OFF(0x56);
	                lcd_output_data(shucu,output_data);
	                //lcd_display_ON(0x56);
	              }
	             lcd_inout_change(output_data,output_data_temp,out_mode); 
	             //flag_m_clr=1;
	             flag_failure=1;
	             flag_system_failure=1;
	             break;
	        default:break;
	     }
	     flag_data_scan=0;
   }
}

⌨️ 快捷键说明

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