原创 【雕爷学编程】Arduino动手做(113)---5110液晶屏模块

2023-6-17 09:10 2385 8 8 分类: MCU/ 嵌入式 文集: 雕爷学编程

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。


【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百一十三:蓝色诺基亚5110屏 LCD液晶屏模块 兼容3310 LCD 


PCD8544

是一块低功耗的CMOS LCD 控制驱动器,设计为驱动48 行84 列的图形显示。所有必须的显示功能集成在一块芯片上,包括LCD 电压及偏置电压发生器,只须很少外部元件且功耗小。

PCD8544 特征
单芯片 LCD 控制/驱动
48 行,84 列输出
显示数据 RAM 48*84 位
芯片集成:
——LCD 电压发生器(也可以使用外部电压供应)
——LCD偏置电压发生器
——振荡器不需要外接元件(也可以使用外部时钟)
外部 RES(复位)输入引脚
串行界面最高 4.0Mbits/S
CMOS 兼容输入
混合速率:48
逻辑电压范围 VDD 到 VSS:2.7V~3.3V
显示电压范围 VLCD 到 VSS:
——6.0~8.5V LCD内部电压发生器(充许电压发生器)
——6.0~9.0V LCD 外部电压供应(电压发生器关闭)
低功耗,适用于电池供电系统
关于 VLCD的温度补偿
使用温度范围:-25~70℃



这块屏原来是20多年前发布的诺基亚5110手机的屏幕


5110液晶屏模块特点

●84x48 的点阵LCD,可以显示4 行汉字,

●采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有8条。支持多种串行通信协议(如AVR 单片机的SPI、MCS51 的串口模式0等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。

●可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。

●LCD 控制器/驱动器芯片已绑定到LCD 晶片上,模块的体积很小。

●采用低电压供电,正常显示时的工作电流在200μA 以下,且具有掉电模式。



5110液晶屏模块底板为本站设计,四角有定位孔,同时提供上下两排接线端口,排列如下:
RST ——复位
CE —— 片选
DC —— 数据/指令选择
DIN —— 串行数据线
CLK —— 串行时钟线
VCC —— 电源输入(3.3v和5v均可,经过实验验证,没有问题)
BL —— 背光控制端
GND —— 地线

接口为串行SPI接口




工作原理
利用PC上的16×16点阵汉字库,提取后将点阵文件存入ROM,直接利用PC中汉字内码作为单片机系统的编码(不再形成新的汉字编码)。在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6000以上,将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的“A”在字模的记载方式如图





Arduino接线示意图

Arduino实验开源代码


  1. /*
  2. 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3. 实验一百一十三:蓝色诺基亚5110屏 LCD液晶屏模块 兼容3310 LCD
  4. 1、安装“LCD5110_Basic”库(下载链接 http://www.rinkydinkelectronics. ... e=LCD5110_Basic.zip)
  5. 2、项目测试 :点亮模块
  6. 3、模块接线
  7. Nokia 5110 Arduino
  8. RST 6
  9. CE 7
  10. DC 5
  11. DIN 4
  12. CLK 3
  13. VCC 5V
  14. BL 3V3
  15. GND GND
  16. */
  17. #include <LCD5110_Basic.h>
  18. LCD5110 myGLCD(3,4,5,6,7);
  19. extern uint8_t SmallFont[];
  20. extern uint8_t MediumNumbers[];
  21. extern uint8_t BigNumbers[];
  22. void setup(){
  23. myGLCD.InitLCD(); //Intializing LCD
  24. myGLCD.setContrast(69);//调整对比度0-127
  25. }
  26. void loop(){
  27. myGLCD.setFont(SmallFont);
  28. myGLCD.print("Hello World",CENTER,16);
  29. delay(1000);
  30. myGLCD.clrScr();
  31. }



  1. <LCD5110_Basic.h>常用函数
  2. LCD5110(SCK,MOSI,DC,RST,CS);//设置引脚
  3. Usage: LCD5110 myGLCD(8,9,10,11,12);
  4. InitLCD([contrast]);//初始化
  5. Usage:myGLCD.initLCD();
  6. setContrast(contrast);//设置对比度(0-127)
  7. Usage:myGLCD.setContrast(70);
  8. enableSleep();//设置睡眠状态
  9. Usage:myGLCD.enableSleep();
  10. disableSleep();//关闭睡眠状态
  11. Usage:myGLCD.disableSleep();
  12. clrScr();//清屏
  13. Usage:myGLCD.clrScr();
  14. clrRow(row[,start_x[,end_x]]);//清除行的一部分或者整行
  15. Usage:myGLCD.clrRow(5,42);
  16. invert(mode);//倒置
  17. Usage:myGLCD.invert(true);
  18. print(st,x,y);//显示字符串
  19. Usage:myGLCD.print("Hello Wrold", CENTER, 0);
  20. printNumI(num,x,y[,length[,filler]]);//显示整数
  21. Usage:myGLCD.printNumI(num, CENTER, 0);
  22. printNumF(num,dec,x,y[,divider[,length[,filler]]]);//显示小数
  23. Usage:myGLCD.printNumF(num, 3,CENTER, 0);
  24. setFont(fontname);//设置字体大小
  25. Usage:myGLCD.setFont(SmallFont);
  26. drawBitmap(x,y,data,sx,sy);//用于显示自定义字符
  27. Usage:myGLCD.drawBitmap(0,0,bitmap,32,32);



Arduino实验场景图



Arduino实验开源代码之二

  1. /*
  2. 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3. 实验一百一十三:蓝色诺基亚5110屏 LCD液晶屏模块 兼容3310 LCD
  4. 1、安装 "U8glib.h"库-工具-管理库-搜索-安装
  5. 2、项目测试 :简易数字示波器(显示X\Y坐标体系)
  6. 3、模块接线
  7. Nokia 5110 Arduino
  8. RST 6
  9. CE 7
  10. DC 5
  11. DIN 4
  12. CLK 3
  13. VCC 5V
  14. BL 3V3
  15. GND GND
  16. */
  17. #include "U8glib.h"
  18. int x,y; int Buffer[84];
  19. U8GLIB_PCD8544 u8g(3, 4, 99, 5, 6);
  20. // SPI Com: SCK = 3, MOSI = 4, CS = 接地, dc = 5, Reset = 6
  21. void setup()
  22. {
  23. analogReference(INTERNAL); //ADC使用单片机内部1.1V基准
  24. u8g.setContrast(100);//设置对比度0-255
  25. }
  26. void loop()
  27. {
  28. for(x = 0;x < 84;x++) //信号采样
  29. Buffer[x] = 47-(analogRead(A0)>>4);
  30. u8g.firstPage(); //清屏
  31. do //显示
  32. {
  33. for(x = 0;x < 83;x++)
  34. u8g.drawLine(x,Buffer[x],x,Buffer[x+1]); //画相邻两点连线
  35. u8g.drawLine(42,0,42,47); // 画x坐标轴
  36. u8g.drawLine(0,24,84,24); // 画y坐标轴
  37. for(x=2;x<84;x+=8) //画x坐标轴刻度
  38. u8g.drawLine(x,23,x,25);
  39. for(x=0;x<48;x+=8) //画y坐标轴刻度
  40. u8g.drawLine(41,x,43,x);
  41. u8g.drawFrame(0,0,84,48); //画边框
  42. }
  43. while(u8g.nextPage( ));
  44. delay(1000);
  45. }

Arduino实验场景图


Arduino实验开源代码之三

  1. /*
  2. 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3. 实验一百一十三:蓝色诺基亚5110屏 LCD液晶屏模块 兼容3310 LCD
  4. 1、安装“LCD5110_Basic”库(下载链接 http://www.rinkydinkelectronics. ... e=LCD5110_Basic.zip)
  5. 2、项目测试 :尝试输出汉字“国庆快乐”
  6. 3、模块接线
  7. Nokia 5110 Arduino
  8. RST 6
  9. CE 7
  10. DC 5
  11. DIN 4
  12. CLK 3
  13. VCC 5V
  14. BL 3V3
  15. GND GND
  16. */
  17. int LCD_CE=7;
  18. int LCD_RST=6;
  19. int SCLK=3;
  20. int SDIN=4;
  21. int LCD_DC=5;
  22. //****************************定义ASCII字符**********************//
  23. /**********************************
  24. 6 x 8 font
  25. 1 pixel space at left and bottom
  26. index = ASCII - 32
  27. ***********************************/
  28. const unsigned char font6x8[][6] =
  29. {
  30. { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
  31. { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
  32. { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
  33. { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
  34. { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
  35. { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // %
  36. { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
  37. { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
  38. { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
  39. { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
  40. { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
  41. { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
  42. { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,
  43. { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
  44. { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
  45. { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
  46. { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
  47. { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
  48. { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
  49. { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
  50. { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
  51. { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
  52. { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
  53. { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
  54. { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
  55. { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
  56. { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
  57. { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
  58. { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
  59. { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
  60. { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
  61. { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
  62. { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
  63. { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A
  64. { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
  65. { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
  66. { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
  67. { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
  68. { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
  69. { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
  70. { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
  71. { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
  72. { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
  73. { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
  74. { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
  75. { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
  76. { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
  77. { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
  78. { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
  79. { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
  80. { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
  81. { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
  82. { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
  83. { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
  84. { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
  85. { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
  86. { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
  87. { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
  88. { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
  89. { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
  90. { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55
  91. { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
  92. { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
  93. { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
  94. { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
  95. { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
  96. { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
  97. { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
  98. { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
  99. { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
  100. { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
  101. { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g
  102. { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
  103. { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
  104. { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j
  105. { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
  106. { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
  107. { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
  108. { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
  109. { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
  110. { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p
  111. { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q
  112. { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
  113. { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
  114. { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
  115. { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
  116. { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
  117. { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
  118. { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
  119. { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y
  120. { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
  121. { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 } // horiz lines
  122. };
  123. static const byte hanzi12x16[][24]={
  124. {0x00,0x00,0xFC,0x02,0x8A,0xF2,0x8A,0x8A,0x0A,0x02,0xFC,0x00,
  125. 0x00,0x00,0x3F,0x28,0x28,0x2F,0x28,0x2B,0x2C,0x20,0x1F,0x00}/*"国"0*/
  126. ,{0x00,0x00,0xF8,0x88,0x88,0x88,0xFC,0x88,0x88,0x88,0x88,0x00,
  127. 0xC0,0x38,0x87,0x40,0x20,0x18,0x07,0x06,0x18,0x20,0x40,0x00}/*"庆"1*/
  128. ,{0x00,0xE0,0xFE,0x20,0x40,0x10,0xFE,0x12,0x10,0xF0,0x00,0x00,
  129. 0x00,0x00,0x7F,0x80,0x40,0x31,0x0F,0x06,0x19,0x21,0x41,0x00}/*"快"2*/
  130. ,{0x00,0x00,0xF8,0x88,0x84,0x84,0xF4,0x84,0x84,0x80,0x80,0x00,
  131. 0x00,0x20,0x11,0x0C,0x00,0x40,0x7F,0x00,0x04,0x18,0x30,0x00}/*"乐"3*/
  132. };
  133. /************************LCD初始化函数********************************/
  134. void LCD_init(void)
  135. {
  136. //先设置为输出
  137. pinMode(SCLK,OUTPUT);
  138. pinMode(SDIN,OUTPUT);
  139. pinMode(LCD_DC,OUTPUT);
  140. pinMode(LCD_CE,OUTPUT);
  141. pinMode(LCD_RST,OUTPUT);
  142. // 产生一个让LCD复位的低电平脉冲
  143. digitalWrite( LCD_RST, LOW);
  144. delayMicroseconds(1);
  145. digitalWrite( LCD_RST, HIGH);
  146. // 关闭LCD
  147. digitalWrite( LCD_CE, LOW);
  148. delayMicroseconds(1);
  149. // 使能LCD
  150. digitalWrite( LCD_CE, HIGH); //LCD_CE = 1;
  151. delayMicroseconds(1);
  152. LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式
  153. LCD_write_byte(0xc8, 0); // 设置偏置电压
  154. LCD_write_byte(0x06, 0); // 温度校正
  155. LCD_write_byte(0x13, 0); // 1:48
  156. LCD_write_byte(0x20, 0); // 使用基本命令
  157. LCD_clear(); // 清屏
  158. LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
  159. // 关闭LCD
  160. digitalWrite( LCD_CE, LOW); //LCD_CE = 0;
  161. }
  162. /************************LCD清屏函数*******************************/
  163. void LCD_clear(void)
  164. {
  165. unsigned int i;
  166. LCD_write_byte(0x0c, 0);
  167. LCD_write_byte(0x80, 0);
  168. for (i=0; i<504; i++)
  169. {
  170. LCD_write_byte(0, 1);
  171. }
  172. }
  173. /*************************设置字符位置函数**************************/
  174. void LCD_set_XY(unsigned char X, unsigned char Y)
  175. {
  176. LCD_write_byte(0x40 | Y, 0);// column
  177. LCD_write_byte(0x80 | X, 0);// row
  178. }
  179. /*************************ASCII字符显示函数*************************/
  180. void LCD_write_char(unsigned char c)
  181. {
  182. unsigned char line;
  183. c -= 32;
  184. for (line=0; line<6; line++)
  185. {
  186. LCD_write_byte(font6x8[c][line], 1);
  187. }
  188. }
  189. /*******************************************************************/
  190. /*-------------------------------------------------
  191. LCD_write_english_String : 英文字符串显示函数
  192. 输入参数:*s :英文字符串指针;
  193. X、Y : 显示字符串的位置,x 0-83 ,y 0-5
  194. --------------------------------------------------*/
  195. void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
  196. {
  197. LCD_set_XY(X,Y);
  198. while (*s)
  199. {
  200. LCD_write_char(*s);
  201. s++;
  202. }
  203. }
  204. /******************************************************************/
  205. /*---------------------------------------------
  206. LCD_write_byte : 写数据到LCD
  207. 输入参数:data :写入的数据;
  208. command :写数据/命令选择;
  209. ---------------------------------------------*/
  210. void LCD_write_byte(unsigned char dat, unsigned char command)
  211. {
  212. unsigned char i;
  213. digitalWrite( LCD_CE, LOW); // 使能LCD_CE = 0
  214. if (command == 0)
  215. {
  216. digitalWrite( LCD_DC, LOW);// 传送命令 LCD_DC = 0;
  217. }
  218. else
  219. {
  220. digitalWrite( LCD_DC, HIGH);// 传送数据LCD_DC = 1;
  221. }
  222. for(i=0;i<8;i++)
  223. {
  224. if(dat&0x80)
  225. {
  226. digitalWrite( SDIN, HIGH);//SDIN = 1;
  227. }
  228. else
  229. {
  230. digitalWrite( SDIN, LOW);//SDIN = 0;
  231. }
  232. digitalWrite( SCLK, LOW);//SCLK = 0;
  233. dat = dat << 1;
  234. digitalWrite( SCLK, HIGH);//SCLK = 1;
  235. }
  236. digitalWrite( LCD_CE, HIGH);//LCD_CE = 1;
  237. }
  238. /******************************************************************/
  239. /*---------------------------------------------
  240. void LCD_write_hanzi : 汉字显示子函数
  241. 输入参数:row :写入汉字列 page :写入汉字行 row :写入汉字 ;
  242. ---------------------------------------------*/
  243. void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char dd) //row:列 page:页 dd:字符
  244. {
  245. unsigned char i;
  246. LCD_set_XY(row*8, page);// 列,页
  247. for(i=0; i<12;i++)
  248. {
  249. LCD_write_byte(hanzi12x16[dd],1);
  250. }
  251. LCD_set_XY(row*8, page+1);// 列,页
  252. for(i=12; i<24;i++)
  253. {
  254. LCD_write_byte(hanzi12x16[dd],1);
  255. }
  256. }
  257. void setup()
  258. {
  259. LCD_init();//初始化液晶
  260. LCD_clear();
  261. delay(10) ;
  262. }
  263. void loop()
  264. {
  265. LCD_write_hanzi(2,0,0) ;
  266. LCD_write_hanzi(4,0,1) ;
  267. LCD_write_hanzi(6,0,2) ;
  268. LCD_write_hanzi(8,0,3) ;
  269. delay(1000) ;
  270. }


Arduino实验场景图




实验开源图形编程



Arduino实验开源代码之四
  1. /*
  2. 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3. 实验一百一十三:蓝色诺基亚5110屏 LCD液晶屏模块 兼容3310 LCD
  4. 1、安装 "U8glib.h"库-工具-管理库-搜索-安装
  5. 2、项目测试 :简易数字示波器之二
  6. 3、模块接线
  7. Nokia 5110 Arduino
  8. RST 6
  9. CE 7
  10. DC 5
  11. DIN 4
  12. CLK 3
  13. VCC 5V
  14. BL 3V3
  15. GND GND
  16. */
  17. #include "U8glib.h"
  18. //U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
  19. U8GLIB_PCD8544 u8g(3, 4, 7, 5, 6); // SPI Com: clk = 3, din = 4, ce = 7, dc = 5, rst = 6
  20. int x, y;
  21. int v0, v1;
  22. int Buffer[84];//48*84的屏
  23. void setup() {
  24. analogReference(INTERNAL); //ADC使用单片机内部1.1V基准
  25. u8g.setContrast(100);//设置对比度0-255
  26. u8g.firstPage();
  27. do {
  28. u8g.setFont(u8g_font_helvB14);
  29. u8g.drawStr(0, 14, "V=");
  30. u8g.drawStr(26, 14, "12.34");
  31. u8g.drawStr(0, 30, "A=");
  32. u8g.drawStr(26, 30, "56.789");
  33. u8g.setFont(u8g_font_helvR08);
  34. u8g.drawStr( 0, 39, "T=");
  35. u8g.drawStr(10, 39, "12.34");
  36. u8g.drawStr(37, 39, "\260C");
  37. u8g.drawStr(52, 39, "fan on");
  38. } while ( u8g.nextPage() );
  39. delay(2000);
  40. }
  41. void loop( )
  42. {
  43. do {
  44. v0 = analogRead(A0);
  45. }
  46. while (v0 > 10);
  47. for (x = 0; x < 84; x++) //信号采样
  48. Buffer[x] = 31 - (analogRead(A0) >> 5);
  49. u8g.firstPage(); //清屏
  50. do//显示
  51. {
  52. for (x = 0; x < 83; x++)
  53. u8g.drawLine(x, Buffer[x], x, Buffer[x + 1]); //画相邻两点连线
  54. u8g.drawLine(42, 0, 42, 47); // 画坐标轴
  55. u8g.drawLine(0, 24, 84, 24);
  56. for (x = 0; x < 84; x += 21) //画坐标轴刻度
  57. u8g.drawLine(x, 23, x, 25);
  58. for (x = 0; x < 48; x += 8)
  59. u8g.drawLine(41, x, 43, x);
  60. u8g.drawFrame(0, 0, 84, 48); //画边框
  61. }
  62. while (u8g.nextPage( ));
  63. }

Arduino实验场景图

作者: 雕爷学编程, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3894459.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条