?? ht1621_drv.c
字號:
/**************** (c) 2004 ***************** ********************************
File : Ht1621_drv.c
DESCRIPTION: HT1621 LCD driver routine
COMPILER : c compiler
VERSION : 1.0
DATE : 2004/1/23
AUTHOR : flydragon
******************************************************************************/
/****************************************************************************/
#define WR 2 // I/o
#define CS 3 // I/O
#define DATA 1 // I/O
#define BUSDR PADR // I/O PORT
#define BUSDDR PADDR // I/O PORT DIRECT
#define BUSOR PAOR // I/O PULL UP
/*****************************************************************************/
#define LCDON 0X3
#define BIASCOM 0X29
#define LCDADDRESS 0X0
#define SYSTEMEN 0X1
#define LCDMODE 0XE3
#define SYSTEMCLOCK 0X14 //crystal oscillator
#define TONE4K 0X40 // BUZ 4K HZ
#define TONEOFF 0X8
#define TONEON 0X9
#define COMMAND 0X80
#define DATAMODE 0XA0
/*****************************************************************************
Name:Lcd_SetOut
Description: set lcd pins output mode
Parameters:
*******************************************************************************/
void Lcd_SetOut(void)
{
SetBit(BUSDDR,WR);
SetBit(BUSOR,WR);
SetBit(BUSDDR,CS);
SetBit(BUSOR,CS);
SetBit(BUSDDR,DATA);
SetBit(BUSOR,DATA);
}
/*****************************************************************************
Name:ByteOut
Description: output one byte data/command
Parameters:
*********************************************************************************/
void ByteOut(unsigned char outdata,unsigned char counter,unsigned char lowbit)
{
unsigned char i,ndata,ncounter,nlowbit;
ndata=outdata;
ncounter=counter;
nlowbit=lowbit;
ClrBit(BUSDR,CS);
for(i=0;i<ncounter;i++)
{
SetBit(BUSDR,WR);
ClrBit(BUSDR,WR);
if(ValBit(ndata,7-i))
SetBit(BUSDR,DATA);
else
ClrBit(BUSDR,DATA);
SetBit(BUSDR,WR);
}
if(nlowbit==1)
{
SetBit(BUSDR,WR);
ClrBit(BUSDR,WR);
ClrBit(BUSDR,DATA);
SetBit(BUSDR,WR);
}
}
/****************************************************************************
Name:Lcd_WriteData
Description: Write data to lcd
Parameters: display datas address
*****************************************************************************/
void Lcd_WriteData(unsigned char * addr,unsigned char counter,unsigned char toneout)
{
unsigned char i;
SetBit(BUSDR,CS);
Lcd_SetOut();
ClrBit(BUSDR,CS);
ByteOut(COMMAND,3,0);
ByteOut(SYSTEMEN,8,1);
ByteOut(LCDMODE,8,1);
ByteOut(BIASCOM,8,1);
ByteOut(SYSTEMCLOCK,8,1);
ByteOut(TONE4K,8,1); // tone output 4k hz
if(toneout)
ByteOut(TONEON,8,1);
else
ByteOut(TONEOFF,8,1);
ByteOut(LCDON,8,1); // write lcd
SetBit(BUSDR,CS);
ByteOut(DATAMODE,3,0);
ByteOut(LCDADDRESS,6,0);
for(i=0;i<counter;i++)
ByteOut(*(addr+i),8,0);
SetBit(BUSDR,CS);
SetBit(BUSDR,WR);
SetBit(BUSDR,DATA);
}
/***************************END OF FILE******************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -