?? touchprogram.c
字號:
#include <__LF240x.h>
#include <Led.h>
//#define rbadd1 XBYTE[0xF000] /* 讀忙狀態(tài)地址 */
//#define wdadd1 XBYTE[0xF000] /* 寫參數(shù)及顯示數(shù)據(jù)地址 */
//#define rdadd1 XBYTE[0xF001] /* 讀參數(shù)及顯示數(shù)據(jù)地址 */
//#define wcadd1 XBYTE[0xF001] /* 寫指令代碼地址 */
ioport unsigned portF800;
ioport unsigned portF801;
ioport unsigned portffff;
#define portWSGR portffff
#define rbadd1 portF800
#define wdadd1 portF800
#define rdadd1 portF801
#define wcadd1 portF801
static unsigned char s_DataTemp;
static unsigned short X1,Y1,X,Y,p;
unsigned char i,j,code_1;
unsigned short wCount;
unsigned int O_X,O_Y;
#define PARA 0x29; /* 程序參數(shù)定義,根據(jù)用戶選擇的LCM型號修改 */
const unsigned char CGTAB[7][32]={0x00,0x00,0x7F,0x40,0x7F,0x40,0x5F,0x51, /* 感 */
0x51,0x5F,0x90,0x02,0x29,0x28,0x48,0x07,
0x50,0x48,0xFC,0x40,0xC0,0x48,0x48,0x50,
0x22,0x52,0x8E,0x00,0x90,0xAC,0x24,0xE0,
0x02,0x44,0x2F,0x28,0x0F,0x08,0xEF,0x28, /* 謝 */
0x28,0x3F,0x21,0x2A,0x34,0x28,0x12,0x01,
0x08,0x88,0xC8,0x88,0x88,0xFE,0x88,0x88,
0xC8,0xA8,0xA8,0x88,0x88,0x88,0xA8,0x10,
0x04,0x04,0x07,0x08,0x14,0x22,0x01,0x06, /* 各 */
0x18,0xE0,0x0F,0x08,0x08,0x08,0x0F,0x08,
0x00,0x00,0xF0,0x10,0x20,0x40,0x80,0x60,
0x1E,0x40,0xF0,0x10,0x10,0x10,0xF0,0x10,
0x08,0x08,0x08,0x10,0x17,0x30,0x52,0x92, /* 位 */
0x11,0x11,0x10,0x10,0x10,0x1F,0x10,0x10,
0x80,0x40,0x40,0x08,0xFC,0x00,0x08,0x08,
0x10,0x10,0x90,0xA0,0x24,0xFE,0x00,0x00,
0x10,0x10,0x22,0x7F,0x42,0x43,0x42,0x42, /* 的 */
0x7E,0x42,0x42,0x42,0x42,0x7e,0x42,0x00,
0x40,0x40,0x44,0x7E,0x84,0x04,0x04,0x84,
0x64,0x24,0x04,0x04,0x04,0x04,0x28,0x10,
0x01,0x01,0x01,0xFE,0x01,0x01,0x3F,0x08, /* 支 */
0x08,0x04,0x02,0x01,0x02,0x0C,0x30,0xC0,
0x00,0x00,0x04,0xFE,0x00,0x00,0xF0,0x20,
0x20,0x40,0x80,0x00,0x80,0x60,0x1E,0x40,
0x10,0x10,0x10,0x13,0xFC,0x10,0x17,0x18, /* 持 */
0x30,0x07,0x12,0x11,0x11,0x10,0x50,0x20,
0x40,0x40,0x50,0xF8,0x40,0x48,0xFC,0x10,
0x14,0xFE,0x10,0x10,0x10,0x10,0x50,0x20};
unsigned char SYSTAB[8]={0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00}; //系統(tǒng)設(shè)置指令參數(shù)
unsigned char SCROLLTAB[10]={0,0,0xf0,0xb0,0x04,0xf0}; //SCROLL指令參數(shù)
void DelayOnce(unsigned short wCount800ns)
{
unsigned short wT3CountOld;
wT3CountOld = T3CNT;
while(T3CNT-wT3CountOld<=wCount800ns);
}
void SPIOpen(void)
{
PCDATDIR |= 0x2020;
DelayOnce(10);
SPICCR = 0x07;
SPICTL = 0x0e;
PCDATDIR &= 0xffff^0x0020;
SPIBRR = 0x0C; //sck = 20*4/3MHZ/(SPIBRR+1); SPIBRR>4
SPIPRI = 0x30;
SPICCR = 0x87;
DelayOnce(10);
}
void SPIClose(void)
{
DelayOnce( 10 );
PCDATDIR &= 0xfffd;
PCDATDIR |= 0x2220;
DelayOnce( 10 );
}
void SPISendByte(unsigned char Data)
{
SPIRXBUF = 0x0000;
SPITXBUF = Data<<8;
while(!(SPISTS&0x40));
s_DataTemp = SPIRXBUF;
}
unsigned short SPIReadByte(void)
{
SPITXBUF = 0x0000;
while(!(SPISTS&0x40));
return (SPIRXBUF&0xff);
}
void INT_1(void)
{
unsigned char i;
wcadd1=0x40; /* SYSTEM SET代碼 */
for(i=0;i<8;i++)
{
wdadd1=SYSTAB[i]; /* 寫入?yún)?shù) */
}
wcadd1=0x44; /* SCROLL代碼 */
for(i=0;i<10;i++)
{
wdadd1=SCROLLTAB[i]; /* 寫入?yún)?shù) */
}
wcadd1=0x5a; /* HDOT SCR 代碼 */
//asm(" NOP");
wdadd1=0x00; /* 設(shè)置參數(shù)P1 */
//asm(" NOP");
//asm(" NOP");
wcadd1=0x5b; /* OVLAY 代碼 */
// asm(" NOP");
// asm(" NOP");
//asm(" NOP");
wdadd1=0x00; /* 設(shè)置參數(shù):顯示一,三區(qū)為文本屬性 */
CLEAR(0,0,0x00); /* 調(diào)清屏函數(shù) 顯示一區(qū)清屏*/
CLEAR(0xb0,0x04,0x00); /*顯示二區(qū)清屏*/
wcadd1=0x59; /* 顯示狀態(tài)設(shè)置 */
//asm(" NOP");
wdadd1=0x54; /* 設(shè)置參數(shù):顯示一~四區(qū)開顯示 */
}
/*void CLEAR()
{
unsigned int i,j;
wcadd1=0x4c; CSRDIR 代碼
wcadd1=0x46; CSRW 代碼
wdadd1=0x00; 設(shè)置參數(shù)光標(biāo)指針低8位
wdadd1=0x00; 設(shè)置參數(shù)光標(biāo)指針高8位
wcadd1=0x42; MWRITE 代碼
for(j=0;j<2195;j++)
{
for(i=0;i<30;i++)
{
wdadd1=0x00; 寫入數(shù)據(jù)
}
}
}*/
void CGRAM(void)
{
unsigned char i,j;
wcadd1=0x5c; /* CGRAMADR 代碼 */
wdadd1=0x00; /* 設(shè)置SAG=0x3000 */
wdadd1=0x30;
wcadd1=0x46; /* CSRW 代碼 */
wdadd1=0x00; /* 設(shè)置CSR=0x3400(字符代碼=80H) */
wdadd1=0x34;
wcadd1=0x4c; /* CSRDIR 代碼 */
wcadd1=0x42; /* MWRITE 代碼 */
for(j=0;j<7;j++)
{
for(i=0;i<32;i++)
{
wdadd1=CGTAB[j][i]; /* 寫入字模數(shù)據(jù) */
}
}
}
void CCW1_PR(char O_X,char O_Y,unsigned char code_1,unsigned char n)
{
unsigned int i,j,t;
i=PARA;
j=i*O_Y+O_X;
for(t=0;t<n;t++)
{
wcadd1=0x4f; /* CSRDIR 代碼(下移) */
wcadd1=0x46; /* CSRW 代碼 */
wdadd1=j%256; /* 設(shè)置光標(biāo)地址 */
wdadd1=j/256;
wcadd1=0x42; /* MWRITE 代碼 */
wdadd1=code_1; /* 寫入漢字代碼 */
wdadd1=code_1+1; /* 寫入漢字代碼 */
j++;
wcadd1=0x46; /* CSRW 代碼 */
wdadd1=j%256; /* 設(shè)置光標(biāo)地址 */
wdadd1=j/256;
wcadd1=0x42; /* MWRITE 代碼 */
wdadd1=code_1+2; /* 寫入漢字代碼 */
wdadd1=code_1+3; /* 寫入漢字代碼 */
//修改部分
j++;
code_1=code_1+4;
}
}
/*void W_DOT(int O_X,int O_Y)
{
unsigned char i,j,dat;
unsigned int k;
j=PARA;
i=O_X%8;
O_X=O_X/8;
k=j*O_Y+O_X;
wcadd1=0x4f;
wcadd1=0x46; /* 設(shè)置光標(biāo)地址
wdadd1=k%256; /* 計算光標(biāo)地址
wdadd1=k/256;
if(O_Y==0)O_Y=0x80;
else
{
O_Y=1;
for(;i<7;i++) /* 計算顯示位
{
O_Y=O_Y*2;
}
}
wcadd1=0x43; /* MREAD 代碼
dat=rdadd1; /* 讀取當(dāng)前顯示數(shù)據(jù)
wcadd1=0x46; /* 設(shè)置光標(biāo)地址
wdadd1=k%256; /* 計算光標(biāo)地址
wdadd1=k/256;
wcadd1=0x42; /* MWRITE 代碼
wdadd1=dat|O_Y; /* 寫入合成數(shù)據(jù)
}*/
static void CLEAR(unsigned short csrl,unsigned short csrh,unsigned short data1)
{
unsigned char i,j;
wcadd1=0x46;
wdadd1=csrl;
wdadd1=csrh;
wcadd1=0x4c;
wcadd1=0x42;
for(i=0;i<240;i++)
{
for(j=0;j<320;j++)
{
wdadd1=data1;
}
}
}
void main()
{
DISABLE();
IMR = 0x0000; /*初始化*/
IFR = IFR;
portWSGR = 0x01c0;
SCSR1 = 0x04fd;
SCSR2 = (SCSR2&0x000c)|0x0002;
WDCR = 0x006f;
MCRA = 0x0004;
MCRB = 0x003c;
//PADATDIR = 0x8000;
//asm(" NOP");
PADATDIR = 0x0000;
PCDATDIR = 0x3400;
XINT1CR = 0x8001;
GPTCONB = 0x0000;
T3CNT = 0x0000;
T3CON = 0x1440;
T3PR = 0xffff;
EVBIMRA = 0x0000;
EVBIFRA = 0x0000;
EVBIMRB = 0x0001;
EVBIFRB = 0x0001;
EVBIMRC = 0x0000;
EVBIFRC = 0x0000;
IMR = 0x0007;
ENABLE();
// SCSR2 = SCSR2|0x0020;
// WDCR = 0x002f;
ProgMemCopy();
INT_1(); // 調(diào)初始化函數(shù)
OnInit8255();
CGRAM();
code_1=0x80; // 取字模
O_X=0x02;
O_Y=0x0b;
CCW1_PR(O_X,O_Y,code_1,5); // 調(diào)中文顯示函數(shù)(文本方式)
code_1=0x94; // 取字模
O_X=0x00;
O_Y=0x10;
CCW1_PR(O_X,O_Y,code_1,2); // 調(diào)中文顯示函數(shù)(文本方式)
/* while(1)
{
SPIOpen();
//while(PADATDIR&0x0080);
SPISendByte(0x90);
asm(" NOP");//while(PADATDIR&0x0080);
asm(" NOP");
asm(" NOP");
Y1 = SPIReadByte();
if(Y1 < 120)
{
Y = Y1;
}
SPIClose();
SPIOpen();
//while(PADATDIR&0x0080);
SPISendByte(0xD0);
asm(" NOP");//while(PADATDIR&0x0080);
asm(" NOP");
asm(" NOP");
X1 = SPIReadByte();
if(X1 != 0)
{
X = X1;
}
SPIClose();
if(Y>=90&&X>=50)
{
CLEAR(0,0,0x00);
CLEAR(0xb0,0x04,0x00);
CGRAM();
code_1 = 0x80;
O_X=0x00;
O_Y=0x10;
CCW1_PR(O_X,O_Y,code_1,2);
}
if((Y<90&&Y>0)&&(X>0&&X<50))
{
CLEAR(0,0,0x00); // 調(diào)清屏函數(shù) 顯示一區(qū)清屏
CLEAR(0xb0,0x04,0x00); //顯示二區(qū)清屏
CGRAM();
code_1=0x88; //取字模
O_X=0x00;
O_Y=0x10;
CCW1_PR(O_X,O_Y,code_1,2); // 調(diào)中文顯示函數(shù)(文本方式)
}
//X = 0;
//Y = 0;
}*/
}
void c_int1(void)
{
/* if(PIVR==0x0001)
{
XINT1CR |= 0x8000;
XINT1CR &= 0XFFFE;
SPIOpen();
SPISendByte(0x90); //送控制字 10010000 用差分方式讀Y坐標(biāo)
while(PADATDIR&0x0080);
Y = SPIReadByte();
SPIClose();
SPIOpen();
SPISendByte(0xD0); //送控制字 11010000 用差分方式讀X坐標(biāo)
while(PADATDIR&0x0080);
X = SPIReadByte();
SPIClose();
if(Y>=90)
{
if(X>=50)
{
CLEAR(0,0,0x00); // 調(diào)清屏函數(shù) 顯示一區(qū)清屏
CLEAR(0xb0,0x04,0x00); //顯示二區(qū)清屏
CGRAM();
code_1=0x80; //取字模
O_X=0x00;
O_Y=0x10;
CCW1_PR(O_X,O_Y,code_1,2); // 調(diào)中文顯示函數(shù)(文本方式)
}
else
{
CLEAR(0,0,0x00); // 調(diào)清屏函數(shù) 顯示一區(qū)清屏
CLEAR(0xb0,0x04,0x00); //顯示二區(qū)清屏
CGRAM();
code_1=0x88; //取字模
O_X=0x00;
O_Y=0x10;
CCW1_PR(O_X,O_Y,code_1,2); // 調(diào)中文顯示函數(shù)(文本方式)
}
}
else
{
if(X>=50)
{
CLEAR(0,0,0x00); // 調(diào)清屏函數(shù) 顯示一區(qū)清屏
CLEAR(0xb0,0x04,0x00); //顯示二區(qū)清屏
CGRAM();
code_1=0x90; //取字模
O_X=0x00;
O_Y=0x10;
CCW1_PR(O_X,O_Y,code_1,1); // 調(diào)中文顯示函數(shù)(文本方式)
}
else
{
CLEAR(0,0,0x00); // 調(diào)清屏函數(shù) 顯示一區(qū)清屏
CLEAR(0xb0,0x04,0x00); //顯示二區(qū)清屏
CGRAM();
code_1=0x80; // 取字模
O_X=0x02;
O_Y=0x0b;
CCW1_PR(O_X,O_Y,code_1,5); // 調(diào)中文顯示函數(shù)(文本方式)
code_1=0x94; // 取字模
O_X=0x00;
O_Y=0x10;
CCW1_PR(O_X,O_Y,code_1,2); // 調(diào)中文顯示函數(shù)(文本方式)
/*CGRAM();
code_1=0x94; //取字模
O_X=0x00;
O_Y=0x10;
CCW1_PR(O_X,O_Y,code_1,2); // 調(diào)中文顯示函數(shù)(文本方式)
}
}
XINT1CR |= 0x0001;
}*/
;
}
void c_int2(void)
{
;
}
void c_int3(void)
{
;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -