找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9123|回复: 7
打印 上一主题 下一主题
收起左侧

NOKIA5110LCD液晶屏的驱动实验

  [复制链接]
跳转到指定楼层
楼主
ID:104835 发表于 2016-2-4 00:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
所需硬件:   1.单片机实验开发板可自制
            2.杜邦头插线
            3.NOKIA5110LCD液晶屏
            4.STC89C51RC单片机
所需软件:   1. Keil C51 V8.08或Keil_uv3 绿色版本
            2.STC单片机ISP下载编程软件


       NOKIA5110LCD液晶屏连接图
C语言源程序

  1. /******************************************************************
  2. ** NOKIA5110(3310)液晶屏驱动程序
  3. ** 晶 振  频 率:11.0592M
  4. ** 线路->单片机实验开发板A
  5. ******************************************************************/
  6.     #include

  7. /*-- -------定义 Nokia5110 引角---- -----*/
  8.   sbit sclk = P3^3;
  9.   sbit sdin = P3^4;
  10.   sbit dc   = P3^5;
  11.   sbit sce = P3^7;
  12.   sbit res = P3^6;



  13.   void initNokia5110(void);                         /* NOkia 5110 初始化   */
  14.   void clearNokia5110(void);                         /* 清除屏幕 整屏清空 */
  15.   void Display_char(unsigned char x,unsigned char y,char *s);   /* 写字符 x 设置显示字符的X位置 ; y 设置显示字符的Y位置   *s 显示字符的首地址 */
  16.   void Display_num(unsigned char x,unsigned char y,char s);   /* 写数字 x 设置显示字符的X位置 ; y 设置显示字符的Y位置   s 显示数字 */
  17.   void write_byte(unsigned char data1);                 /* 发送1字节到 NOkia 5110 */
  18.   void setxy(unsigned char x,unsigned char y);           /* 设置显示坐标 x 行坐标(0-83)   unsigned char y 列坐标(0-5) */
  19.   void delay(unsigned int time);


  20.    void main(void)
  21. {
  22.         initNokia5110();                         /* NOkia 5110 初始化   */
  23.         clearNokia5110();                         /* 清除屏幕 整屏清空 */
  24.         Display_char(1,2,"www.52c51.com");   /* 写字符 x 设置显示字符的X位置 ; y 设置显示字符的Y位置   *s 显示字符的首地址 */
  25.         Display_char(10,4,"NOKIA5510");   /* 写字符 x 设置显示字符的X位置 ; y 设置显示字符的Y位置   *s 显示字符的首地址 */
  26.         //Display_num(0,0,9);   // 写数字
  27. while(1);
  28. }

  29. /****************************5110 0-9字模**************************/
  30. /*函数原型:无
  31. /*函数功能:0-9字模
  32. /*输入参数:无
  33. /*输出参数:无
  34. /*调用模块:
  35. /*建立时间:2006/10/1
  36. /*作者:站长
  37. /**********************************************************************/
  38. unsigned char code asc2tab[][6] =
  39. {
  40.   
  41.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },// sp
  42.   
  43.   { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },// !
  44.   
  45.   { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },// "
  46.   
  47.   { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },// #
  48.   
  49.   { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },// $
  50.   
  51.   { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },// %
  52.   
  53.   { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },// &
  54.   
  55.   { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },// '
  56.   
  57.   { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },// (
  58.   
  59.   { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },// )
  60.   
  61.   { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },// *
  62.   
  63.   { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },// +
  64.   
  65.   { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },// ,
  66.   
  67.   { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },// -
  68.   
  69.   { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },// .
  70.   
  71.   { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },// /
  72.   
  73.   { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },// 0
  74.   
  75.   { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },// 1
  76.   
  77.   { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },// 2
  78.   
  79.   { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },// 3
  80.   
  81.   { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },// 4
  82.   
  83.   { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },// 5
  84.   
  85.   { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },// 6
  86.   
  87.   { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },// 7
  88.   
  89.   { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },// 8
  90.   
  91.   { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },// 9
  92.   
  93.   { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },// :
  94.   
  95.   { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },// ;
  96.   
  97.   { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },// <
  98.   
  99.   { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },// =
  100.   
  101.   { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },// >
  102.   
  103.   { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },// ?
  104.   
  105.   { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },// @
  106.   
  107.   { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },// A
  108.   
  109.   { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },// B
  110.   
  111.   { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },// C
  112.   
  113.   { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },// D
  114.   
  115.   { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },// E
  116.   
  117.   { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },// F
  118.   
  119.   { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },// G
  120.   
  121.   { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },// H
  122.   
  123.   { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },// I
  124.   
  125.   { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },// J
  126.   
  127.   { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },// K
  128.   
  129.   { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },// L
  130.   
  131.   { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },// M
  132.   
  133.   { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },// N
  134.   
  135.   { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },// O
  136.   
  137.   { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },// P
  138.   
  139.   { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },// Q
  140.   
  141.   { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },// R
  142.   
  143.   { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },// S
  144.   
  145.   { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },// T
  146.   
  147.   { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },// U
  148.   
  149.   { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },// V
  150.   
  151.   { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },// W
  152.   
  153.   { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },// X
  154.   
  155.   { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },// Y
  156.   
  157.   { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },// Z
  158.   
  159.   { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },// [
  160.   
  161.   { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },// 55
  162.   
  163.   { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },// ]
  164.   
  165.   { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },// ^
  166.   
  167.   { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },// _
  168.   
  169.   { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },// '
  170.   
  171.   { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },// a
  172.   
  173.   { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },// b
  174.   
  175.   { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },// c
  176.   
  177.   { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },// d
  178.   
  179.   { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },// e
  180.   
  181.   { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },// f
  182.   
  183.   { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },// g
  184.   
  185.   { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },// h
  186.   
  187.   { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },// i
  188.   
  189.   { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },// j
  190.   
  191.   { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },// k
  192.   
  193.   { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },// l
  194.   
  195.   { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },// m
  196.   
  197.   { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },// n
  198.   
  199.   { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },// o
  200.   
  201.   { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },// p
  202.   
  203.   { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },// q
  204.   
  205.   { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },// r
  206.   
  207.   { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },// s
  208.   
  209.   { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },// t
  210.   
  211.   { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },// u
  212.   
  213.   { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },// v
  214.   
  215.   { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },// w
  216.   
  217.   { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },// x
  218.   
  219.   { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },// y
  220.   
  221.   { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },// z
  222.   
  223.   { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }


  224. };


  225. /****************************Nokia5110初始化函数**************************/
  226. /*函数原型:initNokia5110(void)
  227. /*函数功能:Nokia5110初始化
  228. /*输入参数:无
  229. /*输出参数:无
  230. /*调用模块:
  231. /*建立时间:2006/10/1
  232. /*作者:站长
  233. /**********************************************************************/
  234. void initNokia5110(void)
  235. {
  236.   delay(10);             //系统复位
  237.   res = 0;
  238.   delay(2);
  239.   res = 1;
  240.   dc   = 0;
  241.   write_byte(0x21);         //;芯片是活动的(PD=0) 使用扩展指令集
  242.   write_byte(0xd5);   
  243.   write_byte(0x20);         //;芯片是活动的(PD=0) 使用水平寻址(V=0) 使用基本指令集(H=0)
  244.   write_byte(0x0c);         //;设置显示配置(D=1 E=0)
  245. }


  246. /****************************Nokia5110清屏函数*********************/
  247. /*函数原型:void clearNokia5110(void)
  248. /*函数功能:Nokia5110清屏
  249. /*输入参数:无
  250. /*输出参数:无
  251. /*调用模块:
  252. /*建立时间:2006/10/1
  253. /*作者:站长
  254. /**********************************************************************/
  255. void clearNokia5110(void)
  256. {  
  257.   unsigned int i,j;
  258.   for(i=0;i<6;i++)
  259.   {
  260.     setxy(j,i);
  261.     dc   = 1;
  262.     while (j<84)
  263.     {

  264.         write_byte(0x00);
  265.         j++;
  266.     }
  267.     j   = 0;

  268.   }
  269. }

  270. /*--------------------------------------
  271. ;模块名称:Display_char(unsigned char x,unsigned char y,char *s);
  272. ;功   能:写字符
  273. ;占用资源:
  274. ;参数说明:x 设置显示字符的X位置 ; y 设置显示字符的Y位置   *s 显示字符的首地址
  275. ;创建日期:2001.01.19
  276. ;版   本:VER 2.0         ★STALI☆
  277. ;-------------------------------------*/
  278. void Display_char(unsigned char x,unsigned char y,char *s)
  279. {  
  280.   unsigned char line;
  281.   setxy(x,y);
  282.   while(*s)
  283.   {
  284.     for(line=0;line<6;line++)
  285.     {  
  286.         dc   = 1;
  287.         write_byte(asc2tab[*s - 32][line]);  
  288.     }
  289.     s++;  
  290.   }
  291.   sce = 1;
  292. }

  293. /****************************Nokia5110写数字函数*********************/
  294. /*函数原型:void Display_num(unsigned char x,unsigned char y,char s)
  295. /*函数功能:Nokia5110写数字
  296. /*输入参数:x 设置显示字符的X位置 ; y 设置显示字符的Y位置   s 显示数字
  297. /*输出参数:无
  298. /*调用模块:
  299. /*建立时间:2006/10/1
  300. /*作者:站长
  301. /**********************************************************************/
  302. void Display_num(unsigned char x,unsigned char y,char s)
  303. {
  304.   unsigned char line;
  305.   setxy(x,y);
  306.   dc   = 1;  
  307.   for(line=0;line<6;line++)
  308.   {  
  309.    
  310.     write_byte(asc2tab[s+16][line]);  
  311.   }
  312.   sce = 1;
  313. }
  314.   
  315. /*************************Nokia5110发送1字节函数*********************/
  316. /*函数原型:void Display_num(unsigned char x,unsigned char y,char s)
  317. /*函数功能:发送1字节到 NOkia 5110
  318. /*输入参数:x 设置显示字符的X位置 ; y 设置显示字符的Y位置   s 显示数字
  319. /*输出参数:无
  320. /*调用模块:
  321. /*建立时间:2006/10/1
  322. /*作者:站长
  323. /**********************************************************************/
  324. void write_byte(unsigned char data1)
  325. {  
  326.   unsigned char i;
  327.   res = 1;
  328.   sce = 0;
  329.   for(i=0;i<8;i++)
  330.   {
  331.     sdin = (bit) (data1&0x80);
  332.     sclk = 0;
  333.       ;  
  334.     sclk = 1;  
  335.     data1 <<=1;
  336.   }
  337. }

  338. /*************************Nokia5110设置显示坐标函数*********************/
  339. /*函数原型:void setxy(unsigned char x,unsigned char y)
  340. /*函数功能:设置显示坐标
  341. /*输入参数:unsigned char x 行坐标(0-83)   unsigned char y 列坐标(0-5)
  342. /*输出参数:无
  343. /*调用模块:
  344. /*建立时间:2006/10/1
  345. /*作者:站长
  346. /**********************************************************************/
  347. void setxy(unsigned char x,unsigned char y)
  348. {
  349.   dc   = 0;
  350.   write_byte(y|0x40);         //设置y轴。
  351.   write_byte(x|0x80);         //设置x轴。
  352. }

  353. /*******************************延时函数*********************************/
  354. /*函数原型:delay(unsigned int delay_time)
  355. /*函数功能:延时函数
  356. /*输入参数:delay_time (输入要延时的时间)
  357. /*输出参数:无
  358. /*调用模块:无
  359. /*建立时间:2005/10/21
  360. /*作者:站长
  361. /**********************************************************************/
  362. void delay(unsigned int delay_time)   //延时子程序
  363. {for(;delay_time>0;delay_time--)
  364. {}
  365.   }
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:302850 发表于 2018-5-2 23:54 | 只看该作者
楼主真棒,非常好!!!
回复

使用道具 举报

板凳
ID:396549 发表于 2018-10-25 19:54 | 只看该作者
超级有用!!
回复

使用道具 举报

地板
ID:251455 发表于 2019-2-14 09:05 | 只看该作者
正好需要,谢谢楼主
回复

使用道具 举报

5#
ID:141106 发表于 2019-2-21 14:10 | 只看该作者
不错,下载,收藏~
回复

使用道具 举报

6#
ID:164988 发表于 2019-2-23 21:19 | 只看该作者
下载了,解压不了,提示说文件已被破坏。
回复

使用道具 举报

7#
ID:350671 发表于 2019-6-23 21:58 | 只看该作者
厉害啊
回复

使用道具 举报

8#
ID:507971 发表于 2020-2-6 17:30 | 只看该作者
上面还有一个LED+是什么引脚呀.
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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