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条)