最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

HT1621程序

来源:动视网 责编:小OO 时间:2025-09-22 23:09:57
文档

HT1621程序

最近在做一个控制器开发时,要用液晶显示,由于要显示的内容较多,LCD是定做的,于是驱动就选择了HT1621。下面是我编的HT1621驱动程序,在此与大家分享#include#include#defineucharunsignedchar#defineuintunsignedint#define_Nop()_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()#defineBIAS0x52//0b1000010100101/3duty4co
推荐度:
导读最近在做一个控制器开发时,要用液晶显示,由于要显示的内容较多,LCD是定做的,于是驱动就选择了HT1621。下面是我编的HT1621驱动程序,在此与大家分享#include#include#defineucharunsignedchar#defineuintunsignedint#define_Nop()_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()#defineBIAS0x52//0b1000010100101/3duty4co
最近在做一个控制器开发时,要用液晶显示,由于要显示的内容较多,LCD是定做的,于是驱动就选择了HT1621。

下面是我编的HT1621驱动程序,在此与大家分享

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define _Nop() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()

#define BIAS 0x52 //0b1000 0101 0010 1/3duty 4com

#define SYSDIS 0X00 //0b1000 0000 0000 关振系统荡器和LCD偏压发生器

#define SYSEN 0X02 //0b1000 0000 0010 打开系统振荡器

#define LCDOFF 0X04 //0b1000 0000 0100 关LCD偏压

#define LCDON 0X06 //0b1000 0000 0110 打开LCD偏压

#define XTAL 0x28 //0b1000 0010 1000 外部接时钟

#define RC256 0X30 //0b1000 0011 0000 内部时钟

#define TONEON 0X12 //0b1000 0001 0010 打开声音输出

#define TONEOFF 0X10 //0b1000 0001 0000 关闭声音输出

#define WDTDIS 0X0A //0b1000 0000 1010 禁止看门狗

//HT1621控制位(液晶模块接口定义,根据自已的需要更改)

sbit HT1621_DAT=P3^4; //HT1621数据引脚

sbit HT1621_CS=P3^2; //HT1621使能引脚

sbit HT1621_WR=P3^3; //HT1621时钟引脚

uchar code Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

//delay us

void Delay(uchar us) //5,7,9

{

while(--us);

}

//delay ms

void DelayMS(uint iMs)

{

uint i,j;

for(i=0;ifor(j=0;j<65;j++) Delay(1);

}

/******************************************************

写数据函数,cnt为传送数据位数,数据传送为低位在前

*******************************************************/

void Ht1621Wr_Data(uchar Data,uchar cnt)

{

uchar i;

for (i=0;i{

HT1621_WR=0;

_Nop();

HT1621_DAT=Data&0x80;

_Nop();

HT1621_WR=1;

_Nop();

Data<<=1;

}

}

/********************************************************

函数名称:void Ht1621WrCmd(uchar Cmd)

功能描述: HT1621命令写入函数

全局变量:无

参数说明:Cmd为写入命令数据

返回说明:无

设 计 人:

版 本:1.0

说 明:写入命令标识位100

********************************************************/

void Ht1621WrCmd(uchar Cmd)

{

HT1621_CS=0;

_Nop();

Ht1621Wr_Data(0x80,4); //写入命令标志100

Ht1621Wr_Data(Cmd,8); //写入命令数据

HT1621_CS=1;

_Nop();

}

/********************************************************

函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)

功能描述: HT1621在指定地址写入数据函数

全局变量:无

参数说明:Addr为写入初始地址,Data为写入数据

返回说明:无

设 计 人:

版 本:1.0

说 明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位

********************************************************/

void Ht1621WrOneData(uchar Addr,uchar Data)

{

HT1621_CS=0;

Ht1621Wr_Data(0xa0,3); //写入数据标志101

Ht1621Wr_Data(Addr<<2,6); //写入地址数据

Ht1621Wr_Data(Data<<4,4); //写入数据

HT1621_CS=1;

_Nop();

}

/********************************************************

函数名称:void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt)

功能描述: HT1621连续写入方式函数

全局变量:无

参数说明:Addr为写入初始地址,*p为连续写入数据指针,

cnt为写入数据总数

返回说明:无

设 计 人:

版 本:1.0

说 明:HT1621的数据位4位,此处每次数据为8位,写入数据

总数按8位计算

********************************************************/

void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt)

{

uchar i;

HT1621_CS=0;

Ht1621Wr_Data(0xa0,3); //写入数据标志101

Ht1621Wr_Data(Addr<<2,6); //写入地址数据

for (i=0;i{

Ht1621Wr_Data(*p,8); //写入数据

p++;

}

HT1621_CS=1;

_Nop();

}

/********************************************************

函数名称:void Ht1621_Init(void)

功能描述: HT1621初始化

全局变量:无

参数说明:无

返回说明:无

设 计 人:

版 本:1.0

说 明:初始化后,液晶屏所有字段均显示

********************************************************/

void Ht1621_Init(void)

{

HT1621_CS=1;

HT1621_WR=1;

HT1621_DAT=1;

DelayMS(2000); //延时使LCD工作电压稳定

Ht1621WrCmd(BIAS);

Ht1621WrCmd(RC256); //使用内部振荡器

Ht1621WrCmd(SYSDIS);

Ht1621WrCmd(WDTDIS);

Ht1621WrCmd(SYSEN);

Ht1621WrCmd(LCDON);

}

void main()

{

uchar i,j,t;

Ht1621_Init(); //上电初始化LCD

DelayMS(1000); //延时一段时间

while(1){

Ht1621WrAllData(0,Ht1621Tab,16);//清除1621寄存器数据,暨清屏

for (i=0;i<32;i++)

{

t=0x01;

for (j=0;j<4;j++)

{

Ht1621WrOneData(i,t);

t<<=1;

t++;

P1_5=~P1_5;

DelayMS(5000);

}

}

}

}

文档

HT1621程序

最近在做一个控制器开发时,要用液晶显示,由于要显示的内容较多,LCD是定做的,于是驱动就选择了HT1621。下面是我编的HT1621驱动程序,在此与大家分享#include#include#defineucharunsignedchar#defineuintunsignedint#define_Nop()_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()#defineBIAS0x52//0b1000010100101/3duty4co
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top