极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22439|回复: 8

如何更改lcd库文件引脚接线

[复制链接]
发表于 2015-12-20 23:08:36 | 显示全部楼层 |阅读模式
       买了一个lcd,给了对应引脚接线图,但是貌似是只能按照他们给的引脚去接,我想自己更改引脚,如下:
       比如,我想把LCD_D3接到mega的20引脚而不是3号引脚,如何更改呢,直接更改库文件吗,下面有卖家提供的库文件,里面我看了看,没有明显的LCD_D3后面接那个引脚的显示啊,倒是有LCD_RTS引脚更改的地方,求大神解答,如何更改lcd库文件引脚接线

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2015-12-21 08:01:04 | 显示全部楼层
之前用过“KEIL”改过底层的“XX.h”文件。
回复 支持 反对

使用道具 举报

发表于 2015-12-21 18:54:14 | 显示全部楼层
Adfruit_GFX,这个库算是Adfruit的LCD通用库,但是如果你要用它,就得同时下载一个与你的LCD相对应的库文件配套使用才可以的。
比如你要用NOKIA5110,就得下一个PCD8544的库。
所以,你得问一下你的LCD用的是什么驱动芯片,下载对应的库
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-21 19:31:31 | 显示全部楼层
wwwusr 发表于 2015-12-21 18:54
Adfruit_GFX,这个库算是Adfruit的LCD通用库,但是如果你要用它,就得同时下载一个与你的LCD相对应的库文件配 ...

用的是AdfruitTFT_LCD的库,ILI9341液晶驱动,2.4寸的屏幕,数字引脚在给的代码里没有,怎样自定义数字引脚输入呢

// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

// When using the BREAKOUT BOARD only, use these 8 data lines to the LCD:
// For the Arduino Uno, Duemilanove, Diecimila, etc.:
//   D0 connects to digital pin 8  (Notice these are
//   D1 connects to digital pin 9   NOT in order!)
//   D2 connects to digital pin 2
//   D3 connects to digital pin 3
//   D4 connects to digital pin 4
//   D5 connects to digital pin 5
//   D6 connects to digital pin 6
//   D7 connects to digital pin 7
// For the Arduino Mega, use digital pins 22 through 29
// (on the 2-row header at the end of the board).
回复 支持 反对

使用道具 举报

发表于 2015-12-22 04:12:25 | 显示全部楼层
如果你使用  328 的话,就不要改了,因为端口全用完了。

如果你使用  2560 的话,是可以改的。因为我无法下载这个库,所以只能拿  SSD_1306 的库做比喻。又因为不同的库分别由不同的人来写,库中的内容和风格也许大不相同,使用方法也就有所不同。

一般来说,一个 设备驱动 库文件 要适应不同的  MCU ,就要能在程序中修改各个驱动端口,你用的这个库也不应该有例外。下面我用 驱动  SSD_1306 OLED屏的库为例说一下。也许有错,不要照搬。

#include <Adafruit_GFX.h>             //  这是 Adafruit 的 通用 绘图 库文件,他要配合对应的 设备驱动库 一起工作,
                                                      // 不能单独使用。                                                         
#include <Adafruit_SSD1306.h>    // 这个是他能配合的设备驱动库文件,这个设备是 OLED 显示屏,型号是:SSD_1306,

// If using software SPI (the default case):    // 注释:如果你要使用 软件 SPI 通讯 驱动方式,那么就用下面的宏定义确定端口。
#define OLED_MOSI      9                            // 主出从入 数据端口,在这里修改数字 9 也就修改了 端口定义。
#define OLED_CLK       10                           // 下面几个都是。
#define OLED_DC        11
#define OLED_CS        12
#define OLED_RESET  13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);   // 这一句与库文件里的 类 相对应。

       上面括号里的 每一句都对应着 一个 端口号,就是上面的宏定义。他的顺序对应着 库文件里相应的语句。你的显示屏是8 位数据总线,数据端口号应该是  D0 --- D7, 应该还有类似  #define   LCD_D3     x   之类的语句, 这个  x   就是显示屏 数据端口 D3 要对应的 Arduino 的端口号,在你的程序里可能要定义成  #define   LCD_Dn     x  的形式,  Dn 指的是 D0 ---- D7 的某一个,是不是这个形式,我不确定,但是可以检验。打开你的设备驱动 库文件目录,你的帖子里提到是 AdfruitTFT_LCD   其下有一个子目录,...\examples \  这里有个示例文件,打开他, 有类似于上面提到的 长长的一串 宏定义,有一句注释语句说明了其下是端口定义,每一句宏定义后面的数字就是要对应的 Arduino 的 端口号, 因为我没有见到 库文件,按  Adafruit  官方的习惯做法,应该是这样,

      如果你的示例程序里不是这样,也不奇怪。比如  u8glib 库,他就把 会图库和 设备驱动库 放在了一块,只包含一个 u8glib.h  就行了,但是 在 示例程序里 的 样式 是一样的,比如:

#include "U8glib.h"

// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device

下面有 长长的 一串 设备驱动 列表,与你类似的有:(其实你的屏一定可以在库里找到)

//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 );                          // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16

去掉 u8glib 前面的 注释符 // ,这一句设备驱动 语句就起作用了,  // 8Bit Com: 后面的 符号 就是 对应端口的定义,但是他 D0 --- D7 对应的 端口号不能改,因为括号里没有选项,非要改的话就只能去库里改了。而  18, 17,19,,16 可以改,他的顺序和功能 由 他的注释里说明了。

按你说的,你使用  mega  ,他的端口非常多,D0----D7 就不要改了,但是其他端口最好改一下,因为它们使用了 模拟端口,A0 ---- A4 ,(这是在使用  328 芯片的不得已做法)。

如果 英语好的话,请到下述网站看看:

https://www.adafruit.com/products/1770
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-25 21:43:40 | 显示全部楼层
老来疯 发表于 2015-12-22 04:12
如果你使用  328 的话,就不要改了,因为端口全用完了。

如果你使用  2560 的话,是可以改的。因为我无法 ...

      谢谢大神细致的讲解,用c编程软件打开库文件,发现mega2560的D0~D7是22-29,CS、RS这些可以随时从arduino IDE上修改。现在依然不行,屏幕不会有显示,用led灯一格一格的测试,感觉有些接口接触不良,加个好友
      
回复 支持 反对

使用道具 举报

发表于 2015-12-27 01:23:35 | 显示全部楼层
我也是新手,不一定能解决你的问题。特别是不知道你的程序,不知道你的 硬件连接的情况下。更无从说起是哪的问题。

解决问题的思路:

1.  首先要确定 硬件是好的。
2.  用推荐的方法(用库文件推荐的例程)编译程序,通过后上传的目标板。看是否能正常点亮。
3.  如果能正常点亮再试着变动端口接法。

按顺序一步一步的做,确保上一步是正确的。

你的屏是彩色的,好像是可以用  SPI  直接驱动,这样就省了哪  8  根 数据接口。用  4  根线 就可以驱动了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-5 20:30:50 | 显示全部楼层
老来疯 发表于 2015-12-27 01:23
我也是新手,不一定能解决你的问题。特别是不知道你的程序,不知道你的 硬件连接的情况下。更无从说起是哪的 ...

初步估计是买的板子某些接口接触不良·····,用UNO板子就行,mega就是不行,o(︶︿︶)o 唉,既然这样,我就得用tx,rx通信,从mega采集数据传到UNO上,在通过UNO显示········谢谢你的回答,哥们
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-5 23:10:23 | 显示全部楼层
老来疯 发表于 2015-12-27 01:23
我也是新手,不一定能解决你的问题。特别是不知道你的程序,不知道你的 硬件连接的情况下。更无从说起是哪的 ...

初步估计是买的板子某些接口接触不良·····,用UNO板子就行,mega就是不行,o(︶︿︶)o 唉,既然这样,我就得用tx,rx通信,从mega采集数据传到UNO上,在通过UNO显示········谢谢你的回答,哥们
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 00:15 , Processed in 0.094770 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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