📄 lcd_1565.c
字号:
/*-------------------------------------------------------
文件名称:LCD_1565.c
功能:1565系列LCD的驱动程序
时间:
作者:
-------------------------------------------------------*/
#include "lpc213x.h"
#include "LCD_1565.h"
//此LCD对应的数字点阵图
const uint8 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} //~
};
void InitLCD()
{
LCD1565_SEL &= 0xFFFF00FF; //通用功能
LCD1565_DIR |= 0x0000FF00; //输出
LCD1565_DIR |= LCD1565_A0;
LCD1565_DIR |= LCD1565_RW;
LCD1565_DIR |= LCD1565_EN;
WriteLCD(0,0xA1);
}
/*--------------------------------------------------------
功能描述:向LCD写一个命令或者8位数
参 数:data_comm
= 1 : data
= 0 : command
content :发送的数据或指令,是一个8位无符号所整数
返 回:无
---------------------------------------------------------*/
void WriteLCD(uint8 data_comm,uint8 content)
{
if(data_comm)
LCD1565_SET = LCD1565_A0; //数据
else
LCD1565_CLR = LCD1565_A0; //指令
LCD1565_CLR = LCD1565_RW; //写操作(0)
LCD1565_SET = LCD1565_EN; //使能
LCD1565_CLR = 0xFF00; //先清零
LCD1565_SET = ((uint32)content << 8); //发送数据
LCD1565_SET = ((uint32)content << 8); //冗余
LCD1565_CLR = LCD1565_EN; //写入
LCD1565_CLR = LCD1565_EN; //冗余
}
/*-----------------------------------------------------------------
功能描述:向液晶写一个字符,不设定行和列
参 数:symbol :要写的字符
------------------------------------------------------------------*/
void WriteSymbolLCD(uint8 symbol)
{
uint8 i;
if(symbol < ' ' || symbol > '~') //超出显示范围
return;
symbol -= 32;
for(i=0; i<6; i++)
{
WriteLCD(1,ASCII[symbol][i]);
}
}
/*------------------------------------------------------
功能描述:向LCD一定的行和列写一个字符
参 数:page :设置行 0<= page <=7
line :设置列 0<= line <=250
s :要显示的数字 0<= num <=9
------------------------------------------------------*/
void WriteSymbolPLLCD(uint8 page,uint8 row,uint8 symbol)
{
uint8 i;
page %= 8; //最大页数是7
row %= 123; //列最大是122
if(symbol < ' ' || symbol > '~') //超出显示范围
return;
WriteLCD(0,0xB0|page); //设置行
WriteLCD(0,0x10|(row>>4)); //设置列高位
WriteLCD(0,row&0x0F); //设置列低位
symbol -= 32; //算出在表中的下标
for(i = 0; i < 6; i++)
{
WriteLCD(1,ASCII[symbol][i]);
}
}
/*----------------------------------------------------------------
功能描述:向液晶写一个字符串
参 数:
----------------------------------------------------------------*/
void WriteStrLCD(uint8 num,uint8 str[])
{
uint8 i;
for(i=0; i<num; i++)
{
WriteSymbolLCD(str[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -