HT1621B通用程序集锦.docx

上传人:b****5 文档编号:6487884 上传时间:2023-01-07 格式:DOCX 页数:13 大小:98.57KB
下载 相关 举报
HT1621B通用程序集锦.docx_第1页
第1页 / 共13页
HT1621B通用程序集锦.docx_第2页
第2页 / 共13页
HT1621B通用程序集锦.docx_第3页
第3页 / 共13页
HT1621B通用程序集锦.docx_第4页
第4页 / 共13页
HT1621B通用程序集锦.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

HT1621B通用程序集锦.docx

《HT1621B通用程序集锦.docx》由会员分享,可在线阅读,更多相关《HT1621B通用程序集锦.docx(13页珍藏版)》请在冰豆网上搜索。

HT1621B通用程序集锦.docx

HT1621B通用程序集锦

 

*****************AT89C51

单片机控制HT1621B驱动LCD*********************

全显示程序)

**/

#include

#include

#define

BIAS0X50

//1/2偏压,4背极

//#define

RC2560X30

//系统时钟选择为片内RC振荡器

#define

RC2560X38

#define

WDTDIS10X0A

//禁止WDT溢出标志输出

#define

TIMERDIS0X08

//时基输出禁能

#define

SYSEN0X02

//打开系统时钟

#define

LCDON0X06

//打开偏压发生器

#define

SYSDIS0X00

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

#define_NOP()_nop_()sbitLED=P2^0;

sbitCS=P2^7;

sbitWRD=P2^6;

sbitDATA=P2^5;

#defineucharunsignedchar

#defineuintunsignedintvoidSENDBYTE(uchardat);

voidSENDBIT(uchardat,ucharbitcnt);

voiddelay1s()

//延时1S

{

uchari;

uintj;

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

}

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

{

CS=1;

WRD=1;

DATA=1;//delay();_NOP();

CS=0;

CS=0;

WRD=0;

WRD=0;

 

START_HT1621();

SENDBIT(0X80,4);

SENDBYTE(com);

}

发送命令子函数

B*************************

**/

voidSENDCOMB(ucharadr)

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

START_HT1621();

//HT1621初始化

SENDBIT(0XA0,4);

//发送写数据ID:

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

SENDBIT(adr,5);

//然后发送地址后5位

/**

{

START_HT1621();

SENDBIT(0X90,4);

SENDBYTE(com);

}

voidSENDBIT(uchardat,ucharbitcnt)//按位发送数据

{

uchari;

dat=dat<<1;

}

SENDBIT(dat,8);

uchari;

SENDBYTE(dat);

SENDBYTE(dat);

}

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

voidSETUP_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有时有波形

刷我自己写的程序就是这个样子,SEGMEN一T部分有波形,其余就是一个电平打电话咨询合泰技术,让我搞他们的范例,于是我修改了下,还是老样子大家帮我看看是什么问题,谢谢了下面的就是从合泰网上下的范例,我稍微修改了下,基本是原封不动的

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

//关闭LCD偏压发生器

//打开音频输出

//关闭音频输出

延时子函数

#include#include#include

#defineBIAS0X52#defineRC256K0X30#defineWDTDIS10X0A#defineTIMERDIS0X08#defineSYSEN0X02#defineSYSDIS0X00#defineLCDON0X06#defineLCDOFF0X04#defineTONEON0X12#defineTONEOFF0X10#defineCSP3_2

#defineWRP3_4

#defineDATAP3_5

#defineucharunsignedchar#defineuintunsignedint/***************************voiddelay(uchari){

while(i--)

{ucharj=0;while(j<8)

//1/3偏压,4背极

//系统时钟选择为片内RC振荡器//禁止WDT溢出标志输出

//时基输出禁止

//打开系统时钟

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

//j=12延时约4.3us

j++;

}

}

voidSendBit_1621(uchardat,ucharcnt)

{

uchari;

for(i=0;i

{

if((dat&0x80)==0)

DATA=0;

elseDATA=1;

WR=0;

delay

(2);

WR=1;

dat=dat<<1;

}

}

voidSendDataBit_1621(uchardat,ucharcnt){

uchari;

for(i=0;i

{

if((dat&0x01)==0)DATA=0;

elseDATA=1;

WR=0;

delay

(2);

WR=1;

dat=dat>>1;

}

}

voidSendCmd(ucharcommand)

{

CS=0;

_nop_();

_nop_();

SendBit_1621(0x80,4);

SendBit_1621(command,8);

CS=1;

}

voidWrite_1621(ucharaddr,uchardat)

{

CS=0;

_nop_();

_nop_();

SendBit_1621(0xa0,3);

SendBit_1621(addr,6);

SendDataBit_1621(dat,4);

CS=1;

}

voidWriteAll_1621(ucharaddr,uchar*p,ucharcnt)

{

uchari;

CS=0;

_nop_();

_nop_();

SendBit_1621(0xa0,3);

SendBit_1621(addr,6);for(i=0;i

SendDataBit_1621(*p,8);}

CS=1;

}

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

main()

{

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_();_nop_();_nop_();_nop_();_nop_()voidLcd_Data(ucharStart,ucharcData)

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

//Start

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

//Length

{

--要同步的页面数量

uchari;

LCD_CS=0;

Lcd_Delay;

Lcd_Delay;

Lcd_Delay;

//SendID101B

LCD_CLK=0;

Lcd_Delay;

LCD_IO=1;

Lcd_Delay;

LCD_CLK=1;

Lcd_Delay;

LCD_CLK=0;

Lcd_Delay;

LCD_IO=0;

Lcd_Delay;

LCD_CLK=1;

Lcd_Delay;

LCD_CLK=0;

Lcd_Delay;

LCD_IO=1;

Lcd_Delay;

LCD_CLK=1;

Lcd_Delay;

//SendAddress6bitStart=Start*2;

{

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

if(Start&0x20)LCD_IO=1;elseLCD_IO=0;Lcd_Delay;

LCD_CLK=0;

Lcd_Delay;

Start=Start<<1;

LCD_CLK=1;

Lcd_Delay;

}

//Senddata8bit

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

{

if(cData&0x01)LCD_IO=1;

elseLCD_IO=0;

Lcd_Delay;

LCD_CLK=0;

Lcd_Delay;

cData=cData>>1;

LCD_CLK=1;

Lcd_Delay;

}

LCD_CS=1;

Lcd_Delay;

}

//===================================================================voidLcd_Command(ucharCommand)

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

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

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

//Command要写入的8位命令

{

uchari;

LCD_CS=0;

Lcd_Delay;

Lcd_Delay;

Lcd_Delay;

//SendID100B

LCD_CLK=0;

Lcd_Delay;

LCD_IO=1;

Lcd_Delay;

LCD_CLK=1;

Lcd_Delay;

LCD_CLK=0;

Lcd_Delay;

LCD_IO=0;

Lcd_Delay;

LCD_CLK=1;

Lcd_Delay;

LCD_CLK=0;

Lcd_Delay;

LCD_IO=0;

Lcd_Delay;

LCD_CLK=1;

Lcd_Delay;

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

{

LCD_CLK=0;

Lcd_Delay;

if(Command&0x80)LCD_IO=1;

elseLCD_IO=0;

Command=Command<<1;

Lcd_Delay;

LCD_CLK=1;

Lcd_Delay;

}

///最后补一个0

LCD_CLK=0;

Lcd_Delay;

LCD_IO=0;

Lcd_Delay;

LCD_CLK=1;

Lcd_Delay;

LCD_CS=1;

Lcd_Delay;

}

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

void

{

Lcd_Refresh(void)//重新对LCD进行刷屏uchari;

for(i=0;i

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

}//

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

{

//功能:

清空LCD显示区

//返值:

//入口:

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

uchari;for(i=0;i

lcd.buff[i]=0;

Lcd_Refresh();

}

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

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

{

LCD_CLK=1;

Lcd_Delay;

LCD_IO=1;

Lcd_Delay;Lcd_Command(0x00);Lcd_Command(0x02);Lcd_Command(0x18);Lcd_Command(0x01);Lcd_Command(0x03);Lcd_Command(0x29);

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

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

//初始化LCD控制器

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

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

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

Lcd_Cls();

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

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1