基于HD44780的字符型液晶显示模块接口的单片机实现

基于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)

RS

R/W

Operation

0

0

IR write as an internal operation(display clear, etc.)

0

1

Read busy flag(DB7) and address counter(DB0 to DB6)

1

0

DR write as an internal operation(DR to DDRAM or CGRAM)

1

1

DR read as an internal operation(DR to DDRAM or CGRAM to DR)

 

 

二、程序实现

 

编写程序之前,我们先要知道HD44780的字符代码和字模。

 

图2: 基本字符代码和字模(ROM Code:A00)



图2: 扩展的字符代码和字模(ROM Code:A02)


程序流程:





HD44780 指令

Instruction

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

Clear display

0

0

0

0

0

0

0

0

0

1

Return home

0

0

0

0

0

0

0

0

1

-

Entry mode set

0

0

0

0

0

0

0

1

I/D

S

Display on/off control

0

0

0

0

0

0

1

D

C

B

Cursor or display shift

0

0

0

0

0

1

S/C

R/L

-

-

Function set

0

0

0

0

1

DL

N

F

-

-

Set CGRAM address

0

0

0

1

CGRAM Address

Set DDRAM address

0

0

1

DDRAM Address

Read busy flag & address

0

1

BF

DDRAM Address

Write RAM

1

0

Write Data

Read RAM

1

1

Read Data

 

 

程序代码:(xiaobin演示之用)

__CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
	LIST	   P=16F84A
	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

 

电路图:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值