?? ht1622drv.c
字號:
/**************** (c) 2008 ***************************************************/
/* FILE : Ht1622Drv.c */
/* DESCRIPTION: HT1622 LCD driver routine */
/* COMPILER : c compiler */
/* VERSION : 1.0 */
/* DATE : 2008/04/14 */
/* Author : flydragon */
/*****************************************************************************/
/****************************************************************************/
#define WR 5 //I/O
#define CS 4 //I/O
#define DATA 7 //I/O
#define BUSCSDR p3 //p3 I/O PORT
#define BUSWRDR p3
#define BUSDADR p3
/*****************************************************************************/
#define LCDON 0X3
//#define BIASCOM 0X29
#define LCDADDRESS 0Xa0 //101000 00,start address(high 6bits) :0x28
#define SYSTEMEN 0X1
#define LCDMODE 0XE3
#define SYSTEMCLOCK 0X18
#define COMMAND 0X80
#define DATAMODE 0XA0
#define TONE4K 0X40 // BUZ 4K HZ
#define TONEOFF 0X8
#define TONEON 0X9
/******************************************************************************/
#define SetBit(bytedata,bit) (bytedata |= 1<<bit)
#define ClrBit(bytedata,bit) (bytedata &= ~(1<<bit))
unsigned char ValBit(unsigned char bytedata,unsigned char bit)
{return((bytedata & ( 1<< bit))? 1:0);}
/*****************************************************************************
Name: CommandOut
Description: output one byte data/command
Parameters: outdata is command
counter is output bits
lowbit is last bit
Return: none
Notes:
*********************************************************************************/
void CommandOut(unsigned char outdata,unsigned char counter,unsigned char lowbit)
{
unsigned char i;
unsigned char ndata,ncounter,nlowbit;
ndata=outdata;
ncounter=counter;
nlowbit=lowbit;
ClrBit(BUSCSDR,CS);
for(i=0;i<ncounter;i++)
{
SetBit(BUSWRDR,WR);
ClrBit(BUSWRDR,WR);
if(ValBit(ndata,7-i))
SetBit(BUSDADR,DATA);
else
ClrBit(BUSDADR,DATA);
SetBit(BUSWRDR,WR);
}
if(nlowbit==1)
{
SetBit(BUSWRDR,WR);
ClrBit(BUSWRDR,WR);
ClrBit(BUSDADR,DATA);
SetBit(BUSWRDR,WR);
}
}
/*****************************************************************************
Name: ByteDataOut
Description: output one byte data
Parameters: outdata is out data
Return: none
Notes: none
*********************************************************************************/
void ByteDataOut(unsigned char outdata)
{
unsigned char i;
unsigned char ndata;
ndata=outdata;
ClrBit(BUSCSDR,CS);
for(i=0;i<8;i++)
{
SetBit(BUSWRDR,WR);
ClrBit(BUSWRDR,WR);
if(ValBit(ndata,i))
SetBit(BUSDADR,DATA);
else
ClrBit(BUSDADR,DATA);
SetBit(BUSWRDR,WR);
}
}
/****************************************************************************
Name: Lcd_WriteData
Description: Write data to lcd driver
Parameters: addr is display datas address
counter is data byte numbers
Return: none
Notes: none
*****************************************************************************/
void HT1622_WriteData(unsigned char * addr,unsigned char counter)
{
unsigned char i;
SetBit(BUSCSDR,CS);
ClrBit(BUSCSDR,CS);
CommandOut(COMMAND,3,0);
CommandOut(SYSTEMEN,8,1);
CommandOut(LCDMODE,8,1);
//CommandOut(BIASCOM,8,1);
CommandOut(SYSTEMCLOCK,8,1);
//if(toneout)
// CommandOut(TONE4K,8,1); // tone output 4k hz
//else
// CommandOut(TONEOFF,8,1);
CommandOut(LCDON,8,1);
SetBit(BUSCSDR,CS);
CommandOut(DATAMODE,3,0);
CommandOut(LCDADDRESS,6,0);
for(i=0;i<counter;i++)
ByteDataOut(*(addr+i));
SetBit(BUSCSDR,CS);
SetBit(BUSWRDR,WR);
SetBit(BUSDADR,DATA);
}
/******2007/09/14*(c)*******End of file********************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -