線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3921
推到 Plurk!
推到 Facebook!

請教要如何測試文字型LCD好壞

答題得分者是:
david_ls
一般會員


發表:5
回覆:13
積分:3
註冊:2005-01-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-24 20:09:42 IP:123.110.xxx.xxx 訂閱
想請教各位前輩要如何測試 文字型LCD(STC2A16DRG 16x2) 的好壞
目前手上只有一顆, 8051確定可以正常運作, Program是拿網路上的resource來使用

不知有沒有辦法使用簡單的輸入訊號來測試文字LCD是否正常

ps. 文字型 LCD接上電源的時候, 會顯示一兩個方塊, 接著就消失!

感謝前輩賜教了!



#include
#define DBPORT P2 // 定義 P2 埠為資料輸出埠
sbit RS=P1^0 ; // LCD致能控制線接腳
sbit RW=P1^1 ; // LCD讀寫控制接腳
sbit E=P1^2 ; // LCD 資料與指令選擇線接腳
void delay1ms(int count); // 時間延遲副程式
void LCD_CMD(char cmd); // 寫入指令暫存器函式原型宣告
void LCD_DATA(char data1); // 寫入資料暫存器函式原型宣告
char code mess1[]="95441160";
char code mess2[]="shin";
main()
{
char *pp; // 設定字串的指標位置
delay1ms(5) ; // 等待 LCD 電源與穩定
LCD_CMD(0x3b) ; // #0111011B 8位元存取雙列字5×7字型
LCD_CMD(0xe) ; // #01110B 顯示器ON/游標閃爍/x被顯示在位址計數器
while(1)
{
LCD_CMD(0x1) ; // 清除螢幕
delay1ms(5) ; // 時間延遲delay1ms(2) ;
LCD_CMD(0x80); // 設定DD RAM位址第一行第1列
pp = mess1;
while(*pp !=0)
LCD_DATA(*pp ); // 呼叫顯示字串函式
delay1ms(1000) ;
LCD_CMD(0x1) ; // 清除螢幕
delay1ms(5) ; // 時間延遲delay1ms(2) ;
LCD_CMD(0xC0); // 設定DD RAM位址第一行第2列
pp = mess2;
while(*pp !=0)
LCD_DATA(*pp ); // 呼叫顯示字串函式
delay1ms(1000) ;
}
}
void delay1ms(int count)
{
int i,j;
for(i=0;ifor(j=0;j<119;j );
}
// 寫入資料暫存器函式
void LCD_DATA(char data1)
{
char i;
DBPORT=data1; // ASCII字元輸出到資料線
RS=1;RW=0;E=1; //控制線 寫入資料暫存器
for(i=0 ; i < 40 ;i ) ; // 一個短時間的延遲時序
RS=1;RW=0;E=0;
}
// 寫入指令暫存器函式
void LCD_CMD(char cmd)
{
char i;
DBPORT =cmd ; //寫入指令暫存器
RS=0;RW=0;E=1; //控制線 P2=0x04;
for(i=0 ; i < 40 ;i ) ; // 一個短時間的延遲時序
RS=0;RW=0;E=0; //控制線 P2=0x00;
}
aki
版主


發表:30
回覆:696
積分:755
註冊:2004-01-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-25 19:04:02 IP:219.85.xxx.xxx 訂閱
 我沒有硬體,所以無法幫你測這個程式對不對.
過去的工作經驗是寫一個測試程式把 LCM 點亮就知道 LCM 是好是壞啦?
不知道其他網友有更高明的收法嘛? 可以提出來給大家作參考!

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-26 10:53:13 IP:60.249.xxx.xxx 未訂閱
我的使用經驗, 在你未對LCM做寫入動作時, 接上電源LCM上面一排應會全亮, 下面一排全暗.
測試是否全部OK, 建議可參考相關書籍自己寫個動畫來掃瞄, 以確認每個 block 都是正常的.

FYI.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
ererer40
初階會員


發表:37
回覆:91
積分:45
註冊:2008-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-07-22 09:03:24 IP:60.248.xxx.xxx 訂閱
依我的經驗,千千萬萬別先去懷疑硬體問題,有九成以上都是程式問題,等找出問題後才恍然大悟

依我的經驗:

1.確認硬體:拿最簡單的或你以前有成功過的程式下去跑,這樣可以確認LCD硬體沒問題,比較直覺的方式是拿另一個新的LCD測試,如果跟前一個狀況一樣,應該可確認硬體沒問題

2.確認你的IO名稱正不正確:例如明明就是接P1,你程式確是寫P2,別以為不可能,就是會出現這種靈異現象

3.確認是否有確實輸出入:我這個人比較多疑,所以通常我會用麵包板特別做一個全IO單純只接LED燈與開關的,當模擬試跑看看燈會不會亮確認有輸出入。

4.確認每一隻IO當下是否有在忙其他的事:例如中斷之類的,有時最好看一下手冊,有些IO有特別用途。

5.線路問題:就算將LCM全部的腳位直接拉到目的位置,中間不接電阻之類的應該也還可正常顯示(只是可能會看不太清楚),所以電路上應該比較不會有問題

6.確認供應電源:這應該不用說了吧正負接反、電流不足、電壓過大過小...等等之類的
david_ls
一般會員


發表:5
回覆:13
積分:3
註冊:2005-01-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-07-22 17:59:15 IP:122.116.xxx.xxx 訂閱
非常感謝各位的幫忙, 我採用的方式是買顆新的16*2文字型LCD, 可以正常運作了, 優點是便宜有背光顯示, 缺點是體積大了些,
程式部分是下載的(別人應該是有驗證過了)自己驗證過也是ok的, 起初也是什麼都顯示不出來, 後來發現是Vo沒去調整, 把Vo接地後就可以看到字型顯示了!

懷疑上一顆LCD也是Vo沒接, 導致Adj以最清淡的對比顯示, 實驗之後什麼都顯示不出來, 所以有可能是之前被我搞壞了@@

版大說的很正確, 新的文字型LCD模組的確如 版大所述, 第一排全亮, 第二排全滅, 在此要特別感謝您的經驗提供!!



===================引 用 ererer40 文 章===================
依我的經驗,千千萬萬別先去懷疑硬體問題,有九成以上都是程式問題,等找出問題後才恍然大悟

依我的經驗:

1.確認硬體:拿最簡單的或你以前有成功過的程式下去跑,這樣可以確認LCD硬體沒問題,比較直覺的方式是拿另一個新的LCD測試,如果跟前一個狀況一樣,應該可確認硬體沒問題

2.確認你的IO名稱正不正確:例如明明就是接P1,你程式確是寫P2,別以為不可能,就是會出現這種靈異現象

3.確認是否有確實輸出入:我這個人比較多疑,所以通常我會用麵包板特別做一個全IO單純只接LED燈與開關的,當模擬試跑看看燈會不會亮確認有輸出入。

4.確認每一隻IO當下是否有在忙其他的事:例如中斷之類的,有時最好看一下手冊,有些IO有特別用途。

5.線路問題:就算將LCM全部的腳位直接拉到目的位置,中間不接電阻之類的應該也還可正常顯示(只是可能會看不太清楚),所以電路上應該比較不會有問題

6.確認供應電源:這應該不用說了吧正負接反、電流不足、電壓過大過小...等等之類的
ererer40
初階會員


發表:37
回覆:91
積分:45
註冊:2008-05-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-07-27 16:27:11 IP:60.248.xxx.xxx 訂閱
建議
1.程式由上往下跑,建議你把副程式搬到主程式的前面,副程式中又有副程式時注意順序,例如Delay副程式通常會放的很前面
2.建議你RS、RW、E這三個先設定再做DB
系統時間:2024-05-02 19:54:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!