熱門關(guān)鍵詞: 蘇州控制板生產(chǎn)廠家 液晶模塊種類 LCD液晶屏工作原理 什么是LED背光源
1. 概述
HT1621是128點內(nèi)存映象和多功能的LCD驅(qū)動器,HT1621的軟件配置特性使它適用于多種LCD應(yīng)用場合,包括LCD模塊和顯示子系統(tǒng)。用于連接主控制器和HT1621的管腳只有4或5條,HT1621還有一個節(jié)電命令用于降低系統(tǒng)功耗。
在虎風所做的這個系統(tǒng)中ht1621用于驅(qū)動一個靜態(tài)的LCD液晶顯示器。液晶顯示的方式分為靜態(tài)顯示和動態(tài)顯示。靜態(tài)與動態(tài)的區(qū)別在于靜態(tài)顯示是持續(xù)供電的,而動態(tài)顯示是利用人的視覺停留效果,快速掃描數(shù)碼管各個段,讓人在視覺上感覺到數(shù)碼管是同時顯示的。
2. HT1621接線原理圖
3. 靜態(tài)LCD結(jié)構(gòu)圖
4. 幾個曾經(jīng)糾結(jié)的概念
Time base:時基,即時間基準,可以用來輸出,作為外部時鐘的時間基準。
占空比:將所有公共電極(COM)各施加一次掃描電壓的時間叫一幀,單位時間內(nèi)掃描多少幀的頻率叫幀頻,將掃描公共電極(COM)選通的時間與幀周期之比叫占空比。通常占空比等于公共電極數(shù)N的倒數(shù),即1/N。這就是說假如你要驅(qū)動4個液晶,就需要4個COM,那么你的占空比就要設(shè)定為1/4。
偏壓比:指的是液晶的偏壓系數(shù),可以看看專業(yè)技術(shù)文章,偏壓目的是克服交叉效應(yīng),通過把半選擇點與非選擇點的電壓平均,適度提高非選擇點的電壓來抵消半選擇點上的一部分電壓,使半選擇點上的電壓下降,從而提高顯示對比度;后來行半選擇點和非選擇點上的電壓均為顯示電壓的1/a,1/a就稱為偏壓系數(shù),也稱為偏壓。此方法稱為1/a偏壓的平均電壓法,簡稱為1/a偏壓法。
VLCD(LCD驅(qū)動電壓): LCD的驅(qū)動電壓為加在點亮部分的段電壓與公共電壓之差(峰-峰值)。
5. 關(guān)于RAM地址映射的概念
為了這個問題困擾了很久,虎風太愚鈍啦……
Ht1621有一個32*4的LCD驅(qū)動,映射到32*4的RAM地址。
上圖中寫命令101后面跟6位RAM地址,那么這個地址是如何確定的呢?其實說白了也很簡單,RAM地址就是SEG的序號。我們要點亮一段液晶管需要給他提供一個電平,而這個電平是由SEG管腳提供的,SEG管腳電平的輸出又取決于對應(yīng)RAM地址中的值。
驅(qū)動一個8段數(shù)碼管的順序是A,B,C,D,E,F,G,DP,我們認為前面LCD結(jié)構(gòu)圖中的數(shù)碼管3為我們要顯示的低位,那么連接原理圖中A3的是SEG12,我們就說此時的RAM地址為0b001100,連接B3的是SEG11,對應(yīng)的RAM地址為0b001011,依次類推,首位數(shù)碼管的所有地址為:
0b001100,0b001011,0b001010,0b001001,0b001000,0b001101,0b001110,0b000111//DP2;
其余地址類似,在此不再解釋。
6. 程序
Unsigned char LCD_ADD[]={0b00001100,0b00110100,0b00010100,0b00100100,0b00000100,0b00101100,0b00011100,0b00111000,0b00000010,
0b00111100,0b00011000,0b00101000,0b00001000,0b00100010,0b00010010,0b00110000,0b00001010,0b00110010,
0b00010000,0b00100000,0b00000000,0b00101010,0b00011010};
void HT1621_Dis_Char(unsigned char d,unsigned char d_loca)
{
unsigned char j;
unsigned char seg_cnt=8 ;
if (d_loca==(HT1621_DATA_NUM-1))
seg_cnt=7;
//送3位模式碼101及6位首地址000000 0b000000101
for (j=0; j
HT1621_Send_Bits(0x05,3);
//送寫命令代碼101,高到低
HT1621_Send_Bits(LCD_ADD[d_loca*8+j],6); //送每段對應(yīng)的地址
HT1621_Send_Bits(d&0x01,4); //送數(shù)據(jù),com0對應(yīng)的低位,低到高
d=d>>1;//右移位
HT1621_PORT|=_BV(HT1621_CS);
}
}
/*=========顯示小數(shù)點=========
輸入?yún)?shù):Poi_loca,為小數(shù)點的位置(0是首位,1是次位)
*/
void HT1621_Pri_Point(unsigned char Poi_loca)
{
unsigned char seg_cnt=8;
if (Poi_loca<2)
{ HT1621_PORT&=~_BV(HT1621_CS);
HT1621_Send_Bits(0x05,3); //送寫命令代碼101
HT1621_Send_Bits(LCD_ADD[Poi_loca*seg_cnt+7],6);
//送點對應(yīng)的地址
//送數(shù)據(jù)
HT1621_Send_Bits(1,4);
HT1621_PORT|=_BV(HT1621_CS);
}
}
/********************************************************
=======顯示INT型數(shù)據(jù)
dat--待顯示數(shù)據(jù)
********************************************************/
void HT1621_Print_onlyInt(unsigned long dat)
{
unsigned char i;
unsigned char data[HT1621_DATA_NUM];
if (dat>=HT1621_DATA_max)
dat=dat%HT1621_DATA_max;
for(i=0;i
else if(dat<100) {data[1] =LCD_CODE[(unsigned char) (dat/10)];
data[0] =LCD_CODE[(unsigned
char) (dat%10)] ;} //十位數(shù)
else {
data[2] =LCD_CODE[(unsigned char) (dat/100%10)];
data[1] =LCD_CODE[(unsigned char) (dat/10%10)] ;
data[0] =LCD_CODE[(unsigned char) (dat%10)];
} //百位數(shù)
for(i=0;i
}
/*********************************************************/
//打印INT型數(shù)據(jù)
//dat--待顯示數(shù)據(jù)
//chk--顯示的數(shù)據(jù)位數(shù): 0--關(guān)閉 1~3時,顯示對應(yīng)的數(shù)據(jù);大于3時只顯示3位;(從左到右)
//point_loc--顯示的小數(shù)點的位置:0以及大于2時:不顯示小數(shù)點;1-顯示首位,2-顯示次位;(從左到右)
/*********************************************************/
void HT1621_Print_Int(unsigned
long dat,unsigned char chk,unsigned char point_loc)
{
unsigned char i;
unsigned char data[HT1621_DATA_NUM];
//chk為0,則屏幕不顯示
for(i=0;i
if(chk>0) {data[0] = LCD_CODE[(unsigned char) (dat%10)];
dat=dat/10; }
if(chk>1) {data[1] = LCD_CODE[(unsigned char) (dat%10)];
dat=dat/10; }
if(chk>2) {data[2] = LCD_CODE[(unsigned char) (dat%10)];
}
//顯示小數(shù)點
if (point_loc==1)
data[0]|=0x80;
else if (point_loc==2)
data[1]|=0x80;
//從低位到高位,調(diào)用顯示每個數(shù)的函數(shù)HT1621_Dis_Char
for(i=0;i
}
/*********************************************************/
//送d_count位數(shù)據(jù)d;從低位開始送
/*********************************************************/
void HT1621_Send_Bits(unsigned char d, unsigned char d_count)
{
unsigned char j;
for (j=0; j
HT1621_PORT&=~_BV(HT1621_WR); //wr置低;
HT1621_Delay(50);
if (d & 0x01==1) //置數(shù)據(jù)位;
{ HT1621_PORT|=_BV(HT1621_DATA); //data置0
}
else
{ HT1621_PORT&=~_BV(HT1621_DATA); //data置1
}
HT1621_PORT|=_BV(HT1621_WR);
//wr置高;
HT1621_Delay(50);
d =(d>>1); //右移位
}
}
/*********************************************************/
//HT1621初始化
/*********************************************************/
void HT1621_Init()
{
DDRC |= _BV(4)|_BV(5)|_BV(7); //定義端口PC4-PC5-PC7輸出
HT1621_PORT&=~_BV(HT1621_CS); //CS端清零
HT1621_Send_Bits(0x01,3);
//送3位命令模式碼100 0x80=0b10000000
HT1621_Send_Bits(0x18,9); //系統(tǒng)時鐘選用片內(nèi)RC
HT1621_Send_Bits(0x80,9); //打開系統(tǒng)振蕩器
HT1621_Send_Bits(0x94,9);
//1/2偏置,2個公共口 1000 0100
HT1621_Send_Bits(0xc0,9); //打開LCD偏置發(fā)生器
HT1621_PORT|=_BV(HT1621_CS); //CS端置1
HT1621_NoPrint( ); //液晶不顯示
}
7. 結(jié)束
HT1621作為液晶驅(qū)動芯片,功能十分靈活,而液晶在我們的學習項目中會經(jīng)常用到,所以學好它的操作是十分必要的。
如果你看了這篇文章還不明白,就聯(lián)系客服咨詢吧,嘎嘎!
晶拓是蘇州啟普微電子有限公司旗下LCD液晶屏品牌,在儀器、儀表、POS系統(tǒng)、電話、門禁、電腦、通信、電視、智能小家電等領(lǐng)域占有較大的市場份額,公司十年如一日的經(jīng)營始終秉乘著“以品質(zhì)求生存,以創(chuàng)新求發(fā)展”,誠信為本的經(jīng)營理念,真誠希望與您共創(chuàng)美好明天。咨詢熱線:13862038982
【責任編輯】: 晶拓液晶
版權(quán)所有:http:// www.djtvv.com轉(zhuǎn)載請注明出處,違者本網(wǎng)將依法追究責任。
咨詢熱線
13862038982