
基于HD44780的LCD的实现—4Bit 接口前言HD44780是点阵式的LCD控制器它能显示英文字母、阿拉伯数字、日文片假名和一般性的符号。微处理器可以使用2种方式来驱动他4-bit或者8-bit。下面是HD44780的组成图xiaobin网上有许多基于8-bit的文章我们主要介绍的是另外的一种实现方式4-bit一、简介针对上面的组成图我们做一简单介绍。详细信息请参见HD44780的数据手册。1.1 寄存器HD44780有两个8位寄存器他们分别是指令寄存器IR和数据寄存器DR。IR寄存器存储指令代码比如显示清除、光标移动、显示数据RAMDDRAM和字符生成器RAMCGRAM的地址信息。对于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当BF1时表明HD44780在进行内部操作。BF的输出在DB7口。1.3 地址累加器AC当一个指令把地址信息写到IR则IR发送这个信息给AC。之后写到或读DDRAM或CGRAMAC是自动累加1的。AC的输出DB0至DB6表1 寄存器选择Register SelectionRSR/WOperation00IR write as an internal operation(display clear, etc.)01Read busy flag(DB7) and address counter(DB0 to DB6)10DR write as an internal operation(DR to DDRAM or CGRAM)11DR read as an internal operation(DR to DDRAM or CGRAM to DR)二、程序实现编写程序之前我们先要知道HD44780的字符代码和字模。图2: 基本字符代码和字模ROM CodeA00图2: 扩展的字符代码和字模ROM CodeA02程序流程HD44780 指令InstructionRSR/WDB7DB6DB5DB4DB3DB2DB1DB0Clear display0000000001Return home000000001-Entry mode set00000001I/DSDisplay on/off control0000001DCBCursor or display shift000001S/CR/L--Function set00001DLNF--Set CGRAM address0001CGRAM AddressSet DDRAM address001DDRAM AddressRead busy flag address01BFDDRAM AddressWrite RAM10Write DataRead RAM11Read Data程序代码(xiaobin演示之用)__CONFIG _CP_OFF _WDT_OFF _PWRTE_ON _XT_OSC LIST P16F84A INCLUDE P16F84A.INC CBLOCK 0x0C ENDC ORG 0x00 Begin 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电路图参考An587How to control a HD44780-based Character-LCD