📄 nokia_5110_all.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 + -