HT1621B 通用程序集锦文档格式.docx

上传人:b****3 文档编号:7961093 上传时间:2023-05-09 格式:DOCX 页数:9 大小:17.48KB
下载 相关 举报
HT1621B 通用程序集锦文档格式.docx_第1页
第1页 / 共9页
HT1621B 通用程序集锦文档格式.docx_第2页
第2页 / 共9页
HT1621B 通用程序集锦文档格式.docx_第3页
第3页 / 共9页
HT1621B 通用程序集锦文档格式.docx_第4页
第4页 / 共9页
HT1621B 通用程序集锦文档格式.docx_第5页
第5页 / 共9页
HT1621B 通用程序集锦文档格式.docx_第6页
第6页 / 共9页
HT1621B 通用程序集锦文档格式.docx_第7页
第7页 / 共9页
HT1621B 通用程序集锦文档格式.docx_第8页
第8页 / 共9页
HT1621B 通用程序集锦文档格式.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

HT1621B 通用程序集锦文档格式.docx

《HT1621B 通用程序集锦文档格式.docx》由会员分享,可在线阅读,更多相关《HT1621B 通用程序集锦文档格式.docx(9页珍藏版)》请在冰点文库上搜索。

HT1621B 通用程序集锦文档格式.docx

sbitLED=P2^0;

sbitCS=P2^7;

sbitWRD=P2^6;

sbitDATA=P2^5;

#defineucharunsignedchar

#defineuintunsignedint

voidSENDBYTE(uchardat);

voidSENDBIT(uchardat,ucharbitcnt);

/***************************延时子函数******************************/

voiddelay1s() 

//延时1S

{

uchari;

uintj;

for(i=0;

i<

10;

i++)

for(j=0;

j<

1300;

j++);

}

/**************************HT1621B初始化****************************/

voidSTART_HT1621() 

//初始化HT1621

CS=1;

WRD=1;

DATA=1;

//delay();

_NOP();

CS=0;

WRD=0;

/*************************发送命令子函数A***************************/

voidSENDCOMA(ucharcom) 

//发送命令A,ID=100+0

START_HT1621();

SENDBIT(0X80,4);

SENDBYTE(com);

/*************************发送命令子函数B***************************/

voidSENDCOMB(ucharadr) 

//发送命令B,发送显示数据

//HT1621初始化

SENDBIT(0XA0,4);

//发送写数据ID:

101+6位LCD之RAM地址第1位

SENDBIT(adr,5);

//然后发送地址后5位

/*************************发送命令子函数C***************************

voidSENDCOMC(ucharcom) 

//发送命令C,ID=100+1

SENDBIT(0X90,4);

/***********************按位发送数据子函数**************************/

voidSENDBIT(uchardat,ucharbitcnt) 

//按位发送数据

bitcnt;

{

if((dat&

0x80)==0X00) 

//从最高位发送

DATA=0;

else

DATA=1;

//delay();

_NOP();

WRD=1;

//在WRD的上升沿,数据写入HT1621B

WRD=0;

dat=dat<

<

1;

}

/*************************发送字节数据子函数************************/

voidSENDBYTE(uchardat) 

//发送字节数据

SENDBIT(dat,8);

/***************************LCD显示子函数***************************/

voiddisplay(uchardat) 

//LCD显示

SENDCOMB(0X00);

//从RAM的0X00地址开始放入数据

SENDBYTE(dat);

for(i=0;

2;

SENDBYTE(dat);

//从SEG0开始显示数据

/*************************HT1621B初始化设置*************************/

voidSETUP_HT1621() 

//HT1621偏压、背极、工作方式设置

SENDCOMA(BIAS);

SENDCOMA(RC256);

SENDCOMA(SYSEN);

delay1s();

SENDCOMA(LCDON);

SENDCOMA(WDTDIS1);

SENDCOMA(TIMERDIS);

}

/*******************************主函数******************************/

main() 

//主函数

LED=1;

SETUP_HT1621();

while

(1)

display(0XFF);

//全显示

各位大牛下午好,我用STC12C5204单片机控制1621驱动液晶

程序调了几天都没进展,显示的不知道什么乱七八糟的东西,好像命令根本写不进去,COM0和com1是个1v不到的电平,com3为3点几V的电平,com4有时有波形

刷我自己写的程序就是这个样子,SEGMENT一部分有波形,其余就是一个电平

打电话咨询合泰技术,让我搞他们的范例,于是我修改了下,还是老样子

大家帮我看看是什么问题,谢谢了

下面的就是从合泰网上下的范例,我稍微修改了下,基本是原封不动的

//STC12C5204AD单片机控制HT1621B驱动LCD

STC12C52XXAD.h>

stdio.h>

#defineBIAS0X52 

 

//1/3偏压,4背极

#defineRC256K0X30 

//时基输出禁止

//关闭系统时钟和偏压发生器

//打开LCD偏压发生器

#defineLCDOFF0X04 

//关闭LCD偏压发生器

#defineTONEON 

0X12 

//打开音频输出

#defineTONEOFF0X10 

//关闭音频输出 

#defineCSP3_2

#defineWRP3_4

#defineDATAP3_5

voiddelay(uchari) 

//j=12延时约4.3us

while(i--)

ucharj=0;

while(j<

8)

j++;

voidSendBit_1621(uchardat,ucharcnt)

for(i=0;

i<

cnt;

i++)

if((dat&

0x80)==0)

DATA=0;

elseDATA=1;

WR=0;

delay

(2);

WR=1;

dat=dat<

voidSendDataBit_1621(uchardat,ucharcnt)

0x01)==0)DATA=0;

dat=dat>

>

voidSendCmd(ucharcommand)

_nop_();

SendBit_1621(0x80,4);

SendBit_1621(command,8);

voidWrite_1621(ucharaddr,uchardat)

SendBit_1621(0xa0,3);

SendBit_1621(addr,6);

SendDataBit_1621(dat,4);

voidWriteAll_1621(ucharaddr,uchar*p,ucharcnt)

i++,p++)

SendDataBit_1621(*p,8);

uchara[10];

a[0]=0xFF;

a[1]=0xFF;

a[2]=0xFF;

a[3]=0xFF;

a[4]=0xFF;

a[5]=0xFF;

a[6]=0xFF;

a[7]=0xFF;

a[8]=0xFF;

a[9]=0xFF;

a[10]=0xFF;

a[11]=0xFF;

a[12]=0xFF;

a[13]=0xFF;

a[14]=0xFF;

a[15]=0xFF;

SendCmd(BIAS);

SendCmd(SYSEN);

SendCmd(LCDON);

//SendCmd(RC256K);

WriteAll_1621(0,a,16);

//SendCmd(LCDOFF);

LCD驱动程序适用于HT1621

//=============================================================================

#defineLcd_Delay_nop_();

_nop_()

void 

Lcd_Data(ucharStart,ucharcData)

//将数据当中的字节与LCD上的进行同步

//Start 

--要开始同页面地址,每个页面为4个有效位,总其为32X4字节

//Length 

--要同步的页面数量

uchari;

LCD_CS=0;

Lcd_Delay;

//SendID101B

LCD_CLK=0;

LCD_IO=1;

LCD_CLK=1;

LCD_IO=0;

//SendAddress6bit

Start=Start*2;

for(i=0;

6;

if(Start&

0x20)LCD_IO=1;

elseLCD_IO=0;

Start=Start<

//Senddata8bit

8;

if(cData&

0x01)LCD_IO=1;

cData=cData>

LCD_CS=1;

Lcd_Command(ucharCommand)

//向指定的LCD当中写入一个命令

//每个命令应以100三个位为起始,命令长度为9位,实际有效位为8位,因此在最后补一个0

//LcdSelect--LCD的片选确定,取值为0,1,2

//Command----要写入的8位命令

//SendID100B

if(Command&

0x80)LCD_IO=1;

Command=Command<

///最后补一个0

Lcd_Refresh(void) 

//重新对LCD进行刷屏

LCD_BUFF_MAX;

Lcd_Data(i,lcd.buff[i]);

Lcd_Cls(void)//清空LCD显示区

//功能:

清空LCD显示区

//返值:

//入口:

cSelectIcLCD的片选,取值为0,1,2

lcd.buff[i]=0;

Lcd_Refresh();

Lcd_Init(void)//初始化LCD,二个屏都进行处理,同时进行清屏

Lcd_Command(0x00);

//控制器掉电(控制字)

Lcd_Command(0x02);

//控制器液晶关闭(控制字)

Lcd_Command(0x18);

//初始化LCD控制器

Lcd_Command(0x01);

//控制器上电(控制字)

Lcd_Command(0x03);

//控制器液晶显示(控制字)

Lcd_Command(0x29);

//控制器液晶模式1/3BAIS1/4DUTY(控制字)

Lcd_Cls();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2