|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關于液晶模塊的 |
| 作者:hxiaon 欄目:單片機 |
請問各位,LCM1602的寫數(shù)據(jù)和讀數(shù)據(jù)時,E是高點平有效還是下降沿有效,我怎么看到有的書說高,有的說下降沿啊,我的動動不顯示, |
| 2樓: | >>參與討論 |
| 作者: zhaoyu2005 于 2007/1/30 12:29:00 發(fā)布:
建議下載一個例程看一下 你也可以下載1602液晶的資料,有的廠家?guī)в欣樱豢床痪椭懒耍?br> |
|
| 3樓: | >>參與討論 |
| 作者: hxiaon 于 2007/1/30 12:30:00 發(fā)布:
enen 有用過的指教下,急~ |
|
| 4樓: | >>參與討論 |
| 作者: hxiaon 于 2007/1/30 12:32:00 發(fā)布:
按時打發(fā) 液晶模塊的啟動是不是有時要熱啟動?通電直接進行操作能不能行 |
|
| 5樓: | >>參與討論 |
| 作者: rocl_li77 于 2007/1/31 22:09:00 發(fā)布:
回復問題 (1)你那控制芯片的沒用過,但是你買液晶的時候有說明書,如果E上面有一個上畫線就表示低電平有效,否則高電平有效 (2)至于不顯示問題就很難說了,但是肯定和你所猜測的這個E是沒有關系了(只要你把1弄好了) |
|
| 6樓: | >>參與討論 |
| 作者: FZJ 于 2007/2/1 8:00:00 發(fā)布:
以下是個用PIC驅(qū)動1602的程序,你可以參考一下 ***************************************************************************************************/ #include <pic.h> /**************************************************************************************************/ #define RS RA0 #define E RA1 #define RW RA2 #define LCD_DATA PORTB //數(shù)據(jù)端 #define LCD_DATATRIS TRISB #define INPUT 0XFF #define OUTPUT 0 #define BF lcddata_temp&0x80 /**************************************************************************************************/ void write_bytelcd (unsigned CHAR lcddata,unsigned CHAR r_s); //命令數(shù)據(jù)寫函數(shù) bit lcd_busy (void); //檢測"忙" void lcd_init (void); //LCD初始化 void init_mcu (void); //MCU初始化 /**************************************************************************************************/ void write_bytelcd (unsigned CHAR lcddata,unsigned CHAR r_s) //命令數(shù)據(jù)寫函數(shù) { unsigned int i; for (i=1000;i!=0;i--) { if (lcd_busy()) { LCD_DATATRIS=OUTPUT; //設為數(shù)據(jù)發(fā)送 RS=r_s; //0=寫指令, 1=寫數(shù)據(jù) RW=0; //寫操作 E=1; LCD_DATA=lcddata; //送入數(shù)據(jù) E=0; //寫入HD44780(KS0066) break; } } LCD_DATATRIS=OUTPUT; //設為數(shù)據(jù)發(fā)送 } /***************************************************************************************************/ bit lcd_busy (void) //檢測"忙" { unsigned CHAR lcddata_temp; CLRWDT(); LCD_DATATRIS=INPUT; //設為數(shù)據(jù)接收 RS=0; //命令類型 RW=1; //讀 E=1; lcddata_temp=LCD_DATA; E=0; if (BF) return (0); //忙標志 else return (1); //不忙 } /****************************************************************************************************/ void lcd_init (void) { write_bytelcd(0X38,0); //8位接口2行顯示 5*7 write_bytelcd(8,0); //關顯示,光標不閃爍 write_bytelcd(1,0); //清屏 write_bytelcd(0xC,0); //開顯示 write_bytelcd(6,0); //光標右移,文字不動 } /****************************************************************************************************/ void init_mcu (void) { CLRWDT(); TRISA=0; TRISB=0; ADCON1=7; INTCON=0; OPTION=0X80; } /***************************************************************************************************/ void main (void) { unsigned int i; unsigned CHAR count=40; PORTA=0; PORTB=0; for (i=10000;i!=0;i--) {init_mcu();} lcd_init(); while (1) { write_bytelcd(0x80,0); //DDRAM地址設置 do{ write_bytelcd(65,1); //寫數(shù)據(jù) } while (--count); count=40; //在DDRAM從地址0開始40個地址中連續(xù)寫入數(shù)據(jù)"65" } } |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |