全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1165
推到 Plurk!
推到 Facebook!

LCD字元輸入的問題

答題得分者是:阿信
windlin
一般會員


發表:3
回覆:4
積分:1
註冊:2005-04-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-09 09:35:26 IP:220.132.xxx.xxx 未訂閱
用4X4鍵盤做輸入;輸入到八個位元後,就無法繼續輸入,請問要如何做 才可以輸入更多的字元呢?(我看書上寫好像只能從外部輸入八個位元)

版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-09 09:54:21 IP:211.22.xxx.xxx 未訂閱
引言: 輸入到八個位元後,就無法繼續輸入??
不是可以輸入16個嗎? 何謂"輸入到八個位元後,就無法繼續輸入"??
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
windlin
一般會員


發表:3
回覆:4
積分:1
註冊:2005-04-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-09 10:16:03 IP:220.132.xxx.xxx 未訂閱
DL:設定外接處理器的資料長度,DL=1為8位元資料傳送,DL=0為4位元資料傳送 是這樣子的嗎?我現在輸入到第八個字以後就沒辦法在輸入了~

版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-09 10:56:00 IP:211.22.xxx.xxx 未訂閱
你到底是LCD的顯示問題,還是4x4鍵盤的問題??
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
windlin
一般會員


發表:3
回覆:4
積分:1
註冊:2005-04-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-09 11:04:56 IP:220.132.xxx.xxx 未訂閱
我這麼說好了 現在我用鍵盤輸入前八個位元都沒有問題 但是~後面八個位元卻無法顯示
LCD_Cmd(0x38) 
這一行是設定DL=1:8bit傳輸,顯示2行,F=0:5*7字型 DL:設定外接處理器的資料長度,DL=1為8位元資料傳送,DL=0為4位元資料傳送 重點就是~目前輸入前八個位元輸出都沒問題但是~後面按什麼都無法顯示了 我只是想問~是否真的是DL的問題~還是有其他我沒注意到的?? 若真的是DL的問題那有什麼解決的方法~??

版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-09 11:24:13 IP:211.22.xxx.xxx 未訂閱
看一下你的LCD DB0~DB7有沒有都接,如果沒有,你設DL=1也沒用. 只能用4bit的傳送方式了.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
阿信
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-09 11:56:14 IP:61.66.xxx.xxx 未訂閱
引言: DL:設定外接處理器的資料長度,DL=1為8位元資料傳送,DL=0為4位元資料傳送 重點就是~目前輸入前八個位元輸出都沒問題但是~後面按什麼都無法顯示了
DL=1 指的是並列8位元傳輸 一個字元一次傳完 DL=0 指的是並列4位元傳輸 一個字元分兩次傳完 不是只能傳8個位元 傳送的是 "字元(character)" 不是 "位元(Bit)" 後面不能顯示 相信是程式的問題 建議把程式po上來 ------------------- 美好的事物 稍縱即逝
windlin
一般會員


發表:3
回覆:4
積分:1
註冊:2005-04-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-09 12:18:38 IP:220.132.xxx.xxx 未訂閱
 
#include 
char count=0,scan=0xff;  
char code Table[]   
     ={0x46,0x45,0x44,0x43,0x42,0x33,0x36,0x39,
       0x41,0x32,0x35,0x38,0x30,0x31,0x34,0x37};
sbit   RS=0xb5;       
sbit   RW=0xb6;       
sbit   EN=0xb7;       
sfr    DATA_BUS=0x90; 
void LCD_Cmd(unsigned char comm);
void Reset_LCD(void);
void dataout(void);
void Delay(unsigned int dly);
void Send_Data(char Data);
void main()
{
  P1=0;     
  Reset_LCD();           
  TMOD=0x01; 
  P2=0xff;
  LCD_Cmd(0x80);
 while(1)  
  {
    
    if(count>15) {scan=0xef;count=0;}
    P2=scan|0x0f;
    if (P2_0==0) dataout();
      count  ;Delay(70);
    if (P2_1==0) dataout();
      count  ;Delay(70);   
    if (P2_2==0) dataout();
       count  ; Delay(70);  
    if (P2_3==0) dataout(); 
      count  ;Delay(70);
     scan=scan<<1;    
  }
}
void dataout(void)  
{
  Delay(2000);          
  Send_Data(Table[count]);  
  while((P2 | 0xf0)!=0xff);
  Delay(2000);
}
void LCD_Cmd(unsigned char comm)
{
    DATA_BUS=comm;  
    RS=0;RW=0;EN=1;
    Delay(30);      
    EN=0;
}
void Send_Data(char Data)
{
    DATA_BUS=Data;
    RS=1;RW=0;EN=1;
    Delay(30);
    EN=0; 
}
void Reset_LCD(void)  
{
    LCD_Cmd(0x38);      
    LCD_Cmd(0x0c);  
    LCD_Cmd(0x06); 
    LCD_Cmd(0x01); 
    LCD_Cmd(0x02); 
}
void Delay(unsigned int dly)   
{
   while(dly > 0)
   dly --;
}
老實說剛剛我還是有在試 後面的多按幾次還是可以顯示 不過我改不出來正常的狀態 就拜託看一下哪裡有錯誤~謝謝囉~
阿信
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-09 14:50:57 IP:211.21.xxx.xxx 未訂閱
程式的結構化很好 鍵盤掃描也沒有問題 如果縮排再整齊一點就更好了~  應該除了超過
系統時間:2024-05-05 12:57:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!