|
#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) { }
|