📄 jrmlcd.c
字号:
/*-------------------------------------
文件名称:JRMLCD.C
文件功能:JRM-12232液晶的驱动实现函数
时间:2008-7-31 19:34
作者:小琅
-------------------------------------*/
#define IN_JRMLCD
#include "JRMLCD.h"
uint8 code ASCII[][6]={
{0x00,0x00,0x00,0x00,0x00,0x00},//SPACE
{0x00,0x00,0x00,0x4f,0x00,0x00},//!
{0x00,0x00,0x00,0x07,0x00,0x07},//"
{0x00,0x14,0x7f,0x14,0x7f,0x14},//#
{0x00,0x24,0x2a,0x7f,0x2a,0x12},//$
{0x00,0x23,0x13,0x08,0x62,0x61},//%
{0x00,0x36,0x49,0x55,0x22,0x50},//&
{0x00,0x00,0x00,0x05,0x03,0x00},//'
{0x00,0x00,0x1c,0x22,0x41,0x00},//(
{0x00,0x00,0x41,0x22,0x1c,0x00},//)
{0x18,0x5a,0x3c,0x3c,0x5a,0x18},//*
{0x00,0x08,0x08,0x3e,0x08,0x08},//+
{0x00,0x00,0x00,0x28,0x18,0x00},//,
{0x00,0x08,0x08,0x08,0x08,0x08},//-
{0x00,0x00,0x00,0x60,0x60,0x00},//.
{0x00,0x14,0x08,0x3e,0x08,0x14},// /
{0x00,0x3e,0x51,0x49,0x45,0x3e},//0
{0x00,0x00,0x42,0x7f,0x40,0x40},//1
{0x00,0x62,0x51,0x51,0x49,0x46},//2
{0x00,0x21,0x41,0x45,0x4b,0x31},//3
{0x00,0x18,0x14,0x12,0x7f,0x10},//4
{0x00,0x27,0x45,0x45,0x45,0x39},//5
{0x00,0x3c,0x4a,0x49,0x49,0x30},//6
{0x00,0x01,0x71,0x09,0x05,0x03},//7
{0x00,0x36,0x49,0x49,0x49,0x36},//8
{0x00,0x06,0x49,0x49,0x29,0x1e},//9
{0x00,0x00,0x36,0x36,0x00,0x00},//:
{0x00,0x00,0x56,0x36,0x00,0x00},//;
{0x00,0x08,0x14,0x22,0x41,0x00},//<
{0x00,0x14,0x14,0x14,0x14,0x14},//=
{0x00,0x00,0x41,0x22,0x14,0x08},//>
{0x00,0x02,0x01,0x51,0x09,0x06},//?
{0x00,0x3e,0x59,0x55,0x79,0x3e},//@
{0x00,0x7e,0x21,0x21,0x21,0x7e},//A
{0x00,0x7f,0x49,0x49,0x49,0x36},//B
{0x00,0x3e,0x41,0x41,0x41,0x22},//C
{0x00,0x7f,0x41,0x41,0x22,0x1c},//D
{0x00,0x7f,0x49,0x49,0x49,0x49},//E
{0x00,0x7f,0x09,0x09,0x09,0x01},//F
{0x00,0x3e,0x41,0x49,0x49,0x7a},//G
{0x00,0x7f,0x08,0x08,0x08,0x7f},//H
{0x00,0x41,0x7f,0x41,0x00,0x00},//I
{0x00,0x20,0x40,0x41,0x3f,0x01},//J
{0x00,0x7f,0x08,0x14,0x22,0x41},//K
{0x00,0x7f,0x40,0x40,0x40,0x40},//L
{0x00,0x7f,0x02,0x0c,0x02,0x7f},//M
{0x00,0x7f,0x04,0x08,0x10,0x7f},//N
{0x00,0x3e,0x41,0x41,0x41,0x3e},//O
{0x00,0x7f,0x09,0x09,0x09,0x06},//P
{0x00,0x3e,0x41,0x41,0x41,0x3e},//Q
{0x00,0x7f,0x09,0x19,0x29,0x46},//R
{0x00,0x46,0x49,0x49,0x49,0x31},//S
{0x00,0x01,0x01,0x7f,0x01,0x01},//T
{0x00,0x3f,0x40,0x40,0x40,0x3f},//U
{0x00,0x1f,0x20,0x40,0x20,0x1f},//V
{0x00,0x3f,0x40,0x38,0x40,0x3f},//W
{0x00,0x63,0x14,0x08,0x14,0x63},//X
{0x00,0x07,0x08,0x70,0x08,0x07},//Y
{0x00,0x61,0x51,0x49,0x45,0x43},//Z
{0x00,0x00,0x7f,0x41,0x41,0x00},//[
{0x00,0x01,0x02,0x08,0x10,0x20},// \
{0x00,0x00,0x41,0x41,0x7f,0x00},//]
{0x00,0x04,0x02,0x01,0x02,0x04},//^
{0x00,0x40,0x40,0x40,0x40,0x40},//_
{0x00,0x00,0x01,0x02,0x04,0x00},//`
{0x00,0x20,0x54,0x54,0x54,0x7c},//a
{0x00,0x7f,0x48,0x44,0x44,0x38},//b
{0x00,0x38,0x44,0x44,0x44,0x20},//c
{0x00,0x38,0x44,0x44,0x48,0x7f},//d
{0x00,0x38,0x54,0x54,0x54,0x18},//e
{0x00,0x08,0x7e,0x09,0x01,0x02},//f
{0x00,0x0c,0x52,0x52,0x52,0x3e},//g
{0x00,0x7f,0x08,0x04,0x04,0x78},//h
{0x00,0x00,0x44,0x7d,0x40,0x00},//i
{0x00,0x40,0x40,0x44,0x3d,0x00},//j
{0x00,0x7f,0x10,0x28,0x44,0x00},//k
{0x00,0x00,0x41,0x7e,0x40,0x00},//l
{0x00,0x7c,0x04,0x18,0x04,0x78},//m
{0x00,0x7c,0x08,0x04,0x04,0x78},//n
{0x00,0x38,0x44,0x44,0x44,0x38},//o
{0x00,0x7c,0x14,0x14,0x14,0x08},//p
{0x00,0x08,0x14,0x14,0x14,0x7c},//q
{0x00,0x7c,0x08,0x04,0x04,0x08},//r
{0x00,0x48,0x54,0x54,0x54,0x20},//s
{0x00,0x04,0x3f,0x44,0x44,0x24},//t
{0x00,0x3c,0x40,0x40,0x20,0x7e},//u
{0x00,0x1d,0x20,0x40,0x20,0x1c},//v
{0x00,0x3c,0x40,0x30,0x40,0x3c},//w
{0x00,0x44,0x28,0x10,0x28,0x44},//x
{0x00,0x06,0x48,0x48,0x48,0x3e},//y
{0x00,0x44,0x64,0x54,0x4c,0x44},//z
{0x00,0x00,0x08,0x36,0x41,0x00},//{
{0x00,0x00,0x00,0x7e,0x00,0x00},//|
{0x00,0x00,0x41,0x36,0x08,0x00},//}
{0x00,0x04,0x08,0x04,0x08,0x04} //~
};
/*----------------------------------
函数功能:初始化LCD
输入:无
输出:无
-----------------------------------*/
void InitLCD()
{
WriteCmdLCD(0,LCD_RESET); //初始化
WriteCmdLCD(0,LCD_DUTY32);
WriteCmdLCD(0,LCD_DRIVER_ON); //开驱动
WriteCmdLCD(0,LCD_DISPLAY_ON); //开显示
WriteCmdLCD(0,0xA1); //设置ADC
WriteCmdLCD(1,LCD_RESET); //初始化
WriteCmdLCD(1,LCD_DUTY32);
WriteCmdLCD(1,LCD_DRIVER_ON); //开驱动
WriteCmdLCD(1,LCD_DISPLAY_ON); //开显示
WriteCmdLCD(1,0xA1); //设置ADC
// SetLineLCD(0); //设置行
// SetColumnLCD(0); //设置显示列
// SetPageLCD(0); //设置页地址
}
/*----------------------------------
函数功能:读LCD的状态
输入:无
输出: 0:空闲
1:忙
-----------------------------------*/
bit ReadStateLCD()
{
E1 = 0;
CDout = 0xFF; //输出1,准备读数据
A0 = 0;
RW = 1;
nop6;
E1 = 1;
nop6;
return BF; //返回最高位
}
/*---------------------------------
函数功能:发送一条指令
输入: cmd:发送的指令
输出: 无
----------------------------------*/
void WriteCmdLCD(bit selchip,uint8 cmd)
{
A0 = 0;
RW = 0;
if(!selchip)
{
E1 = 0;
nop6;
E1 = 1;
CDout = cmd;
nop6;
E1 = 0;
}
else
{
E2 = 0;
nop6;
E2 = 1;
CDout = cmd;
nop6;
E2 = 0;
}
}
/*-------------------------------------
函数功能:向其一发送一个字节
输入:selchip :选择芯片0:第一个,1:第二个
nadata :输入的数据
输出:无
--------------------------------------*/
void WriteRamLCD(bit selchip,uint8 ndata)
{
A0=1;
RW=0;
if(!selchip)
{
E1=1;
CDout=ndata;
nop6;
E1=0;
nop6;
}
else
{
E2=1;
CDout=ndata;
nop3;
E2=0;
nop6;
}
}
/*----------------------------------------------------
函数功能:向其一RAM写一个字符,即6个字节
输入:selchip :选择芯片0:第一个,1:第二个
ndata :要发送的字符
输出:无
----------------------------------------------------*/
void WriteCharLCD(bit selchip,uint8 ndata)
{
uint8 i;
for(i=0; i<6; i++)
WriteRamLCD(selchip,ASCII[ndata-32][i]);
}
/*-----------------------------------------------------
函数功能:向LCD写一串数据,数据以字符的形式存在数组中
输入: selchip:选择芯片,0:第一个,1:第二个
count :字符的个数,count要小于等于10
ndata:字符的首地址
输出:无
------------------------------------------------------*/
void WriteStrLCD(bit selchip,uint8 count,uint8 *ndata)
{
uint8 i;
if(count>10)
return;
for(i=0; i<count; i++)
WriteCharLCD(selchip, ndata[i]);
}
/*----------------------------------------------------
函数功能:写其中一个RAM的一页
输入: npage: 页数
ndata: 61个字节的首地址
----------------------------------------------------*/
/*void WritePageLCD(uint8 npage,uint8 *ndata)
{
uint8 i;
bit selchip = npage%3;
SetPageLCD(npage%4);
SetColumnLCD(0);
for(i=0;i<61;i++)
WriteRamLCD(selchip,ndata[i]);
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -