/*! * COPYRIGHT NOTICE * Copyright (c) 2013,野火科技 * All rights reserved. * 技术讨论:野火初学论坛 http://www.chuxue123.com * * 除注明出处外,以下所有内容版权均属野火科技所有,未经允许,不得用于商业用途, * 修改内容时必须保留野火科技的版权声明。 * * @file FIRE_LCD.h * @brief LCD 函数库 * @author 野火科技 * @version v5.0 * @date 2013-09-02 */ #define LCD_ILI9341 1 #define LCD_ST7735S 2 //LCD_ST7735S 与 LCD_ST7735R 外观一样,寄存器操作略有不同 #define LCD_ST7735R 3 // #define USE_LCD LCD_ST7735S //选择使用的 LCD #include "FIRE_LCD_ILI9341.h" #include "FIRE_LCD_ST7735S.h" #include "FIRE_LCD_ST7735R.h" #include "FIRE_ASCII.h" #include "FIRE_LCD_CH.h" //汉字显示 /******常用颜色*****/ #define RED 0XF800 //红色 #define GREEN 0X07E0 //绿色 #define BLUE 0X001F //蓝色 #define BRED 0XF81F #define GRED 0XFFE0 //灰色 #define GBLUE 0X07FF // #define BLACK 0X0000 //黑色 #define WHITE 0XFFFF //白色 #define YELLOW 0xFFE0 //黄色 #define FCOLOUR BLUE //定义字体颜色 #define BCOLOUR RED //定义背景颜色 //提取RGB的3元素,rgb565必须是16位 #define RGB565_R(rgb565) ((uint8)(((uint16)(rgb565)>>11) &0x1F)) #define RGB565_G(rgb565) ((uint8)(((uint16)(rgb565)>> 5) &0x3F)) #define RGB565_B(rgb565) ((uint8)( (uint16)(rgb565) &0x1F)) #define GRAY_2_RGB565(gray) ((uint16)((((uint8)(gray)>>3)<<11)|(((uint8)(gray)>>2)<<5)|((uint8)(gray)>>3))) #define RGB565_2_GRAY(rgb565) ((uint8)(((RGB565_R(rgb565)*235+RGB565_G(rgb565)*613+RGB565_B(rgb565)*625)+1)>>8)) // 31*235+63*613+31*625+1 = 255*256 #define RGB565_H(rgb565) ((uint8)(((uint16)(rgb565))>>8)) #define RGB565_L(rgb565) (uint8)(rgb565)) #define RGB24_RGB565(R,G,B) ((uint16)((((uint8)(R)>>3)<<11)|(((uint8)(G)>>2)<<5)|((uint8)(B)>>3))) #define RGB555_RGB565(rgb555) (((((uint16)(rgb555)) & (uint16)(~0x1F)) << 1) | (((uint16)(rgb555)) & 0x1F)) #define BGR555_RGB565(bgr555) ((((uint16)(bgr555)<<11) & (uint16)(0x1F<<11)) | (((uint16)(bgr555)) & (uint16)(0x1F<<5)) | (((uint16)(bgr555)>>10) & (uint16)(0x1F))) //需要底层实现的几个宏定义: //LCD_H //高 //LCD_W //宽 //LCD_INIT() //初始化 //LCD_PTLON(site,size) //开窗 //LCD_RAMWR() //写模式 //LCD_WR_DATA(data) //写数据 //LCD_WR_DATA_B(data) //写数据(大端),16位液晶与LCD_WR_DATA一致即可,8位液晶交换顺序 //如下为可选 //LCD_RAMRD() //读模式 //LCD_SET_DIR(opt) //设置显示方向(0~3) //LCD_DIR //获取显示方向(0~3) //如下为内部调用,或者上面的宏定义调用 //LCD_WR_CMD(cmd) //命令 //LCD_RD_DATA() //读数据 //8位液晶可能需要(上面默认是16位) //LCD_WR_8CMD(cmd) //命令 //LCD_WR_8DATA(data) //写数据 //根据字库定义 英文字母的 宽高。 #define LCD_EN_W 8 #define LCD_EN_H 16 /*************** LCD初始化 ***************/ void LCD_init(void); //LCD初始化 /*************** LCD绘画 ***************/ extern void LCD_point (Site_t, uint16 rgb565); //画点 extern void LCD_rectangle (Site_t, Size_t, uint16 rgb565); //画矩形 extern void LCD_char (Site_t, uint8 ascii, uint16 Color, uint16 bkColor); //显示8*16字符 extern void LCD_str (Site_t, uint8 *Str, uint16 Color, uint16 bkColor); //显示8*16字符串 extern void LCD_num (Site_t, uint32 num, uint16 Color, uint16 bkColor); //显示数字 #define MAX_NUM_BIT 5 //数字的最大位数(用于清掉多余的屏幕残留数字) #define LCD_num_C(site,num,color,bkColor) LCD_num_BC(site, num,MAX_NUM_BIT,color,bkColor) //显示数字(清掉多余的屏幕残留数字) extern void LCD_num_BC (Site_t, uint32 num, uint8 max_num_bit, uint16 Color, uint16 bkColor); //显示数字(清掉多余的屏幕残留数字) extern void LCD_Img_gray (Site_t site, Size_t size, uint8 *img); //显示灰度图像 extern void LCD_Img_gray_Z (Site_t site, Size_t size, uint8 *img, Size_t imgsize); //显示灰度图像(可缩放) #define BINARY_BGCOLOR WHITE //定义二值化图像背景颜色 #define BINARY_COLOR BLACK //定义二值化图像前景颜色 extern void LCD_Img_Binary (Site_t site, Size_t size, uint8 *img); //显示二值化图像 extern void LCD_Img_Binary_Z (Site_t site, Size_t size, uint8 *img, Size_t imgsize); //显示二值化图像(可缩放) extern void LCD_wave(Site_t site,Size_t size,uint8 *img,uint8 maxval,uint16 Color ,uint16 bkColor); //波形显示,带背景颜色(maxval 最大值表示超过此值的数都当作最大值处理) extern void LCD_wave_display(Site_t site,Size_t size,uint8 *img,uint8 maxval,uint16 Color); //波形显示,不带背景颜色