//---------------------------------------------------- // Shenzhen TOPWAY Technology Co.,Ltd. // LCD Module: LM6051R // Display Size: 320x32 dots // Controller: RA8806 (6MHz) // DUTY: 1/64 (160X64dots) // Interface: 8080 mode // by: GuoQ // Date: 2011-07-27 //---------------------------------------------------- #include #include #include #define uchar unsigned char // 8bit, 0 ~ 255 #define uint unsigned int // 16bit, 0 ~ 65,535 #define ulong unsigned long // 32bit, 0 ~ 4,294,967,295 //-------------------------------------------------------------------- uchar code logo[]={ /*-- 调入了一幅图像:D:\guoq files\technic support\pic\logo pic\LM6051R-LOGO(16064).bmp --*/ /*-- 宽度x高度=160x64 --*/ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x88,0x20,0x10,0x00,0x40,0x00,0x21,0x00,0x80,0x80,0x20,0x40,0x80,0x00,0x00,0x00, 0x00,0x01,0x1F,0xF0,0x89,0x20,0x08,0x20,0x40,0x20,0x12,0x00,0x88,0x80,0x70,0x40, 0x80,0x00,0x00,0x00,0x00,0x00,0x90,0x10,0x89,0x23,0xFF,0xF0,0x5F,0xF1,0xFF,0xE1, 0x2A,0x83,0xC2,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x24,0xA0,0x89,0x20,0x08,0x03, 0xE2,0x00,0x12,0x02,0x2A,0xA0,0x41,0x43,0x80,0x00,0x00,0x00,0x00,0x02,0x08,0x43, 0xE9,0x20,0x08,0x00,0x42,0x00,0x92,0x40,0xBF,0xF3,0xF1,0x40,0x80,0x00,0x00,0x00, 0x00,0x01,0x52,0x20,0x89,0x20,0xFF,0xC0,0x44,0x00,0x52,0x80,0x81,0x20,0x44,0x40, 0x80,0x00,0x00,0x00,0x00,0x01,0x42,0x00,0x89,0x20,0x88,0x40,0x64,0x23,0xFF,0xF1, 0xBE,0xA0,0x42,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0xBF,0xF0,0x89,0x20,0x88,0x40, 0xCF,0xF0,0x00,0x02,0x80,0xA0,0xE2,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x83,0x00, 0x89,0x20,0x88,0x43,0x54,0x20,0x7F,0x80,0x9C,0xA1,0x50,0x73,0x80,0x00,0x00,0x00, 0x00,0x03,0x06,0x80,0xE9,0x20,0x88,0x40,0x44,0x20,0x40,0x80,0x94,0x41,0x4F,0xC0, 0x80,0x00,0x00,0x00,0x00,0x01,0x0A,0x43,0x89,0x20,0x88,0x40,0x44,0x20,0x7F,0x80, 0x96,0x42,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x01,0x12,0x31,0x11,0x20,0x89,0x40, 0x44,0x20,0x40,0x80,0xA4,0xA0,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x01,0x22,0x20, 0x20,0x20,0x88,0x81,0x47,0xE0,0x40,0x80,0xC1,0x20,0x40,0x41,0x80,0x00,0x00,0x00, 0x00,0x01,0x02,0x00,0x40,0x20,0x08,0x00,0x84,0x20,0x7F,0x80,0x86,0x10,0x40,0x40, 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x04,0x08,0x09,0xE3,0xC7,0xC2,0x1F,0x80,0x01,0xC0,0xF0,0x82,0xFE,0xFC,0x1E, 0x10,0x20,0x7F,0x3F,0x80,0x04,0x0C,0x1A,0x14,0x24,0x06,0x10,0x40,0x02,0x21,0x08, 0xC2,0x10,0x82,0x21,0x10,0x20,0x40,0x20,0x80,0x04,0x0C,0x1A,0x04,0x24,0x0A,0x10, 0x40,0x04,0x12,0x04,0xA2,0x10,0x82,0x40,0x90,0x20,0x40,0x20,0x80,0x04,0x0A,0x2A, 0x04,0x28,0x02,0x10,0x40,0x04,0x02,0x04,0xA2,0x10,0x82,0x40,0x90,0x20,0x40,0x20, 0x80,0x04,0x0A,0x2A,0xE4,0x2F,0x82,0x10,0x40,0x04,0x02,0x04,0x92,0x10,0x82,0x40, 0x90,0x20,0x7F,0x20,0x80,0x04,0x09,0x4B,0x14,0x28,0x42,0x1F,0x80,0x04,0x02,0x04, 0x92,0x10,0xFC,0x40,0x90,0x20,0x40,0x3F,0x80,0x04,0x09,0x4A,0x14,0x20,0x42,0x11, 0x00,0x04,0x02,0x04,0x8A,0x10,0x88,0x40,0x90,0x20,0x40,0x22,0x80,0x04,0x09,0x4A, 0x14,0x20,0x42,0x10,0x80,0x04,0x12,0x04,0x8A,0x10,0x84,0x40,0x90,0x20,0x40,0x21, 0x80,0x04,0x08,0x8A,0x14,0x28,0x42,0x10,0x80,0x02,0x21,0x08,0x86,0x10,0x84,0x21, 0x10,0x20,0x40,0x21,0x80,0x07,0xE8,0x89,0xE3,0xC7,0x82,0x10,0x40,0x01,0xC0,0xF0, 0x82,0x10,0x82,0x1E,0x1F,0xBF,0x7F,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x41,0x00,0x00,0x40,0x11,0x00,0x08,0x00, 0x00,0x40,0x02,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x41,0x01,0xFF,0xE0, 0x90,0x80,0x08,0x21,0xEF,0xE0,0x12,0x01,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x01, 0x41,0x20,0x21,0x00,0x90,0x83,0xFF,0xF1,0x28,0x40,0x12,0x00,0x00,0x40,0x00,0x00, 0x00,0x00,0x00,0x01,0xEF,0xF0,0x21,0x01,0x10,0x20,0x10,0x01,0x2F,0xC0,0x21,0x00, 0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x41,0x00,0x21,0x01,0xFF,0xF0,0x20,0x81, 0x48,0x40,0x41,0x03,0xFF,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x41,0x00,0x21,0x20, 0x10,0x00,0x7F,0xC1,0x48,0x40,0x80,0x80,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x01, 0x6F,0xE3,0xFF,0xF0,0x1F,0xC0,0xA0,0x81,0x2F,0xC1,0x08,0x70,0xFC,0x40,0x00,0x00, 0x00,0x00,0x00,0x01,0xC4,0x20,0x21,0x00,0x28,0x41,0x3F,0x81,0x2A,0x22,0x08,0x20, 0x84,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x44,0x40,0x21,0x00,0x28,0x82,0x20,0x81, 0x2A,0x40,0x10,0x00,0x84,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x42,0x80,0x21,0x00, 0x45,0x00,0x3F,0x81,0xAA,0x80,0x12,0x00,0xFC,0x40,0x00,0x00,0x00,0x00,0x00,0x01, 0x41,0x00,0x21,0x00,0x42,0x00,0x20,0x81,0x49,0x00,0x21,0x00,0x84,0x40,0x00,0x00, 0x00,0x00,0x00,0x01,0x42,0x80,0x41,0x00,0x85,0x00,0x20,0x81,0x08,0x80,0x40,0x80, 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x44,0x40,0x81,0x01,0x18,0xF0,0x20,0x81, 0x0E,0x70,0xFF,0xC0,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x98,0x33,0x01,0x02, 0xE0,0x20,0x21,0x81,0x08,0x20,0x40,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x00,0x03,0xF0,0x20,0xF1,0xE3,0xC7,0x80,0x03,0xC7,0x8F,0x02,0x08,0x3C,0x78,0x00, 0x80,0x00,0x00,0x01,0x80,0x02,0x08,0x51,0x0A,0x14,0x28,0x40,0x04,0x28,0x50,0x81, 0x10,0x42,0x84,0x00,0x80,0x20,0x00,0x01,0x80,0x02,0x08,0x51,0x0A,0x14,0x28,0x00, 0x00,0x20,0x50,0x81,0x10,0x02,0x04,0x00,0x80,0x20,0x00,0x01,0x80,0x02,0x08,0x51, 0x0A,0x14,0x28,0x00,0x00,0x20,0x50,0x80,0xA0,0x02,0x04,0x06,0x8E,0x71,0xC0,0x01, 0x80,0x02,0x08,0x88,0xF1,0xE4,0x2B,0x80,0x01,0xC0,0x50,0x80,0x40,0x1C,0x04,0x09, 0x91,0x22,0x20,0x01,0x00,0x03,0xF0,0x89,0x0A,0x14,0x2C,0x40,0x00,0x20,0x90,0x80, 0x40,0x02,0x08,0x08,0x91,0x22,0x00,0x01,0x00,0x02,0x21,0xFD,0x0A,0x14,0x28,0x40, 0x00,0x21,0x10,0x80,0xA0,0x02,0x10,0x08,0x91,0x21,0xC0,0x01,0x00,0x02,0x11,0x05, 0x0A,0x14,0x28,0x40,0x00,0x22,0x10,0x81,0x10,0x02,0x20,0x08,0x91,0x20,0x20,0x01, 0x00,0x02,0x12,0x03,0x0A,0x14,0x28,0x40,0x04,0x24,0x10,0x81,0x10,0x42,0x40,0x08, 0x91,0x22,0x20,0x01,0x80,0x02,0x0A,0x02,0xF1,0xE3,0xC7,0x80,0x03,0xCF,0xCF,0x02, 0x08,0x3C,0xFC,0x07,0x8E,0x31,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; //----------------------------------- // delayms routine //----------------------------------- void delayms(uint m) // 12MHz Xtal, close to ms value { uint j; uint i; for(i=0; i0) { SdData(*pstr++); // 写入字符代码 } } //--------初始化子程序------------------------- void initLCDM()//初始化设置 { //-- 显示驱动初始化设置 ----------------------------------------- SdCmd(0x01);SdData(0x60); //设置驱动频率和扫描方向 SdCmd(0x21);SdData(0x13); //显示窗口右边界位置 设置为160/8 = 20字节 SdCmd(0x31);SdData(0x3f); //显示窗口下边界位置 设置为64行 SdCmd(0x90);SdData(0x83); //设置数据移位时钟参数 fr= 67.11hz SdCmd(0x00);SdData(0x04); //设置电源为正常模式,软复位无效,写入图形模式,开显示,关闪烁与反显; //-- 模块工作显示窗口设置 20字节 x 64 行---------------------------------------- SdCmd(0x40);SdData(0x00);//工作窗口左边界位置(第一字符,取值为1) SdCmd(0x20);SdData(0x13);//工作窗口右边界位置(水平最大字符数,取值为320) SdCmd(0x50);SdData(0x00);//工作窗口上边界位置(第一行,取值为1) SdCmd(0x30);SdData(0x3f);//工作窗口下边界位置(垂直最大行,取值为240) //-- 数据写入设置 ------------------------------------------------ SdCmd(0x10);SdData(0x06);//设置文本处理方式 光标开,闪烁,跟随字符变化 SdCmd(0x11);SdData(0xe0);//设置光标为块状形式 SdCmd(0x12);SdData(0x31);//设置RAM(显示)工作模式,两个显示区域逻辑或合成显示 SdCmd(0x80);SdData(0x33);//设置闪烁时间 SdCmd(0xf0);SdData(0x80);//设置字库,选择GB汉字库和ASCII块0字符库 SdCmd(0xf1);SdData(0x00);//设置字符原大尺寸 } //--------Clear RAM program-------------------- void ClearRAM() { SdCmd(0x12);SdData(0x33);// buth two ram page SdCmd(0xe0);SdData(0x00);// full data = 00H SdCmd(0xf0);SdData(0x08);// set full in ram D3=1 delayms(10); } //--------图画写入子程序--------------------- void ShowBMP(uchar x,y,width,high,uchar bmp[]) // (x,y)为图画显示的起始坐标,x为水平字节位置,y为垂直像素行 // WHIDTH为图画水平宽度(以字节为单位),HIGH为图画的高度(以像素行为单位) { uint i,k; SdCmd(0x00);SdData(0x04); // 设置写入数据模式为图形模式 SdCmd(0x12);SdData(0x32); // 打开图形RAM区域(第二显示区域) SdCmd(0x40);SdData(x); //设置工作窗口左边界位置 SdCmd(0x20);SdData(x+width-1); //设置工作窗口右边界位置 SdCmd(0x50);SdData(y); //设置工作窗口上边界位置 SdCmd(0x30);SdData(y+high-1); //设置工作窗口下边界位置 SdCmd(0x60);SdData(x); //设置光标位置X坐标 SdCmd(0x70);SdData(y); //设置光标位置Y坐标 SdCmd(0xb0); k=width*high; //计算数据量 for(i=0;i