工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

ht1621 c程序

作者:dolphin 时间:2012-11-12

ht1621 c程序

Ht1621中文资料 Ht1621pdf

LCD驱动HT1621
#include <reg51.h
#include types.h
#include intrins.h
#include bin.h
extern BOOL PIN_1621_CS;
extern BOOL PIN_1621_DAT;
extern BOOL PIN_1621_WR;
#define CLK_DELAY() {_nop_(); _nop_(); _nop_();}
//--------------------------------------------------------------------------
// Name: Write_1621_RAM
//--------------------------------------------------------------------------
void Write_1621_RAM(BYTE addr, BYTE idata *buf, BYTE size)
BYTE i,j;
BYTE tmp;
PIN_1621_CS = 1; // clear CS
CLK_DELAY();
PIN_1621_CS = 0; // clear CS
// CMD -101
tmp = B0000_0101;
for (i=3; i0; --i)
PIN_1621_DAT = tmp & 0x04; tmp = 1;
PIN_1621_WR = 0; CLK_DELAY();
PIN_1621_WR = 1; CLK_DELAY();

// Addr - 0x00
tmp = addr B0011_1111;
for (i=6; i0; --i)
PIN_1621_DAT = tmp 0x04; tmp = 1;
PIN_1621_WR = 0; CLK_DELAY();
PIN_1621_WR = 1; CLK_DELAY();

// data - successive 32 bytes
for (j=size; j0; --j)
tmp = *buf;
for (i=8; i0; --i)
PIN_1621_DAT = tmp 0x01; tmp = 1;
PIN_1621_WR = 0; CLK_DELAY();
PIN_1621_WR = 1; CLK_DELAY();

buf ++;


//--------------------------------------------------------------------------
// Name: Write_1621_COMMAND
//--------------------------------------------------------------------------
static void Write_1621_COMMAND(BYTE config)
BYTE i;
BYTE cmd;
PIN_1621_CS = 1; // clear CS
CLK_DELAY();
PIN_1621_CS = 0; // clear CS
cmd = B0000_0100;
// CMD - 110
for (i=3; i0; --i)
PIN_1621_DAT = cmd 0x04; cmd = 1;
PIN_1621_WR = 0; CLK_DELAY();
PIN_1621_WR = 1; CLK_DELAY();

// config
for (i=9; i0; --i)
PIN_1621_DAT = config 0x80; config = 1;
PIN_1621_WR = 0; CLK_DELAY();
PIN_1621_WR = 1; CLK_DELAY();


//--------------------------------------------------------------------------
// Name: Init_1621
//--------------------------------------------------------------------------
void Init_1621(void)
Write_1621_COMMAND(B0010_1001); // 4 comm
Write_1621_COMMAND(B0000_0011); // Turn On LCD
Write_1621_COMMAND(B0000_0001); // Enable System

//--------------------------------------------------------------------------
// Name: TurnOn_1621
//--------------------------------------------------------------------------
void TurnOn_1621(BOOL bOnoff)
if (bOnoff)
Write_1621_COMMAND(B0000_0011); // bias generator

else
Write_1621_COMMAND(B0000_0010); // bias generator


//-------------------------------------------------------------------------
// M62446 drving routines, VER 1.0
//
// COPYRIGHT (C) 2000, Enbia Technology Inc.
// Target: 8031
// AUTHOR: STEVEN LUO
//
// Revision History:
// 2001/1/5 - Original Version
//
//-------------------------------------------------------------------------
#include reg51.h
#include types.h
#include intrins.h
#include bin.h
extern BOOL PIN_M62446_LATCH;
extern BOOL PIN_M62446_DATA;
extern BOOL PIN_M62446_CLK;
static idata WORD shadow_word00=0;
static idata WORD shadow_word01=0;
static idata WORD shadow_word10=0;
static idata WORD shadow_word11=0; // for storing the control word status //
static BOOL bM62446Muted; // Set when 62446 is muted
static void Write_M62446_Word(WORD myword);
//-------------------------------------------------------------------------
// Name: Volume_Validate
// Description:
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
static BYTE Volume_Validate(char vol)
if(vol0)vol=0; // negative, should be 0
else if(vol 80) vol=80; // 80, set to 80
return 80 - vol; // Down to Up

//-------------------------------------------------------------------------
// Name: Mute_M62446
// Description:
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Mute_M62446(void)
Write_M62446_Word(0xa141); // B1010000 1010000 01, B10100001_01000001
Write_M62446_Word(0xa142);
Write_M62446_Word(0xa143);
bM62446Muted = 1;

//-------------------------------------------------------------------------
// Name: UnMute_M62446
// Description:
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void UnMute_M62446(void)
shadow_word01=0xfffc; shadow_word01|=0x01; Write_M62446_Word(shadow_word01);
shadow_word10=0xfffc; shadow_word10|=0x02; Write_M62446_Word(shadow_word10);
shadow_word11=0xfffc; shadow_word11|=0x03; Write_M62446_Word(shadow_word11);
bM62446Muted = 0;

//-------------------------------------------------------------------------
// Name: Write_M62446_Left
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Left(char vol)
WORD temp;
temp=Volume_Validate(vol);
temp=9;
shadow_word01=0x01ff;
shadow_word01|=temp;
// DE=0;DF=1;
shadow_word01=0xfffc; shadow_word01|=0x01;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word01);

//-------------------------------------------------------------------------
// Name: Write_M62446_Right
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Right(char vol)
WORD temp;
temp=Volume_Validate(vol);
temp=2;
shadow_word01=0xfe03;
shadow_word01|=temp;
// DE=0;DF=1;
shadow_word01=0xfffc; shadow_word01|=0x01;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word01);

//-------------------------------------------------------------------------
// Name: Write_M62446_Center
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Center(char vol)
WORD temp;
temp=Volume_Validate(vol);
temp=9;
shadow_word10=0x01ff;
shadow_word10|=temp;
// DE=1;DF=0;
shadow_word10=0xfffc; shadow_word10|=0x02;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word10);

//-------------------------------------------------------------------------
// Name: Write_M62446_SubWoofer
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_SubWoofer(char vol)
WORD temp;
temp=Volume_Validate(vol);
temp=2;
shadow_word10=0xfe03;
shadow_word10|=temp;
// DE=1;DF=0;
shadow_word10=0xfffc; shadow_word10|=0x02;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word10);

//-------------------------------------------------------------------------
// Name: Write_M62446_SurLeft
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_SurLeft(char vol)
WORD temp;
temp=Volume_Validate(vol);
temp=9;
shadow_word11=0x01ff;
shadow_word11|=temp;
// DE=1;DF=1;
shadow_word11=0xfffc; shadow_word11|=0x03;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word11);

//-------------------------------------------------------------------------
// Name: Write_M62446_SurRight
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_SurRight(char vol)
WORD temp;
temp=Volume_Validate(vol);
temp=2;
shadow_word11=0xfe03;
shadow_word11|=temp;
// DE=1;DF=1;
shadow_word11=0xfffc; shadow_word11|=0x03;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word11);

static BYTE code Treble_Bass_TAB[11]=
0x0e, // 0, -10db
0x0c, // 1, -8db
0x0b, // 2, -6db
0x0a, // 3, -4db
0x09, // 4, -2db
0x00, // 5, 0db
0x01, // 6, +2db
0x02, // 7, +4db
0x03, // 8, +6db
0x04, // 9, +8db
0x06 // 10, +10db
;
//-------------------------------------------------------------------------
// Name: Write_M62446_Treble
// Description: This function Write 2 bytes to M62446
// Arguments: 0-20,
// 0: -10db
// 10: 0db
// 20 +10db
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Treble(BYTE Treble)
WORD temp;
Treble=Treble_Bass_TAB[Treble];
temp=Treble;
temp=12;
shadow_word00=0x0fff;
shadow_word00|=temp;
// DE=0;DF=0;
shadow_word00=0xfffc;
Write_M62446_Word(shadow_word00);

//-------------------------------------------------------------------------
// Name: Write_M62446_Bass
// Description: This function Write 2 bytes to M62446
// Arguments: 0-20,
// 0: -10db
// 10: 0db
// 20 +10db
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Bass(BYTE Bass)
WORD temp;
Bass=Treble_Bass_TAB[Bass];
temp=Bass;
temp=4;
shadow_word00=0xff0f;
shadow_word00|=temp;
// DE=0;DF=0;
shadow_word00=0xfffc;
Write_M62446_Word(shadow_word00);

//-------------------------------------------------------------------------
// Name: Write_M62446_Bypass
// Description: This function Write 2 bytes to M62446
// Arguments: 1, bypass on, 0: off
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Bypass(BOOL bOnOff)
if (bOnOff) shadow_word00 |= 0x0004; // On
else shadow_word00 = 0xfffb; // off
// DE=0;DF=0;
shadow_word00 = 0xfffc;
Write_M62446_Word(shadow_word00);

//-------------------------------------------------------------------------
// Name: Write_M62446_Output
// Description: This function Write 2 bytes to M62446
// Arguments: port=1-4, BYTE=1 or 0
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Output(BYTE port, BOOL bOnoff)
WORD temp, mask=1;
temp=bOnoff;
temp = (12-port);
mask = (12-port);
shadow_word00=~mask;
shadow_word00|=temp;
// DE=0;DF=0;
shadow_word00=0xfffc;
Write_M62446_Word(shadow_word00);

#define DELAY() _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_();
_nop_(); _nop_();
//-------------------------------------------------------------------------
// Name: Write_M62446_Word
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
static void Write_M62446_Word(WORD myword)
register BYTE i;
PIN_M62446_LATCH=0;
for (i=16;i0;--i)
if(myword 0x8000) PIN_M62446_DATA=1; // MSB first
else PIN_M62446_DATA=0;
myword=1; // Rotate Right
DELAY();
PIN_M62446_CLK=1;
DELAY();
PIN_M62446_CLK=0;

DELAY();
PIN_M62446_LATCH=1;



评论

技术专区