诺基亚5110LCD驱动程序

诺基亚5110LCD驱动程序


2023年12月3日发(作者:魅族note8屏幕材质)

/******************************************************************

** NOKIA5110(3310)液晶屏驱动程序

** 晶 振 频 率:11.0592M

** 线路->单片机实验开发板A

******************************************************************/

#include

/*-- -------定义 Nokia5110 引角---- -----*/

sbit sclk = P3^3;

sbit sdin = P3^4;

sbit dc = P3^5;

sbit sce = P3^7;

sbit res = P3^6;

void initNokia5110(void); /* NOkia 5110 初始化 */

void clearNokia5110(void); /* 清除屏幕 整屏清空 */

void Display_char(unsigned char x,unsigned char y,char *s); /* 写字符 x 设置显示字符的X位置 ; y 设置显示字符的Y位置 *s 显示字符的首地址 */

void Display_num(unsigned char x,unsigned char y,char s); /* 写数字 x 设置显示字符的X位置 ; y 设置显示字符的Y位置 s 显示数字 */

void write_byte(unsigned char data1); /* 发送1字节到 NOkia 5110 */

void setxy(unsigned char x,unsigned char y); /* 设置显示坐标 x 行坐标(0-83) unsigned char y 列坐标(0-5) */

void delay(unsigned int time);

void main(void)

{

initNokia5110(); /* NOkia 5110 初始化 */

clearNokia5110(); /* 清除屏幕 整屏清空 */

Display_char(1,2,""); /* 写字符 x 设置显示字符的X位置 ; y 设置显示字符的Y位置 *s 显示字符的首地址 */

Display_char(10,4,"NOKIA5510"); /* 写字符 x 设置显示字符的X位置 ; y 设置显示字符的Y位置 *s 显示字符的首地址 */

//Display_num(0,0,9); // 写数字

while(1);

}

/****************************5110 0-9字模**************************/

/*函数原型:无

/*函数功能:0-9字模

/*输入参数:无

/*输出参数:无

/*调用模块:

/*建立时间:2006/10/1

/*作者:站长

/**********************************************************************/

unsigned char code asc2tab[][6] =

{

{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },// sp

{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },// !

{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },// "

{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },// #

{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },// $

{ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },// %

{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },// &

{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },// '

{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },// (

{ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },// )

{ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },// *

{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },// +

{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },// ,

{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },// -

{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },// .

{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },// /

{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },// 0

{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },// 1

{ 0x00, 0x42, 0x61, 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, 0x32, 0x49, 0x59, 0x51, 0x3E },// @

{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },// 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, 0x41 },// E

{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },// F

{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },// G

{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },// H

{ 0x00, 0x00, 0x41, 0x7F, 0x41, 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, 0x51, 0x21, 0x5E },// 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, 0x55, 0x2A, 0x55, 0x2A, 0x55 },// 55

{ 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, 0x78 },// 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, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },// g

{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },// h

{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },// i

{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },// j

{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },// k

{ 0x00, 0x00, 0x41, 0x7F, 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, 0xFC, 0x24, 0x24, 0x24, 0x18 },// p

{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },// q

{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },// r

{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },// s

{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },// t

{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },// u

{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },// v

{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },// w

{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },// x

{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },// y

{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },// z

{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }

};

/****************************Nokia5110初始化函数**************************/

/*函数原型:initNokia5110(void)

/*函数功能:Nokia5110初始化

/*输入参数:无

/*输出参数:无

/*调用模块:

/*建立时间:2006/10/1

/*作者:站长

/**********************************************************************/

void initNokia5110(void)

{

delay(10); //系统复位

res = 0;

delay(2);

res = 1;

dc = 0;

write_byte(0x21); //;芯片是活动的(PD=0) 使用扩展指令集

write_byte(0xd5);

write_byte(0x20); //;芯片是活动的(PD=0) 使用水平寻址(V=0) 使用基本指令集(H=0)

write_byte(0x0c); //;设置显示配置(D=1 E=0)

}

/****************************Nokia5110清屏函数*********************/

/*函数原型:void clearNokia5110(void)

/*函数功能:Nokia5110清屏

/*输入参数:无

/*输出参数:无

/*调用模块:

/*建立时间:2006/10/1

/*作者:站长

/**********************************************************************/

void clearNokia5110(void)

{

unsigned int i,j;

for(i=0;i<6;i++)

{

setxy(j,i);

dc = 1;

while (j<84)

{

write_byte(0x00);

j++;

}

j = 0;

}

}

/*--------------------------------------

;模块名称:Display_char(unsigned char x,unsigned char y,char *s);

;功 能:写字符

;占用资源:

;参数说明:x 设置显示字符的X位置 ; y 设置显示字符的Y位置 *s 显示字符的首地址

;创建日期:2001.01.19

;版 本:VER 2.0 ★STALI☆

;-------------------------------------*/

void Display_char(unsigned char x,unsigned char y,char *s)

{

unsigned char line;

setxy(x,y);

while(*s)

{

for(line=0;line<6;line++)

{

dc = 1;

write_byte(asc2tab[*s - 32][line]);

}

s++;

}

sce = 1;

}

/****************************Nokia5110写数字函数*********************/

/*函数原型:void Display_num(unsigned char x,unsigned char y,char s)

/*函数功能:Nokia5110写数字

/*输入参数:x 设置显示字符的X位置 ; y 设置显示字符的Y位置 s 显示数字

/*输出参数:无

/*调用模块:

/*建立时间:2006/10/1

/*作者:站长

/**********************************************************************/

void Display_num(unsigned char x,unsigned char y,char s)

{

unsigned char line;

setxy(x,y);

dc = 1;

for(line=0;line<6;line++)

{

write_byte(asc2tab[s+16][line]);

}

sce = 1;

}

/*************************Nokia5110发送1字节函数*********************/

/*函数原型:void Display_num(unsigned char x,unsigned char y,char s)

/*函数功能:发送1字节到 NOkia 5110

/*输入参数:x 设置显示字符的X位置 ; y 设置显示字符的Y位置 s 显示数字

/*输出参数:无

/*调用模块:

/*建立时间:2006/10/1

/*作者:站长

/**********************************************************************/

void write_byte(unsigned char data1)

{

unsigned char i;

res = 1;

sce = 0;

for(i=0;i<8;i++)

{

sdin = (bit) (data1&0x80);

sclk = 0;

;

sclk = 1;

data1 <<=1;

}

}

/*************************Nokia5110设置显示坐标函数*********************/

/*函数原型:void setxy(unsigned char x,unsigned char y)

/*函数功能:设置显示坐标

/*输入参数:unsigned char x 行坐标(0-83) unsigned char y 列坐标(0-5)

/*输出参数:无

/*调用模块:

/*建立时间:2006/10/1

/*作者:站长

/**********************************************************************/

void setxy(unsigned char x,unsigned char y)

{

dc = 0;

write_byte(y|0x40); //设置y轴。

write_byte(x|0x80); //设置x轴。

}

/*******************************延时函数*********************************/

/*函数原型:delay(unsigned int delay_time)

/*函数功能:延时函数

/*输入参数:delay_time (输入要延时的时间)

/*输出参数:无

/*调用模块:无

/*建立时间:2005/10/21

/*作者:站长

/**********************************************************************/

void delay(unsigned int delay_time) //延时子程序

{for(;delay_time>0;delay_time--)

{}

}


发布者:admin,转转请注明出处:http://www.yc00.com/num/1701613330a1130339.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信