资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
HA0018s 1HT48 MCU 对对 HT1621 LCD 控制器的使用控制器的使用 作作 者者:盛扬半导体(上海)有限公司软件部 介绍:介绍: HT1621 是一款 128 个位元的 LCD 控制器件,内部 RAM 直接对应 LCD 的显示单元。相应的软 件使它适用于包括 LCD 模块和显示子系统在内的多功能应用。主控制器与 HT1621 接口只需 4 到 5 根线。内置的省电模式极大的降低了功耗。本文介绍用 HT48R30A-1 单片机来控制 HT1621,并介绍 如何点亮及清除 LCD 所有位元。 原理:原理: 对于 HT1621, 操作之前应该给它发送标志码, 表明要求工作在哪种状态。 标志码的定义如下表: 操作 状态 标志码 读 数据 110 写 数据 101 读-修改-写数据 101 控制 命令 100 为了点亮 LCD,必须先给出两个控制指令:SYSTEM ENABLE 和 LCD ON。SYSTEM ENABLE 指令码是: 10000000001X(X 為 Dont care bit) 。LCD ON 指令码是:10000000011X(X 為 Dont care bit)。操 作结束可以用 SYSTEM DISABLE 来关闭 LCD。 由于是串行通信,数据应该先出现在 DATA INPUT 脚,然后给出一个写允许信号(WR),输入一 位数据,接着输入第二位直到全部写入。 对 RAM 区不连续写数据过程是这样的: 1 0 1 A5 A4 A3A2 A1 A0D0D1 D2D3结束位下一个过程 先发送标志码 101,表明下面要进行写操作。然后发送地址码 A5A0,用 D0D3 指定对应的位,就 可以对 LCD 相应的位元操作了。读的过程除了标志位不同,其余类似。 连续读写时,给出起始地址,操作结束地址自动加一。 例程:例程: 本例介绍如何点亮和清除 LCD 全部位元。程序流程如下: 系统初始化?1621 启动?清除 LCD 全部位元?点亮 LCD 全部位元?读出某一单元的值进行比较? 系统初始化 电路图电路图:参照 HT1621 的规格说明书 ;1621driver.asm ;这个程序是用 HT48R30A-1 去控制 HT1621 ;控制口的结构: ; PB1 - datum ; PB2 - WRB ; PB3 - CSB ; PB4 - RDB ; OSC : Ext. Crystal HA0018s 2; WDT clock source: Disable WDT ; input type PA: Sshmitt Trigger ; Pull-high PA: Pull-high PA ; Pull-high PB: Pull-high PB ; BZ/BZB : BZ ENABEL/BZB DISABLE ; Fsys: 4M ;注意:在写程序时,时序一定要给正确 include ht48r30a-1.inc csb equ pb.3 csbc equ pbc.3 wrb equ pb.2 wrbc equ pbc.2 datum equ pb.1 datumc equ pbc.1 rdb equ pb.4 rdbc equ pbc.4 lig equ pc.3 ;- num_mem equ 7fh ;- ;宏定义 ;延迟宏, 延迟 5 微秒 d_1 macro jmp $+1 jmp $+1 nop endm ;- lcddriver .section data count db ? ;用作记录循环次数 code_datum db ? ;command code or memory datum bits code_datum1 db ? ;only used in read_modify_write mode mem_addr db ? ;memorty address for selecting segment temp_da db ? t_addr_h db ? ;just a buffer ;- lock .SECTION CODE org 00h HA0018s 3jmp start org 04h reti org 08h reti start: clr pb ;Initial set csb clr pbc set pbc.0 clr pc clr pcc clr intc mov a, 50h mov num_mem, a mov a, 20h mov mp0, a clr_ram: ;initial ram clr r0 inc mp0 sdz num_mem jmp clr_ram ;- ini_status: mov a, 87h mov tmrc, a show_k: set lig mov a, 01h ;SYS ENABLE mov code_datum, a call send_command LO: mov a, 029h ;4com;1/3bias mov code_datum, a call send_command mov a, 3 ;LCD On mov code_datum, a HA0018s 4call send_command call clr_lcm ;cls lcd jmp $+1 jmp $+1 call show_lcm ;light all dots clr code_datum ;reading then writing in the same address mov a, 4 mov mem_addr, a call read mov a, 07h xor a, code_datum snz z jmp error mov a, 2 mov code_datum, a call send_command jmp $+1 jmp start ;do it repeat error: jmp $ ;* ;Purpose : send command ;Parameter: ; code_datum : byte ;Return : none ;Modified : acc, status ; send_command proc clr CSB clr datumC set datum clr WRB ;COMMAND ID 100 d_1 set WRB ;1 nop clr datum ;00 clr WRB d_1 set WRB nop HA0018s 5CLR WRB d_1 set WRB mov A, 8 ; send code mov count, A LOOP1: clr datum sz code_datum.7 set datum rl code_datum clr WRB d_1 set WRB sdz count jmp loop1 clr WRB d_1 set WRB nop set CSB ;close csb signal,not selecting the chip ret send_command endp ;- ;Purpose : write datum to 1621 ;Parameter: ; code_datum : byte ; mem_addr : byte ;Return : none ;Modified : acc, status ; write: clr CSB clr datumc set datum clr WRB ;WRITE mode ID 101 d_1 set WRB clr datum clr WRB HA0018s 6d_1 set WRB set datum clr WRB d_1 set WRB mov a, 6 mov count, a writeloop1: clr datum sz mem_addr.5 ;sending memory address for selecting segment set datum clr WRB d_1 set WRB rl mem_addr sdz count jmp writeloop1 mov a, 4 mov count, a writeloop2: clr datum sz code_datum.0 ;sending memory content for deciding commentss state set datum clr WRB d_1 set WRB rr code_datum sdz count jmp writeloop2 set CSB ret ;- ;Purpose : read datum from 1621 ;Parameter: ; mem_addr : byte ;Return : ; code_datum : byte ;Modified : acc, status ; HA0018s 7read proc clr CSB clr datumc set datum clr WRB ;READ mode ID 110 d_1 set WRB clr WRB d_1
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号