- 积分
- 3553
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2014-11-13
- 精华
|
马上注册,获取阅读精华内容及下载权限
您需要 登录 才可以下载或查看,没有帐号?注册
x
所需硬件: 1.单片机实验开发板可自制
2.杜邦头插线
3.NOKIA5110LCD液晶屏
4.STC89C51RC单片机
所需软件: 1. Keil C51 V8.08或Keil_uv3 绿色版本
2.STC单片机ISP下载编程软件
NOKIA5110LCD液晶屏连接图
C语言源程序
- /******************************************************************
- ** 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,"www.52c51.com"); /* 写字符 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;
- }
- }
- /*--------------------------------------
- ;模块名称isplay_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--)
- {}
}
复制代码
|
|