⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nokia_5110_all.c

📁 NOKIA 5110 黑白图形lcd MSP430单片机驱动程序。
💻 C
字号:
#define NOKIA5110_CLK_HP2OUT |= 0x01
#define NOKIA5110_DIN_HP2OUT |= 0x02
#define NOKIA5110_DC_HP2OUT  |= 0x04
#define NOKIA5110_CE_HP2OUT  |= 0x08
#define NOKIA5110_RST_HP2OUT |= 0x10

#define NOKIA5110_CLK_LP2OUT &= 0xfe
#define NOKIA5110_DIN_LP2OUT &= 0xfd
#define NOKIA5110_DC_LP2OUT  &= 0xfb
#define NOKIA5110_CE_LP2OUT  &= 0xf7
#define NOKIA5110_RST_LP2OUT &= 0xef

void NOKIA5110_delay()//1us延时函数
{
	unsigned int i;				
	for(i=0;i<1000;i++);
}
/*------------------------------------------
void NOKIA5110_w_byte:使用SPI接口写数据到LCD
输入参数:data:写入的数据;
command:写数据/命令选择;
------------------------------------------*/
void NOKIA5110_w_byte(unsigned char dat,unsigned char command)
{
	unsignedchari;
	NOKIA5110_CE_L;
	if(command==0)
		NOKIA5110_DC_L;//传送命令
	else
		NOKIA5110_DC_H;	//传送数据
	for(i=0;i<8;i++)
	{
		if(dat&0x80)
			NOKIA5110_DIN_H;
		else
			NOKIA5110_DIN_L;
		NOKIA5110_CLK_L;
		dat=dat<<1;
		NOKIA5110_CLK_H;
	}
	NOKIA5110_CE_H;
}
/*------------------------------------------
void NOKIA5110_clear:LCD清屏函数
------------------------------------------*/
void NOKIA5110_clear()
{
	unsigned int i;
	NOKIA5110_w_byte(0x0c,0);			
	NOKIA5110_w_byte(0x80,0);			
	for(i=0;i<504;i++)
		NOKIA5110_w_byte(0,1);			
}
void NOKIA5110_init()
{
	NOKIA5110_RST_L;	//产生一个让LCD复位的低电平脉冲
	NOKIA5110_delay();
	NOKIA5110_RST_H;
			
	NOKIA5110_CE_L;	//关闭LCD
	NOKIA5110_delay();

	NOKIA5110_CE_H;		//使能LCD
	NOKIA5110_delay();

	NOKIA5110_w_byte(0x21,0);	//使用扩展命令设置LCD模式
	NOKIA5110_w_byte(0xc8,0);	//设置偏置电压
	NOKIA5110_w_byte(0x06,0);	//温度校正
	NOKIA5110_w_byte(0x13,0);	//1:48
	NOKIA5110_w_byte(0x20,0);	//使用基本命令
	NOKIA5110_clear();	//清屏
	NOKIA5110_w_byte(0x0c,0);	//设定显示模式,正常显示
	NOKIA5110_CE_L;	//关闭LCD
}
/*------------------------------------------
NOKIA5110_set_XY:设置LCD坐标函数
输入参数:X:0-83
Y:0-5
------------------------------------------*/
void NOKIA5110_set_XY(unsigned char X,unsigned char Y)
{
	NOKIA5110_w_byte(0x40|Y,0);//列(竖)
	NOKIA5110_w_byte(0x80|X,0);//行(横)
}
/*------------------------------------------
NOKIA5110_w_char_string显示英文字符或字符串
------------------------------------------*/
constunsignedcharfont6x8[][6]=
{
	{0x00,0x00,0x00,0x00,0x00,0x00},	//sp	32
	{0x00,0x00,0x00,0x2f,0x00,0x00},	//!	33
	{0x00,0x00,0x07,0x00,0x07,0x00},	//"	34
	{0x00,0x14,0x7f,0x14,0x7f,0x14},	//#	35
	{0x00,0x24,0x2a,0x7f,0x2a,0x12},	//$	36
	{0x00,0x62,0x64,0x08,0x13,0x23},	//%	37
	{0x00,0x36,0x49,0x55,0x22,0x50},	//&	38
	{0x00,0x00,0x05,0x03,0x00,0x00},	//'	39
	{0x00,0x00,0x1c,0x22,0x41,0x00},	//(	40
	{0x00,0x00,0x41,0x22,0x1c,0x00},	//)	41
	{0x00,0x14,0x08,0x3E,0x08,0x14},	//*	42
	{0x00,0x08,0x08,0x3E,0x08,0x08},	//+	43
	{0x00,0x00,0x00,0xA0,0x60,0x00},	//,	44
	{0x00,0x08,0x08,0x08,0x08,0x08},	//-	45
	{0x00,0x00,0x60,0x60,0x00,0x00},	//.	46
	{0x00,0x20,0x10,0x08,0x04,0x02},	///	47
	{0x00,0x3E,0x51,0x49,0x45,0x3E},	//0	48
	{0x00,0x00,0x42,0x7F,0x40,0x00},	//1	49
	{0x00,0x42,0x61,0x51,0x49,0x46},	//2	50
	{0x00,0x21,0x41,0x45,0x4B,0x31},	//3	51
	{0x00,0x18,0x14,0x12,0x7F,0x10},	//4	52
	{0x00,0x27,0x45,0x45,0x45,0x39},	//5	53
	{0x00,0x3C,0x4A,0x49,0x49,0x30},	//6	54
	{0x00,0x01,0x71,0x09,0x05,0x03},	//7	55
	{0x00,0x36,0x49,0x49,0x49,0x36},	//8	56
	{0x00,0x06,0x49,0x49,0x29,0x1E},	//9	57
	{0x00,0x00,0x36,0x36,0x00,0x00},	//:	58
	{0x00,0x00,0x56,0x36,0x00,0x00},	//;	59
	{0x00,0x08,0x14,0x22,0x41,0x00},	//<	60
	{0x00,0x14,0x14,0x14,0x14,0x14},	//=	61
	{0x00,0x00,0x41,0x22,0x14,0x08},	//>	62
	{0x00,0x02,0x01,0x51,0x09,0x06},	//?	63
	{0x00,0x32,0x49,0x59,0x51,0x3E},	//@	64
	{0x00,0x7C,0x12,0x11,0x12,0x7C},	//A	65
	{0x00,0x7F,0x49,0x49,0x49,0x36},	//B	66
	{0x00,0x3E,0x41,0x41,0x41,0x22},	//C	67
	{0x00,0x7F,0x41,0x41,0x22,0x1C},	//D	68
	{0x00,0x7F,0x49,0x49,0x49,0x41},	//E	69
	{0x00,0x7F,0x09,0x09,0x09,0x01},	//F	70
	{0x00,0x3E,0x41,0x49,0x49,0x7A},	//G	71
	{0x00,0x7F,0x08,0x08,0x08,0x7F},	//H	72
	{0x00,0x00,0x41,0x7F,0x41,0x00},	//I	73
	{0x00,0x20,0x40,0x41,0x3F,0x01},	//J	74
	{0x00,0x7F,0x08,0x14,0x22,0x41},	//K	75
	{0x00,0x7F,0x40,0x40,0x40,0x40},	//L	76
	{0x00,0x7F,0x02,0x0C,0x02,0x7F},	//M	77
	{0x00,0x7F,0x04,0x08,0x10,0x7F},	//N	78
	{0x00,0x3E,0x41,0x41,0x41,0x3E},	//O	79
	{0x00,0x7F,0x09,0x09,0x09,0x06},	//P	80
	{0x00,0x3E,0x41,0x51,0x21,0x5E},	//Q	81
	{0x00,0x7F,0x09,0x19,0x29,0x46},	//R	82
	{0x00,0x46,0x49,0x49,0x49,0x31},	//S	83
	{0x00,0x01,0x01,0x7F,0x01,0x01},	//T	84
	{0x00,0x3F,0x40,0x40,0x40,0x3F},	//U	85
	{0x00,0x1F,0x20,0x40,0x20,0x1F},	//V	86
	{0x00,0x3F,0x40,0x38,0x40,0x3F},	//W	87
	{0x00,0x63,0x14,0x08,0x14,0x63},	//X	88
	{0x00,0x07,0x08,0x70,0x08,0x07},	//Y	89
	{0x00,0x61,0x51,0x49,0x45,0x43},	//Z	90
	{0x00,0x00,0x7F,0x41,0x41,0x00},	//[	91
	{0x00,0x60,0x18,0x04,0x02,0x00},	//\	92
	{0x00,0x00,0x41,0x41,0x7F,0x00},	//]	93
	{0x00,0x04,0x02,0x01,0x02,0x04},	//^	94
	{0x00,0x40,0x40,0x40,0x40,0x40},	//_	95
	{0x00,0x00,0x01,0x02,0x04,0x00},	//'	96
	{0x00,0x20,0x54,0x54,0x54,0x78},	//a	97
	{0x00,0x7F,0x48,0x44,0x44,0x38},	//b	98
	{0x00,0x38,0x44,0x44,0x44,0x20},	//c	99
	{0x00,0x38,0x44,0x44,0x48,0x7F},	//d	100
	{0x00,0x38,0x54,0x54,0x54,0x18},	//e	101
	{0x00,0x08,0x7E,0x09,0x01,0x02},	//f	102
	{0x00,0x18,0xA4,0xA4,0xA4,0x7C},	//g	103
	{0x00,0x7F,0x08,0x04,0x04,0x78},	//h	104
	{0x00,0x00,0x44,0x7D,0x40,0x00},	//i	105
	{0x00,0x40,0x80,0x84,0x7D,0x00},	//j	106
	{0x00,0x7F,0x10,0x28,0x44,0x00},	//k	107
	{0x00,0x00,0x41,0x7F,0x40,0x00},	//l	108
	{0x00,0x7C,0x04,0x18,0x04,0x78},	//m	109
	{0x00,0x7C,0x08,0x04,0x04,0x78},	//n	110
	{0x00,0x38,0x44,0x44,0x44,0x38},	//o	111
	{0x00,0xFC,0x24,0x24,0x24,0x18},	//p	112
	{0x00,0x18,0x24,0x24,0x18,0xFC},	//q	113
	{0x00,0x7C,0x08,0x04,0x04,0x08},	//r	114
	{0x00,0x48,0x54,0x54,0x54,0x20},	//s	115
	{0x00,0x04,0x3F,0x44,0x40,0x20},	//t	116
	{0x00,0x3C,0x40,0x40,0x20,0x7C},	//u	117
	{0x00,0x1C,0x20,0x40,0x20,0x1C},	//v	118
	{0x00,0x3C,0x40,0x30,0x40,0x3C},	//w	119
	{0x00,0x44,0x28,0x10,0x28,0x44},	//x	120
	{0x00,0x1C,0xA0,0xA0,0xA0,0x7C},	//y	121
	{0x00,0x44,0x64,0x54,0x4C,0x44},	//z	122
	{0x14,0x14,0x14,0x14,0x14,0x14}		//=	123
};
/*-----------------------------------------------------------------------
NOKIA5110_w_char:显示英文字符
输入参数:c:显示的字符;
-----------------------------------------------------------------------*/
void NOKIA5110_w_char(unsignedcharc)
{
	unsignedcharline;
	c-=32;
	for(line=0;line<6;line++)
	NOKIA5110_w_byte(font6x8[c][line],1);
}
/*-----------------------------------------------------------------------
NOKIA5110_w_char_string:英文字符串显示函数
输入参数:*s:英文字符串指针;
X、Y:显示字符串的位置,x0-83,y0-5
-----------------------------------------------------------------------*/
void NOKIA5110_w_char_string(unsignedcharX,unsignedcharY,char*str)
{
	NOKIA5110_set_XY(X,Y);
	while(*str)
	{
		NOKIA5110_w_char(*str);
		str++;
	}
}
/*-----------------------------------------------------------------------
NOKIA5110_draw_bmp:位图绘制函数
输入参数:X、Y:位图绘制的起始X、Y坐标;
*map:位图点阵数据;
Pix_x:位图像素(长)
Pix_y:位图像素(宽)
-----------------------------------------------------------------------*/
unsignedchartem_data[30]={	10,10,11,11,10,10,11,12,12,12,
							11,12,12,13,13,14,13,12,11,10,
							10, 9, 9, 8, 8, 7, 7, 6, 6, 5};

void NOKIA5110_draw_bmp(unsigned char X,
						unsigned char Y,
						unsigned char Pix_x,
						unsigned char Pix_y,
						unsigned int xu)
{
	unsignedinti,n;
	unsignedcharrow,h;
	h=Y;
	if(Pix_y%8==0)
		row=Pix_y/8;//计算位图所占行数
	else
		row=Pix_y/8+1;
	for(n=0;n<row;n++)
	{
		NOKIA5110_set_XY(X,h);
		for(i=0;i<Pix_x;i++)
		{
			NOKIA5110_w_byte(tu[i+xu+n*Pix_x],1);
		}
		h++;	//换行
		if(h>=6)
			h=0;
	}
}
void NOKIA5110_draw()
{
	unsignedchari,dat;
	for(i=0;i<30;i++)
	{	dat=tem_data[i];
		switch(tem_data[i])
		{	case0: case1: case2: case3: case4: case5: case6:
			{
				dat = (0x80>>(dat+1));
				NOKIA5110_set_XY(i+11,5);
				NOKIA5110_w_byte(dat,1);
			}break;
			case7: case8: case9: case10: case11: case12: case13: case14:
			{
				dat = (0x80>>(dat-7));
				NOKIA5110_set_XY(i+11,4);
				NOKIA5110_w_byte(dat,1);
			}break;
		default:break;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -