差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
文本lcd模块的控制 [2020/07/09 11:04]
zili
文本lcd模块的控制 [2020/07/09 13:13] (当前版本)
zili
行 13: 行 13:
   * RS:寄存器选择,0表示命令字节,1表示数据字节。   * RS:寄存器选择,0表示命令字节,1表示数据字节。
 \\ \\
-大多数LCD模块都基于HD44780芯片或兼容的。查[[https://​en.wikipedia.org/​wiki/​Hitachi_HD44780_LCD_controller|Wikipedia]]以获取更多信息。+大多数LCD模块都基于HD44780芯片或兼容的。查[[https://​en.wikipedia.org/​wiki/​Hitachi_HD44780_LCD_controller|Wikipedia]]以获取更多信息。 
 +\\
  
 +\\
 ####​7位设计 ####​7位设计
-让我们FPGA板驱动LCD模块。\\+让我们FPGA板驱动LCD模块。\\
 这是我们设计的框图: 这是我们设计的框图:
 {{ ::​lcdmodule.gif |}} {{ ::​lcdmodule.gif |}}
行 44: 行 46:
 </​code>​ </​code>​
  
-我们从不读取LCD模块,因此R / W线接地。\\+我们从不读取LCD模块,所以R / W线接地。\\
 \\ \\
 最后一个麻烦是“ E”信号需要长时间激活,即220ns。从FPGA的角度来看,这很长,因为我使用的是25MHz时钟(周期为40ns)。因此,“ E”至少需要驱动5.5个时钟。在这里,我们使用一个计数器对时钟进行计数,将其驱动7个时钟。\\ 最后一个麻烦是“ E”信号需要长时间激活,即220ns。从FPGA的角度来看,这很长,因为我使用的是25MHz时钟(周期为40ns)。因此,“ E”至少需要驱动5.5个时钟。在这里,我们使用一个计数器对时钟进行计数,将其驱动7个时钟。\\
行 65: 行 67:
 HDL设计在[[https://​www.fpga4fun.com/​files/​LCDmodule.zip|这里]]。\\ HDL设计在[[https://​www.fpga4fun.com/​files/​LCDmodule.zip|这里]]。\\
  
-####​该软件 
 \\ \\
-我们初始化LCD并发送一些要显示的数据。+####​软件方面 
 +我们对LCD进行初始化并发送一些要显示的数据。
 {{ ::​lcd_hello.jpg |}} {{ ::​lcd_hello.jpg |}}
 \\ \\
-是初始化LCD模块并显示“ hello”的C代码。+以下是初始化LCD模块并显示“ hello”的C代码。
  
 <code verilog> <code verilog>
行 93: 行 95:
 } }
 </​code>​ </​code>​
 +\\
 +完整的代码在[[https://​www.fpga4fun.com/​files/​LCDmodule_com.zip|这里]]。\\
  
-完整的代码在这里。 +要获取有关HD44780指令集的更多信息,[[http://​www.doc.ic.ac.uk/​~ih/​doc/​lcd/​instruct.html|请在此处检查]]\\ 
- +\\
-要获取有关HD44780指令集的更多信息,请在此处检查。+
  
-8位设计 +####8位设计 
-主要缺点是较早的设计是我们仅向LCD数据总线发送7位。这是一个问题,因为无法再使用LCD模块的设置DD RAM地址命令。+主要缺点是较早的设计是我们仅向LCD数据总线发送7位。这是一个问题,因为无法再使用LCD模块的设置DD RAM地址命令。\\
  
-一种简单的解决方法是使用转义符。我们选择了字符0x00。+一种简单的解决方法是使用转义符。我们选择了字符0x00。\\
  
 新协议如下: 新协议如下:
- +  * 要发送命令字节,请在其前面加上0x00。 
-要发送命令字节,请在其前面加上0x00。 +  ​* ​要发送数据字节,只需发送它,不需要前缀。 
-要发送数据字节,只需发送它,不需要前缀。+\\
 新的C代码是: 新的C代码是:
  
行 139: 行 142:
 } }
 </​code>​ </​code>​
 +\\
 新的HDL代码如下所示: 新的HDL代码如下所示:
  
行 180: 行 183:
 endmodule endmodule
 </​code>​ </​code>​
 +\\
 HD44780规范显示,“ E”变低后,“ RS”必须在10ns内有效。因此,您会注意到这里“ E”仅被驱动6个时钟,并且“ LCD_instruction”标志仅在时钟7之后被复位,以提供25ns的空间。\\ HD44780规范显示,“ E”变低后,“ RS”必须在10ns内有效。因此,您会注意到这里“ E”仅被驱动6个时钟,并且“ LCD_instruction”标志仅在时钟7之后被复位,以提供25ns的空间。\\
 +{{ ::​lcdmodule_waveform2.gif |}}
 \\ \\
  
-##​那就是所有人!轮到您尝试了。+\\ 
 + 
 +**That'​s all folks!轮到您尝试了。** 
 +