📄 5110lcd.c
字号:
/*********************************************************
+-----------------------------------------+
| 5110lcd模块 |
+-----------------------------------------+
程序默认IO连接方式:
sce-P6.0; res-P6.1; dc-P6.2; sdin-P6.3; sclk-P6.4;
5110lcd的底层驱动程序,主控芯片为msp340-149;
其他的微处理器,只需稍加修改即可适用;
->产品咨询 QQ:461693690
MSN:ly461693690@hotmail.com
说明:5110lcd模块 通过测试,确保其正确性与稳定性,请放心使用,
***********************************************************/
#include"english_6x8_pixel.h"
unsigned char hanzi[]=
{
/*-- 文字: 系 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x00,0x02,0x4A,0xCA,0x6E,0xDA,0x49,0xC9,0x65,0x41,0x00,0x00,0x04,0x02,0x01,0x04,
0x04,0x07,0x00,0x00,0x01,0x02,0x04,0x00,
/*-- 文字: 统 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x48,0x6C,0x5B,0x4C,0x00,0x32,0xEA,0x27,0xE2,0x32,0x22,0x00,0x02,0x02,0x01,0x05,
0x04,0x02,0x01,0x00,0x07,0x04,0x07,0x00,
/*-- 文字: 初 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x44,0x24,0xF7,0x2C,0x50,0x02,0xC2,0x3E,0x02,0x02,0xFE,0x00,0x00,0x00,0x07,0x00,
0x04,0x02,0x01,0x04,0x04,0x06,0x01,0x00,
/*-- 文字: 始 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x84,0xFC,0x07,0xFC,0x04,0x18,0xD4,0x53,0x50,0x54,0xD8,0x00,0x04,0x02,0x01,0x01,
0x02,0x00,0x07,0x02,0x02,0x02,0x07,0x00,
/*-- 文字: 化 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x20,0x10,0xFC,0x83,0x80,0x40,0xFF,0x20,0x10,0x0C,0x00,0x00,0x00,0x00,0x07,0x00,
0x00,0x00,0x07,0x04,0x04,0x04,0x07,0x00,
/*-- 文字: … --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x00,0x60,0x60,0x00,0x00,0x60,0x60,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 失 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x20,0x30,0x2E,0x24,0xA4,0x7F,0xA4,0x24,0x24,0x24,0x20,0x00,0x04,0x04,0x02,0x01,
0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x00,
/*-- 文字: 败 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0xFF,0x01,0xFD,0x01,0xFF,0x10,0x7C,0x87,0x84,0x7C,0x04,0x00,0x04,0x03,0x00,0x01,
0x02,0x04,0x02,0x01,0x01,0x02,0x04,0x00,
/*-- 文字: 音 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x10,0x12,0xD2,0x56,0x5A,0x53,0x5A,0x56,0xD2,0x12,0x10,0x00,0x00,0x00,0x07,0x05,
0x05,0x05,0x05,0x05,0x07,0x00,0x00,0x00,
/*-- 文字: 乐 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x00,0x30,0xAE,0x62,0x22,0x22,0xFD,0x61,0xA1,0x30,0x20,0x00,0x02,0x01,0x00,0x00,
0x04,0x04,0x07,0x00,0x00,0x01,0x02,0x00,
/*-- 文字: 播 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x84,0x44,0xFF,0x44,0xEA,0x5E,0x4A,0xFF,0x59,0xED,0x48,0x00,0x04,0x04,0x07,0x00,
0x07,0x05,0x05,0x07,0x05,0x07,0x00,0x00,
/*-- 文字: 放 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x04,0xFC,0x15,0x16,0xF4,0x04,0x18,0x67,0x84,0x7C,0x04,0x00,0x06,0x01,0x02,0x02,
0x03,0x04,0x02,0x01,0x01,0x02,0x04,0x00,
/*-- 文字: 中 --*/
/*-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x00,0x7C,0x44,0x44,0x44,0xFF,0x44,0x44,0x44,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
};
void delayms(unsigned int ii)//1ms延时函数
{
unsigned int i,x;
for (x=0;x<ii;x++)
{
for (i=0;i<100;i++);
}
}
/*--------------------------------------------
LCD_write_byte: 使用SPI接口写数据到LCD
输入参数:dt:写入的数据;
command :写数据/命令选择;
编写日期:2010-12-07
----------------------------------------------*/
void LCD_write_byte(unsigned char dt, unsigned char command)
{
unsigned char i;
P6OUT &=~(1<<0);
if(command==1)
P6OUT|=(1<<2);
else
P6OUT&=~(1<<2);
for(i=0;i<8;i++)
{
if(dt&0x80)
P6OUT |=(1<<3);
else
P6OUT &=~(1<<3);
dt=dt<<1;
P6OUT &=~(1<<4);
P6OUT |=(1<<4);
}
P6OUT |=(1<<2);
P6OUT |=(1<<0);
P6OUT |=(1<<3);
}
/*---------------------------------------
LCD_init: 3310/5110LCD初始化
编写日期:2010-12-07
----------------------------------------- */
void LCD_init(void)
{
P6OUT &=~(1<<1);
delayms(10);
P6OUT |=(1<<1);
LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
LCD_write_byte(0xC6,0);//设定液晶偏置电压
LCD_write_byte(0x06,0);//温度校正
LCD_write_byte(0x13,0);;//1:48
LCD_write_byte(0x20,0);//使用基本指令
LCD_write_byte(0x0c,0);//设定显示模式,正常显示
}
/*-------------------------------------------
LCD_set_XY: 设置LCD坐标函数
输入参数:X:0-83 Y:0-5
编写日期:2010-12-07
---------------------------------------------*/
void LCD_set_XY(unsigned char X, unsigned char Y)
{
LCD_write_byte(0x40 | Y, 0);// column
LCD_write_byte(0x80 | X, 0);// row
}
/*------------------------------------------
LCD_clear: LCD清屏函数
编写日期:2010-12-07
--------------------------------------------*/
void LCD_clear(void)
{
unsigned char t;
unsigned char k;
LCD_set_XY(0,0);
for(t=0;t<6;t++)
{
for(k=0;k<84;k++)
{
LCD_write_byte(0x00,1);
}
}
}
/*---------------------------------------------
LCD_write_hanzi: 显示12(宽)*16(高)点阵列汉字等半角类
输入参数:c:显示的字符;
编写日期:2010-12-07
-----------------------------------------------*/
void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 W: 子宽/2 L: 字符数组长 C:字符
{
unsigned char i;
LCD_set_XY(row*6, page);// 列,行
for(i=0; i<12;i++)
{
LCD_write_byte(hanzi[c*24+i],1);
}
LCD_set_XY(row*6, page+1);// 列,行
for(i=12; i<24;i++)
{
LCD_write_byte(hanzi[c*24+i],1);
}
}
/*-----------------------------------------------------------------------
LCD_write_char : 显示英文字符
输入参数:c :显示的字符;
-----------------------------------------------------------------------*/
void LCD_write_char(unsigned char c)
{
unsigned char line;
c -= 32;
for (line=0; line<6; line++)
LCD_write_byte(font6x8[c][line], 1);
}
/*-----------------------------------------------------------------------
LCD_write_english_String : 英文字符串显示函数
输入参数:*s :英文字符串指针;
X、Y : 显示字符串的位置,x 0-83 ,y 0-5
-----------------------------------------------------------------------*/
void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
{
LCD_set_XY(X,Y);
while (*s)
{
LCD_write_char(*s);
s++;
}
}
/***********************************
变量数字值显示
输入参数:s :数值变量;
X、Y : 显示字符串的位置,x 0-83 ,y 0-5
***********************************/
void LCD_write_shuzi(unsigned char X,unsigned char Y,char s)
{unsigned char line;
LCD_set_XY(X,Y);
for (line=0; line<6; line++)
LCD_write_byte(font6x8[s+16][line], 1);
}
/*............................................................
液晶模块初始化
............................................................*/
void lcd_init()
{ unsigned char k;
P6DIR = 0XFF;
P6OUT &=~(1<<0);
P6OUT &=~(1<<1);
for(k=0;k<250;k++);
P6OUT |=(1<<1);
LCD_init(); //初始化LCD模块
LCD_clear(); //清屏幕
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -