?? t6963c.c
字號:
//************************************************************************
void image_addr_Pointer_Set(uchar x, uchar y)
{
uint iPos;
uint temp;
iPos =y * 16 + x + grshome;
temp=iPos;
x=iPos>>8;
y=temp&0x00ff;
WRCommandTwo(y,x,0x24);
}
//**************************************************************************
//= 函數原型: void Point(uchar x,uchar y, bit Mode)
//= 功 能: 在指定坐標位置顯示一個點
//= 參 數: 坐標,顯示點或清除點
//= 返 回 值:
//= 函數性質:私有函數
//= Mode 1:顯示 0:清除該點
//**************************************************************************
void Point(uchar x,uchar y, bit Mode)
{
uint Address;
uint temp;
uchar dat;
Address=(uint)y*16 + (x>>3) + grshome; //地址轉化
dat=0xF0+7-x%8; //產生位操作命令畫點的數據
if(Mode) dat=dat|0x08;
temp=Address;
x=Address>>8;
y=temp&0x00ff;
WRCommandTwo(y,x,0x24); //設置該點所在單元地址
WRCommand(dat); // 利用位操作命令畫點
}
//*****************************************************************************
//= 函數原型: void char_wr(uchar x,uchar y, uchar *p,uchar dataa,uchar n)
//= 功 能: 連續寫入一個或多個字符
//= 參 數: 坐標,要顯示的字符數組,顯示的單個字符,要顯示的字符個數
//= 返 回 值:
//= 函數性質:私有函數
//當n=0一次性寫入一個字符,否則一次性寫入多個字符
//*****************************************************************************
void char_wr(uchar x,uchar y, uchar *p,uchar dataa,uchar n)
{
uchar i;
char_addr_Pointer_Set(x,y); //寫入地址
if(n==0)
WRCommandOne(dataa,0xc0); //一次寫入數據
else
{
WRCommand(0xb0);//進入自動寫
for(i=0;i<n;i++)
WRData(p[i]);
WRCommand(0xb2); //退出自動寫
}
}
//******************************************************************************
//= 函數原型: void hanzhi(uchar x,uchar y, uchar m,uchar n)
//= 功 能: 連續寫入一個或多個漢字
//= 參 數: 坐標,要顯示的第一個漢字的位置,連續顯示漢字的個數。
//= 返 回 值:
//= 函數性質:私有函數
//當n=1一次性寫入一個字符,否則一次性寫入多個字符
//*****************************************************************************
void hanzhi(uchar x,uchar y, uchar m,uchar n)
{
uchar i;
uchar CGRam;
CGRam=0x80+4*m; //第m個字符
for(i=0;i<n;i++)
{
char_addr_Pointer_Set(x,y); //漢字左上角寫入
WRCommandOne(CGRam,0xc0); //一次寫入數據;
CGRam++;
y++;
char_addr_Pointer_Set(x,y); //漢字左下角寫入
WRCommandOne(CGRam,0xc0);
CGRam++;
x++;
y--;
char_addr_Pointer_Set(x,y); //漢字右上角寫入
WRCommandOne(CGRam,0xc0);
CGRam++;
y++;
char_addr_Pointer_Set(x,y); //漢字右下角寫入
WRCommandOne(CGRam,0xc0);
CGRam++;
x++;
y--;
if(x==16)
{
x=0; //寫滿一行,從第二行開始
y++;
y++;
}
}
}
//******************************************************************************
//= 函數原型: void fill_CGRAM(uchar *p,uchar m,uinit n)
//= 功 能: 填充CGRAM數據
//= 參 數: 字符數組,寫入第m個漢字,循環寫入的漢字個數
//= 返 回 值:
//= 函數性質:私有函數
//*//**************************************************************************
void fill_CGRAM(uchar *p,uchar m,uint n)
{
uchar xx;
uchar yy;
uint i;
uint ADCGram;
uint temp;
ADCGram=0x1c00+32*m; //確定CGRAM地址
temp=ADCGram;
xx=ADCGram>>8;
yy=temp&0x00ff;
WRCommandTwo(yy,xx,0x24);
n=n*32;
WRCommand(0xb0);
for(i=0;i<n;i++)
WRData(p[i]);
WRCommand(0xb2); //退出自動寫
}
//*******************************************************************************
//= 函數原型: void Wr_line(uchar type,uchar x1,uchar y1, uchar Long,uchar mode)
//= 功 能: 畫一條橫線或一條豎線
//= 參 數: type=1為橫線,否則為豎線,(x1,y1)為起始點,Long為長度,mode=1為顯示
//= 返 回 值:
//= 函數性質:公有函數
//*******************************************************************************
void Wr_line(uchar type,uchar x1,uchar y1, uchar Long,uchar mode){
uchar i;
if(type==1)
{
for(i=0;i<Long;i++) //畫橫線
{
if(mode==1)
Point(x1+i,y1,1);
else
Point(x1+i,y1,0);
}
return;
}
else
{
for(i=0;i<Long;i++) //畫豎線
{
if(mode==1)
Point(x1,y1+i,1);
else
Point(x1,y1+i,0);
}
return;
}
}
//*****************************************************************************
//= 函數原型: void Show_Image(uchar x1,uchar y1,uchar x2,uchar y2,bit mode)
//= 功 能: 填充區域(x1,y1) (x2,y2)
//= 參 數: (x1,y1)為起始點,(x2,y2)為終點 mode=1顯示
//= 返 回 值:
//= 函數性質:私有函數
//= 注 意:以點為單位
//*****************************************************************************
void Show_Image(uchar x1,uchar y1,uchar x2,uchar y2,bit mode)
{
char temp=x1;
if(mode)
{
for(;y1<=y2;y1++)
for(x1=temp;x1<=x2;x1++)
Point(x1,y1,1);
}
else
{
for(;y1<=y2;y1++)
for(x1=temp;x1<=x2;x1++)
Point(x1,y1,0);
}
}
//**********************************************************************************
//= 函數原型: void image(uchar x1,uchar y1,uchar x2,uchar y2,uchar *p,bit mode)
//= 功 能: 在設定的區域連續寫入多個字節,作圖形顯示用
//= 參 數: (x1,y1)為起始點,(x2,y2)為終點 *po為圖形數組,mode=1顯示 mode=0清除
//= 返 回 值:
//= 函數性質:私有函數
//= 操作方法:當p=0,mode=1時,連續輸入0xff,作反顯用,當p=0,mode=0時,連續輸入0x00,作
//= 消除反顯用,當p!=0時,作輸入圖像用,此時mode無效
//= 注 意:參數的數據范圍
//**********************************************************************************
void image(uchar x1,uchar y1,uchar x2,uchar y2,uchar *p,bit mode)
{
uchar temp=x1;
uint i=0;
for(;y1<=y2;y1++)
{
x1=temp;
image_addr_Pointer_Set(x1,y1); //寫入地址
WRCommand(0xb0); //進入自動寫
for(;x1<=x2;x1++)
{
if(p==0&&mode==1)
{
WRData(0xff);
}
else if(p==0&&mode==0)
{
WRData(0x00);
}
else
{
WRData(p[i]);
i++; //下一個字節
}
}
WRCommand(0xb2); //退出自動寫
}
}
//******************************************************************************
//= 函數原型: void negShow(uchar x1,uchar y1,uchar x2,uchar y2,bit mode)
//= 功 能: 反顯區域(x1,y1) (x2,y2)
//= 參 數: (x1,y1)為起始點,(x2,y2)為終點 mode=1反顯
//= 返 回 值:
//= 函數性質:私有函數
//= 注 意:以字節為單位
//******************************************************************************
void negShow(uchar x1,uchar y1,uchar x2,uchar y2,bit mode)
{
if(mode)
{
WRCommand(0x81); //啟用內部字符發生器,顯示方式是文本與圖形邏輯異或
image(x1,y1,x2,y2,0,1);
}
else
{
WRCommand(0x80); //啟用內部字符發生器,顯示方式是文本與圖形邏輯或
image(x1,y1,x2,y2,0,0);
}
}
//******************************************************************************
//= 函數原型: void Show_num(uchar x1,uchar y1,uchar num)
//= 功 能: 在設定的位置顯示一個數字
//= 參 數: (x1,y1)為位置,num為數字
//= 返 回 值:
//= 函數性質:公有函數
//= 注 意:以字節為單位
//*****************************************************************************
void Show_num(uchar x1,uchar y1,uchar num)
{
uchar number[10]={0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19};
char_addr_Pointer_Set(x1,y1);
WRCommandOne(number[num],0xc0); //一次寫入數據
}
///////////////////////////初始化LCD////////////////////////////////////////////
void Init_LCD()
{
Init_LCD_Graphic();
ClrGraphic();
fill_CGRAM(CCTable,0,22); //將漢字寫入CGRAM
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -