#ifndef __BSP_h #define __BSP_h #include "LT768.h" #include "LT768_Lib.h" #include "uart.h" #include "rtc.h" #include "SinCosTable.h" #include "QR_Encode.h" #include "module_select.h" #include "bsp_user.h" #include "w25qxx.h" #include "w25n01.h" #include "GBK.h" //2019 #include "pit32_drv.h" #define SPI_X 1 // 选择LT768的SPI #define CLK_DIV 0 // SPI的分频系数 #define OK 0 #define MAIN_BUFF LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*1 #define LAY_BUFF1 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*2 //加载使用 #define LAY_BUFF2 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*3 //加载使用 #define LAY_BUFF3 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*4 //加载使用 #define LAY_BUFF4 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*5 //NandFlash使用 #define LAY_BUFF5 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*6 //未使用 #define LAY_BUFF6 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*7 //Nand Flash 文本显示 #define LAY_BUFF7 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*8 //目前切换页面缓存使用 弹窗页面使用 #define LAY_BUFF8 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*9 //未使用 #define LAY_BUFF9 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*10 //环形进度条silide使用 //键盘光标使用 #define LAY_BUFF10 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*11 //未使用 #define LAY_BUFF11 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*12 //目前键盘按键效果使用 + 编码器使用 #define LAY_BUFF12 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*13 //文本滚动———占用两个层 #define LAY_BUFF14 LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*15 #define slideMune_BUFF LCD_XSIZE_TFT*LCD_YSIZE_TFT*(2+TFT_bitcolor)*9 extern u32 Display_Layer; extern u8 Flash_type; /****ModBus运行变量*****/ extern u16 Cnt_ModbusTX; extern u16 Sum_ModbusTX; /*图片信息*/ extern u16 pic_id ; extern u16 pic_id_temp; extern u32 pic_add ; extern u16 pic_w ; extern u16 pic_h ; extern u32 pic_len ; extern u8 pic_flag ; /*******变量空间*/ extern volatile u8 var_temp[]; extern volatile u8 var[]; extern u8 config_buff[]; //变量buff extern char Display_buff[]; extern u16 Curve_buff[Curve_Size][1024]; //曲线数据缓冲区:8个通道,共16KB extern u16 Curve_count[Curve_Size]; //曲线长度 extern u8 curve_update_flag[Curve_Size]; //曲线更新标志位 /****************/ /**背光变量*/ extern u16 gDutyBuf[]; extern u8 gDutyflag; extern u8 Auto_Backlight; //自动背光 extern u8 Backlight_On; extern u8 Backlight_Off; extern u16 Backlight_time; extern u32 Backlight_count; extern u8 Backlight_flag; extern u8 Backlight_first_touch; extern u8 Backlight_touch; /*自动背光*/ void BackLight_control(void); /**********/ /****配置参数变量*****/ extern u8 buzzer; extern u16 Start_page; extern u8 SCI_C0; extern u8 SCI_C1; extern u8 CRC_Enable_Flag; extern u8 CRC_Feedback_Flag; extern u8 Screen_DIR; extern u8 TFT_bitcolor; /********************/ void LT_ReceiveCmd(u8 *buf); void LT_ModBus_REG_Cmd(void); void Display_page(u16 id); void download_page(u16 id,u16 Layer_width,u16 sdram_x,u16 sdram_y); void Display_Icon(u16 id, u16 x,u16 y,u8 Display_mode); void LT_ReadFlash(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead); void reg_operation(u16 addr); //寄存器操作 /****变量显示****/ void LT_Print_zk_ASCII ( unsigned long FlashAddr // 字库源地址(Flash) ,unsigned long ShowAddr // 显示层的地址 ,unsigned short width // 显示层的宽度 ,unsigned char W_Size // 设置字体宽度 ,unsigned char H_Size // 设置字体高度 ,unsigned char Alignment //对齐方式 0左对齐,1右对齐,2居中 ,unsigned long FontColor // 字体的颜色 ,unsigned short Xs // 文本框起始x位置 ,unsigned short Ys // 文本框起始y位置 ,unsigned char *c // 数据缓冲的首地址 ); void data_display(u8 type,u8 *buff); //变量显示 extern u8 data_D_num ; //用于记录数据显示的宽度 /**********************************/ /*文本显示*/ void text_display(u8 type ,u8 *buff); void LT_Print_zk_Font ( unsigned short encode // 编码类型 ,unsigned long FlashAddr // 字库源地址(Flash) ,unsigned long ShowAddr // 显示层的地址 ,unsigned short width // 显示层的宽度 ,unsigned char W_Size // 设置字体宽度 ,unsigned char H_Size // 设置字体高度 ,unsigned char Alignment // 对齐方式 ,unsigned long FontColor // 字体的颜色 ,unsigned char star // 显示*号 ,unsigned short Xs // 文本框起始x位置 ,unsigned short Ys // 文本框起始y位置 ,unsigned short Xe // 文本框结束x位置 ,unsigned short Ye // 文本框结束y位置 ,unsigned char dis_x // x方向间距 ,unsigned char dis_y // y方向间距 ,unsigned char *c // 数据缓冲的首地址 ,unsigned short len_max ); /***********/ void icon_display(u8 type,u8 *buff); //icon显示 void qr_code(u8 type,u8 *buff); //二维码显示 /**/ void pic_date_display(u8 type,u8 *buff); //图片数据显示 extern u8 pdata_D_num; //用于记录图片数据显示的的宽度 /**/ void progress_bar(u8 type,u8 *buff); //进度条 void Circular_progress_bar(u8 type,u8 *buff); //环形进度条 void bit_control(u8 type,u8 *buff); //位变量控制 /***编码器*/ void get_encoder(u8 type,u8 *buff,u16 addr); //编码器 void encoder(void); extern u8 gEncoderFlag; extern u16 Check_box_add ; extern u8 Check_box_flag; extern u8 Encoder_num ; extern u8 Encoder_read_Flag, Encoder_Freetime ; extern u8 knob_dir , SW_flag , Enc0 ,Enc1, SW_flag4 , key_time; extern u16 Encoder_time; extern u8 Double_click_interval; extern u8 Long_press ,Encoder_type; /*********/ /*gif显示*/ extern u8 Gif_num; extern u8 Gif_flag; typedef struct { u32 addr; u32 total; u16 p_add; u16 x; //起始显示地址 u16 y; u16 w; u16 h; u16 gif_id; u16 reset_En; //0x0000:停止时,不复位动画图标起始值(动画图标显示从 ICON_Start到 ICON_End 间的一个任意值开始显示)。 //0x0001:停止时,复位动画图标起始值(动画图标显示将固定从ICON_Start开始显示)。 u8 t_d; //帧时间间隔 u8 t_c; //记录时间 u8 p_c; u16 V_stop; //变量为该值时显示固定图标。 u16 V_start; //变量为该值时自动显示动画图标。 u16 V_once; //播放一次结束 u8 mode ; u8 flag; u16 var_addr[8]; u16 var[8]; }Gif_Info; extern Gif_Info gGif_Info[]; void gif_display(u8 type,u8 *buff); void show_gif(void); u8 LT_ShowGifPicture(u8 num); /*RTC显示*/ extern u8 RTC_num; extern u8 RTC_flag; typedef struct { u16 x; u16 y; u16 ID_start; //变量为该值时显示固定图标。 u8 mode ; u16 Len_last; }RTC_Info; extern RTC_Info gRTC_Info[]; void RTC_display(u8 type,u8 *buff); void show_RTC(void); /************/ /*时钟显示*/ extern u8 Clock_num; extern u8 Clock_flag; typedef struct { u16 x; u16 y; u16 Image_BG; u8 L_hour; u8 S_hour; u8 W_hour; u32 Color_hour; u8 L_min; u8 S_min; u8 W_min; u32 Color_min; u8 L_sec; u8 S_sec; u8 W_sec; u32 Color_sec; u16 x_pic; u16 y_pic; u16 w_pic; u16 h_pic; u32 addr_pic; u32 len_pic; u8 flag_pic; u16 x_cen; u16 y_cen; u16 w_cen; u16 h_cen; u32 addr_cen; u32 len_cen; u8 flag_cen; }Clock_Info; extern Clock_Info gClock_Info[]; void DrawPoint_Buffer_alphablend(int buff_x, int buff_y, float alpha, UINT32 color, UINT16 canvas) ; void Clock_display(u8 type,u8 *buff); void show_Clock(void); extern u32 Lay_temp ; /***************/ /*文字滚动*/ extern u8 Scroll_num; extern u8 Scroll_flag; //extern u8 Scroll_flag; typedef struct { u16 x; u16 y; u16 xe; u16 ye; u16 w; u16 h; u16 len; //滑动内容的总像素长度 u16 cnt; //记录滚动的像素偏移量 u8 flag; //是否滚动 u16 y_offset; //记录文本内容在缓冲区的y坐标偏移量 u8 t_d; //帧时间间隔 u8 t_c; //记录时间 u16 gap; //尾部与开头的间距 u8 transparent; //是否显示背景色 u8 scroll_en; //是否滚动 u8 pixel_format; //灰阶 u32 bcolor; }Scroll_Info; extern Scroll_Info gScroll_Info[]; void text_scroll(u8 type,u8 *buff); void scroll_text(void); /***********************/ /*曲线图*/ extern u8 curve_num; extern u8 curve_flag; typedef struct { u16 xs; u16 ys; u16 xe; u16 ye; u16 Y_Central; //纵轴中间值绝对坐标 u16 VD_Central; //纵轴中间基准值 u32 color; //曲线颜色 u16 MUL_Y; //放大/缩小倍数:MUL_Y/256 u8 channel; //通道 u8 Dis_HOR; //点间距 u8 Width; //曲线粗细 u8 group; //组编号 u8 dir; //方向 }Curve_Info; extern Curve_Info gCurve_Info[]; void Curve_display(u8 type,u8 *buff); void Display_Curve(void); /**********/ /*计数显示*/ typedef struct { u16 v_add; u16 t_add; u16 c_add; u16 x; u16 y; u16 ID_start; u8 dis_mode ; u8 dir; u8 end_mode; u8 end_feedback; u16 var_addr[8]; u16 var[8]; u16 last_w; }Count_Info; extern Count_Info gCount_Info[]; extern u8 Count_sum; extern u8 Count_flag; void Saving_counting_parameters(void); u8 Display_Count(u8 i); void show_Count(void); void count_display(u8 type,u8 *buff); typedef struct { u16 v_add; u16 t_add; u16 c_add; u8 dir; u8 end_feedback; u16 var_addr[8]; u16 var[8]; }Record_count_Info; extern Record_count_Info gRecord_count_Info[]; extern u8 Record_count; /*************************/ //触控部分 /*触控公用*/ extern u8 button_Press_flag ; extern u8 Button_Key_Code_Flag; extern u16 Button_Key_Code; /*********/ extern u8 buzzer_start ; extern u8 buzzer_10ms_count ; void touch_buzzer(void); /***基础触控*/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 Xs; //左上角坐标 u16 Ys; u16 Xe; //右下角坐标 u16 Ye; u16 Keyvalue; //键值 u16 id; //图标id u16 press_id; u16 Next_id; }Basci_Info; extern Basci_Info gBasci_Info[]; extern u8 Basci_count; extern u8 Basci_flag; extern u8 Basci_num; void Basic_touch(void); /*************/ /*增量调节*/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 Xs; //左上角坐标 u16 Ys; u16 Xe; //右下角坐标 u16 Ye; u16 p_add; //变量指针地址 u8 p_tpye; //变量类型 u8 Adj_mode; //图标id u8 Return_Mode; //阈值返回 u16 Adj_step; //调节步长 signed short V_min; //下限 signed short V_max; //上限 u8 key_mode; //按压模式 ,0连续调节,1只调节一次 u16 id; u16 press_id; }Adj_Info; extern Adj_Info gAdj_Info[]; extern u8 Adj_count; extern u8 Adj_flag ; extern u8 Adj_num ; extern u8 Adj_time ; extern u8 Adj_loop ; void Adj_touch(void); /***********/ /*滑动调节*/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 x1; //底图坐标 u16 y1; //底图坐标 u16 bgid; //背景图id u16 x2; //进度图x u16 y2; //进度条y u16 slideid; //进度图id u16 Xs; //滑动左上角坐标 u16 Ys; u16 Xe; //滑动右下角坐标 u16 Ye; u16 p_add; //变量指针地址 u16 arrowid; //触控头id u8 direction; //滑动方向 u16 lastx; u16 lasty; u16 dx; u16 dy; signed short V_min; //下限 signed short V_max; //上限 }Slide_Info; extern Slide_Info gSlide_Info[]; extern u8 Slide_count; extern u8 Slide_flag; extern u8 slide_first_touch; extern u8 slide_num; void Disp_slide(u8 i); void Progress_bar_sliding(void); /********/ /*数据输入*/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 Xs; //左上角坐标 u16 Ys; u16 Xe; //右下角坐标 u16 Ye; u16 p_add; //变量指针地址 u8 p_tpye; //变量类型 u8 I_num; //整数位 u8 D_num; //小数位 u16 kb_x; //键盘显示位置 u16 kb_y; //键盘显示位置 u16 dp_x; //数据显示位置 u16 dp_y; //数据显示位置 u8 zk_id; u8 zk_w; u8 cursor_color; u16 kb_id; u8 Limite_EN; //0xFF:启用输入范围限制 signed int V_min; //下限 signed int V_max; //上限 u8 Alig; //数据输入左右对齐 u32 fcolor; }Dio_Info; extern Dio_Info gDio_Info[]; extern u8 Dio_count; extern u8 Dio_num; extern u8 Dio_flag; void data_input(void); /***********/ /*键盘按键*/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 Xs; //左上角坐标 u16 Ys; u16 Xe; //右下角坐标 u16 Ye; u16 Keyvalue; //键值 u16 press_id; //变量类型 }Kb_Info; extern Kb_Info gKb_Info[]; extern u8 Kb_count; extern u8 Kb_num; extern u8 Kb_flag; extern u8 DioKb_flag; extern u8 dot_flag; extern u8 i_len; extern u8 d_len; extern u16 input_len; extern u8 neg_flag; extern u16 input_w; extern u8 cur_w; extern u16 cur_x; extern u16 cur_y; extern u16 Cusor_time; extern u8 Cusor_sw; /***********/ /*滑动菜单*/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 p_add; //变量指针 u16 Xs; //左上角坐标 u16 Ys; u16 Xe; //右下角坐标 u16 Ye; u16 L1; u16 L2; u8 dir; u16 frontID; //高亮图片ID u16 bgID; //背景图片ID u8 flag ; u16 V_max; u16 V_min; u16 step; signed short pos; //用于记录位置 }SldMenu_Info; extern SldMenu_Info gSldMenu_Info[]; extern u8 sldmenu_count; extern u8 sldmenu_num; extern u8 sldmenu_flag; extern u8 SLDMfirsttouch; extern u16 lastx; extern u16 lasty; extern u16 Sldw; extern u16 Sldh; extern u8 sld_mum; void slideMune(void); void DL_menu(u8 num); void dp_menu(u8 num); /****************/ /***手势滑动*/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 page[4]; u16 value[4]; }Gesture_Info; extern Gesture_Info gGesture_Info; extern u8 Gesture_press; extern u8 Gesture_direction; extern u8 Gesture_flag; void Gesture_touch(void); /**滑动屏幕**/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 page[2]; u16 value[2]; u16 ys; u16 ye; }Sld_sc_Info; extern Sld_sc_Info gSld_sc_Info; extern u8 Ges_sc_flag; extern u8 gFirstTouch; void slide_screen(void); /***********/ /*圆环滑动*/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 p_add; //变量指针 u16 x; //左上角坐标 u16 y; u16 frontID; //高亮图片ID u16 bgID; //背景图片ID u16 arrowid; //触控头id u16 Sld_R; //滑动半径 u8 tp_R; //触控半径 u16 Vmin; u16 Vmax; u16 Sangle; u16 Eangle; u16 dx; u16 dy; u8 I_num; u8 D_num; u8 Alig; u8 zk_id; u32 color; u16 s_id; u16 e_id; u8 flag; u16 w1; u16 h1; u8 rm1; u16 x2; u16 y2; u16 w2; u16 h2; u8 rm2; u16 xR; u16 yR; }RingSld_Info; extern RingSld_Info gRingSld_Info[]; extern u8 RingSld_count; extern u8 RingSld_firsttouch; extern u8 RingSld_firstnum; void DL_RingSld(u8 num); void RingSld_Display(u8 num,u16 angle); void RingSld_touch(void); /********/ /*********ASCII录入*****/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 Xs; //左上角坐标 u16 Ys; u16 Xe; //右下角坐标 u16 Ye; u16 p_add; //变量指针地址 u16 p_len; //变量长度 u8 scan_mode; //录入模式 u8 zk_id; //字库id u8 zk_w; //字体宽度 u8 zk_h; //字体高度 u8 cursor_color; //光标颜色 u32 fcolor; u16 dp_x; //文本显示位置 u16 dp_y; //文本显示位置 u16 kb_id; u16 kb_x; //键盘显示位置 u16 kb_y; //键盘显示位置 u8 input_mode; u32 zk_addr; }Aio_Info; extern Aio_Info gAio_Info[]; extern u8 Aio_count; extern u8 Aio_num; extern u8 Aio_flag; extern u8 AioKb_flag; extern u8 CapsLock; void Ascii_input(void); /*****************/ /**********GBK输入*****/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 Xs; //左上角坐标 u16 Ys; u16 Xe; //右下角坐标 u16 Ye; u16 p_add; //变量指针地址 u16 p_len; //变量长度 u8 scan_mode; //录入模式 u8 zk_id; //字库id u8 zk_w; //字体宽度 u8 zk_h; //字体高度 u8 cursor_color; //光标颜色 u32 fcolor; u16 dp_x; //文本显示位置 u16 dp_y; //文本显示位置 u32 pycolor; u8 py_zk; u8 py_w; u8 py_h; u16 py_x; //PY显示位置 u16 py_y; u16 cn_x; u16 cn_y; u8 spacing ; //汉字显示间距 u16 kb_id; u16 kb_x; //键盘显示位置 u16 kb_y; //键盘显示位置 u8 input_mode; u32 zk_addr; u32 py_addr; }GBKio_Info; extern GBKio_Info gGBKio_Info[]; void GBK_input(void); extern u8 GBKio_count ; extern u8 GBKio_num ; extern u8 GBKio_flag ; extern u8 GBKioKb_flag ; extern u8 GBK_PY_length ; //拼音长度 extern u8 GBK_CN_EN ; //中英文输入法使能 extern u8 GBK_PY_buff[] ; extern u16 GBK_PY_num ; extern u8 GBK_len ; extern u32 GBK_PY_addr ; extern u8 GBK_linenum ; /********************/ /*************变量修改****************/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 Xs; //左上角坐标 u16 Ys; u16 Xe; //右下角坐标 u16 Ye; u16 id; //图标id u16 press_id; u16 Next_id; u16 var_addr[8]; u16 var[8]; }VarKey_Info; extern VarKey_Info gVarKey_Info[]; extern u8 VarKey_count; extern u8 VarKey_flag; extern u8 VarKey_num; void VarKey_touch(void); /************************************/ /***********弹出视窗*****/ typedef struct { u16 Code; //功能码 u8 len; //长度 u16 Xs; //左上角坐标 u16 Ys; u16 Xe; //右下角坐标 u16 Ye; u16 Keyvalue; //键值 u16 id; //图标id u16 press_id; u16 pop_up_id; u16 pop_up_x; u16 pop_up_y; u8 function; }Pop_up_Info; extern Pop_up_Info gPop_up_Info[]; extern u8 Pop_up_count; extern u8 Pop_up_flag; extern u8 Pop_up_num; extern u8 Pop_up_press; extern u16 Pop_up_x; extern u16 Pop_up_y; extern u16 Pop_up_id; void pop_up_touch(void); /************************/ #endif