跳到主要内容

AN-1128 GreenPak LCD驾驶员释放微控制器销

内容

参考

对于相关的文件和软件,请访问:

https://www.dialog-semicondoduments.c亚博电竞菠菜om/products/greenpak.

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

yabo国际娱乐对话框半导体提供完整的应用程序库注意[4],其中包含了设计示例以及对话框IC中的功能和块的说明。

  1. GreenPak Designer软件,软件下载和用户指南,对话框半导体yabo国际娱乐
  2. AN-1128 GreenPak LCD驾驶员释放微控制器PINS.GP,GreenPak设计文件,对话半导体yabo国际娱乐
  3. GreenPak开发工具,GreenPak开发工具网页,对话框半导体yabo国际娱乐
  4. GreenPak应用笔记,GreenPak应用笔记网页,对话框半导体yabo国际娱乐
  5. SLG46620数据表,对话框半导体yabo国际娱乐

介绍

在本申请中,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的连接

SR.no.

SLG46620V引脚

LCD 2004A PIN.

1

7.

卢比

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引脚10中接收到Arduino的TX1引脚上写入的串行数据,将数据发送到SPI块MOSI输入。

达到SPI块的串行数据(10位总,一个起始位,8个数据位和一个停止位)被转换为并行比特。设置SPI块的SCLK,以使其与9600bps的波特拉特匹配。当串行数据传输到GreenPak时,需要启动SCLK。当没有收到数据时,SPI存在连续的高信号。

检测数据包的开始

每当从Arduino发送数据时,就在数据包的开始时的起始位是低位,首先到达。

通过检测销10处的输入数据的下降沿来识别新的分组到达。

P DLy0块配置为检测输入的下降沿。每当数据包到达P DLy0块时,将其输出高为一个循环,然后将DFF 0的输出设置为高。

DFF 0的输出在924微秒(大约为9600bps)的时间后复位。

串行数据端信号低使SPI块NCSB输入启用。在输入数据的第9个周期之后,信号变为高电平,SPI块被禁用。

图2. GreenPak中收到的串行数据

在SPI块中加载串行数据

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

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

图3. p dly0块属性

输出引脚的数据

串行数据在SPI并联输出块引脚上呈现。然后通过锁存器后出现在输出引脚上。

由于从Arduino抵达了两个字节的数据,我们需要解析数据以将其发送到不同的GreenPak引脚。为此,使用MOD 2同步计数器,其输出为串行数据的每个周期(在起始位)切换。

SPI并联输出块的并行引脚处的第一个串行数据分组出现在引脚7(RS)和引脚8(E)上。串行数据的第二数据包出现在PIN12,13 ... 19(D0,D1 ... D8)上。下一个传入周期的数据将在每次串行数据的每次周期后更新这些引脚。

图4. CNT5 / DLY5和管道延迟0特性
图5. SPI并联输出块引脚
图6. DOM 2计数器用于数据解析

LCD模块LCD2004A

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

表2中列出了与GreenPak SLG4620V的10个连接。下面列出了LCD的其他连接

表2. LCD 2004A连接

SR.no.

LCD 2004A PIN.

SLG46620V引脚

1

vs.

地面

2

VDD.

5V.

3.

rw.

地面

4.

K.

地面

5.

一种

5V.

6.

vo / vee.

锅中夹

图7. LCD 2004A照片

结论

应用笔记显示了微控制器的单个引脚如何通过GreenPak SLG4620V与LCD2004A接口。用于LCD2004a的界面是8位。其他LCD类型也可以类似地配置。

该设计的另一个重要方面是LCD可以与具有串行接口的任何其他设备(如PC)接口。该设备必须能够发送数据字节来配置LCD模块,从而可以初始化LCD,并且在LCD显示屏上可以写入/清除数据。PC上的应用程序,如:MATLAB,超级终端,Visual Studio,LabVIEW,QT等可用于此目的。

附录
LCD命令信使

要从Arduino发送多个命令,使用命令Messenger库。从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 SLG4620V。

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

示例应用程序

数据写入的示例应用,光标集和LCD清除显示在应用笔记中的视频中显示。

第1步:

0,2,0;1,*;1,*;1,*;1,*;1,w;1,e;1,l;1,c;1,o; 1 , M ; 1 , E ; 1 , * ; 1 , * ; 1 , * ; 1 , * ;

在Arduino IDE的串行窗口中写下上面的行。它会打印

****欢迎****

在液晶第一线的中心。

第2步:

0,5,2;1,s;1,我;1,l;1,e;1,g;1,o;1,。;1,c; 1 , o ; 1 , m ;

在Arduino IDE的串行窗口中写下上面的行。它将打印:

Silego.com.

在LCD的第三行的中心。

第3步:

2,清晰;

在Arduino IDE的串行窗口中写下上面的行。它将清除液晶显示器。

Arduino Mega 2560编程

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

表3. Arduino到SLG46620V的数据结构

第一个数据包

开始钻头

第1位

第2位

第3位

位4.

第5位

第6位

第7位

第8位

拦住

0.

卢比

E.

X

X

X

X

X

X

1

第二包

开始钻头

第1位

第2位

第3位

位4.

第5位

第6位

第7位

第8位

拦住

0.

D0.

D1

D2

D3

D4

D5.

D6

D7

1

这两个数据包继续重复自己。Baudrate设置为Arduino和SLG46620V的9600bps。

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

  1. LCD初始化

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

    从Arduino发送的命令是下面给出的。这些是LCD 2004a的8位初始化。

    • Rs Low,Serial1.Write(0x30),E高,E低
    • Serial1.write(0x30),E高,E低
    • Serial1.write(0x30),E高,E低
    • serial1.write(0x38),E高,E低
    • Serial1.write(0x08),E高,E低
    • Serial1.write(0x01),E高,E低
    • Serial1.write(0x06),E高,E低
    • serial1.write(0x0c),e高,e低

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

  2. 液晶清晰

    要清除LCD显示,请在数据位上写入0x01。然后将E引脚设置为高且低,以清除LCD。

  3. LCD写道

    对于在LCD显示屏上写一个特定的字符,请先设置RS引脚。然后在数据位上发送相应的ASCII代码(Arduino IDE接受accii代码的关心,您必须只写字符)。然后将E引脚设置为高且较低以写入LCD。

  4. 光标集

    对于光标设置某些数字(如下表所示)将发送到数据位。然后将E引脚设置为高且较低以设定光标。

表4. LCD的光标设置

第0行

第1行

第2行

第3行

Col 0.

128.

192.

148.

212.

col 1

129.

193.

149.

213.

Col 2.

130.

194

150.

214.

Col 3.

131.

195.

151.

215.

Col 4.

132.

196.

152.

216.

COL 5.

133.

197

153.

217.

Col 6.

134.

198

154.

218.

Col 7.

135.

199.

155.

219.

Col 8.

136.

200.

156.

220.

Col 9.

137.

201.

157.

221.

COL 10.

138.

202.

158.

222.

COL 11.

139.

203.

159.

223.

Col 12.

140.

204.

160.

224.

Col 13.

141.

205.

161.

225.

Col 14.

142.

206.

162.

226.

COL 15.

143.

207.

163.

227.

Col 16.

144.

208.

164.

228.

Col 17.

145.

209.

165.

229.

Col 18.

146.

210.

166.

230.

Col 19.

147.

211.

167.

231.

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