产品详情
  • 产品名称:HT48 & HT46 MCU 对HT1621 的读写-- 使用C 语言

  • 产品型号:HT1621
  • 产品厂商:其它品牌
  • 产品文档:
你添加了1件商品 查看购物车
简单介绍:
HT1621 是一款128 个位元的LCD 控制器件,内部RAM 直接对应LCD 的显示单元。HT1621相应的软件使它适用于包括LCD 模块和显示子系统在内的多功能应用。主控制器与HT1621接口只需4 到5 根线。内置的省电模式极大的降低了功耗。本文介绍HT48R05A-1 单片机来控制HT1621,并介绍如何turn ON 及turn OFF LCD 所有位元。
详情介绍:

HT48 & HT46 MCU 对HT1621 的读写
--使用C 语言
文件编码:HA0103S
介绍:
HT1621 是一款128 个位元的LCD 控制器件,内部RAM 直接对应LCD 的显示单元。相应的软件使它适用于包括LCD模块和显示子系统在内的多功能应用。主控制器与HT1621接口只需4 到5根线。内置的省电模式极大的降低了功耗。本文介绍HT48R05A-1 单片机来控制HT1621,并介绍如何turn ON 及turnOFF LCD 所有位元。
应用说明:
对于HT1621,操作之前应该给它发送标志码,表明要求工作在哪种状态。标志的定义
如下表:
操作 状态 标志码
读 数据 110
写 数据 101
读-修改-写数据 101
控制 命令 100
为了点亮LCD,必须先给出两个控制指令:SYSTEM ENABLE 和LCD ON。SYSTEM
ENABLE 指令码是:10000000001X(X 为 Don’t care bit)。LCD ON指令码是:10000000011X
(X 为 Don’t care bit)。操作结束可以用SYSTEM DISABLE 来关闭LCD。
由于是串行通信,数据应该先出现在DATA INPUT 脚,然后给出一个写允许信号(WR),
输入一位数据,接着输入**位…直到全部写入。
对RAM 区不连续写数据过程如下:
1 0 1 A5 A4 A3 A2 A1 A0 D0 D1 D2 D3 结束位 下一过程
先发送标志码101,表明下面要进行写操作。然后发送地址码A5~A0,用D0~D3 指定
对应的位,就可以对LCD 相应的位元操作了。读的过程除了标志位不同,其余类似。
连续读写时,给出起始地址,操作结束地址自动加一。
例程:
本例介绍如何turn ON 及turn OFF LCD 全部位元。程序流程如下:
系统初始化→1621 启动→点亮LCD 全部位元→关闭HT1621
电路图:参照HT1621 的规格书
HT48 & HT46 MCU 对HT1621 的读写 – 使用C 语言

#include <ht48r05a-1.h>
#define uchar unsigned char
#define BIAS 0x24
#define SYSEN 0x01
#define LCDOFF 0x02
#define LCDON 0x03
#define cs _pa0
#define wr _pa2
#define dat _pa3
void SendBit_1621(uchar data,uchar cnt) //data 的高cnt位写入HT1621,高位在前
{
uchar i;
for(i =0; i <cnt; i ++)
{
if((data&0x80)==0) dat=0;
else dat=1;
wr=0;
_nop();
wr=1;
data<<=1;
}
}
void SendDataBit_1621(uchar data,uchar cnt) //data 的低cnt位写入HT1621,低位在前
{
uchar i;
for(i =0; i <cnt; i ++)
{
if((data&0x01)==0) dat=0;
else dat=1;
wr=0;
_nop();
wr=1;
data>>=1;
}
}
HT48 & HT46 MCU 对HT1621 的读写 – 使用C 语言

void SendCmd(uchar command)
{
cs=0;
SendBit_1621(0x80,3); //写入标志码"100"
SendBit_1621(command,9); //写入9 位数据,其中前8 位为command 命令,*后1 位任意
cs=1;
}
void Write_1621(uchar addr,uchar data)
{
cs=0;
SendBit_1621(0xa0,3); //写入标志码"101"
SendBit_1621(addr<<2,6); //写入6 位addr
SendDataBit_1621(data,4); //写入data 的低4 位
cs=1;
}
void WriteAll_1621(uchar addr,uchar *p,uchar cnt)
{
uchar i;
cs=0;
SendBit_1621(0xa0,3); //写入标志码"101"
SendBit_1621(addr<<2,6); //写入6 位addr
for(i =0; i <cnt; i ++,p++) //连续写入数据
{
SendDataBit_1621(*p,8);
}
cs=1;
}
void main()
{
uchar a[10];
a[0]=0x21;a[1]=0x43;a[2]=0x65;a[3]=0x87;a[4]=0xa9;
_pac=0; //将端口设为输出
SendCmd(BIAS); //设置偏压和占空比
SendCmd(SYSEN); //打开系统振荡器
SendCmd(LCDON); //打开LCD 偏压发生器
Write_1621(0x09,0x01); //在地址0x09 处写入数据0x01
WriteAll_1621(0,a,5); //在起始地址为0 处连续写入5 个字节数据
//a为写入数据的起始地址,5 为写入的字节数
SendCmd(LCDOFF); //关闭LCD 显示
}

 台湾合泰(Holtek)中国区技术支持电话,上海盛扬:021-64855560,深圳盛扬:0755-83465589,北京盛扬: 010-66410030 成都盛扬:028-66536590

标题:
内容:
联系人:
联系电话:
Email:
公司名称:
联系地址:
 
 
注:1.可以使用快捷键Alt+S或Ctrl+Enter发送信息!
2.如有必要,请您留下您的详细联系方式!