2022-01-18 00:58:54 +08:00

771 lines
24 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file 1.8<EFBFBD><EFBFBD>TFT
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SCL <20>鿴TFT_SCL<43><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
SDA <20>鿴TFT_SDA<44><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
RES <20>鿴REST_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DC <20>鿴DC_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CS <20>鿴TFT_CS<43><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
<09><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
BL 3.3V<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
VCC 3.3V<EFBFBD><EFBFBD>Դ
GND <20><>Դ<EFBFBD><D4B4>
<09><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>128*160
------------------------------------
********************************************************************************************************************/
#include "zf_spi.h"
#include "zf_gpio.h"
#include "zf_assert.h"
#include "zf_stm_systick.h"
#include "SEEKFREE_PRINTF.h"
#include "SEEKFREE_18TFT.h"
void lcd_writeIndex(uint8 dat) //д<><D0B4><EFBFBD><EFBFBD>
{
DC(0);
spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1);
}
void lcd_writeData(uint8 dat) //д<><D0B4><EFBFBD><EFBFBD>
{
DC(1);
spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1);
}
void lcd_writedata_16bit(uint16 dat) //<2F><>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD>дһ<D0B4><D2BB>16λ<36><CEBB><EFBFBD><EFBFBD>
{
uint8 dat1[2];
dat1[0] = dat >> 8;
dat1[1] = (uint8)dat;
DC(1);
spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ǰ <20><>λ<EFBFBD>ں<EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x_start <09><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param y_start <09><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x_end <09><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
// @param y_end <09><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_set_region(0,0,10,10);// x<><78>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B6BC>0<EFBFBD><30><EFBFBD>յ㶼<D5B5><E3B6BC>10
//-------------------------------------------------------------------------------------------------------------------
void lcd_set_region(unsigned int x_start,unsigned int y_start,unsigned int x_end,unsigned int y_end)
{
ZF_ASSERT(TFT_X_MAX>x_start);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
ZF_ASSERT(TFT_Y_MAX>y_start);
ZF_ASSERT(TFT_X_MAX>x_end);
ZF_ASSERT(TFT_Y_MAX>y_end);
#if (0 == TFT_DISPLAY_DIR || 1 == TFT_DISPLAY_DIR)
lcd_writeIndex(0x2a);
lcd_writeData(0x00);
lcd_writeData(x_start+2);
lcd_writeData(0x00);
lcd_writeData(x_end+2);
lcd_writeIndex(0x2b);
lcd_writeData(0x00);
lcd_writeData(y_start+1);
lcd_writeData(0x00);
lcd_writeData(y_end+1);
#elif(2 == TFT_DISPLAY_DIR || 3 == TFT_DISPLAY_DIR)
lcd_writeIndex(0x2a);
lcd_writeData(0x00);
lcd_writeData(x_start+1);
lcd_writeData(0x0);
lcd_writeData(x_end+1);
lcd_writeIndex(0x2b);
lcd_writeData(0x00);
lcd_writeData(y_start+2);
lcd_writeData(0x00);
lcd_writeData(y_end+2);
#endif
lcd_writeIndex(0x2c);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param color <09><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_clear(YELLOW);// ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ
//-------------------------------------------------------------------------------------------------------------------
void lcd_clear(uint16 color)
{
uint8 i,j;
lcd_set_region(0,0,TFT_X_MAX-1,TFT_Y_MAX-1);
for (i=0;i<TFT_Y_MAX;i++)
for (j=0;j<TFT_X_MAX;j++)
lcd_writedata_16bit(color);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void lcd_init(void)
{
spi_init(TFT_SPIN, TFT_SCL, TFT_SDA, TFT_SDA_IN, TFT_CS, 0, 30*1000*1000);//Ӳ<><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>
gpio_init(BL_PIN,GPO,1,PUSHPULL);
gpio_init(DC_PIN,GPO,0,PUSHPULL);
gpio_init(REST_PIN,GPO,0,PUSHPULL);
REST(0);
systick_delay_ms(STM0, 10);
REST(1);
systick_delay_ms(STM0, 120);
lcd_writeIndex(0x11);
systick_delay_ms(STM0, 120);
lcd_writeIndex(0xB1);
lcd_writeData(0x01);
lcd_writeData(0x2C);
lcd_writeData(0x2D);
lcd_writeIndex(0xB2);
lcd_writeData(0x01);
lcd_writeData(0x2C);
lcd_writeData(0x2D);
lcd_writeIndex(0xB3);
lcd_writeData(0x01);
lcd_writeData(0x2C);
lcd_writeData(0x2D);
lcd_writeData(0x01);
lcd_writeData(0x2C);
lcd_writeData(0x2D);
lcd_writeIndex(0xB4);
lcd_writeData(0x07);
lcd_writeIndex(0xC0);
lcd_writeData(0xA2);
lcd_writeData(0x02);
lcd_writeData(0x84);
lcd_writeIndex(0xC1);
lcd_writeData(0xC5);
lcd_writeIndex(0xC2);
lcd_writeData(0x0A);
lcd_writeData(0x00);
lcd_writeIndex(0xC3);
lcd_writeData(0x8A);
lcd_writeData(0x2A);
lcd_writeIndex(0xC4);
lcd_writeData(0x8A);
lcd_writeData(0xEE);
lcd_writeIndex(0xC5);
lcd_writeData(0x0E);
lcd_writeIndex(0x36);
if (TFT_DISPLAY_DIR==0) lcd_writeData(1<<7 | 1<<6 | 0<<5); //<2F><><EFBFBD><EFBFBD>ģʽ
else if (TFT_DISPLAY_DIR==1) lcd_writeData(0<<7 | 0<<6 | 0<<5); //<2F><><EFBFBD><EFBFBD>ģʽ <20><>ת180
else if (TFT_DISPLAY_DIR==2) lcd_writeData(1<<7 | 0<<6 | 1<<5); //<2F><><EFBFBD><EFBFBD>ģʽ
else lcd_writeData(0<<7 | 1<<6 | 1<<5); //<2F><><EFBFBD><EFBFBD>ģʽ <20><>ת180
lcd_writeIndex(0xe0);
lcd_writeData(0x0f);
lcd_writeData(0x1a);
lcd_writeData(0x0f);
lcd_writeData(0x18);
lcd_writeData(0x2f);
lcd_writeData(0x28);
lcd_writeData(0x20);
lcd_writeData(0x22);
lcd_writeData(0x1f);
lcd_writeData(0x1b);
lcd_writeData(0x23);
lcd_writeData(0x37);
lcd_writeData(0x00);
lcd_writeData(0x07);
lcd_writeData(0x02);
lcd_writeData(0x10);
lcd_writeIndex(0xe1);
lcd_writeData(0x0f);
lcd_writeData(0x1b);
lcd_writeData(0x0f);
lcd_writeData(0x17);
lcd_writeData(0x33);
lcd_writeData(0x2c);
lcd_writeData(0x29);
lcd_writeData(0x2e);
lcd_writeData(0x30);
lcd_writeData(0x30);
lcd_writeData(0x39);
lcd_writeData(0x3f);
lcd_writeData(0x00);
lcd_writeData(0x07);
lcd_writeData(0x03);
lcd_writeData(0x10);
lcd_writeIndex(0x2a);
lcd_writeData(0x00);
lcd_writeData(0x00+2);
lcd_writeData(0x00);
lcd_writeData(0x80+2);
lcd_writeIndex(0x2b);
lcd_writeData(0x00);
lcd_writeData(0x00+3);
lcd_writeData(0x00);
lcd_writeData(0x80+3);
lcd_writeIndex(0xF0);
lcd_writeData(0x01);
lcd_writeIndex(0xF6);
lcd_writeData(0x00);
lcd_writeIndex(0x3A);
lcd_writeData(0x05);
lcd_writeIndex(0x29);
lcd_clear(WHITE);//ȫ<><C8AB>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ɫ
// @return void
// @since v1.0
// Sample usage: lcd_drawpoint(0,0,RED); //<2F><><EFBFBD><EFBFBD>0,0<><30>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ<EFBFBD>ĵ<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_drawpoint(uint16 x,uint16 y,uint16 color)
{
lcd_set_region(x,y,x,y);
lcd_writedata_16bit(color);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_showchar(0,0,'x');//<2F><><EFBFBD><EFBFBD>0,0дһ<D0B4><D2BB><EFBFBD>ַ<EFBFBD>x
//-------------------------------------------------------------------------------------------------------------------
void lcd_showchar(uint16 x,uint16 y,const int8 dat)
{
uint8 i,j;
uint8 temp;
for(i=0; i<16; i++)
{
lcd_set_region(x,y+i,x+7,y+i);
temp = tft_ascii[dat-32][i];//<2F><>32<33><32>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD>ascii<69><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>32
for(j=0; j<8; j++)
{
if(temp&0x01) lcd_writedata_16bit(TFT_PENCOLOR);
else lcd_writedata_16bit(TFT_BGCOLOR);
temp>>=1;
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_showstr(0,0,"seekfree");
//-------------------------------------------------------------------------------------------------------------------
void lcd_showstr(uint16 x,uint16 y,const int8 dat[])
{
uint16 j;
j = 0;
while(dat[j] != '\0')
{
lcd_showchar(x+8*j,y*16,dat[j]);
j++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<38>з<EFBFBD><D0B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>int8
// @return void
// @since v1.0
// Sample usage: lcd_showint8(0,0,x);//xΪint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showint8(uint16 x,uint16 y,int8 dat)
{
uint8 a[3];
uint8 i;
if(dat<0)
{
lcd_showchar(x,y*16,'-');
dat = -dat;
}
else lcd_showchar(x,y*16,' ');
a[0] = dat/100;
a[1] = dat/10%10;
a[2] = dat%10;
i = 0;
while(i<3)
{
lcd_showchar(x+(8*(i+1)),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<38>޷<EFBFBD><DEB7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint8
// @return void
// @since v1.0
// Sample usage: lcd_showuint8(0,0,x);//xΪuint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showuint8(uint16 x,uint16 y,uint8 dat)
{
uint8 a[3];
uint8 i;
a[0] = dat/100;
a[1] = dat/10%10;
a[2] = dat%10;
i = 0;
while(i<3)
{
lcd_showchar(x+(8*i),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ16λ<36>з<EFBFBD><D0B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>int16
// @return void
// @since v1.0
// Sample usage: lcd_showint16(0,0,x);//xΪint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showint16(uint16 x,uint16 y,int16 dat)
{
uint8 a[5];
uint8 i;
if(dat<0)
{
lcd_showchar(x,y*16,'-');
dat = -dat;
}
else lcd_showchar(x,y*16,' ');
a[0] = dat/10000;
a[1] = dat/1000%10;
a[2] = dat/100%10;
a[3] = dat/10%10;
a[4] = dat%10;
i = 0;
while(i<5)
{
lcd_showchar(x+(8*(i+1)),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ16λ<36>޷<EFBFBD><DEB7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint16
// @return void
// @since v1.0
// Sample usage: lcd_showuint16(0,0,x);//xΪuint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showuint16(uint16 x,uint16 y,uint16 dat)
{
uint8 a[5];
uint8 i;
a[0] = dat/10000;
a[1] = dat/1000%10;
a[2] = dat/100%10;
a[3] = dat/10%10;
a[4] = dat%10;
i = 0;
while(i<5)
{
lcd_showchar(x+(8*i),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ32λ<32>з<EFBFBD><D0B7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint32
// @param num <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>10λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_showuint32(0,0,x,3);//x<><78><EFBFBD><EFBFBD>Ϊint32 uint16 int16 uint8 int8<74><38><EFBFBD><EFBFBD>
// Sample usage: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showint32(uint16 x,uint16 y,int32 dat,uint8 num)
{
int8 buff[34];
uint32 length;
if(10<num) num = 10;
num++;
if(0>dat) length = zf_sprintf( &buff[0],"%d",dat);//<2F><><EFBFBD><EFBFBD>
else
{
buff[0] = ' ';
length = zf_sprintf( &buff[1],"%d",dat);
length++;
}
while(length < num)
{
buff[length] = ' ';
length++;
}
buff[num] = '\0';
lcd_showstr(x, y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>float<61><74>double
// @param num <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>10λ
// @param pointnum С<><D0A1>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_showfloat(0,0,x,2,3);//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾС<><D0A1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>λ
// @note <20>ر<EFBFBD>ע<EFBFBD><EFBFBD><E2B5B1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>µģ<C2B5><C4A3><EFBFBD><E2B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>аٶ<D0B0>ѧϰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showfloat(uint16 x,uint16 y,double dat,uint8 num,uint8 pointnum)
{
uint32 length;
int8 buff[34];
int8 start,end,point;
if(6<pointnum) pointnum = 6;
if(10<num) num = 10;
if(0>dat) length = zf_sprintf( &buff[0],"%f",dat);//<2F><><EFBFBD><EFBFBD>
else
{
length = zf_sprintf( &buff[1],"%f",dat);
length++;
}
point = (int8)(length - 7); //<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
start = point - num - 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ
end = point + pointnum + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
while(0>start)//<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> ĩβӦ<CEB2><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>
{
buff[end] = ' ';
end++;
start++;
}
if(0>dat) buff[start] = '-';
else buff[start] = ' ';
buff[end] = '\0';
lcd_showstr(x, y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ʾ40*40 QQͼƬ
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void showimage(const unsigned char *p)
{
int i,j,k;
unsigned char picH,picL;
lcd_clear(WHITE); //<2F><><EFBFBD><EFBFBD>
for(k=0;k<4;k++)
{
for(j=0;j<3;j++)
{
lcd_set_region(40*j,40*k,40*j+39,40*k+39); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i=0;i<40*40;i++)
{
picL=*(p+i*2); //<2F><><EFBFBD>ݵ<EFBFBD>λ<EFBFBD><CEBB>ǰ
picH=*(p+i*2+1);
lcd_writedata_16bit(picH<<8|picL);
}
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_displayimage032(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void lcd_displayimage032(uint8 *p, uint16 width, uint16 height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
uint16 coord_x = 0;
uint16 coord_y = 0;
if(0==TFT_DISPLAY_DIR || 1==TFT_DISPLAY_DIR)//<2F><><EFBFBD><EFBFBD>
{
coord_x = height>TFT_X_MAX?TFT_X_MAX:height;
coord_y = width>TFT_Y_MAX?TFT_Y_MAX:width;
for(j=0;j<coord_y;j++)
{
lcd_set_region(0,j,coord_x-1,j);
for(i=0;i<coord_x;i++)
{
temp = *(p+i*width+j*width/coord_y);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
lcd_writedata_16bit(color);
}
}
}
else//<2F><><EFBFBD><EFBFBD>
{
coord_x = width>TFT_X_MAX?TFT_X_MAX:width;
coord_y = height>TFT_Y_MAX?TFT_Y_MAX:height;
lcd_set_region(0,0,coord_x-1,coord_y-1);
for(j=0;j<coord_y;j++)
{
for(i=0;i<coord_x;i++)
{
temp = *(p+j*width+i*width/coord_x);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
lcd_writedata_16bit(color);
}
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 1 -<2D><>TFT_X_MAX<41><58>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 1 -<2D><>TFT_Y_MAX<41><58>
// @return void
// @since v1.0
// Sample usage: lcd_displayimage032_zoom(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H, 0, 0, 160, 120)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void lcd_displayimage032_zoom(uint8 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
lcd_set_region(0,0,dis_width-1,dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
temp = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
lcd_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ͫ(<28><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 1 -<2D><>TFT_X_MAX<41><58>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 1 -<2D><>TFT_Y_MAX<41><58>
// @return void
// @since v1.0
// Sample usage: lcd_displayimage8660_zoom(scc8660_csi_image[0],SCC8660_CSI_PIC_W,SCC8660_CSI_PIC_H,160,128);
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void lcd_displayimage8660_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
lcd_set_region(0,0,dis_width-1,dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
color = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color = ((color&0xff)<<8) | (color>>8);
lcd_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD>(<28><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @return void
// @since v1.0
// @note ͼ<><CDBC><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>120(<28><>)*160(<28><>)<29><><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_displayimage7725(uint8 *p, uint16 width, uint16 height)
{
int i,j;
uint16 temp = 0;
lcd_set_region(0,0,width-1,height-1);
for(i=0;i<height * (width/8);i++)
{
temp = *p;
p++;
for(j=0; j<8; j++)
{
if( (temp<<j)&0x80 ) lcd_writedata_16bit(WHITE);
else lcd_writedata_16bit(BLACK);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// @param x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>TFT_Y_MAX-1<><31>
// @param size ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>õĵ<C3B5><C4B5>󳤿<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ٸ<EFBFBD><D9B8>㣬ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ġ<EFBFBD>
// @param *p <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param number <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ
// @param color <20><>ʾ<EFBFBD><CABE>ɫ
// @return void
// @since v1.0
// Sample usage: lcd_display_chinese(0,0,16,chinese_test[0],4,RED);//<2F><>ʾfont<6E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ʾ<><CABE>
// @Note ʹ<><CAB9>PCtoLCD2002<30><32><EFBFBD><EFBFBD>ȡģ <20><><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>˳<EFBFBD><CBB3> 16*16
//-------------------------------------------------------------------------------------------------------------------
void lcd_display_chinese(uint16 x, uint16 y, uint8 size, const uint8 *p, uint8 number, uint16 color)
{
int i, j, k;
uint8 temp, temp1, temp2;
const uint8 *p_data;
temp2 = size/8;
lcd_set_region(x,y,number*size-1+x,y+size-1);
for(i=0;i<size;i++)
{
temp1 = number;
p_data = p+i*temp2;
while(temp1--)
{
for(k=0;k<temp2;k++)
{
for(j=8;j>0;j--)
{
temp = (*p_data>>(j-1)) & 0x01;
if(temp) lcd_writedata_16bit(color);
else lcd_writedata_16bit(TFT_BGCOLOR);
}
p_data++;
}
p_data = p_data - temp2 + temp2*size;
}
}
}