跳过主要内容

AN-1128 GreenPAK LCD Driver释放微控制器引脚

内容

参考文献

有关文件及软件,请浏览:

//www.wsdof.com/雷电竞官网登录products/greenpak

下载我们的免费GreenPAK设计软件[1],打开。gp文件[2],并使用GreenPAK开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。

雷竞技电竞平台Dialog Semiconductor提供了一个完整的应用笔记[4]库,包括设计示例以及Dialog IC内的功能和模块的说明。

  1. GreenPAK设计软件,软件下载和用户指南,Dialog Semiconductor雷竞技电竞平台
  2. AN-1128 GreenPAK LCD Driver free Microcontroller Pins.gp,绿派克设计文件,Dialog半导体雷竞技电竞平台
  3. GreenPAK开发工具, GreenPAK开发工具网页,Dialog半导体雷竞技电竞平台
  4. GreenPAK应用笔记,绿派克应用笔记网页,对话半导体雷竞技电竞平台
  5. SLG46620对话框数据表,半导体雷竞技电竞平台

介绍

在这个应用程序中,GreenPAK SLG46620V[5]被放置在Arduino Mega 2560的串行接口和LCD 2004A显示器之间。这种方法现在释放了8个微控制器引脚用于设计中的其他用途。此外,该电路可以适应其他LCD接口,只需通过单片机对LCD初始化进行微小的更改。

硬件原理图

顶层框图示意图如图1所示。

图1所示。硬件原理图

Arduino mega 2560 TX1引脚连接到SLG46620V引脚10。RW接地,使用LCD2004A只写模式。LCD亮度可通过电位器调节。SLG46620V与LCD 2004A的连接方式如下表所示

注意GreenPAK SLG46620V在LCD显示(2004A)和微控制器(Arduino mega 2560)之前需要开机。否则,LCD 2004A显示可能无法正常工作。

表1。LCD 2004A连接SLG46620V

老不

SLG46620V销

液晶2004年销

1

7

RS

2

8

E

3.

12

D0

4

13

D1

5

14

D2

6

15

D3

7

16

D4

8

17

D5

9

18

D6

10

19

D7

GreenPAK设计配置

在GreenPAK SLG46620V pin10接收到写在Arduino TX1引脚上的串行数据,将数据发送到SPI块MOSI输入。

到达SPI块的串行数据(总共10位,1开始位,8数据位和1停止位)被转换为并行位。设置SPI块的SCLK,使其匹配9600bps波特率。串行数据传输到GreenPAK时需要启动SCLK。当没有接收到数据时,SPI上有一个连续的高信号。

检测数据包的开始

无论何时从Arduino发送数据,位于包开始的起始位是低位,最先到达。

通过检测PIN 10处传入数据的下降边缘来识别到达的新包。

DLY0块被配置为检测输入的下降沿。当数据包到达时,P DLY0块设置它的输出高一个周期,然后设置DFF 0的输出高。

DFF 0的输出在924微秒(大约10个周期9600bps)后复位。

串行数据结束信号低启用SPI块nCSB输入。进入数据的第9个周期后,信号变高,SPI块被禁用。

图2。在GreenPAK中接收的串行数据

在SPI块中加载串行数据

锁存器(DFF 0)高输出也用于在SPI块的MOSI输入处加载串行数据。为了在SCLK中心附近存储串行数据,需要为SCLK输入9600bps半周期的延迟。9600bps的半周期对应的时间大约是52微秒。这个时间延迟是通过CNT6/DLY6将DFF 0的输出传递来实现的。

时钟使能信号确保计数器CNT2/DLY2不会开始计数,直到开始位到达。CNT2/DLY2输出然后时钟信号为SPI块(SCLK)。它帮助加载串行数据到SPI块,一旦10位周期完成,SPI块将串行数据转换为SPI并行输出块端口。

图3。P DLY0块属性

输出引脚数据

串行数据显示在SPI并行输出块引脚。它然后出现在输出引脚后通过闩锁。

由于有两个字节的数据从Arduino到达,我们需要解析数据,将其发送到不同的GreenPAK pin。为此,使用了一个mod 2同步计数器,它的输出为串行数据的每个周期(起始位)进行切换。

SPI并行输出块的并行引脚上的第一个串行数据包出现在pin7 (RS)和pin8 (E)上,第二个串行数据包出现在PIN12, 13…19 (D0, D1…D8)上。从下一个传入周期的数据将更新这些引脚后,每两个周期的串行数据。

图4。CNT5/DLY5和管道延迟0特性
图5。SPI并行输出模块引脚
图6。Mod 2数据解析计数器

液晶模块LCD2004A

LCD2004A有16个引脚。这是一个4行20个字符的基本显示。它采用HD44780并行接口芯片组。

GreenPAK SLG46620V的10个接口如表2所示。LCD的其他连接如下所示

表2。液晶2004的连接

老不

液晶2004年销

SLG46620V销

1

VSS

地面

2

VDD

5伏

3.

RW

地面

4

K

地面

5

一个

5伏

6

签证官/ v字形

锅中间销

图7。液晶2004的照片

结论

应用说明显示了如何使用单片机的单引脚通过GreenPAK SLG46620V与LCD2004A接口。LCD2004A使用的接口是8位的。其他LCD类型也可以进行类似配置。

这种设计的另一个重要方面是,液晶显示器可以与任何具有串行接口的其他设备(如PC)进行接口。设备必须能够发送数据字节来配置LCD模块,以便对LCD进行初始化,并在LCD显示上写入/清除数据。PC上的应用程序如:MATLAB, Hyper-terminal, Visual studio, LabVIEW, QT等可以用于此目的。

附录
液晶命令信使

为了从Arduino发送多个命令,使用命令信使库。Arduino串行接口窗口发送命令的数据格式为

  1. 0,列号,行号;

    包开头的数字“0”是行和列选择的标识符。这里的行号和列号不能分别超过3和19。

  2. 1、性格;

    选择行和列后,字符被写入指定的位置。包开头的数字“1”是写字符的标识符。字符写完后,光标自动移动到下一个位置。

    这里需要注意的是,用户写入的字符首先被转换成ASCII码,然后通过GreenPAK SLG46620V发送到LCD。

  3. 2、明确;

    为了清除LCD,数据包发送将以2(标识符)开始。文本“清除”后的标识符,然后清除LCD。

可以发送多个命令,命令之间用“;”隔开。用户按照上面列出的格式将数据写入Arduino IDE的串行监视器窗口。基于这些数据,通过Arduino mega 2560的Serial1 TX1引脚发送命令到GreenPAK SLG46620V。

有关命令信使的更多细节,请访问的链接

示例应用程序

数据写入、光标设置和LCD清除的示例应用显示在附随应用说明的视频中。

步骤1:

0, 2, 0;1、*;1、*;1、*;1、*;1、w;1, e;1, l;1、选c;1、不填; 1 , M ; 1 , E ; 1 , * ; 1 , * ; 1 , * ; 1 , * ;

在Arduino IDE的串行窗口中编写上述代码行。它将打印

欢迎* * * * * * * *

在LCD第一行的中心。

步骤2:

0, 5, 2;1、s;1、我;1, l;1, e;1, g;1、不填;1,。;1、选c; 1 , o ; 1 , m ;

在Arduino IDE的串行窗口中编写上述代码行。它将打印:

silego.com

在LCD的第三行中心。

步骤3:

2、清晰;

在Arduino IDE的串行窗口中写这一行。它将清除LCD。

Arduino Mega 2560编程

通过编程Arduino控制器向SLG46620V发送两个字节。然后,GreenPAK芯片将解析数据并使用它进行初始化、光标设置、LCD写入和LCD清除。

表3。从Arduino到SLG46620V的数据结构

1包

起始位

位1

位2

位3

位4

位5

位6

位7

位8

停止位

0

RS

E

x

x

x

x

x

x

1

2包

起始位

位1

位2

位3

位4

位5

位6

位7

位8

停止位

0

D0

D1

D2

D3

D4

D5

D6

D7

1

这两个数据包不断重复。Arduino和SLG46620V的波特率都被设置为9600bps。

Arduino代码中用到的三个主要功能是

  1. 液晶初始化

    LCD2004A通过保持RS和E位低初始化,然后发送数据字节为D0, D1..D8。然后设置E引脚的高和低来设置数据。

    从Arduino发送的命令顺序如下。这些是用于LCD 2004A的8位初始化。

    • RS低,串行1。write (0x30), E High, E low
    • Serial1。write (0x30), E High, E low
    • Serial1。write (0x30), E High, E low
    • Serial1。write (0x38), E High, E low
    • Serial1。write (0x08), E High, E low
    • Serial1。write (0x01), E High, E low
    • Serial1。write (0x06), E High, E low
    • Serial1。写入(0x0C), E高,E低

    有关LCD2004A初始化(8位模式)的更多细节,请访问的链接

  2. 液晶显示器清晰

    为了清除LCD显示,在数据位上写0x01。E引脚然后设置高和低,以清除LCD。

  3. 液晶写

    要在液晶显示器上书写特定字符,请先将RS引脚调高。然后在数据位上发送相应的ASCII码(Arduino IDE负责处理ASCII码,您只需要编写字符)。然后设置E引脚的高和低来写入LCD。

  4. 光标设置

    对于游标设置,一些特定的数字(如下表所示)被发送到数据位。然后设置E引脚的高和低来设置光标。

表4。LCD光标设置

行0

第1行

第二行

第三行

坳0

128

192

148

212

坳1

129

193

149

213

Col 2

130

194

150

214

坳3

131

195

151

215

坳4

132

196

152

216

坳5

133

197

153

217

坳6

134

198

154

218

坳7

135

199

155

219

坳8

136

200

156

220

卡扎菲9

137

201

157

221

坳10

138

202

158

222

坳11

139

203

159

223

坳12

140

204

160

224

坳13

141

205

161

225

坳14

142

206

162

226

坳15

143

207

163

227

坳16

144

208

164

228

坳17

145

209

165

229

坳18

146

210

166

230

卡扎菲19

147

211

167

231

LCD2004A的其他功能,如自动滚动,光标闪烁等,可以从其数据表类似地实现。