?? function._h
字號:
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
//功能: 函數定義及其構架
//輸入: 無
//輸出: 函數名
//By: 李 平 2007.7.11
//備注:
#include <iom16v.h>
#include <macros.h>
//#include "Portini.h"
//#include "Data.h"
//定義全局變量 tabx[4] 和 taby[4]
uchar tabx[4];
uchar taby[4];
void bang(void);
void send(uchar dat); //送出一行指令或數據
//F0 XX YY QQ WW: 漢字顯示命令 以漢字為單位的X,Y坐標值,QQ,WW為漢字區碼,位碼
//F1 XX YY AS : 8*8ASCII字符顯示 以ASCII為單位的X,以1*1為單位的Y坐標值,AS為ASCII字符
//F2 XX YY : 顯示位點陣 以1*1點陣為單位的X,Y坐標值,
//F3 XX YY BT : 顯示字節點陣 以1*8為行單位,以1*1為列單位的坐標值,BT=0白色,=1黑色
//F4: 清屏
//F5: 上移一個點陣
//F6: 下移一個點陣
//F7: 左移一個點陣
//F8: 右移一個點陣
//F9 XX YY AS : 8*16 ASCII字符顯示 以ASCII為單位的X,以1*1為單位的Y坐標值 AS:ASCII字符
//FA : 此后的圖形或文字反白顯示
//FB 00/07/0F : 光標顯示 00關光標 07 光標為8點 0F光標為16點
//FC 00/01/07/0F: 移動速度 00按一個點移動 01按2個點移動
// 07按8個點移動 0F按16個點移動
void write(uchar comm,uchar addr_x,uchar addr_y);
//對應于F0 XX YY 即送命名+X坐標值+Y坐標值,分別一Send()格式送出
void disp1line (uchar *chn); //顯示一行漢字
void disp2lines (uchar *chn); //顯示2行漢字
void disp_img (uchar *img); //顯示一幅圖片
void disptouch(void); //顯示X,Y坐標值
void start(void); //SPI使能
void WriteCharTo7843(uchar num); //SPI寫數據
unsigned int ReadFromCharFrom7843(void); //SPI 讀數據
void disp_ciclr(uint X,uint Y); //畫曲線
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: send( data )
//功能: 寫命令或數據
//輸入: 待送入的data值
//輸出: 無 因為送進液晶后便可以顯示了,不必返回
//By: 李 平 2007.7.11
//備注:
void send (uchar dat)
{
while(busy==1)
;
dataout=dat;
req_set;
while(busy==0)
;
req_clr;
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: write()
//功能: 寫命令或數據到LCD-
//輸入: comm命令, addr_x坐標X ,addr_y坐標Y
//輸出: 無
//By: 李 平 2007.7.11
//備注:
void write(uchar comm,uchar addr_x,uchar addr_y)
{
send(comm);
send(addr_x);
send(addr_y);
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: disp1line()
//功能: 顯示一行漢字
//輸入: 待顯示的chn數組名
//輸出: 無
//By: 李 平 2007.7.11
//備注:
void disp1line(uchar *chn)
{
uchar i;
for(i=2;i<14;i++)
{
write(0xf0,i-2,0);
send(chn[(i-2)*2]-0xa0);
send(chn[(i-2)*2+1]-0xa0);
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: disp2lines()
//功能: 顯示2行漢字
//輸入: 待顯示的chn數組名
//輸出: 無
//By: 李 平 2007.7.11
//備注:
void disp2lines (uchar *chn)
{
uchar i;
for(i=2;i<11;i++)
{
write(0xf0,i-2,2);
send(chn[(i-2)*2]-0xa0);
send(chn[(i-2)*2+1]-0xa0);
}
for(i=2;i<11;i++)
{
write(0xf0,i-2,3);
send(chn[(i+6)*2]-0xa0);
send(chn[(i+6)*2+1]-0xa0);
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: disp_img()
//功能: 顯示一幅圖片
//輸入: 待顯示的img數組名
//輸出: 無
//By: 李 平 2007.7.11
//備注:
void disp_img (uchar *img)
{
uchar i,j;
for(j=31;j<64;j++)
{
for(i=4;i<20;i++)
{
write(0xf3,i,j);
send(img[(j-31)*16+i-4]); //16*33=528
}
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: disptouch()
//功能: 顯示觸摸屏摁下處的X,Y坐標值
//輸入: tabx[4] taby[4] 2個4位的坐標值
//輸出: 無 因為所有的數據均顯示之
//By: 李 平 2007.7.11
//備注:
void disptouch(void)
{
uchar r;
for(r=6;r<10;r++)
{
write(0xf9,r+20,0);//248/16=15,15*2=30,30-4=26,26-6=20
send(tabx[r-6]+48);
}
for(r=13;r<17;r++)
{
write(0xf9,r+13,16);//248/16=15,15*2=30,30-4=26,26-13=13
send(taby[r-13]+48);
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: spi_start
//功能: SPI使能
//輸入:
//輸出:
//By: 李 平 2007.7.11
//備注:
void spi_start(void)
{
clk_clr;
cs_set;
din_set;
clk_set;
cs_clr;
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: WriteCharTo7843()
//功能: SPI寫數據
//輸入: 要寫入7843的數據num
//輸出: 無
//By: 李 平 2007.7.11
//備注:
void WriteCharTo7843(uchar num)
{
uchar count=0;
clk_clr;
for(count=0;count<8;count++)
{
if(num&0x80)
din_set;
else din_clr;
num<<=1;
clk_clr; //上升沿有效
asm("nop");
asm("nop");
asm("nop");
clk_set;
asm("nop");
asm("nop");
asm("nop");
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: ReadFromCharFrom7843()
//功能: SPI 讀數據
//輸入: 無
//輸出: 讀出的X或Y坐標值num (0-4069)
//By: 李 平 2007.7.11
//備注:
unsigned int ReadFromCharFrom7843(void)
{
uchar count=0;
uint Num=0;
for(count=0;count<12;count++)
{
Num<<=1;
clk_set;
/*
_nop_();
_nop_();
_nop_();*/
asm("nop");
asm("nop");
asm("nop");
clk_clr;
asm("nop");
asm("nop");
asm("nop");
if(dout)
Num++;
}
return(Num);
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函數名: void disp_ciclr(uint X,uint Y)
//功能: 顯示畫過的曲線
//輸入: X,Y坐標值
//輸出: 無
//By: 李 平 2007.7.12
//備注:
void disp_ciclr(uint X,uint Y)
{
send(0xf2); //畫1*1點陣
send((uchar)(4096-Y)/17);//定義為相對X顯示坐標值
send((uchar)(4096-X)/32);//定義為相對Y顯示坐標值
//send(240-(Y/100*24/4));
//send(128-(X/100*13/4));
// send(0x01);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -