极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: eagler8

【Arduino】108种传感器模块系列实验(117)--- 5110液晶屏模块

[复制链接]
 楼主| 发表于 2019-9-20 15:13:03 | 显示全部楼层
  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);
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-20 15:18:08 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-20 16:20:53 | 显示全部楼层
  1. /*
  2. 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3. 实验一百一十七:诺基亚Nokia5110蓝色液晶  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. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-20 16:25:36 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-20 18:03:19 | 显示全部楼层
  1. /*
  2. 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3. 实验一百一十七:诺基亚Nokia5110蓝色液晶  LCD液晶屏模块 兼容3310 LCD
  4. 1、安装“LCD5110_Basic”库(下载链接 http://www.rinkydinkelectronics.com/no_deep_linking.php?file=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][i],1);
  250.         }
  251.         
  252.     LCD_set_XY(row*8, page+1);// 列,页
  253.         for(i=12; i<24;i++)
  254.         {
  255.                 LCD_write_byte(hanzi12x16[dd][i],1);
  256.         }        
  257. }

  258. void setup()
  259. {
  260.   LCD_init();//初始化液晶     
  261.   LCD_clear();
  262.   delay(10) ;
  263. }
  264. void loop()
  265. {
  266.   LCD_write_hanzi(2,0,0) ;
  267.   LCD_write_hanzi(4,0,1) ;
  268.   LCD_write_hanzi(6,0,2) ;
  269.   LCD_write_hanzi(8,0,3) ;
  270.   delay(1000) ;
  271. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-20 18:06:18 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-20 18:07:32 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-20 18:52:14 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-20 18:53:36 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 18:44 , Processed in 0.044382 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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