?? lcd320_240.c
字號:
#include <__LF240x.h>
#include <Led.h>
//#define rbadd1 XBYTE[0xF000] /* 讀忙狀態地址 */
//#define wdadd1 XBYTE[0xF000] /* 寫參數及顯示數據地址 */
//#define rdadd1 XBYTE[0xF001] /* 讀參數及顯示數據地址 */
//#define wcadd1 XBYTE[0xF001] /* 寫指令代碼地址 */
ioport unsigned portF000;
ioport unsigned portF001;
#define rbadd1 portF000
#define wdadd1 portF000
#define rdadd1 portF001
#define wcadd1 portF001
#define PARA 0x29; /* 程序參數定義,根據用戶選擇的LCM型號修改 */
const unsigned char CGTAB[4][32]={0x00,0x40,0x37,0x10,0x83,0x60,0x2F,0x08,
/* 清 */
0x13,0x22,0xE3,0x22,0x23,0x22,0x22,0x22,
0x40,0x48,0xFC,0x40,0xF8,0x40,0xFE,0x08,
0xFC,0x08,0xF8,0x08,0xF8,0x08,0x28,0x10,
0x04,0x04,0x08,0x08,0x18,0x29,0x4A,0x08,
/* 華 */
0x09,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,
0x40,0x48,0x58,0x60,0xC0,0x40,0x44,0x44,
0x3C,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,
0x04,0xFF,0x05,0x41,0x33,0x14,0x01,0xF6,
/* 蓬 */
0x1B,0x10,0x13,0x10,0x17,0x10,0x28,0x47,
0x44,0xFE,0x40,0xF8,0x10,0xE0,0x18,0x46,
0xF8,0x40,0xF8,0x40,0xFC,0x40,0x46,0xFC,
0x00,0x43,0x30,0x10,0x00,0x07,0xF1,0x11,
/* 遠 */
0x11,0x11,0x12,0x12,0x14,0x28,0x47,0x00,
0x10,0xF8,0x00,0x00,0x08,0xFC,0x20,0x20,
0x20,0x24,0x24,0x1C,0x00,0x06,0xFC,0x00
};
unsigned char SYSTAB[8]={0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00};
//系統設置指令參數
unsigned char SCROLLTAB[10]={0,0,0xf0,0xb0,0x04,0xf0}; //SCROLL指令參數
void INT_1(void)
{
unsigned char i;
wcadd1=0x40; /* SYSTEM SET代碼 */
for(i=0;i<8;i++)
{
wdadd1=SYSTAB[i]; /* 寫入參數 */
}
wcadd1=0x44; /* SCROLL代碼 */
for(i=0;i<10;i++)
{
wdadd1=SCROLLTAB[i]; /* 寫入參數 */
}
wcadd1=0x5a; /* HDOT SCR 代碼 */
asm(" NOP");
wdadd1=0x00; /* 設置參數P1 */
asm(" NOP");
asm(" NOP");
wcadd1=0x5b; /* OVLAY 代碼 */
asm(" NOP");
asm(" NOP");
asm(" NOP");
wdadd1=0x00; /* 設置參數:顯示一,三區為文本屬性 */
CLEAR(0,0,0x00); /* 調清屏函數 顯示一區清屏*/
CLEAR(0xb0,0x04,0x00); /*顯示二區清屏*/
wcadd1=0x59; /* 顯示狀態設置 */
asm(" NOP");
wdadd1=0x54; /* 設置參數:顯示一~四區開顯示 */
}
/*void CLEAR()
{
unsigned int i,j;
wcadd1=0x4c; CSRDIR 代碼
wcadd1=0x46; CSRW 代碼
wdadd1=0x00; 設置參數光標指針低8位
wdadd1=0x00; 設置參數光標指針高8位
wcadd1=0x42; MWRITE 代碼
for(j=0;j<2195;j++)
{
for(i=0;i<30;i++)
{
wdadd1=0x00; 寫入數據
}
}
}*/
void CGRAM(void)
{
unsigned char i,j;
wcadd1=0x5c; /* CGRAMADR 代碼 */
wdadd1=0x00; /* 設置SAG=0x3000 */
wdadd1=0x30;
wcadd1=0x46; /* CSRW 代碼 */
wdadd1=0x00; /* 設置CSR=0x3400(字符代碼=80H) */
wdadd1=0x34;
wcadd1=0x4c; /* CSRDIR 代碼 */
wcadd1=0x42; /* MWRITE 代碼 */
for(j=0;j<4;j++)
{
for(i=0;i<32;i++)
{
wdadd1=CGTAB[j][i]; /* 寫入字模數據 */
}
}
}
void CCW1_PR(char O_X,char O_Y,unsigned char code_1)
{
unsigned int i,j;
i=PARA;
j=i*O_Y+O_X;
wcadd1=0x4f; /* CSRDIR 代碼(下移) */
wcadd1=0x46; /* CSRW 代碼 */
wdadd1=j%256; /* 設置光標地址 */
wdadd1=j/256;
wcadd1=0x42; /* MWRITE 代碼 */
wdadd1=code_1; /* 寫入漢字代碼 */
wdadd1=code_1+1; /* 寫入漢字代碼 */
j++;
wcadd1=0x46; /* CSRW 代碼 */
wdadd1=j%256; /* 設置光標地址 */
wdadd1=j/256;
wcadd1=0x42; /* MWRITE 代碼 */
wdadd1=code_1+2; /* 寫入漢字代碼 */
wdadd1=code_1+3; /* 寫入漢字代碼 */
}
/*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; /* 設置光標地址
wdadd1=k%256; /* 計算光標地址
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; /* 讀取當前顯示數據
wcadd1=0x46; /* 設置光標地址
wdadd1=k%256; /* 計算光標地址
wdadd1=k/256;
wcadd1=0x42; /* MWRITE 代碼
wdadd1=dat|O_Y; /* 寫入合成數據
}*/
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()
{
unsigned char i,j,code_1;
unsigned short wCount;
unsigned int O_X,O_Y;
DISABLE();
IMR = 0x0000; /*初始化*/
IFR = IFR;
SCSR1 = 0x04fd;
SCSR2 = (SCSR2&0x000c)|0x0002;
WDCR = 0x006f;
INT_1(); /* 調初始化函數 */
OnInit8255();
/* k=0;
for(j=0;j<240;j++) /* 繪點顯示
{
O_X=k;
O_Y=j+0x10;
W_DOT(O_X,O_Y); /* 調繪點函數
k++;
if(k>320)break;
}
for(j=240;j>0;j--)
{
O_X=k;
O_Y=j+0x10;
W_DOT(O_X,O_Y); /* 調繪點函數
k++;
if(k>320)break;
}*/
/*------- 中文顯示(文本方式)----------- */
while(1)
{
CGRAM(); /* 調CGRAM子程序 */
code_1=0x80; /* 取字模 */
O_X=0x00;
O_Y=0x02;
CCW1_PR(O_X,O_Y,code_1); /* 調中文顯示函數(文本方式) */
code_1=0x84; /* 取字模 */
O_X=0x1c;
O_Y=0x04;
CCW1_PR(O_X,O_Y,code_1); /* 調中文顯示函數(文本方式) */
code_1=0x88; /* 取字模 */
O_X=0x00;
O_Y=0x0e;
CCW1_PR(O_X,O_Y,code_1); /* 調中文顯示函數(文本方式) */
code_1=0x8c; /* 取字模 */
O_X=0x1c;
O_Y=0x0e;
CCW1_PR(O_X,O_Y,code_1); /* 調中文顯示函數(文本方式) */
}
}
void c_int1(void)
{
}
void c_int2(void)
{
}
void c_int3(void)
{
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -