pikapython/bsp/TC264D/Libraries/seekfree_peripheral/SEEKFREE_IPS200_PARALLEL8.c
2022-01-18 00:58:54 +08:00

897 lines
30 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 2.0<EFBFBD><EFBFBD>IPS<EFBFBD><EFBFBD>Ļ
* @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>
D0 <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_D0_PIN <20><EFBFBD><EAB6A8>
D1 <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_D1_PIN <20><EFBFBD><EAB6A8>
D2 <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_D2_PIN <20><EFBFBD><EAB6A8>
D3 <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_D3_PIN <20><EFBFBD><EAB6A8>
D4 <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_D4_PIN <20><EFBFBD><EAB6A8>
D5 <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_D5_PIN <20><EFBFBD><EAB6A8>
D6 <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_D6_PIN <20><EFBFBD><EAB6A8>
D7 <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_D7_PIN <20><EFBFBD><EAB6A8>
BL <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_BL_PIN <20><EFBFBD><EAB6A8>
CS <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_CS_PIN <20><EFBFBD><EAB6A8>
RD <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_RD_PIN <20><EFBFBD><EAB6A8>
WR <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_WR_PIN <20><EFBFBD><EAB6A8>
RS <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_RS_PIN <20><EFBFBD><EAB6A8>
RST <09>鿴SEEKFREE_IPS200_PARALLEL8.H<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>IPS200_RST_PIN <20><EFBFBD><EAB6A8>
<09><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
VCC 3.3V<EFBFBD><EFBFBD>Դ
GND <20><>Դ<EFBFBD><D4B4>
<09><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>240*320
------------------------------------
********************************************************************************************************************/
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#include "zf_stm_systick.h"
#include "zf_gpio.h"
#include "zf_assert.h"
#include "SEEKFREE_PRINTF.h"
#include "SEEKFREE_IPS200_PARALLEL8.h"
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_w_data(uint8 dat) //д<><D0B4><EFBFBD><EFBFBD>
{
IPS200_DATAPORT1 = (dat << DATA_START_NUM1) | (IPS200_DATAPORT1 & ~((uint32)(0x0F << DATA_START_NUM1)) );
IPS200_DATAPORT2 = ((dat>>4) << DATA_START_NUM2) | (IPS200_DATAPORT2 & ~((uint32)(0x0F << DATA_START_NUM2)) );
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_wr_reg(uint8 command) //д<><D0B4><EFBFBD><EFBFBD>
{
IPS200_CS(0);
IPS200_RS(0);
IPS200_RD(1);
IPS200_WR(0);
ips200_w_data(command);
IPS200_WR(1);
IPS200_CS(1);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_wr_data(uint8 dat) //<2F><>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD>дһ<D0B4><D2BB><38><CEBB><EFBFBD><EFBFBD>
{
IPS200_CS(0);
IPS200_RS(1);
IPS200_RD(1);
IPS200_WR(0);
ips200_w_data(dat);
IPS200_WR(1);
IPS200_CS(1);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_wr_data16(uint16 dat) //<2F><>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD>дһ<D0B4><D2BB>16λ<36><CEBB><EFBFBD><EFBFBD>
{
IPS200_CS(0);
IPS200_RS(1);
IPS200_RD(1);
IPS200_WR(0);
ips200_w_data((uint8)(dat>>8));
IPS200_WR(1);
IPS200_WR(0);
ips200_w_data((uint8)(dat));
IPS200_WR(1);
IPS200_CS(1);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_w_reg(uint8 com,uint8 dat) //д<>Ĵ<EFBFBD><C4B4><EFBFBD>
{
ips200_wr_reg(com);
ips200_wr_data(dat);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_address_set(uint16 x1,uint16 y1,uint16 x2,uint16 y2)
{
ips200_wr_reg(0x2a);
ips200_wr_data16(x1);
ips200_wr_data16(x2);
ips200_wr_reg(0x2b);
ips200_wr_data16(y1);
ips200_wr_data16(y2);
ips200_wr_reg(0x2c);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief 2.0<EFBFBD><EFBFBD> IPSҺ<53><D2BA><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_init(void)
{
gpio_init(IPS200_D0_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_D1_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_D2_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_D3_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_D4_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_D5_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_D6_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_D7_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_BL_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_CS_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_RST_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_RS_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_WR_PIN, GPO, 0, PUSHPULL);
gpio_init(IPS200_RD_PIN, GPO, 0, PUSHPULL);
IPS200_BL(1);
IPS200_RST(0);
systick_delay_ms(STM0, 5);
IPS200_RST(1);
systick_delay_ms(STM0, 5);
ips200_wr_reg(0x11);
systick_delay_ms(STM0, 120);
ips200_wr_reg(0x36);
if (IPS200_DISPLAY_DIR==0) ips200_wr_data(0x00);
else if (IPS200_DISPLAY_DIR==1) ips200_wr_data(0xC0);
else if (IPS200_DISPLAY_DIR==2) ips200_wr_data(0x70);
else ips200_wr_data(0xA0);
ips200_wr_reg(0x3A);
ips200_wr_data(0x05);
ips200_wr_reg(0xB2);
ips200_wr_data(0x0C);
ips200_wr_data(0x0C);
ips200_wr_data(0x00);
ips200_wr_data(0x33);
ips200_wr_data(0x33);
ips200_wr_reg(0xB7);
ips200_wr_data(0x35);
ips200_wr_reg(0xBB);
ips200_wr_data(0x29); //32 Vcom=1.35V
ips200_wr_reg(0xC2);
ips200_wr_data(0x01);
ips200_wr_reg(0xC3);
ips200_wr_data(0x19); //GVDD=4.8V
ips200_wr_reg(0xC4);
ips200_wr_data(0x20); //VDV, 0x20:0v
ips200_wr_reg(0xC5);
ips200_wr_data(0x1A);//VCOM Offset Set
ips200_wr_reg(0xC6);
ips200_wr_data(0x01F); //0x0F:60Hz
ips200_wr_reg(0xD0);
ips200_wr_data(0xA4);
ips200_wr_data(0xA1);
ips200_wr_reg(0xE0);
ips200_wr_data(0xD0);
ips200_wr_data(0x08);
ips200_wr_data(0x0E);
ips200_wr_data(0x09);
ips200_wr_data(0x09);
ips200_wr_data(0x05);
ips200_wr_data(0x31);
ips200_wr_data(0x33);
ips200_wr_data(0x48);
ips200_wr_data(0x17);
ips200_wr_data(0x14);
ips200_wr_data(0x15);
ips200_wr_data(0x31);
ips200_wr_data(0x34);
ips200_wr_reg(0xE1);
ips200_wr_data(0xD0);
ips200_wr_data(0x08);
ips200_wr_data(0x0E);
ips200_wr_data(0x09);
ips200_wr_data(0x09);
ips200_wr_data(0x15);
ips200_wr_data(0x31);
ips200_wr_data(0x33);
ips200_wr_data(0x48);
ips200_wr_data(0x17);
ips200_wr_data(0x14);
ips200_wr_data(0x15);
ips200_wr_data(0x31);
ips200_wr_data(0x34);
ips200_wr_reg(0x21);
ips200_wr_reg(0x29);
ips200_clear(IPS200_BGCOLOR); //<2F><>ʼ<EFBFBD><CABC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param color <09><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips200_clear(YELLOW);// ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ
//-------------------------------------------------------------------------------------------------------------------
void ips200_clear(uint16 color)
{
uint16 i,j;
ips200_address_set(0,0,IPS200_X_MAX-1,IPS200_Y_MAX-1);
for(i=0;i<IPS200_X_MAX;i++)
{
for (j=0;j<IPS200_Y_MAX;j++)
{
ips200_wr_data16(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @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: ips200_drawpoint(0,0,RED); //<2F><><EFBFBD><EFBFBD>0,0<><30>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ<EFBFBD>ĵ<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_drawpoint(uint16 x,uint16 y,uint16 color)
{
ips200_address_set(x,y,x,y);
ips200_wr_data16(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 - (IPS200_X_MAX-1)
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 - (IPS200_Y_MAX/16-1)
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips200_showchar(0,0,'x');//<2F><><EFBFBD><EFBFBD>0,0дһ<D0B4><D2BB><EFBFBD>ַ<EFBFBD>x
//-------------------------------------------------------------------------------------------------------------------
void ips200_showchar(uint16 x,uint16 y,const int8 dat)
{
uint8 i,j;
uint8 temp;
for(i=0; i<16; i++)
{
ips200_address_set(x,y+i,x+7,y+i);
temp = tft_ascii[(uint16)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) ips200_wr_data16(IPS200_PENCOLOR);
else ips200_wr_data16(IPS200_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 - (IPS200_X_MAX-1)
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 - (IPS200_Y_MAX/16-1)
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips200_showstr(0,0,"seekfree");
//-------------------------------------------------------------------------------------------------------------------
void ips200_showstr(uint16 x,uint16 y,const int8 dat[])
{
uint16 j;
j = 0;
while(dat[j] != '\0')
{
ips200_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><>IPS200_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><>IPS200_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: ips200_showint8(0,0,x);//xΪint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showint8(uint16 x,uint16 y,int8 dat)
{
uint8 a[3];
uint8 i;
if(dat<0)
{
ips200_showchar(x,y*16,'-');
dat = -dat;
}
else ips200_showchar(x,y*16,' ');
a[0] = dat/100;
a[1] = dat/10%10;
a[2] = dat%10;
i = 0;
while(i<3)
{
ips200_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><>IPS200_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><>IPS200_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: ips200_showuint8(0,0,x);//xΪuint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_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)
{
ips200_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><>IPS200_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><>IPS200_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: ips200_showint16(0,0,x);//xΪint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showint16(uint16 x,uint16 y,int16 dat)
{
uint8 a[5];
uint8 i;
if(dat<0)
{
ips200_showchar(x,y*16,'-');
dat = -dat;
}
else ips200_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)
{
ips200_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><>IPS200_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><>IPS200_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: ips200_showuint16(0,0,x);//xΪuint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_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)
{
ips200_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><>IPS200_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><>IPS200_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: ips200_showint32(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 ips200_showint32(uint16 x,uint16 y,int 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';
ips200_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><>IPS200_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><>IPS200_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: ips_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 ips200_showfloat(uint16 x,uint16 y,double dat,int8 num,int8 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';
ips200_showstr(x, y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @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><>IPS200_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><>IPS200_Y_MAX/16-1<><31>
// @param w ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param l ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @return void
// @since v1.0
// Sample usage: ips200_showimage(0,0,10,20,&image);//ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0,0)<29><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>20<32><30>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showimage(uint16 x,uint16 y,uint16 w,uint16 l,const unsigned char *p)
{
int i;
unsigned char picH,picL;
ips200_address_set(x,y,x+w-1,y+l-1);
for(i=0;i<w*l;i++)
{
picL=*(p+i*2);
picH=*(p+i*2+1);
ips200_wr_data16(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: ips200_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 ips200_displayimage032(uint8 *p, uint16 width, uint16 height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
uint16 coord_x = 0;
uint16 coord_y = 0;
coord_x = width>IPS200_X_MAX?IPS200_X_MAX:width;
coord_y = height>IPS200_Y_MAX?IPS200_Y_MAX:height;
ips200_address_set(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));
ips200_wr_data16(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> 0 -<2D><>IPS200_X_MAX-1<><31>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 0 -<2D><>IPS200_Y_MAX-1<><31>
// @return void
// @since v1.0
// Sample usage: ips200_displayimage032_zoom(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H, 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 ips200_displayimage032_zoom(uint8 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
ips200_address_set(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));
ips200_wr_data16(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 start_x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param start_y <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><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: ips200_displayimage032_zoom1(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H, 0, 0, MT9V03X_CSI_W, MT9V03X_CSI_H)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
//-------------------------------------------------------------------------------------------------------------------
void ips200_displayimage032_zoom1(uint8 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD>Ƿ񳬹<C7B7><F1B3ACB9><EFBFBD>Ļ<EFBFBD>ķֱ<C4B7><D6B1><EFBFBD>
if((start_x+dis_width)>IPS200_X_MAX) ZF_ASSERT(0);
if((start_y+dis_height)>IPS200_Y_MAX) ZF_ASSERT(0);
ips200_address_set(start_x,start_y,start_x+dis_width-1,start_y+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));
ips200_wr_data16(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> 0 -<2D><>TFT_X_MAX-1<><31>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 0 -<2D><>TFT_Y_MAX-1<><31>
// @return void
// @since v1.0
// Sample usage: ips200_displayimage8660_zoom(scc8660_csi_image[0], SCC8660_CSI_PIC_W, SCC8660_CSI_PIC_H, 320, 240);//<2F><>ʾ<EFBFBD><CABE>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݸ<EFBFBD>ʽ(SCC8660_DATA_FORMAT)<29><><EFBFBD><EFBFBD>Ϊ0ʱ<30><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫͼ<C9AB><CDBC>
// ͼ<><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 ips200_displayimage8660_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
ips200_address_set(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);
ips200_wr_data16(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 start_x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param start_y <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><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: ips200_displayimage8660_zoom1(scc8660_csi_image[0], SCC8660_CSI_PIC_W, SCC8660_CSI_PIC_H, 0, 0, 320, 240);
//-------------------------------------------------------------------------------------------------------------------
void ips200_displayimage8660_zoom1(uint16 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD>Ƿ񳬹<C7B7><F1B3ACB9><EFBFBD>Ļ<EFBFBD>ķֱ<C4B7><D6B1><EFBFBD>
if((start_x+dis_width)>IPS200_X_MAX) ZF_ASSERT(0);
if((start_y+dis_height)>IPS200_Y_MAX) ZF_ASSERT(0);
ips200_address_set(start_x,start_y,start_x+dis_width-1,start_y+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);
ips200_wr_data16(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ͫ(<28><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>(<28><>ʾ<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> 0 -<2D><>TFT_X_MAX-1<><31>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 0 -<2D><>TFT_Y_MAX-1<><31>
// @return void
// @since v1.0
// Sample usage: ips200_displayimage8660_grayscale_zoom(scc8660_csi_image[0], SCC8660_CSI_PIC_W, SCC8660_CSI_PIC_H, 320, 240)//<2F><>ʾ<EFBFBD><CABE>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC> <20><>ʾY<CABE><59><EFBFBD><EFBFBD>
// @note <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݸ<EFBFBD>ʽ(SCC8660_DATA_FORMAT)<29><><EFBFBD><EFBFBD>Ϊ2ʱ<32><CAB1><EFBFBD><EFBFBD>ȡY<C8A1><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ҷ<EFBFBD>ͼ<EFBFBD><CDBC>
// ͼ<><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 ips200_displayimage8660_grayscale_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
ips200_address_set(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>
temp = temp&0xff;
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
ips200_wr_data16(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 ips200_displayimage7725(uint8 *p, uint16 width, uint16 height)
{
int i,j;
uint16 temp = 0;
ips200_address_set(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 ) ips200_wr_data16(WHITE);
else ips200_wr_data16(BLACK);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// @param x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>IPS200_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>IPS200_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: ips200_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 ips200_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;
ips200_address_set(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) ips200_wr_data16(color);
else ips200_wr_data16(IPS200_BGCOLOR);
}
p_data++;
}
p_data = p_data - temp2 + temp2*size;
}
}
}