原创 C8051F学习笔记:Nokia 5110驱动

2010-4-12 23:43 7846 2 12 分类: MCU/ 嵌入式

C<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />8051F学习笔记:Nokia 5110驱动<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


Nokia5110是一款经典机型,可能由于经典的缘故,旧机器很多,所以很多电子工程师就把旧机器的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示,取代LCD1602


使用Nokia5110液晶的四大理由


1)     性价比高,LCD1602可以显示32个字符,而Nokia5110可以显示15个汉字,30个字符。Nokia5110裸屏仅8.8元,LCD1602一般15元左右,LCD12864一般50~70元。


2)     接口简单,仅四根I/O线即可驱动,LCD160211I/O线,LCD1286412根。


3)     速度快,是LCD1286420倍,是LCD160240倍。


4)     Nokia5110工作电压3.3V,正常显示时工作电流200uA以下,具有掉电模式,适合电池供电的便携式移动设备。


 


可以在市场上买到Nokia5110的裸屏和带PCBNokia5110屏幕,因为Nokia5110是不带背光的,所以通常商家会在PCB上按了几个背光LED,上电就能亮,建议大家还是买那种连上PCB5110


 


Nokia5110原理图:https://assets-stash.oss-cn-shanghai.aliyuncs.com/album/old-resources/2010/4/12/d5859d5b-df9d-4abe-a6c7-56000c0b0cf3.rar


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


 

点击看大图


 


商家把该引出的管脚都引出了,下面就可以连接C8051F的相应管脚,写程序驱动5110了。


 


Nokia5110Nokia3110是兼容的,用的都是同一款驱动芯片PHILIPS PCD8544


 


(1)   SPI接口时序写数据/命令


   Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSISPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序模拟即可。



 

点击看大图


 


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


函数名称:LCD_write_byte


函数功能:模拟SPI接口时序写数据/命令LCD


入口参数:data    :写入的数据;


          command :写数据/命令选择;


出口参数:无


注:


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


void LCD_write_byte(unsigned char dat, unsigned char command)


  {


    unsigned char i;


    LCD_CE = 0;                                 //5110片选有效,允许输入数据


    if (command == 0)                         //写命令


         LCD_DC = 0;                             


    else  LCD_DC = 1;                      //写数据


       for(i=0;i<8;i++)                             //传送8bit数据


              {


if(dat&0x80)


                            SDIN = 1;


                     else


                            SDIN = 0;


                     SCLK = 0;


                     dat = dat << 1;


                     SCLK = 1;


}


     LCD_CE = 1;                               //禁止5110


  }


 


管脚D/C(LCD_DC)用于选择写的是命令(D/C=0)还是数据(D/C=1)


 


(2)   Nokia5110的初始化


接通电源后,内部寄存器和RAM的内容是不确定的,这需要一个RES低电平脉冲复位一下。当VDD变为高电平,达到VDDmin(或更高)之后,最多100msRST输入低电平(电平幅度<0.3VDD)


 


点击看大图



                                             5110复位时序


 


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


函数名称:LCD_init


函数功能:5110初始化


入口参数:无


出口参数:无


注:


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


void LCD_init(void)


  {


   LCD_RST = 0;     // 产生一个让LCD复位的低电平脉冲


    delay_1us();


   LCD_RST = 1;


 


   LCD_CE = 0;     // 关闭LCD


    delay_1us();


   LCD_CE = 1;     // 使能LCD


    delay_1us();


 


    LCD_write_byte(0x21, 0);    // 使用扩展命令设置LCD模式


    LCD_write_byte(0xc8, 0);    // 设置液晶偏置电压


    LCD_write_byte(0x06, 0);    // 温度校正


    LCD_write_byte(0x13, 0);    // 1:48


    LCD_write_byte(0x20, 0);    // 使用基本命令,V=0,水平寻址


    LCD_clear();                // 清屏


    LCD_write_byte(0x0c, 0);    // 设定显示模式,正常显示


  


    LCD_CE = 0;      // 关闭LCD


  }


 


 


(3)设置Nokia5110液晶的坐标


Nokia5110(PCD8544)的命令集:



 

点击看大图


 


命令字符解释:



 

点击看大图


 


要注意的是“功能设置”命令的“H”和“V”。


H=0使用基本指令集命令,H=1使用扩展指令集命令。


V=0水平寻址,V=1垂直寻址。


 



点击看大图


 


       48*84点阵的格式如上图,数据以字节8bit为单位下载到PCD854448*84bit显示数据RAM矩阵。列通过地址指针寻址,地址范围为X  0~83(1010011)Y 0~5(101)。地址不允许超过这个范围。


 



7f00bee5-3524-4a0f-a38c-9fadad52971f.JPG


 


       在垂直寻址(V=1)Y地址在每个字节之后递增,经最后的Y地址(Y=5)之后,Y绕回0X递增到下一列的地址。


 

5d8148f1-da65-4b1e-b9ff-726e4d903b3c.JPG


 



      在水平寻址模式(V=0)X地址在每个字节之后递增,经最后的X地址(X=83)之后,X绕回0Y递增到下一行的地址。


经每一个最后地址之后(X=83,Y=5),地址指针绕回地址(X=0,Y=0)


 


 


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


函数名称:LCD_set_XY


函数功能:设置LCD坐标函数


入口参数:X       083


          Y       05


出口参数:无


注:


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


void LCD_set_XY(unsigned char X, unsigned char Y)


  {


    LCD_write_byte(0x40 | Y, 0);               // column


    LCD_write_byte(0x80 | X, 0);        // row


  }


 


(4)显示英文字符


英文字符占用6*8个点阵,通过建立一个ASCII的数组font6x8[][6]来寻址。而这个数字的行号对应(字符ASCII-32)。ASCII码表如下:



 

点击看大图


 


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


函数名称:LCD_write_char


函数功能:显示英文字符


入口参数:c      :  显示的字符


出口参数:无


注:


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


void LCD_write_char(unsigned char c)


{


    unsigned char line;


    c -= 32;                       //数组的行号


 


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


        LCD_write_byte(font6x8[c][line], 1);


}


 


    如要在NOKIA5110输出大写“A”,对应数组的行号为33,对应的元素为


{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },水平寻址(V=0)



 


cbc4d164-a2fe-4d45-9d7e-6b8508f1a670.JPG


     


NOKIA5110 一行可以显示14个字符,可以显示六行。


 


(5)显示汉字


显示汉字可以采用两种点阵方式,一种是12*12点阵,一种是16*16点阵,网上也有一个自动提取字模的小软件“3310液晶显示屏汉字提取程序”,这个小程序只适用于水平寻址(V=0)


3310液晶显示屏汉字提取程序 下载:https://assets-stash.oss-cn-shanghai.aliyuncs.com/album/old-resources/2010/4/12/ed8339d1-4f09-4065-882d-22776124c4ef.rar


 


采用12*12点阵汉字时,由于不是8的整数倍数,因此行与行之间只能隔开,这样才能完整显示一个汉字。


//


{0x0A,0x92,0x62,0x9E,0x02,0x18,0x87,0x74,0x84,0x14,0x0C,0x00,0x02,0x01,0x00,0x04,0x05,0x02,0x01,0x00,0x01,0x02,0x04,0x00},



 


edfc7ff1-dbc2-4a6c-b6c5-3736f8c2658d.JPG


12*12点阵


 


(6)显示图形


        显示的图形像素大小不能超过84*48。也有一个字模提取小软件Zimo21可以帮助我们得到图像的像素数组。但要注意Zimo21软件的设置,不然的话就显示不了想要的图片。


Zimo21设置



 


点击看大图


 


      要注意选中“纵向取模”“字节倒序”这样才能在5110上显示正确的图像。


 


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


函数名称:LCD_draw_bmp_pixel


函数功能:位图绘制函数


入口参数:XY    :位图绘制的起始XY坐标;


          *map    :位图点阵数据;


          Pix_x   :位图像素(长)


          Pix_y   :位图像素(宽)


出口参数:无


注:


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


void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map, unsigned char Pix_x,unsigned char Pix_y)


{


    unsigned int i,n;


    unsigned char row;


                                                 //计算位图所占行数


      if (Pix_y%8==0)         //如果为位图所占行数为整数


            row=Pix_y/8;     


      else


         row=Pix_y/8+1;           //如果为位图所占行数不是整数


   


       LCD_set_XY(X,Y);


    for (n=0;n<row;n++)        //换行


      {


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


          {      


                   LCD_set_XY(X+i,Y+n);


             LCD_write_byte(map[i+n*Pix_x], 1);


          }                        


      }     


}


 


eb932a01-7158-46ff-b6c8-8d9692ac96a7.gif



要显示的图像


 

01a5d6a1-1a5b-4856-9d86-27c12c4db4d4.jpg 



NOKIA5110显示出来的效果


 


Zimo21软件下载  https://assets-stash.oss-cn-shanghai.aliyuncs.com/album/old-resources/2010/4/12/5226b18a-6bb5-4318-95ac-d361e7181df0.rar


驱动芯片PCD8544英文数据手册.pdf https://assets-stash.oss-cn-shanghai.aliyuncs.com/album/old-resources/2010/4/12/68d347ba-67cd-4f80-87bf-f602295fcaf3.rar


驱动芯片PCD8544中文数据手册.pdf https://assets-stash.oss-cn-shanghai.aliyuncs.com/album/old-resources/2010/4/12/fbb26a26-d5ff-4728-b43f-5b5573d7b602.rar


 


NOKIA5110驱动程序(C8051F320) https://assets-stash.oss-cn-shanghai.aliyuncs.com/album/old-resources/2010/4/12/42cb3e0c-3ac7-40ec-9afe-2a8ac04d3435.rar

文章评论10条评论)

登录后参与讨论

649278401_308062606 2013-8-19 07:38

谢谢楼主,学习了

billzhu_345737527 2012-11-26 20:08

太好了 谢谢

kch198725_232352376 2012-2-21 22:29

不错的东东

240043926_625748167 2012-2-5 22:16

不错的帖子,顶下

q_lming_517284947 2011-5-15 14:41

好像很好玩,先收藏了,谢谢分享

lfgzdz_840203218 2011-1-21 11:25

谢谢分享

kiss_lyk88 2010-11-26 10:43

谢谢分享

wanderer8885_691036090 2010-9-21 10:28

学习学习,谢谢!

306689882_548375552 2010-5-26 16:36

hen hao

nthq2004 2010-4-13 20:05

留帖学习。
相关推荐阅读
藤井树 2015-10-12 14:43
印制电路板的抗干扰设计 zz
印制电路板的抗干扰设计     作者:中船重工集团第707所 肖麟芬   摘   要:本文以印制电路板的电磁兼容性为核心,分析了电磁干扰的产生机理...
藤井树 2013-10-22 15:32
2010.5.30 黄草梁上包饺子一日登山活动——摘韭菜篇
        上次桃花节的时候也有野韭菜,那时候的我连草和韭菜叶分不清,才回去的韭菜也不敢吃,哈哈,这次可算真正见识了韭菜,黄草梁也叫韭菜梁,因为满山遍野都是野韭菜而闻名,比较圆比较粗的就是野韭...
藤井树 2013-10-22 15:28
2010.5.30 黄草梁上包饺子一日登山活动——包饺子篇
摘韭菜回来,大家已经忙开了 我也装模作样地“工作着” 哈哈,还不让我包,包饺子是技术活,一定要皮薄馅厚才有资格包,像我这样的只能旁观了 摘的韭菜应该足够了,旁边那个袋子是我摘来带回学校的 ...
藤井树 2013-08-09 15:19
datasheet下载网站整理(查IC芯片手册)【原创】
*************************************************************************         作为电子工程师,芯片的dat...
藤井树 2010-06-04 00:21
陈伟宁王辉一家捐助渠道(北京菲亚特—英菲尼迪)
       王辉的最新消息请关注 http://chenweining.org/       目前事故责任认定已经出来了——陈家全责。        发信人: program (程序), 信区: D...
藤井树 2010-06-01 13:43
2010.5.30 黄草梁上包饺子一日登山活动——美景篇
这天不得不说的是天空,蓝蓝的天空,白白的云    绿油油的山脊  我、洪涛哥哥、huangna妹妹还有她同事小艾走在黄草梁上    在蓝天白云下合影       阳光照过来,景色真美 象鼻山,走不...
广告
我要评论
10
2
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /6 下一条