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

📄 dashboard_zhonghua.c

📁 车用液晶仪表中s3c2410的can接口程序
💻 C
字号:
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h"
#include "lcd.h"
#include "lcdlib.h"
#include "glib.h"
#include "isrservice.h"
#include "fnand.h"
#include "Uart0.h"
#include "dashboard_zhonghua.h"
#include "dashboard_arrow_flow.h"
#include "dashboard_number.h"
#include "dashboard_otherdis.h"
#include "main.h"
#include "dashboard_finger.h"

//////////////////////////////////////////////////initial the dashboard when the interface is changed
void zhonghua_dashboard(void) 
{
    //add:
    int i;
    /////////////////////////////////////////////////////////////change the interfaces:
        if(rInterfacechangeflag == 1 && rInterface == 1)
        {
            rInterfacechangeflag = 0;    //clear the interface change flag;
            //load bitmap1:
            Load_BMP(3700,51);
            BITMAP_OUTPUT(854,480,0,0);
            Dashboard_1_Init();
            rBitmapfinish = 1; 
        }        
        //////////////////////////////////////////////////////////////deal with the data in interfaces:
        if(rInterface == 1 && rBitmapfinish == 1 && r0State == 1000)// && rState == 1)
        {
            //rState = 0;
            r0State = 0;
            //add: deal with bitmap1 
            Dashboard_1();                      //for real program
            
            Time1_Set(rec_data.speed);
            //Dashboard_1_show();                   //for show program
            //Uart_SendString("deal with bitmap1\n");
            
            
            
            // Uart_Printf("z %d\n",testEint5++);
        }
        if(rInterface == 1 && rBitmapfinish == 1 && dtc_signal == 1)
        {
            //add:
            dtc_signal = 0;
            DTC1_Show();
         }
        /////////////////////////////////////////////////////////////仪表指针显示
        if(rState == 1)                              //10ms画一次指针
        {         
            
            if(save_data.speed == rec_data.speed && rec_data.speed == 0)
            {
                finger_output(425,305,154,20,0,1);
            }
            
            if(save_data.speed != rec_data.speed)
            {
                if(rec_data.speed>save_data.speed)
                {
                    finger_pos_change(save_data.speed,save_data.speed+1,1);
                    save_data.speed++;
                }
                else
                {
                    finger_pos_change(save_data.speed,save_data.speed-1,1);
                    save_data.speed--;
                }      
            }
            rState = 0;
        }
        /////////////////////////////////////////////////////////////end of 仪表指针显示
        ///////////////////////////////////////转向灯指示
        
        if(turnlightState == 1000)
            Turnplay();
        ///////////////////////////////////////end of 转向灯指示
        ///////////////////////save data to flash
        if(savedata_signal == 1)
        {
            if(save_data.show_Summile != rec_data.show_Summile)
            {
	            savedata_signal = 0;
	            save_Summile_write = (int)(rec_data.show_Summile - Ori_Summile);
	            fdata[0] = save_Summile_write & 0xff;
	            fdata[1] = (save_Summile_write>>8) & 0xff;
	            fdata[2] = (save_Summile_write>>16) & 0xff;
	            fdata[3] = (save_Summile_write>>24) & 0xff;
	            for(i=0;i<5;i++)
	    			NF_EraseBlock(4090+i);
	            //NF_EraseBlock(4095);
	            for(i=0;i<5;i++)
	    			NF_WritePage(4090+i,0,fdata);
	            //NF_WritePage(4095,0,fdata);
	            //Glib_FilledRectangle(0,0,10,10,0xf0); 
	            //for(i=0;i<5;i++)
	            //Uart_Printf("fdata = %d\n",fdata[i]); 
	            save_data.show_Summile = rec_data.show_Summile;
	         } 
        }
        ////////////////////// end of save data to flash
}


void Turnplay(void)
{
    //add:
    turnlightState = 0;
    
    
    if(leftturn == 1)
    {
        //turnlightState = 0;
        if(tState == 0)
            output_turnlight(1,186,36);
        else
            output_turnlight(0,186,36);
    }
    else
        output_turnlight(0,186,36);
           
    if(rightturn == 1)
    {
        //turnlightState = 0;
        if(tState == 0)
            output_turnlight(3,616,36);
        else
            output_turnlight(2,616,36);
    }
    else
        output_turnlight(2,616,36);
        
   // switch(tState)
   // {
       // case 0:  
         //    tState = 1;
         //    break;
      //  case 1:
       //      tState = 0;
     //        break;
     //   default:
   //          break;
  //  }
    //Uart_Printf("leftturn is %d, rightturn is %d\n",leftturn,rightturn);
}

void Dashboard_1_Init(void)
{
    //add:
    output_number_float(save_data.bat_cur,80,44,0xFFFF);      //电池电流
    output_number_float(save_data.bat_vol,784,44,0xFFFF);      //电池电压
    output_number_float(save_data.bat_tem,81,434,0xFFFF);      //电池温度
    output_number_float(save_data.mot1_tor,649,434,0xFFFF);    //1#电机转矩
    
    output_number(save_data.CAN_State,816,434,0xFFFF);   //氢瓶温度
    
    /*//initial the dashboard-03
    output_number(save_nData[13],277,132,0xFFFF);   //氢瓶温度
    output_number(save_nData[22],227,419,0xFFFF);   //DC/DC功率
    */
}

void Dashboard_1(void)
{
    //add: 
    int i;
    /*if(save_data.bat_cur != rec_data.bat_cur)
        {
            display_number_float(save_data.bat_cur,rec_data.bat_cur,80,44,0xFFFF);
            save_data.bat_cur = rec_data.bat_cur;
        }*/
    if(save_data.bat_cur != rec_data.bat_cur)
        {
            InvalidateRect(0,25,145,85);
            //display_number_float(save_data.bat_cur,rec_data.bat_cur,80,44,0xFFFF);
            output_number_float(rec_data.bat_cur,80,44,0xFFFF);
            save_data.bat_cur = rec_data.bat_cur;
        }
    if(save_data.bat_vol != rec_data.bat_vol)
        {
            display_number_float(save_data.bat_vol,rec_data.bat_vol,784,44,0xFFFF);
            save_data.bat_vol = rec_data.bat_vol;
        }
    if(save_data.bat_tem != rec_data.bat_tem)
        {
            display_number_float(save_data.bat_tem,rec_data.bat_tem,81,434,0xFFFF);
            save_data.bat_tem = rec_data.bat_tem;
        }
    if(save_data.mot1_tor != rec_data.mot1_tor)
        {
            display_number_float(save_data.mot1_tor,rec_data.mot1_tor,649,434,0xFFFF);
            save_data.mot1_tor = rec_data.mot1_tor;
        }
    if(save_data.bat_soc != rec_data.bat_soc)      //soc柱状显示
        {
            output_rec_1(save_data.bat_soc,rec_data.bat_soc);
            save_data.bat_soc = rec_data.bat_soc;
        }
    
    if(save_data.CAN_State != rec_data.CAN_State)      //CAN状态监测
        {
            display_number(save_data.CAN_State,rec_data.CAN_State,816,434,0xFFFF);
            save_data.CAN_State = rec_data.CAN_State;
        }
    
    if(save_data.gear != rec_data.gear)          //档位信号显示
        {
            output_gear_all(766,187);
            if(rec_data.gear == 1)
                output_gear(0,766,187);
            if(rec_data.gear == 2)
                output_gear(1,766,239);
            if(rec_data.gear == 4)
                output_gear(2,766,291);
            save_data.gear = rec_data.gear;
        }
    //////////////////////////////////////////////////////////////////////故障代码显示
    
    
    
    
    
    /*
    if(dtccount > 0)               //每隔dtctime×0.5时间故障代码滚动显示,dtctime用于控制滚动时间
    {
      if(discount<dtctime*dtccount)
        discount++;
      if(discount%dtctime == 0)
        {
            i = discount/dtctime-1;
            Glib_FilledRectangle(262,434,390,454,0xffff);           //修改显示位置
            output_DTC(((DTC[i]>>8)&0xffff),262,434);
        }
      if(discount == dtctime*dtccount)
          discount = 0;

     }
               */
    //////////////////////////////////////////////////////////////////////end of 故障代码显示


    /////////////////////行驶里程计算

    rec_data.Summile = (float)rec_data.speed / 7200 + rec_data.Summile;
    rec_data.show_Summile = Ori_Summile + rec_data.Summile + save_Summile_load;
    /////////////////////////////////////////////////////////add 07-03-20
    if(rec_data.show_Summile < 0)
        rec_data.show_Summile = (-1) * rec_data.show_Summile;
    if(rec_data.show_Summile > 1000)
    	rec_data.show_Summile = (int)rec_data.show_Summile & 0x3ff;

    //////////////////////////////////////行驶里程显示

    if(rec_data.show_Summile != save_data.Summile )
        {
            display_number_float(save_data.Summile,rec_data.show_Summile,429,356,0xFFFF);
            save_data.Summile = rec_data.show_Summile;
        }
    
    /////////////////////END OF 行驶里程
}

void DTC1_Show(void)

{//Uart_SendString("deal with bitmap  dtc1-dtci\n");
 Glib_FilledRectangle(262,434,390,454,0xffff);

 if(dtccount > 0)
    {   
        if(discount < dtccount)
        {
            output_DTC(((DTC[0][discount]>>8)&0xffff),262,434);
            //output_number(DTC[1][discount],290,425,0xffff);
            discount++;
        }
        if(discount == dtccount)
            discount = 0;
    }
}

⌨️ 快捷键说明

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