迅维网

查看: 1597|回复: 0
打印 上一主题 下一主题

NOKIA5110LCD液晶屏的驱动实验

[复制链接]
跳转到指定楼层
1#
发表于 2016-2-16 09:13:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 山东 来自 山东

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

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--)
  • {}
      }

复制代码









您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表