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

128*64 繪圖型LCD的程式哪裡有錯??

缺席
討厭的專題
一般會員


發表:3
回覆:4
積分:1
註冊:2005-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-19 01:08:44 IP:163.23.xxx.xxx 未訂閱
我花了好久時間改程式,可是LCD一直跑不出來圖型,只有一片黑暗~Orz 麻煩大大幫我看一下程式碼,如果我程式沒寫錯,那有可能單純因為我Vo,VEE沒接可調電阻(我利用電阻分壓)的原因,所以螢幕才一片黑點? 感謝~~  
//顯示128×64圖形檔g1.bmp        
#include  
#include "g1.h"                      //載入圖形檔
sbit DI=P1^0 ;  
sbit RW=P1^1 ;                  
sbit E=P1^2 ;                  
sbit CS1=P1^3 ;               
sbit CS2=P1^4 ;         
void delay1ms(int count);
void LCG_CMD(char cmd);                             // 送出控制指令
void LCG_DATA(char data1);                          // 送出顯示資料
void DISP_LCG(bit sidexy, char code *ptr,unsigned int offset);
void Chk_Busy();                                    //等待LCG完成命令
main() 
{   CS1=CS2=1 ;                                     //致能全部繪圖型LCD
    delay1ms(5);                                    //呼叫延遲5毫秒,等待電源穩定
    LCG_CMD(0x3f) ;                                 //開啟顯示器
    DISP_LCG(0,g1,0);                               //致能上半部繪圖型LCD
    DISP_LCG(1,g1,512);                             //致能下半部繪圖型LCD
    while(1) ;                                      //停留原地}
void delay1ms(int count)  
{   //....省略;}
void LCG_CMD(char cmd)
{   //....省略;}
void LCG_DATA(char data1)
{   //....省略;}
void Chk_Busy() 
{   //....省略;}
void DISP_LCG(bit sidexy, char code *ptr,unsigned int offset)       
{  char page,y;                                     //宣告字元變數為 i,page,y
   if(sidexy==0){
       CS1=1 ;CS2=0 ;                               //致能左半部繪圖型LCD}
   else{
       CS1=0 ;CS2=1 ;                               //致能右半部繪圖型LCD}
   for(y=0;y<64;y++){                               //左右半部各佔64點,每次向右移動3點 
       for(page=0;page<8;page++){                   //共有8個頁面
                LCG_CMD(0xb8+page) ;                      //設定 X 軸位置
         LCG_CMD(0x40+y) ;                         //設定 Y 軸位置           
          LCG_DATA(~ptr[page+y*8+offset]) ;}}}
 
發表人 - 討厭的專題 於 2005/06/19 21:53:43

版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-19 01:30:29 IP:220.134.xxx.xxx 未訂閱
Po程式碼請縮排.不知如何做請看版規. 煩請修改配合,謝謝!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
penguin5
資深會員


發表:116
回覆:317
積分:431
註冊:2004-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-19 08:30:36 IP:220.139.xxx.xxx 未訂閱
1.如果程式沒寫錯,可能是背影調的太深了,請調可變電阻→調至螢幕的黑點顏色變淺,看是否有字,如果沒有東東,則程式有bug. 2.請將接線圖貼出來,對於程式除錯比較有幫助. 3.貼程式碼,建議採縮排方式 post. 歡迎參觀 麗嘉真空管研究室http://myweb.hinet.net/home4/penguin5/ 發表人 - penguin5 於 2005/06/19 08:42:03
討厭的專題
一般會員


發表:3
回覆:4
積分:1
註冊:2005-06-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-19 21:55:55 IP:163.23.xxx.xxx 未訂閱
我已經修改過了 不曉得這樣的發表格式對不對? 如果不對的話,我再修改 謝謝你們 

版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-22 08:37:02 IP:220.134.xxx.xxx 未訂閱
請問你用的LCD編號是?
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-23 10:33:47 IP:61.66.xxx.xxx 未訂閱
你的電路有問題喔! 1.繪圖型LCD的RST跟8051一樣 要接Reset電路 不過換成電阻接Vcc 電容接地 2.VEE要接負電 也就是-Vcc 3.Vo也要接負電 用可變電阻 一端接地 另一端接-Vcc 中間抽頭接Vo 4.程式好像沒有下顯示的指令 把省略的也po上來看看吧 發表人 - 阿信 於 2005/06/23 10:49:22
討厭的專題
一般會員


發表:3
回覆:4
積分:1
註冊:2005-06-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-24 00:40:22 IP:163.23.xxx.xxx 未訂閱
To ㊣: 我用的LCD是WINSTAR WG12864    To 阿信: 1.Reset我有想過要不要接,這個我會試試看 ^^ 2.VEE和Vo都要接-VCC?? 可是我手邊兩份資料都是寫接VCC,是因為LCD不同嗎? 3.省略的程式:  
void LCG_CMD(char cmd)
{   P0=cmd ;                        //送出命令值
    DI=0 ;RW=0 ;E=1 ;               //為指令,寫入,致能LCD
    E=0 ;RW=1 ;            //為禁能LCD,讀取
    Chk_Busy();            // 呼叫LCD忙碌檢查等待}
void LCG_DATA(char data1)
{   P0=data1 ;                      //送出資料
    DI=1 ;RW=0 ;E=1 ;               //為資料,寫入,致能LCD
    E=0 ;RW=1 ;                     //為禁能LCD,讀取
    Chk_Busy() ;                    //等待LCD完成命令}
void Chk_Busy() 
{  unsigned char status ;       P0=0xff ;                       //P0設定為輸入埠
   do{DI=0 ;RW=1 ;E=1 ;            //為指令,讀取,致能LCD
      status= P0 ;                 //讀取狀態值
      E=0 ;                        //禁能LCD}
   while(status&0x80) ;            //等到忙碌旗標(BF)為零才離開}
 
感謝兩位的熱心~ ^^ 謝謝

版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-24 01:00:37 IP:220.134.xxx.xxx 未訂閱
看過它的DATASHEET, pin3(vo).pin1(vss).pin18(vee) 3隻腳一起接GND就可以了. pin2(Vdd)接5V. pin19與pin20為背光. reset為負緣動作. 你先把3隻腳接地看看吧.正常情況下,即使沒有送資料,應該是一半亮一半暗的.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
討厭的專題
一般會員


發表:3
回覆:4
積分:1
註冊:2005-06-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-28 13:50:47 IP:163.23.xxx.xxx 未訂閱
To ㊣: 我試過了,還是沒辦法 也沒有出現一邊亮一邊暗 但是這顆LCD有亮過,只是全亮沒跑出我要的圖案 那這樣LCD應該沒問題才對    對了,你有他的DataSheet?? 你能不能將他寄給我 我的課本沒有他的DataSheet< > 謝謝你< >

版主


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-28 14:41:50 IP:211.22.xxx.xxx 未訂閱
datasheet : http://www.alldatasheet.com/datasheet-pdf/view/ETC/WG12864A.html
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
系統時間:2024-05-04 10:21:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!