📄 c1335_driver.c
字号:
#include "..\uv2_prj\config.h"
#include "config.h"
#include "c1335_define.h"
#include "c1335_driver.h"
#include "c1335_font.h"
//#include<math.h>
//#include<intrins.h>
#define paraP9 0x28 // 相对于320 X 240
unsigned char code OnlyBitTable[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
/*======================================================================**
**函 数 名:void DispBitmap(uchar *addr,uchar LineX,uchar RowY); **
**功能介绍:显示 2 区图形方式显示16*16汉字 **
**传人参数:汉字字符串地址 *addr,定位坐标LineX(0~239),RowY(0~39) **
** **
**======================================================================*/
void DispBitmap( unsigned char *addr,
unsigned char X,
unsigned char Y,
unsigned char color,
unsigned char Length)
{
unsigned char i;
unsigned int XYtemp;
i = color;
XYtemp = Y * 40 + X+BasePart2*256; //计算显示位置
WriteCMD(CSR_DIR_D);
WriteCMD(CSR_W);
WriteDATA((unsigned char)XYtemp);
WriteDATA((unsigned char)(XYtemp >> 8));
WriteCMD(MEM_WRITE);
for(i=0;i<Length;i++,addr++)
{
if(!color) WriteDATA(*addr);
else WriteDATA(~(*addr));
}
}
void DispCHAR_16x8( unsigned char *addr,
unsigned char X,
unsigned char Y,
unsigned char color)
{
DispBitmap(addr,X,Y,color,16);
}
/*======================================================================**
**函 数 名:void DispHZ_16_16(uchar *addr,uchar LineX,uchar RowY); **
**功能介绍:显示 2 区图形方式显示16*16汉字 **
**传人参数:汉字字符串地址 *addr,定位坐标LineX(0~239),RowY(0~39) **
** **
**======================================================================*/
void DispHZ_16_16( unsigned char *addr,
unsigned char X,
unsigned char Y,
unsigned char color)
{
DispBitmap(addr, X, Y, color,16);
DispBitmap(addr+16, X+1, Y, color,16);
}
/*======================================================================**
**函 数 名:Disp_ASCII(uchar *addr,uchar LineX,uchar RowY,bit Inverse); **
**功能介绍:显示 2 区图形方式显示ASCII,要求以'\0'结尾 **
**传人参数:ASCII字符串地址 *addr,定位坐标LineX(0~239),RowY(0~39) **
** -----(bit)Inverse,正常显示(0),反白显示(1) --- **
========================================================================*/
void DispASCIIStr( unsigned char *addr,
unsigned char X,
unsigned char Y,
unsigned char color)
{
unsigned int p;
for ( ;*addr != 0;addr++ )
{
if(*addr < 0x80)//ASICII 字符
{
p = (*addr - 0x20)*16 ;
DispCHAR_16x8(ASCII_16+p,X,Y,color); //DispCHAR_16x8(&Ascii_16[p],Y0,X0,color);
X++;
}
else // >=0x80,汉字
{
p = (*addr - 0x80)*32 ;
DispHZ_16_16(HZ_16X16+p,X,Y,color); //DispCHAR_16x8(&Ascii_16[p],Y0,X0,color);
X +=2;
}
}
}
void NumberToChar(unsigned int nDecadeData,
unsigned char * pChar,
unsigned char Length)
{
unsigned char uc;
for (uc = Length;uc ; )
{
pChar[--uc] = nDecadeData%10 + 0x30;
nDecadeData /=10;
}
}
#define memset(x,y,z);
/*======================================================================**
**函 数 DispBmp16x24(uchar *addr,uchar X,uchar Y,color); **
**功能介绍:显示 2 区图形方式显示位图 **
**传人参数: **
** -----color,正常显示(0),反白显示(1) --- **
========================================================================*/
void DispDecimalNum( unsigned int nDecadeData,
unsigned char X,
unsigned char Y,
unsigned char Length,
unsigned char color)
{
unsigned char ucTemp[5];
memset(ucTemp,0,sizeof(ucTemp));
NumberToChar(nDecadeData,ucTemp,Length);
DispASCIIStr(ucTemp,X,Y,color);
}
/*======================================================================**
**函 数 DispBmp16x24(uchar *addr,uchar X,uchar Y,color); **
**功能介绍:显示 2 区图形方式显示位图 **
**传人参数: **
** -----color,正常显示(0),反白显示(1) --- **
========================================================================*/
void DispBmp16x24(unsigned char *addr,
unsigned char X,
unsigned char Y,
unsigned char color)
{
DispBitmap(addr, X, Y, color,16);
DispBitmap(addr+16, X+1, Y, color,16);
DispBitmap(addr+16+16, X+2, Y, color,16);
}
void HorLine(unsigned char Data,
unsigned char X,
unsigned char Y,
unsigned char Length)
{
unsigned char i;
unsigned int XYtemp;
XYtemp = (Y) * 40 + X + BasePart2*256;
WriteCMD(CSR_DIR_R);
WriteCMD(CSR_W);
WriteDATA((unsigned char)XYtemp);
WriteDATA((unsigned char)(XYtemp >> 8));
WriteCMD(MEM_WRITE);
for(i=0;i<Length;i++)
WriteDATA(Data);
}
void VerLine(unsigned char Data,
unsigned char X,
unsigned char Y,
unsigned char Length)
{
unsigned char i;
unsigned int XYtemp;
XYtemp = (Y) * 40 + X + BasePart2*256;
WriteCMD(CSR_DIR_D);
WriteCMD(CSR_W);
WriteDATA((unsigned char)XYtemp);
WriteDATA((unsigned char)(XYtemp >> 8));
WriteCMD(MEM_WRITE);
for(i=0;i<Length;i++)
WriteDATA(Data);
}
/*=================================================================**
**函 数 名:void DrawRect(unsigned int X,unsigned char Y,unsigned char attr);**
**功能介绍:在(x,y)坐标绘制一个点。x=[0,319],y=[0,239] **
**传人参数:attr是 (1)画点,(0)消点 **
===================================================================*/
void DrawRect(unsigned int X,unsigned char Y,unsigned char attr)
{
unsigned char i,Data;
if(attr) Data = 0xc0;
else Data = 0x00;
VerLine(Data,X, Y,24);
if(attr) Data = 0x03;
else Data = 0x00;
VerLine(Data,X+4, Y,24);
if(attr) Data = 0xff;
else Data = 0x00;
for(i=0;i<2;i++)
HorLine(Data,X,Y+i,5);
for(i=22;i<24;i++)
HorLine(Data,X,Y+i,5);
}
/*======================================================================**
**函 数 名:DispRegNO(RowX,ColumnY,X,Y); **
**功能介绍:显示 2 区图形方式显示ASCII,要求以'\0'结尾 **
**传人参数:ASCII字符串地址 *addr,定位坐标LineX(0~239),RowY(0~39) **
** -----(bit)Inverse,正常显示(0),反白显示(1) --- **
========================================================================*/
void DispRegNO( unsigned char RowX,
unsigned char ColumnY,
unsigned char X,
unsigned char Y,
unsigned char color)
{
unsigned int p;
unsigned char ucTemp;
ucTemp = ColumnY*12 +RowX;
if(ucTemp < 31)
{
p = 32*ucTemp;
DispHZ_16_16(PROVINCE_NAME+p,X,Y,color);
}
else if ((ucTemp > 30)&&(ucTemp < 72))
{
if(ucTemp < 46) p = (ucTemp-20)*16;
else p = (ucTemp-13)*16 ;
DispCHAR_16x8(ASCII_16+p,X,Y,color);
}
}
/*======================================================================**
**函 数 名:initLCD(); **
**功能介绍:初始化LCD **
**传人参数:无 **
** .
0**
**======================================================================*/
void initLCD()
{
unsigned int i;
C8155=0x02; //B output,C&A input
C8155=0x02; //B output,C&A input
WriteCMD(SYSTEM_SET);//C1335=0x40;
for(i=0;i<8;i++)
{
WriteDATA(SYSTEMSET_PARAM[i]);//D1335 = SYS_PARA_TABLE8[i];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -