基于LPC2146手持设备的开发——LCD篇

    技术2022-05-11  80

    /*********************************************************************文件名:lcdDriver.c*文件描述:*创建人:Sha zq*创建日期: 2007年09月06日*版本号:1.0.01*E-mail:sasinop@hotmail.com*修改记录: 1) 修改WriteChar()函数,详细说明见函数描述部分。 Sha zq 2007-9-20 11:10********************************************************************/

    #include "config.h"

    /*******************************************************外部函数声明********************************************************/extern void  DelayNS(uint32  dly);

    /*******************************************************常用操作命令和参数定义********************************************************/

    #define  DISPON  0x3f /*显示on  */#define  DISPOFF 0x3e /*显示off  */#define  DISPFIRST 0xc0 /*显示起始行定义 */#define  SETX  0xb8 /*X定位设定指令(页) */#define  SETY  0x40 /*Y定位设定指令(列) */#define  Lcdbusy 0x80 /*LCM忙判断位  */

    #define  para1         0x40; /*列开始*/

    /*****************************************************************O_X: 在显示字符时定义为行地址: 0~7,在绘点显示时定义为行地址(0-63)O_Y: 列地址(0~127)com: 指令码寄存器dat1: 数据寄存器     ******************************************************************/unsigned int O_X,O_Y,com,dat1;

    /*****************************************************************code_1:字表行号count1:页地址******************************************************************/unsigned char code_1,count1;

    unsigned char cbyte;//unsigned char col,row,cbyte,keyd,t,Signal;  //列y,行(页)x,输出数据;keyd为键值;t为数组下标;Signal为触发传感器的编号

    /*****************************************************************定义0--9的字符数组******************************************************************/   unsigned char writeCH[9][8]={                                    0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00,    /*"1"=11h*/                                    0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00,    /*"2"=12h*/                                    0x00,0x21,0x41,0x45,0x4B,0x31,0x00,0x00,    /*"3"=13h*/                                    0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00,    /*"4"=14h*/                                    0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,    /*"5"=15h*/                                    0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00,    /*"6"=16h*/                                    0x00,0x01,0x01,0x79,0x05,0x03,0x00,0x00,    /*"7"=17h*/                                    0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,    /*"8"=18h*/                                    0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00,    /*"9"=19h*/  };  /*****************************************************************定义a--z的字符数组******************************************************************/   

    unsigned char writeEH[26][8]={                                    0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00,    /*"a"=41h*/                                    0x00,0x7F,0x48,0x44,0x44,0x38,0x00,0x00,    /*"b"=42h*/                                    0x00,0x38,0x44,0x44,0x44,0x28,0x00,0x00,    /*"c"=43h*/                                    0x00,0x38,0x44,0x44,0x48,0x7F,0x00,0x00,    /*"d"=44h*/                                    0x00,0x38,0x54,0x54,0x54,0x18,0x00,0x00,    /*"e"=45h*/                                    0x00,0x00,0x08,0x7E,0x09,0x02,0x00,0x00,    /*"f"=46h*/                                    0x00,0x0C,0x52,0x52,0x4C,0x3E,0x00,0x00,    /*"g"=47h*/                                    0x00,0x7F,0x08,0x04,0x04,0x78,0x00,0x00,    /*"h"=48h*/                                    0x00,0x00,0x44,0x7D,0x40,0x00,0x00,0x00,    /*"i"=49h*/                                    0x00,0x20,0x40,0x44,0x3D,0x00,0x00,0x00,    /*"j"=4Ah*/                                    0x00,0x00,0x7F,0x10,0x28,0x44,0x00,0x00,    /*"k"=4Bh*/                                    0x00,0x00,0x41,0x7F,0x40,0x00,0x00,0x00,    /*"l"=4Ch*/                                    0x00,0x7C,0x04,0x78,0x04,0x78,0x00,0x00,    /*"m"=4Dh*/                                    0x00,0x7C,0x08,0x04,0x04,0x78,0x00,0x00,    /*"n"=4Eh*/                                    0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00,    /*"o'=4Fh*/                                    0x00,0x7E,0x0C,0x12,0x12,0x0C,0x00,0x00,    /*"p"=50h*/                                    0x00,0x0C,0x12,0x12,0x0C,0x7E,0x00,0x00,    /*"q"=51h*/                                    0x00,0x7C,0x08,0x04,0x04,0x08,0x00,0x00,    /*"r"=52h*/                                    0x00,0x58,0x54,0x54,0x54,0x64,0x00,0x00,    /*"s"=53h*/                                    0x00,0x04,0x3F,0x44,0x40,0x20,0x00,0x00,    /*"t"=54h*/                                    0x00,0x3C,0x40,0x40,0x3C,0x40,0x00,0x00,    /*"u"=55h*/                                    0x00,0x1C,0x20,0x40,0x20,0x1C,0x00,0x00,    /*"v"=56h*/                                    0x00,0x3C,0x40,0x30,0x40,0x3C,0x00,0x00,    /*"w"=57h*/                                    0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00,    /*"x"=58h*/                                    0x00,0x1C,0xA0,0xA0,0x90,0x7C,0x00,0x00,    /*"y"=59h*/                                    0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00,    /*"z"=5Ah*/

     }; /*  西文字符库定义  */ unsigned char  CHTAB[62][8]={                                    0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00,    /*"0"=10h*/                                    0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00,    /*"1"=11h*/                                    0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00,    /*"2"=12h*/                                    0x00,0x21,0x41,0x45,0x4B,0x31,0x00,0x00,    /*"3"=13h*/                                    0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00,    /*"4"=14h*/                                    0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,    /*"5"=15h*/                                    0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00,    /*"6"=16h*/                                    0x00,0x01,0x01,0x79,0x05,0x03,0x00,0x00,    /*"7"=17h*/                                    0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,    /*"8"=18h*/                                    0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00,    /*"9"=19h*/

                                        0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x00,    /*"A"=21h*/                                    0x00,0x41,0x7F,0x49,0x49,0x36,0x00,0x00,    /*"B"=22h*/                                    0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00,    /*"C"=23h*/                                    0x00,0x41,0x7F,0x41,0x41,0x3E,0x00,0x00,    /*"D"=24h*/                                    0x00,0x7F,0x49,0x49,0x49,0x49,0x00,0x00,    /*"E"=25h*/                                    0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00,    /*"F"=26h*/                                    0x00,0x3E,0x41,0x41,0x49,0x7A,0x00,0x00,    /*"G"=27h*/                                    0x00,0x7F,0x08,0x08,0x08,0x7F,0x00,0x00,    /*"h"=28h*/                                    0x00,0x00,0x41,0x7F,0x41,0x00,0x00,0x00,    /*"I"=29h*/                                    0x00,0x20,0x40,0x41,0x3F,0x01,0x00,0x00,    /*"J"=2Ah*/                                    0x00,0x7F,0x08,0x14,0x22,0x41,0x00,0x00,    /*"K"=2Bh*/                                    0x00,0x7F,0x40,0x40,0x40,0x40,0x00,0x00,    /*"L"=2Ch*/                                    0x00,0x7F,0x02,0x0C,0x02,0x7F,0x00,0x00,    /*"M"=2Dh*/                                    0x00,0x7F,0x06,0x08,0x30,0x7F,0x00,0x00,    /*"N"=2Eh*/                                    0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00,    /*"O"=2Fh*/                                    0x00,0x7F,0x09,0x09,0x09,0x06,0x00,0x00,    /*"P"=30h*/                                    0x00,0x3E,0x41,0x51,0x21,0x5E,0x00,0x00,    /*"Q"=31h*/                                    0x00,0x7F,0x09,0x19,0x29,0x46,0x00,0x00,    /*"R"=32h*/                                    0x00,0x26,0x49,0x49,0x49,0x32,0x00,0x00,    /*"S"=33h*/                                    0x00,0x01,0x01,0x7F,0x01,0x01,0x00,0x00,    /*"T"=34h*/                                    0x00,0x3F,0x40,0x40,0x40,0x3F,0x00,0x00,    /*"U"=35h*/                                    0x00,0x1F,0x20,0x40,0x20,0x1F,0x00,0x00,    /*"V"=36h*/                                    0x00,0x7F,0x20,0x18,0x20,0x7F,0x00,0x00,    /*"W"=37h*/                                    0x00,0x63,0x14,0x08,0x14,0x63,0x00,0x00,    /*"X"=38h*/                                    0x00,0x07,0x08,0x70,0x08,0x07,0x00,0x00,    /*"Y"=39h*/                                    0x00,0x61,0x51,0x49,0x45,0x43,0x00,0x00,    /*"Z"=3Ah*/

                                        0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00,    /*"a"=41h*/                                    0x00,0x7F,0x48,0x44,0x44,0x38,0x00,0x00,    /*"b"=42h*/                                    0x00,0x38,0x44,0x44,0x44,0x28,0x00,0x00,    /*"c"=43h*/                                    0x00,0x38,0x44,0x44,0x48,0x7F,0x00,0x00,    /*"d"=44h*/                                    0x00,0x38,0x54,0x54,0x54,0x18,0x00,0x00,    /*"e"=45h*/                                    0x00,0x00,0x08,0x7E,0x09,0x02,0x00,0x00,    /*"f"=46h*/                                    0x00,0x0C,0x52,0x52,0x4C,0x3E,0x00,0x00,    /*"g"=47h*/                                    0x00,0x7F,0x08,0x04,0x04,0x78,0x00,0x00,    /*"h"=48h*/                                    0x00,0x00,0x44,0x7D,0x40,0x00,0x00,0x00,    /*"i"=49h*/                                    0x00,0x20,0x40,0x44,0x3D,0x00,0x00,0x00,    /*"j"=4Ah*/                                    0x00,0x00,0x7F,0x10,0x28,0x44,0x00,0x00,    /*"k"=4Bh*/                                    0x00,0x00,0x41,0x7F,0x40,0x00,0x00,0x00,    /*"l"=4Ch*/                                    0x00,0x7C,0x04,0x78,0x04,0x78,0x00,0x00,    /*"m"=4Dh*/                                    0x00,0x7C,0x08,0x04,0x04,0x78,0x00,0x00,    /*"n"=4Eh*/                                    0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00,    /*"o'=4Fh*/                                    0x00,0x7E,0x0C,0x12,0x12,0x0C,0x00,0x00,    /*"p"=50h*/                                    0x00,0x0C,0x12,0x12,0x0C,0x7E,0x00,0x00,    /*"q"=51h*/                                    0x00,0x7C,0x08,0x04,0x04,0x08,0x00,0x00,    /*"r"=52h*/                                    0x00,0x58,0x54,0x54,0x54,0x64,0x00,0x00,    /*"s"=53h*/                                    0x00,0x04,0x3F,0x44,0x40,0x20,0x00,0x00,    /*"t"=54h*/                                    0x00,0x3C,0x40,0x40,0x3C,0x40,0x00,0x00,    /*"u"=55h*/                                    0x00,0x1C,0x20,0x40,0x20,0x1C,0x00,0x00,    /*"v"=56h*/                                    0x00,0x3C,0x40,0x30,0x40,0x3C,0x00,0x00,    /*"w"=57h*/                                    0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00,    /*"x"=58h*/                                    0x00,0x1C,0xA0,0xA0,0x90,0x7C,0x00,0x00,    /*"y"=59h*/                                    0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00,    /*"z"=5Ah*/

                                        };                                    /*  中文字符库定义  */ unsigned char  CCTAB[16][8]={                                   0x82,0x8A,0x92,0xB2,0x02,0xA7,0x92,0x5E,     /*蓬90 = 00H*/                                   0x2A,0xAF,0x2A,0x5A,0x4A,0x83,0x82,0x00,                                   0x00,0x80,0x40,0x3F,0x41,0x90,0x95,0x95,                                   0x95,0xFF,0x95,0x95,0x95,0xD0,0x40,0x00,                                   0x80,0x64,0x24,0x24,0x3F,0x24,0xA6,0x64,     /*勃90 = 01H*/                                   0x20,0x20,0xFF,0x20,0x20,0xF0,0x20,0x00,                                   0x00,0x08,0x49,0x89,0x7D,0x0B,0x89,0x40,                                   0x30,0x0E,0x41,0x80,0x40,0x3F,0x00,0x00,                                   0x40,0x42,0x44,0xCC,0x00,0x20,0x22,0xE2,     /*远90 = 02H*/                                   0x22,0x22,0xE2,0x23,0x32,0x20,0x00,0x00,                                   0x00,0x40,0x20,0x1F,0x20,0x50,0x4C,0x43,                                   0x40,0x40,0x47,0x48,0x48,0x6E,0x20,0x00,                                   0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,     /*大90 = 03H*/                                   0xA0,0x20,0x20,0x20,0x20,0x30,0x20,0x00,                                   0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,                                   0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00                                   };                         

    /*============================================================* 函 数 名: sendData* 参  数:data* 功能描述:*     通过LPC2146,的GPIO口模拟并行口,与LCM模块通信* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/10=============================================================*/    void sendData(unsigned char data){ IO0DIR=0x007F8000; //P0.15---P0.22 作为输出  IO0SET =(data<<15); // 并行发送数据给LCD,使用GPIO:P0.15---P0.22 // returnVal = ((IO0PIN>>15 ) & 0xff);}

    /*============================================================* 函 数 名: WrcmdL* 参  数:x* 参数说明:x为写入的命令* 功能描述:*     写命令到左屏* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/19==============================================================*/

    void WrcmdL(unsigned char x) {  //左屏           IO1SET =0x00020000; //CS1=1  IO1CLR =0x00010000; //CS2=0    DelayNS(1);   //busy()    IO1CLR =0x00040000;  //p1.18 为低;  D/I=0  /命令操作   IO1CLR =0x00080000; //p1.19 为低  R/W=0 /写输出       //命令输出到数据口   sendData(x);    IO1SET =0x00400000; //E = 1  下降沿,写入到LCM  DelayNS(0);    IO1CLR =0X00400000; //E=0    IO0CLR =~x & 0x007f8000;  IO0DIR=0x00000000; //P0.15---P0.22 作为输入   }

    /*============================================================* 函 数 名: WrcmdR* 参  数:x* 参数说明:x为写入的命令* 功能描述:*     写命令到右屏* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/19==============================================================*/

    void WrcmdR(unsigned char x) {  //右屏           IO1CLR =0x00020000; //p1.17 为低; CS1=0  IO1SET =0x00010000;   //p1.16 为高   CS2=1            //busy ()         DelayNS(1);   //命令输出到数据口   sendData(x);      IO1SET =0x00400000; //E = 1  下降沿,写入到LCM  DelayNS(0);     IO1CLR =0X00400000; //E=0    IO0CLR =~x & 0x007f8000;  IO0DIR=0x00000000; //P0.15---P0.22 作为输入   } /*============================================================* 函 数 名: NWrdataL* 参  数:x* 参数说明:x为写入数据* 功能描述:*     写数据到左屏* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/19==============================================================*/

    void NWrdataL(unsigned char  x) {         // 左屏         IO1SET =0x00020000; //CS1=1  IO1CLR =0x00010000; //CS2=0    DelayNS(1);   // busy()   IO1SET =0x00040000;  //p1.18 为低;  D/I=1  IO1CLR =0x00080000; //p1.19 为低  R/W=0 /写输出       //数据输出到数据口   sendData(x);    IO1SET =0x00400000; //E = 1  下降沿,写入到LCM  DelayNS(0);      IO1CLR =0X00400000; //E=0      IO0CLR =~x & 0x007f8000;  IO0DIR=0x00000000; //P0.15---P0.22 作为输入   }  /*============================================================* 函 数 名: NWrdataR* 参  数:x* 参数说明:x为写入数据* 功能描述:*     写数据到右屏* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/19==============================================================*/

    void NWrdataR(unsigned char  x) {  //右屏          IO1CLR =0x00020000; //p1.17 为低; CS1=0  IO1SET =0x00010000;   //p1.16 为高   CS2=1    // busy()  wtcom();    DelayNS(1);    IO1SET =0x00040000;  //p1.18 为低;  D/I=1  //p_di=1; // 数据输出   IO1CLR =0x00080000; //p1.19 为低  R/W=0 /写输出       //数据输出到数据口   sendData(x);    IO1SET =0x00400000; //E = 1  下降沿,写入到LCM  DelayNS(0);      IO1CLR =0X00400000; //E=0      IO0CLR =~x & 0x007f8000;  IO0DIR=0x00000000; //P0.15---P0.22 作为输入  }

    /*============================================================* 函 数 名: RddataL* 参  数:Null* 功能描述:*     读左屏数据* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/18==============================================================*/void RddataL(void) {     IO0SET =0x007f8000; //(data<<15);     // 左屏         IO1SET =0x00020000; //CS1=1  IO1CLR =0x00010000; //CS2=0    //wtcom();  //  waitting for enable      IO1SET =0x00040000;  //p1.18 为低;  D/I=1    IO1SET =0x00080000; //p1.19 为低  R/W=1    IO1SET =0x00400000; //E = 1  下降沿,写入到LCM      cbyte = ((IO0PIN>>15 ) & 0xff);// Datalcm; //虚读一次     //Elcm = 0;  DelayNS(0);      IO1CLR =0X00400000; //E=0    //Locatexy();  //坐标定位,返回时保留分区状态不变     //Datalcm=0xFF;  IO0SET =0x007f8000; //(data<<15);       // 左屏         IO1SET =0x00020000; //CS1=1  IO1CLR =0x00010000; //CS2=0    IO1SET =0x00040000;  //p1.18 为低;  D/I=1    IO1SET =0x00080000; //p1.19 为低  R/W=1    IO1SET =0x00400000; //E = 1  下降沿,写入到LCM      cbyte = ((IO0PIN>>15 ) & 0xff);// Datalcm; /再读一次    DelayNS(0);      IO1CLR =0X00400000; //E=0       } 

    /*============================================================* 函 数 名: RddataR* 参  数:Null* 功能描述:*     读右屏数据* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/18==============================================================*/

     void RddataR(void) {  IO0SET =0x007f8000; //(data<<15);    // 右屏         IO1CLR =0x00020000; //CS1=0  IO1SET =0x00010000; //CS2=1    //wtcom();  //  waitting for enable      IO1SET =0x00040000;  //p1.18 为低;  D/I=1    IO1SET =0x00080000; //p1.19 为低  R/W=1    IO1SET =0x00400000; //E = 1  下降沿,写入到LCM      cbyte = ((IO0PIN>>15 ) & 0xff);// Datalcm; //虚读一次     DelayNS(0);      IO1CLR =0X00400000; //E=0      IO0SET =0x007f8000; //(data<<15);       // 右屏         IO1CLR =0x00020000; //CS1=0  IO1SET =0x00010000; //CS2=1    IO1SET =0x00040000;  //p1.18 为低;  D/I=1    IO1SET =0x00080000; //p1.19 为低  R/W=1    IO1SET =0x00400000; //E = 1  下降沿,写入到LCM      cbyte = ((IO0PIN>>15 ) & 0xff);// Datalcm; /再读一次     DelayNS(0);      IO1CLR =0X00400000; //E=0  } /*============================================================* 函 数 名: ClearLCD* 参  数:Null* 功能描述:*     清除LCD* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/18==============================================================*/   void ClearLCD(void){                for(count1=0xb8;count1!=0xcf;count1++)  //以页地址作为循环量                {                //count1    为页地址变量                WrcmdL(count1);  //写左指令                                WrcmdR(count1);  //写右指令2007-9-20 14:14

                    //列地址设置                 WrcmdL(0xc0);  //写左指令                                WrcmdR(0xc0);  //写右指令                                for(com=0;com<64;com++)   //清除所有HD61202的内部RAM单元                     {   NWrdataL(0x00);   NWrdataR(0x00);//data1=0x00;                                                                 }                }         }

    /*============================================================* 函 数 名: InitLCD* 参  数:Null* 功能描述:*     初始化LCD,完成LCD的 复位,及相关命令* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/17============================================================*/     void InitLCD()        {         IO1CLR =0x01000000; //res=0  复位信号为低   DelayNS(300);  IO1SET =0x01000000; //RES = 1 复位信号为高             //显示起始行为"0"            WrcmdL(0xc0);            DelayNS(1);            WrcmdR(0xc0);                                   DelayNS(0);                        //开显示                     WrcmdL(0x3f);           DelayNS(1);           WrcmdR(0x3f);                        }       

    /*==========================================================================* 函 数 名: CW_PR* 参  数:Null* 功能描述:*     写入西文字符函数* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/18===============================================================================*/ void CW_PR()        {           unsigned char j;                           j=para1;                com=O_Y|0xb8;                                WrcmdL(com);                DelayNS(5);                WrcmdR(com);                                O_Y=j;              if(O_X<O_Y)                 {                   com=O_X;                   //PR1();                   WrcmdL(com);                                      O_Y=1;                 }              else                 {                   DelayNS(5);                   com=O_X-j;                   //PR4();                   WrcmdR(com);                   DelayNS(1);                   O_Y=0;                 }                                  com=com&0x3f;              for(count1=0;count1<8;count1++)                 {                   dat1=CHTAB[code_1][count1];                      if(O_Y==1)                         {                            //PR2();                            NWrdataL(dat1);                             DelayNS(5);                         }                      else                         {                         //DelayNS(5);                                                       NWrdataR(dat1);                                                    }                                                  com++;                                            if(com==j)                        {                            if(O_X==1)                               {                                   com=0x40;                                   //PR4();                                   WrcmdR(com);                                   DelayNS(10);                                   O_Y=0;                               }                         else                           {                            return;                           }                        }                 }        }

     

    /*==========================================================================* 函 数 名: W_DOT* 参  数:Null* 功能描述:*     绘点函数* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/18* 说 明:暂未使用===============================================================================*/    void W_DOT()        {         unsigned int j;           j=para1;           com=O_Y/8;           code_1=O_Y%8;           com=com|0xb8;           //PR1();           //PR4();           WrcmdL(com);                 WrcmdR(com);                      O_Y=1;                  for(;code_1!=0;)                      {                          O_Y=O_Y*2;                          code_1--;                      }                          if(O_X<j)                            {                                com=O_X|0x40;                                //PR1();                                //PR3();                                //PR3();                                //PR1();                                WrcmdL(com);                                RddataL();                                RddataL();                                WrcmdL(com);                                                                dat1=dat1|O_Y;                               //PR2();                               NWrdataL(dat1);                            }                          else                            {                                com=O_X-j|0x40;                               // PR4();                                //PR6();                                //PR6();                                //PR4();                                WrcmdR(com);                                RddataR();                                RddataR();                                WrcmdR(com);                                dat1=dat1|O_Y;        //PR5();        NWrdataR(dat1);

                                }        }                /*==========================================================================* 函 数 名: CCW_PR* 参  数:Null* 功能描述:*     写中文字符* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/18* 说 明:暂未使用===============================================================================*/  void CCW_PR()        {           unsigned char i,j,k;                i=0;                j=para1;    loop:       com=O_Y|0xb8;                //PR1();                //PR4();                WrcmdL(com);                WrcmdR(com);                                  if(O_X<j)                     {                        com=O_X|0x40;                     //PR1();                     WrcmdL(com);                        k=1;                     }                  else                     {                        com=O_X-j|0x40;                     //PR4();                     WrcmdR(com);                        k=0;                     }                      com=com&0x3f;                  for(count1=i;count1<i+16;count1++)                     {                        dat1=CCTAB[code_1][count1];

                                 if(k==1)                                {                                   //PR2();                                   NWrdataL(dat1);                                }                             else                                {                                   //PR5();                                   NWrdataR(dat1);                                }                                   com++;                             if(com==j)                                {                                   if(k==1)                                     {                                        com=0;                                       // PR4();                                        WrcmdR(com);                                        k=0;                                      }                                   else         {     goto loop2;         }                                }                     }         loop2:      if(i==0)                     {                         i=16;                         O_Y++;                         if(O_Y==8)                            {                                 return;                            }                         else                            {                                 goto loop;                            }                     }        }        /*==========================================================================* 函 数 名: WriteChar* 参  数:Null* 功能描述:*     显示西文字符函数* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/19* 修改记录:*  1) com=O_X;修改为: com=O_X|0x40;*  2) com=O_X-j;修改为:com=O_X-j|0x40;  // sha zq 2007-9-20 11:02*  3) 将 1),2)中的 0x40 改为:0xc0  //sha zq 2007-9-20 14:35*修改说明: 1. 用原来的方法,自定义行么问题,而列显示不正常,修改后正常。  2. 改为0xc0后,矫正了列显示错位===============================================================================*/   void WriteChar()        { unsigned char j;                           j=para1;                com=O_Y|0xb8;                                WrcmdL(com);                DelayNS(1);                WrcmdR(com);                                O_Y=j;              if(O_X<O_Y)                 {                   //com=O_X;                                      com=O_X|0x40;                   WrcmdL(com);                                      O_Y=1;                 }              else                 {                   //com=O_X-j;                                      com=O_X-j|0x40;                   WrcmdR(com);                  // DelayNS(1);                   O_Y=0;                 }                                  com=com&0x3f;              for(count1=0;count1<8;count1++)                 {                   dat1=CHTAB[code_1][count1];                      if(O_Y==1)                         {                            NWrdataL(dat1);                             DelayNS(1);                         }                      else                         {                            DelayNS(1);                            NWrdataR(dat1);                                                     }                                                  com++;                                            if(com==j)                        {                            if(O_X==1)                               {                                   com=0x40;                                                                     WrcmdR(com);                                   DelayNS(1);                                   O_Y=0;                               }                         else                           {                            return;                           }                        }                 }                }

    /*==========================================================================* 函 数 名: WriteCharE* 参  数:Null* 功能描述:*     显示西文字符函数,显示英文字符* 返 回 值:Null* 作  者:Sha zq 日期:2007-9-20 16:37* 修改记录:===============================================================================*/   void WriteCharE()        { unsigned char j;                           j=para1;                com=O_Y|0xb8;                                WrcmdL(com);                DelayNS(1);                WrcmdR(com);                                O_Y=j;              if(O_X<O_Y)                 {                   //com=O_X;                                      com=O_X|0x40;                   WrcmdL(com);                                      O_Y=1;                 }              else                 {                   //com=O_X-j;                                      com=O_X-j|0x40;                   WrcmdR(com);                  // DelayNS(1);                   O_Y=0;                 }                                  com=com&0x3f;              for(count1=0;count1<8;count1++)                 {                   dat1=writeEH[code_1][count1];                      if(O_Y==1)                         {                            NWrdataL(dat1);                             DelayNS(1);                         }                      else                         {                            DelayNS(1);                            NWrdataR(dat1);                                                     }                                                  com++;                                            if(com==j)                        {                            if(O_X==1)                               {                                   com=0x40;                                                                     WrcmdR(com);                                   DelayNS(1);                                   O_Y=0;                               }                         else                           {                            return;                           }                        }                 }                }               

    /*============================================================* 函 数 名:displayNumber* 参  数:row,  col,  no* 参数说明:row取值范围 0--7,col 取值范0--15, no 取值范围:0--9* 功能描述:*    用来显示0--9的数字,* 返 回 值:Null* 作  者:Sha zq 日期:2007/09/19============================================================*/            void displayNumber(unsigned char row, unsigned char col, unsigned char no){           O_Y=row;            O_X=col*8;           code_1=no;           WriteChar();    }   

    /*============================================================* 函 数 名:displayEnglishLow* 参  数:row,  col,  no* 参数说明:row取值范围 0--7,col 取值范0--15, no 取值范围:0--25* 功能描述:*    用来显示0--9的数字,* 返 回 值:Null* 作  者:Sha zq 日期:2007-9-20 16:38============================================================*/            void displayEnglishLow(unsigned char row, unsigned char col, unsigned char no){           O_Y=row;            O_X=col*8;           code_1=no;           WriteCharE();    }                     

     

    已经在LPC2146 上调试通过,效果良好 呵呵,米前只能显示 英文字符 呵呵

    有我问题可以发邮件和我联系

     


    最新回复(0)