单片机入门

当前位置:首页>文章中心>单片机入门
全部 352 技术分享 332 单片机入门 20

NOKIA5110LCD液晶屏的驱动实验

作者:电子开发网   来源:本站   时间:2008-10-19   访问量:1041

实验任务
  驱动NOKIA5110LCD液晶屏。

所需硬件:   1.单片机实验开发板A
            2.杜邦头插线
            3.NOKIA5110LCD液晶屏
            4.STC89C51RC单片机
所需软件:   1. Keil C51 V8.08Keil_uv3 绿色版本
            2.STC单片机ISP下载编程软件
1664848452116453.gif
1664848465124001.jpg
       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;

  }
}

/*--------------------------------------
;模块名称: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--)
{}
  }

上一篇:单片机与GSM短信模块(TC35i)串口通信1

下一篇:红外线遥控解码实验

发表评论:

评论记录:

未查询到任何数据!

在线咨询

点击这里给我发消息 咨询专员

在线咨询

咨询电话

18906103328

电话咨询

微信扫一扫

微信联系
返回顶部