/******************************************************************
Copyright (C), 2008-2009, 力天电子,LiTian Tech.Co.Ltd.
Module Name : SO12864
File Name : SO12864.c
Author : HE CHENG
Create Date : 2009/10/19
Version : 1.0
Function : SO12864液晶屏实验
Description : 实验前将液晶屏插好
Support : www.LT430.com QQ:330508762
******************************************************************/
#include <NXP/iolpc2148.h>
#include "config.h"
#include "includes.h"
typedef unsigned char uint8; /* 无符号8位整型变量 */
typedef signed char int8; /* 有符号8位整型变量 */
typedef unsigned short uint16; /* 无符号16位整型变量 */
typedef signed short int16; /* 有符号16位整型变量 */
typedef unsigned int uint32; /* 无符号32位整型变量 */
typedef signed int int32; /* 有符号32位整型变量 */
typedef float fp32; /* 单精度浮点数(32位长度) */
typedef double fp64; /* 双精度浮点数(64位长度) */
//管脚宏定义
#define SCLK 0x01<<24 //595时钟端
#define MISO 0x01<<5 //数据输入端
#define MOSI 0x01<<6 //数据输出端
#define RCK 0x01<<7 //SO12864时钟输入端
// LCD Define
#define LCD_A 1<<30 //命令数据选择端,高电平:数据,低电平:命令.
#define LCD_CLK 1<<4 //时钟端
#define LCD_DATA MOSI //数据端
#define B_LED 1<<13 //背光
#define Sclk_L() IO0CLR |= LCD_CLK //时钟高电平
#define Sclk_H() IO0SET |= LCD_CLK //时钟低电平
#define Res_L() HC595_DATA &= ~(1<<2);Write595() //复位低电平
#define Res_H() HC595_DATA |= (1<<2);Write595() //复位高电平
#define Data_L() IO0CLR |= LCD_DATA //数据低电平
#define Data_H() IO0SET |= LCD_DATA //数据高电平
#define CS_L() HC595_DATA &= ~1;Write595() //片选低电平
#define CS_H() HC595_DATA |= 1;Write595() //片选高电平
#define Write_C() IO0CLR |= LCD_A //选择写命令
#define Write_D() IO0SET |= LCD_A //选择写数据
//函数声明
void Delayn(unsigned long n);
void Write595();
void HC595_Init(void);
void Lcd_Init(void);
void display_map(unsigned char *p);
//全局变量
unsigned int HC595_DATA = 0xFFFFFFFF;
unsigned char gui_disp_buf[GUI_LCM_XMAX*GUI_LCM_YMAX/8]={ //取的字模
0x20,0x30,0xAC,0x63,0x32,0x00,0xFC,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xBC,0x00,0x00,
0x00,0x08,0x06,0x82,0xFA,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x9A,0x96,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x40,0xF0,0x1C,0x07,0xE2,0x24,0x24,0x24,0xE4,0x04,0x04,0xFC,0x04,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x80,0xBE,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xBE,0x80,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x11,0x09,0x49,0x21,0x1C,0x03,0x7F,0x04,0x3F,0x04,0x3F,0x44,0x7F,0x00,0x00,
0x00,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x04,0x46,0x84,0x60,0x1F,0x00,0x00,
0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x01,0x06,0x0C,0x18,0x30,0x60,0x20,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x7F,0x00,0x00,0x07,0x02,0x02,0x02,0x07,0x20,0x40,0x3F,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00,
0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00,
0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0x21,0x41,0x3F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,
0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x08,0x4A,0x4A,0xFE,0x4A,0x4A,0x7E,0x00,
0x09,0x4A,0x4C,0xF8,0x4C,0x4B,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,
0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,0x08,0x04,0x7F,0x22,0x22,0x22,0x7E,0x00,
0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//初始化595接口
void HC595_Init(void)
{
IO0DIR |= MOSI|RCK;
IO1DIR |= SCLK;
IO1CLR |= SCLK;
IO0DIR |= RCK;
HC595_DATA = 0xFFFFFFFF; Write595();
}
//写字节
void WriteByte(unsigned char data)
{
unsigned char i;
//IO0CLR = RCK;
for(i=0;i<8;i++)
{
if(data&0x01) IO0SET = MOSI;
else IO0CLR = MOSI;
IO1SET=SCLK;
data>>=1;
IO1CLR=SCLK;
}
//IO0SET = RCK;
}
//刷新595的数据
void Write595()
{
IO0CLR = RCK;
WriteByte(HC595_DATA&0xff);
WriteByte((HC595_DATA&0xff00)>>8);
WriteByte((HC595_DATA&0xff0000)>>16);
WriteByte((HC595_DATA&0xff000000)>>24);
IO0SET = RCK;
}
//延时周期数
void Delayn(unsigned long n)
{
while(n--);
}
//向SPI总线上写一个字节的数据
void LCDWriteByte(unsigned char data)
{
unsigned char i,s;
s = data;
for(i=0;i<8;i++)
{
if(s&0x80) Data_H();
else Data_L();
Sclk_H();
s<<=1;
Sclk_L();
}
}
//向液晶屏些数据
void WriteData (unsigned char Data)
{
Write_D();
CS_L();
LCDWriteByte(Data);
CS_H();
}
//向液晶屏写命令
void WriteCommand (unsigned char Command)
{
Write_C();
CS_L();
LCDWriteByte(Command);
CS_H();
}
//打开液晶背光 0:关闭 1:打开
void Lcd_BackLed(unsigned char on)
{
if(on==1){
IO0CLR=B_LED; //打开背光
}
else if(on==0){
IO0SET=B_LED; //关闭背光
}
}
//液晶复位
void Lcd_Reset(void){
Res_L();
Delayn(1000000);
Res_H();
}
//列顺序翻转,左右翻转 0:正常 1:翻转
void Lcd_ColRev(unsigned char i){
WriteCommand(0xa0|(i&0x01));
}
//液晶初始化
void Lcd_Init(void)
{
HC595_Init(); //初始化74HC595
//初始化IO口
IO0DIR |= LCD_A|B_LED|LCD_CLK;
Lcd_Reset(); //液晶复位
Lcd_BackLed(1); //打开液晶背光
WriteCommand(0xaf); //打开显示
WriteCommand(0x40); //开始显示
WriteCommand(0xa0); //ADC NORMAL
WriteCommand(0xa6); //
WriteCommand(0xa4); //清除
WriteCommand(0xa2); //1/9BIAS
WriteCommand(0xc8); //COMMON OUTPUT DIRECTION
WriteCommand(0x2f); //POWER CONTROL
WriteCommand(0x24); //RESISTER RATIO
WriteCommand(0x81); //VOLUM MODE SET
WriteCommand(0x24); //RESISTER RATIO
Lcd_ColRev(1); //左右翻转
}
//显示一副图象
void display_map(unsigned char *p) //P是图片数据的首地址
{
unsigned char seg,page,tmp;
for(page=0xb0;page<0xb8;page++) //写页地址共 8 页 0xb0----0xb8
{
WriteCommand(page);
WriteCommand(0x10); //列地址,高低字节两次写入,从第 0 列开始
WriteCommand(0x00);
for(tmp=0;tmp<4;tmp++)
{
WriteData(0);
}
for(seg=0; seg<128; seg++)//写 128 列
{
WriteData(*p++);
//WriteData(0xFE); //TEST
}
}
}
//刷新整个缓冲区
void LCD_UpdateAll(void)
{
display_map(gui_disp_buf);
}
//以一种颜色填充图像
void LCD_FillAll(TCOLOR dat)
{
uint32 i, j;
for(i=0; i<GUI_LCM_XMAX; i++) // 历遍所有行
{
for(j=0; j<GUI_LCM_YMAX/8; j++) // 历遍所有行
{
gui_disp_buf[j*128 + i] = dat; // 填充数据
}
}
LCD_UpdateAll(); //更新显示数据
}
//更新一个点的显示
void LCD_UpdatePoint(uint32 x, uint32 y)
{
WriteCommand(0xb0 + (7-((y>>3)&0x0F))); //页地址
WriteCommand(0x10 + (((x+4)>>4)&0x0F)); //列地址,高低字节两次写入,从第 0 列开始
WriteCommand(0x00 + ((x+4)&0x0F));
WriteData(gui_disp_buf[(x)+128*(8-(y/8)-1)-1]); //写入数据
}
/***********************************************************************
函数: Put_Pixel
功能:在液晶屏上打印一个像素
参数说明:
坐标(x,y)(以左上角为坐标原点)
x 取值0~127
y的取值 0~64
flag = 0 将此点清零
flag = 1 将此点显示
flag = 2 将此点取反
***********************************************************************/
void Put_Pixel(unsigned char x,unsigned char y,unsigned char flag)
{
if(x<128 && y<64)
{
switch(flag)
{
case 1://置1
gui_disp_buf[(x)+128*(8-(y/8)-1)-1] |=(1<<(7-(y%8)));
break;
case 0://清零
gui_disp_buf[(x)+128*(8-(y/8)-1)-1] &=(~(1<<(7-(y%8))));
break;
case 2://取反
gui_disp_buf[(x)+128*(8-(y/8)-1)-1] ^=(1<<(7-(y%8)));
break;
}
LCD_UpdatePoint(x,y);
}
}
/***********************************************************************
画一条x1,y1 到 x2,y2 的直线
(flag=1画点,flag=0清点)
***********************************************************************/
void Draw_Line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,unsigned char flag)
{
int dy ;
int dx ;
int stepx, stepy, fraction;
dy = y2 - y1;
dx = x2 - x1;
if (dy < 0)
{
dy = -dy;
stepy = -1;
}
else
{
stepy = 1;
}
if (dx < 0)
{
dx = -dx;
stepx = -1;
}
else
{
stepx = 1;
}
dy <<= 1;
dx <<= 1;
Put_Pixel(x1,y1,flag);
if (dx > dy)
{
fraction = dy - (dx >> 1);
while (x1 != x2)
{
if (fraction >= 0)
{
y1 += stepy;
fraction -= dx;
}
x1 += stepx;
fraction += dy;
Put_Pixel(x1,y1,flag);
}
}
else
{
fraction = dx - (dy >> 1);
while (y1 != y2)
{
if (fraction >= 0)
{
x1 += stepx;
fraction -= dy;
}
y1 += stepy;
fraction += dx;
Put_Pixel(x1,y1,flag);
}
}
}
//加载 16x1 6的汉字
void LcdDispHz16 (uint16 x0, uint16 y0, uint8 ForeColor, uint8 *s)
{
int16 j,k,x,y,xx;
uint8 qm,wm;
uint32 ulOffset;
char hzbuf[32]/*,temp[2]*/;
if(((uint8)(*s)) < 161)
{
//temp[0] = *(s+i);
//temp[1] = '\0';
return;
}
else
{
qm = *(s) - 161;
wm = *(s + 1) - 161;
ulOffset = (uint32)(qm * 94 + wm + 2) * 32 + 4;
for (j = 0; j < 32; j ++)
{
hzbuf[j] = g_auc_HZK_Dot[ulOffset + j];
}
for(y = 0; y < 16; y++)
{
for(x = 0; x < 16; x++)
{
k = x % 8;
if (hzbuf[y * 2 + (x / 8)] & (0x80 >> k))
{
xx = x0 + x;
Put_Pixel( xx, y + y0, (uint8)ForeColor);
}
}
}
}
//LCD_UpdateAll();
}
//显示汉字
void Lcd_DispHZ(uint16 usX, uint16 usY, uint16 usForeColor, uint8 *pucStr)
{
uint16 i = 0;
//uint8 ucLen;
while (*pucStr != 0)
{
if (*pucStr >= 161)
{
if ((usX + i * 8) >= GUI_LCM_XMAX - 16 ||(usY >= GUI_LCM_YMAX))
{
break;
}
LcdDispHz16(usX + i * 8, usY, usForeColor, pucStr);
i += 2;
pucStr += 2;
}
}
}
/****************************************************************************
* 相关的 GUI 接口函数
****************************************************************************/
/****************************************************************************
* 名称:GUI_FillSCR()
* 功能:全屏填充。直接使用数据填充显示缓冲区。
* 入口参数:dat 填充的数据(对于黑白色LCM,为0的点灭,为1的点显示)
* 出口参数:无
****************************************************************************/
void GUI_FillSCR(TCOLOR dat)
{
LCD_FillAll(dat);
}
/****************************************************************************
* 名称:GUI_Initialize()
* 功能:初始化GUI,包括初始化显示缓冲区,初始化LCM并清屏。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void GUI_Initialize(void)
{
Lcd_Init(); // 初始化LCM模块工作模式,纯图形模式
GUI_FillSCR(0x00); // 初始化缓冲区为 0x00,并输出屏幕(清屏)
}
/****************************************************************************
* 名称:GUI_ClearSCR()
* 功能:清屏。
* 入口参数:无
* 出口参数:无
* 说明:用户根据 LCM 的实际情况编写此函数。
****************************************************************************/
void GUI_ClearSCR(void)
{
GUI_FillSCR(0x00);
}
uint8 const DCB_HEX_TAB[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
/****************************************************************************
* 名称:GUI_Point()
* 功能:在指定位置上画点。
* 入口参数: x 指定点所在列的位置
* y 指定点所在行的位置
* color 显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。(操作失败原因是指定地址超出有
* 效范围)
* 说明:用户根据LCM的实际情况编写此函数。对于单色,只有一个位有效,则要使用左移的方法
* 实现point_dat = (point_dat&MASK_TAB [i]) | (color<<n),其它位数的一样
* 处理。
****************************************************************************/
uint8 GUI_Point(unsigned int x, unsigned int y, TCOLOR color)
{
Put_Pixel(x,y,color);
//刷新显示
//LCD_UpdatePoint(x, y);
//LCD_UpdateAll();
return(1);
}
/****************************************************************************
* 名称:GUI_ReadPoint()
* 功能:读取指定点的颜色。
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* ret 保存颜色值的指针
* 出口参数:返回0时表示指定地址超出有效范围。
* 说明:对于单色,设置ret的d0位为1或0,4级灰度则为d0、d1有效,8位RGB则d0--d7有效,
* RGB结构则R、G、B变量有效。
****************************************************************************/
int GUI_ReadPoint(uint32 x, uint32 y, TCOLOR *ret)
{
TCOLOR bak;
//参数过滤
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
// 取得该点颜色(用户自行更改)
bak = gui_disp_buf[(x)+128*(8-(y/8)-1)-1];
if((bak&DCB_HEX_TAB[y&0x07])!=0) *ret = 1;
else *ret = 0;
return(1);
}
/****************************************************************************
* 名称:GUI_HLine()
* 功能:画水平线。
* 入口参数: x0 水平线起点所在列的位置
* y0 水平线起点所在行的位置
* x1 水平线终点所在列的位置
* color 显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
****************************************************************************/
void GUI_HLine(uint32 x0, uint32 y0, uint32 x1, uint8 color)
{
Draw_Line(x0,y0,x1,y0,color);
//LCD_UpdateAll();
}
/****************************************************************************
* 名称:GUI_RLine()
* 功能:画垂直线。
* 入口参数: x0 垂直线起点所在列的位置
* y0 垂直线起点所在行的位置
* y1 垂直线终点所在行的位置
* color 显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
****************************************************************************/
void GUI_RLine(uint32 x0, uint32 y0, uint32 y1, uint8 color)
{
Draw_Line(x0,y0,x0,y1,color);
//LCD_UpdateAll();//这样更新太慢
}
//显示汉字
void GUI_DispHZ(uint16 usX, uint16 usY, uint16 usForeColor, uint8 *pucStr)
{
Lcd_DispHZ(usX,usY,usForeColor,pucStr);
}
联系人:客服在线
手机:全工:13903011251
电话:李R:13530006400
邮箱:729986191@qq.com
地址: GUANGDONG PROVINCE