熱門(mén)關(guān)鍵詞: 蘇州控制板生產(chǎn)廠家 液晶模塊種類(lèi) LCD液晶屏工作原理 什么是LED背光源
方式一
根據(jù) LCD 的驅(qū)動(dòng)原理可知,LCD 像素點(diǎn)上只能加上 AC 電壓,LCD 顯示器的對(duì)比度由 COM腳上的電壓值減去 SEG 腳上的電壓值決定,當(dāng)這個(gè)電壓差大于 LCD 的飽和電壓就能打開(kāi)像素點(diǎn),小于 LCD 閾值電壓就能關(guān)閉像素點(diǎn),LCD 型 MCU 已經(jīng)由內(nèi)建的 LCD 驅(qū)動(dòng)電路自動(dòng)產(chǎn)生 LCD 驅(qū)動(dòng)信號(hào),因此只要 I/O 口能仿真輸出該驅(qū)動(dòng)信號(hào),就能完成 LCD 的驅(qū)動(dòng)。 由于LCD工作的很好的帖頻率通常在25Hz~250Hz,一般設(shè)置刷新頻率在
60Hz左右即可。
現(xiàn)在考慮如何模擬出 COM 的波形
1/2 Bias 下 COM0~COM3 的 LCD 驅(qū)動(dòng)波形如下:
可以看出 4個(gè)COM 的輸出,通過(guò)配置 IO口為高阻即可使其輸出 VDD/2 電位,配置 IO為推挽輸出即可輸出高低電平。
因此在一個(gè) COM 周期內(nèi),只要每隔一段時(shí)間設(shè)置 COM0~COM3 輸出對(duì)應(yīng)的電壓即有 COM0~COM3 的波形。具體來(lái)說(shuō)就是首先 Time Base 中斷時(shí)設(shè)置 COM0 輸出VDD,其它 COM 輸出 VDD/2;其次 Time Base 中斷時(shí)設(shè)置
COM0 輸出 VSS,COM1~COM3輸出 VDD/2,再次 Time Base 中斷時(shí)設(shè)置 COM1 輸出 VDD,其它 COM 輸出 VDD/2;第四次 Time Base 中斷時(shí)設(shè)置 COM1 輸出 VSS,其它 COM 輸出 VDD/2;……;第八次中斷時(shí)設(shè)置 COM3 輸出 VSS,其它 COM 輸出 VDD/2。
因?yàn)辄c(diǎn)亮 LCD 像素點(diǎn)需要 COM 與 SEG 有大于飽和電壓的電壓差,也就是
COM 與 SEG 有+VDD 或者-VDD 的電壓差,所以要點(diǎn)亮某個(gè)像素點(diǎn),只要將對(duì)應(yīng)的 SEG 輸出與 COM 相反的電壓即可。比如,當(dāng) COM0=VDD,只要 SEG=VSS 就可點(diǎn)亮對(duì)應(yīng)像素點(diǎn),當(dāng) COM0=VSS,只要 SEG=VDD 就可點(diǎn)亮對(duì)應(yīng)像素點(diǎn)。考慮到 LCD 像素點(diǎn)點(diǎn)亮?xí)r先加+VDD 再加-VDD 可延長(zhǎng) LCD 的使用壽命,因此這里同一像素點(diǎn)也采用兩次點(diǎn)亮的方式。
方式二
由上面所述我們知道,只要 COM、SEG 的電壓差為+VDD 或者-VDD 就可以點(diǎn)亮對(duì)應(yīng)的 LCD筆段即像素點(diǎn),因此,我們也可以不用模擬 COM 的 Timing 即可完成 LCD 的正常驅(qū)動(dòng)。具體實(shí)現(xiàn)步驟如下:
? 一次中斷時(shí)設(shè)置 COM0 輸出 High,其它 COM 輸出 VDD/2,再根據(jù)要顯示的數(shù)據(jù)設(shè)置各個(gè) SEG 的輸出
? 二次中斷時(shí)設(shè)置 COM1 輸出 High,其它 COM 輸出 VDD/2,再根據(jù)要顯示的數(shù)據(jù)設(shè)置各個(gè) SEG
的輸出
? 三次中斷時(shí)設(shè)置 COM2 輸出 High,其它 COM 輸出 VDD/2,再根據(jù)要顯示的數(shù)據(jù)設(shè)置各個(gè) SEG 的輸出
? 四次中斷時(shí)設(shè)置 COM3 輸出 High,其它 COM 輸出 VDD/2,再次根據(jù)要顯示的數(shù)據(jù)設(shè)置各個(gè) SEG 的輸出
? 五次中斷時(shí)設(shè)置 COM0 輸出 Low,其它 COM 輸出 VDD/2,再根據(jù)要顯示的數(shù)據(jù)設(shè)置各個(gè) SEG 的輸出
? 六次中斷、第七次中斷、第八次中斷參考上面的方法依次設(shè)置
COM1、COM2、COM3輸出 Low 并設(shè)置要顯示的數(shù)據(jù)
? 循環(huán)進(jìn)行以上的 8 次循環(huán)設(shè)置即可完成 LCD 的驅(qū)動(dòng) 這種方式下 COM0~COM3 的 Timing 如下:
對(duì)比以上兩種方法可以發(fā)現(xiàn),COM 口的掃描頻率也就是帖頻率并沒(méi)有改變,然而從占用的資源上來(lái)說(shuō),方式二比方式一會(huì)占用更少的 ROM 空間。
應(yīng)用電路
可以根據(jù)實(shí)際使用情況取舍 COM 和增減 SEG,比如 LCD 可以是 1/2 Duty,那么只需要保留兩個(gè) COM 即可,SEG 同樣可以參照范例程序擴(kuò)展。
根據(jù)上述說(shuō)明,分 8 次依次設(shè)置 COM0~COM3 的輸出,SEG 是輸出 VDD 還是輸出 VSS 需要根據(jù)要顯示的數(shù)字判斷,使用方法一驅(qū)動(dòng)方式時(shí) I/O 詳細(xì)電位設(shè)置請(qǐng)參考下表:
這里也可以采用掃描的方式
結(jié)論
本范例驅(qū)動(dòng) 4×8 LCD 顯示正常,用戶只需要稍加改造即可套用到所選用的 1/2 Bias 規(guī)格的LCD 上。 我使用的是方法一掃描方式,大致流程圖如下,其中有些地方對(duì)的不怎么齊
void LCD_Control(void)
{
static unsigned char state = 0;
if(!Back_Light_Is_Open) // 背光檢測(cè)
{
P1CFG1 = _b01101010; // 配置COM1,COM2,COM3為高阻
P3CFG0 = _b01010110; // 配置COM4為高阻
return;
}
LCD_BACK_LIGHT_CONTROL(); // 背光控制
Refresh_Wrod(); // 刷新字幕
Refresh_Light_Flash(); // 刷新燈光動(dòng)畫(huà)
Refresh_Fan_Flash(); // 刷新風(fēng)扇動(dòng)畫(huà)
Refresh_UV_Lamp_Flash();// 刷新消毒動(dòng)畫(huà)
Refresh_Down_Flash(); // 刷新下降動(dòng)畫(huà)
Refresh_Up_Flash(); // 刷新上升動(dòng)畫(huà)
switch(state)
{ // 01強(qiáng)推,10高阻
case 0:
// 掃描 COM1
{
COM_L(1);
P1CFG1 = _b01100110; // 配置COM1為強(qiáng)推,COM2,COM3為高阻
P3CFG0 = _b01010110;
// 配置COM4為高阻
COM1_SEG_SET();
state = 1;
}break;
case 1: // 掃描 COM1
{
COM_H(1);
COM1_SEG_SET_NOT();
state = 2;
}break;
case 2: // 掃描 COM2
{
COM_L(2);
P1CFG1 = _b01101001; // 配置COM2為強(qiáng)推,COM1,COM3為高阻
COM2_SEG_SET();
state
= 3;
}break;
case 3: // 掃描 COM2
{
COM_H(2);
COM2_SEG_SET_NOT();
state = 4;
}break;
case 4: // 掃描 COM3
{
COM_L(3);
P1CFG1 = _b01011010; // 配置COM3為強(qiáng)推,COM1,COM2為高阻
COM3_SEG_SET();
state
= 5;
}break;
case 5: // 掃描 COM3
{
COM_H(3);
COM3_SEG_SET_NOT();
state = 6;
}break;
case 6: // 掃描 COM4
{
COM_L(4);
P1CFG1 = _b01101010; // 配置COM1,COM2,COM3為高阻
P3CFG0 = _b01010101;
// 配置COM4為強(qiáng)推
COM4_SEG_SET();
state = 7;
}break;
case 7: // 掃描 COM4
{
COM_H(4);
COM4_SEG_SET_NOT();
state = 0;
}break;
default:
{
state = 0;
}break;
}
}
代碼中 COM4_SEG_SET_NOT(); 是 COM4_SEG_SET(); IO對(duì)應(yīng)段取反所得
COM_L(4); 拉低 COM4口
其他類(lèi)似
這里說(shuō)明一點(diǎn),我是先將 IO口電平輸出再配置功能的,因?yàn)樵趯?shí)際操作過(guò)程中會(huì)發(fā)現(xiàn)從高阻態(tài)轉(zhuǎn)換至強(qiáng)推模式時(shí)會(huì)有 零點(diǎn)幾微秒的脈沖干擾,具體寬度根據(jù)單片機(jī)速度來(lái)決定。
大概是因?yàn)閱纹瑱C(jī)在從強(qiáng)推模式轉(zhuǎn)換至高阻態(tài)時(shí) IO配置雖被改變,但輸出寄存器中的數(shù)據(jù)還會(huì)繼續(xù)保持,所以才會(huì)有脈沖干擾的吧,先將 IO口輸出電平改變?cè)賹?IO口狀態(tài)從高阻切換至強(qiáng)推時(shí)就不會(huì)有脈沖干擾了
這是先配置 IO輸出狀態(tài)再修改輸出電平的,后來(lái)想了下,寄存器中應(yīng)該是保存了后一次 IO輸出的電平,所以從高阻態(tài)切換至強(qiáng)推后直接將輸出相應(yīng)的電平,等到再次配置 IO口輸出的電平時(shí)這是才會(huì)改變,所以才會(huì)在開(kāi)始的時(shí)候有一個(gè)低脈沖。
晶拓是蘇州啟普微電子有限公司旗下LCD液晶屏品牌,在儀器、儀表、POS系統(tǒng)、電話、門(mén)禁、電腦、通信、電視、智能小家電等領(lǐng)域占有較大的市場(chǎng)份額,公司十年如一日的經(jīng)營(yíng)始終秉乘著“以品質(zhì)求生存,以創(chuàng)新求發(fā)展”,誠(chéng)信為本的經(jīng)營(yíng)理念,真誠(chéng)希望與您共創(chuàng)美好明天。咨詢熱線:13862038982
【責(zé)任編輯】: 晶拓液晶
版權(quán)所有:http:// donglin06.cn轉(zhuǎn)載請(qǐng)注明出處,違者本網(wǎng)將依法追究責(zé)任。
咨詢熱線
13862038982