?? msp430-lcd-ht1621-.txt
字號:
HT1621為128(32×4)段、存儲器映射的多功能LCD驅(qū)動器。它可設(shè)置為1/2或1/3偏置且通過S/W配置設(shè)置為2,3或4個公共端的LCD驅(qū)動。這使得HT1621適于多種LCD應(yīng)用。它與主控制器之間只需要3根或4根線接口,LCD驅(qū)動時鐘從系統(tǒng)時鐘內(nèi)產(chǎn)生,一般為256KHZ。
HT1621的參數(shù)如下:
工作電壓:2.4V~5.2V
內(nèi)置256kHz RC 振蕩器
外部32.768kHz 晶體 或 256kHz頻率輸入
可選擇1/2 或 1/3 偏壓比和1/2 或 1/3 或 1/4 占空比LCD應(yīng)用
內(nèi)部時鐘源
?個可選蜂鳴器頻率 (2kHz/4kHz)
Power down 命令降低功耗
內(nèi)置時基發(fā)生器和WDT
時基 或 WDT 溢出輸出
8 種時基時基/WDT 時鐘源
32x4 LCD 驅(qū)動
內(nèi)置 32x4 位顯示RAM
3-線接口
內(nèi)部LCD 驅(qū)動頻率源
軟件構(gòu)造特性
數(shù)據(jù)模式和命令模式指令
R/W 地址自動增加
三種數(shù)據(jù)訪問模式
因為對LCD的寫操作很快,只要處理得當(dāng),每次刷新之前先將LCD清屏,再寫入需要顯示的數(shù)據(jù),肉眼是看不出抖動的。因此,驅(qū)動程序沒有提供讀HT1621的程序。如果各位有什么疑問,歡迎討論
以下是接口程序,430測試頻率為4M.
uchar cLCD_Buff[16] = 0; //為ht1621開辟的顯示緩存
void write_abit(uchar connect, uchar mask)
{
while(mask)
{
LCD_PORT_OUT &=~LCD_BWR;
_NOP();_NOP();
if(connect & mask)
LCD_PORT_OUT |= LCD_DATA;
else
LCD_PORT_OUT &= ~LCD_DATA;
_NOP();_NOP();_NOP();
LCD_PORT_OUT |= LCD_BWR;
mask>>=1;
}
_NOP();
}
//void write_commond(uchar commond)
void LCD_OUT_COMD(uchar COMD)
{
LCD_PORT_OUT &=~LCD_BCS;
_NOP();
//Send command head "100"
write_abit(0x04,0x04);
//Send command
write_abit(COMD,0x80);
write_abit(0x00,0x01);
LCD_PORT_OUT |= LCD_BCS;
LCD_PORT_OUT |= LCD_BWR;
}
//void write_lcd_screen(void)
void LCDWrite(void)
{
uchar cLCDNum, *pRamAdd,LCD_Count;
cLCDNum=16;
pRamAdd=&cLCD_Buff[0];
LCD_PORT_OUT &=~LCD_BCS;
_NOP();
//Send command head "101"
write_abit(0x05,0x04);
//Send start address "000000"
write_abit(0x00,0x20);
do
{
uchar temp_buffer = *pRamAdd;
for (LCD_Count=0;LCD_Count<8;LCD_Count++)
{
write_abit(temp_buffer,0x01);
temp_buffer = temp_buffer >> 1;
}
cLCDNum--;
pRamAdd++;
}
while(cLCDNum > 0);
LCD_PORT_OUT |= LCD_BCS;
LCD_PORT_OUT |= LCD_BWR;
}
void lcd_port_init(void)
{
LCD_PORT_OUT |= (LCD_BCS + LCD_BWR + LCD_DATA);
LCD_PORT_DIR |= (LCD_BCS + LCD_BWR + LCD_DATA);
}
void beep_on(void)
{
LCD_OUT_COMD(0x09); //TONE ON
}
void LCD_Ini(void)
{
lcd_port_init();
//the 9 bit is X and is set to 0 at func
LCD_OUT_COMD(0x01); //LCD SYSTEM ENABLE FIRST, LIKE AZ8851
LCD_OUT_COMD(0x18); //ON CHIP RC OSCILLATE
LCD_OUT_COMD(0x29); //LCD 1/3 BIAS, 4 COM OPTION
LCD_OUT_COMD(0x03); //LCD ON
LCD_OUT_COMD(0x08); //TONE OFF
LCD_OUT_COMD(0x04); //TIMER DISABLE
LCD_OUT_COMD(0x80); //IRQ DISABLE
LCD_OUT_COMD(0x05); //WDT DISABLE
}
void LCD_Off(void)
{
LCD_OUT_COMD(0x02); //LCD SYSTEM TIME BASE OUT
LCD_OUT_COMD(0x00); //LCD SYSTEM DISABLE
}
該驅(qū)動程序?qū)ν馓峁┑慕涌跒椋?
void LCD_Off(void);
void LCDWrite(void);
void LCD_Ini(void);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -