基于HD44780的LCD的实现 —4Bit 接口
前言HD44780是点阵式的LCD控制器,它能显示英文字母、阿拉伯数字、日文片假名和一般性的符号。微处理器可以使用2种方式来驱动他4-bit或者8-bit。
下面是HD44780的组成图(xiaobin) 网上有许多基于8-bit的文章,我们主要介绍的是另外的一种实现方式:4-bit
一、简介针对上面的组成图,我们做一简单介绍。详细信息请参见HD44780的数据手册。 1.1 寄存器HD44780有两个8位寄存器,他们分别是指令寄存器(IR)和数据寄存器(DR)。
IR寄存器存储指令代码,比如显示清除、光标移动、显示数据RAM(DDRAM)和字符生成器RAM(CGRAM)的地址信息。对于MPU来说IR寄存器是只写的。
DR把暂存数据写入DDRAM或CGRAM以及从DDRAM或CGRAM中读取暂存数据。MPU写入数据到DR时,DR会使用内部操作自动写入数据到DDRAM或CGRAM。DR已同样的方式从DDRAM或CGRAM中读取数据。当写入的地址信息是指向IR的时候,数据是DR从DDRAM或CGRAM中读取的。也就是说,我们无论是发送命令,还是发送数据,存储这些信息的是DDRAM或CGRAM。
我们使用的外部接口RS就是来做选择寄存器的。是使用IR,还是DR。这决定了,我们发送过去的信息是命令还是显示数据。
1.2 忙标志(BF)当BF=1时,表明HD44780在进行内部操作。BF的输出在DB7口。
1.3 地址累加器(AC)当一个指令把地址信息写到IR,则IR发送这个信息给AC。
之后写到(或读)DDRAM或CGRAM,AC是自动累加1的。AC的输出DB0至DB6
表1 寄存器选择(Register Selection)
二、程序实现
编写程序之前,我们先要知道HD44780的字符代码和字模。
图2: 基本字符代码和字模(ROM Code:A00) 图2: 扩展的字符代码和字模(ROM Code:A02) 程序流程: HD44780 指令
程序代码:(xiaobin演示之用) __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC LIST P=16F84A INCLUDE <P16F84A.INC> CBLOCK 0x0C ENDC ORG 0x00Begin call LCD_Init movlw 'H' call LCD_Write movlw 'e' call LCD_Write movlw 'l' call LCD_Write movlw 'l' call LCD_Write movlw 'o' call LCD_Write sleep END
电路图: |
|