|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
求助:我的1602LCD顯示怎么是16個(gè)黑的方塊 |
| 作者:yifenqian 欄目:單片機(jī) |
程序是下載別人的:用的是總線方式: 那位大俠還有1602的總線方式程序沒?給我發(fā)一份好么? yifenqian@tom.com zhou__heng@16.com /*=========================================================================== KS0070(44780) 16x2 字符液晶屏驅(qū)動(dòng)演示程序總線方式 曉奇 ============================================================================= 連接線圖: LCM-------51 LCM-------51 LCM--------51 DB0-----P0.0 DB4-----P0.4 RW-------P2.0 DB1-----P0.1 DB5-----P0.5 RS-------P2.1 DB2-----P0.2 DB6-----P0.6 E--------P2.7 =>74LS00+wr+rd DB3-----P0.3 DB7-----P0.7 VLCD接1K2電阻到GND [注]:AT89C51的晶振頻率為12MHZ ============================================================================*/ //#pragma src // 產(chǎn)生匯編文件 #include <reg51.h> #include<intrins.h> //========= 變量類型標(biāo)識(shí)的宏定義,大家都喜歡這么做 ============== #define UCHAR unsigned CHAR #define Uint unsigned int // ================= LCM1602A端口地址定義 ======================= CHAR xdata Lcd1602CmdPort _at_ 0x7cff; //E=1 RS=0 RW=0 CHAR xdata Lcd1602WdataPort _at_ 0x7eff; //E =1 RS=1 RW=0 CHAR xdata Lcd1602StatusPort _at_ 0x7dff; //CS=1 RS=0 RW=1 #define Busy 0x80 // 忙判別位 code CHAR exampl[]="For an example. - By xiaoqi\n"; void Delay400Ms(void); void Delay5Ms(void); void LcdWriteData( CHAR dataW ); void LcdWriteCommand( UCHAR CMD,UCHAR AttribC ); void LcdReset( void ); void DISPLAY( UCHAR dd ); void DispOneChar(UCHAR x,UCHAR y,UCHAR Wdata); void ePutstr(UCHAR x,UCHAR y, UCHAR code *ptr); //================ 隨便寫幾句測(cè)試主程序 ================ void main(void) { UCHAR TEMP; Delay400Ms(); /*啟動(dòng)時(shí)必須的延時(shí),等待lcm進(jìn)入工作狀態(tài)*/ LcdReset(); /* 這也是必需的....初始化*/ TEMP = 32; ePutstr(0,0,exampl); /*上面一行顯示一個(gè)預(yù)定字符串*/ Delay400Ms(); /* 保留顯示內(nèi)容*/ Delay400Ms(); Delay400Ms(); Delay400Ms(); Delay400Ms(); Delay400Ms(); Delay400Ms(); Delay400Ms(); while(1) { TEMP &= 0x7f; /* 只顯示ASCII字符*/ if (TEMP<32)TEMP=32; /*屏蔽控制字符,不予顯示*/ DISPLAY( TEMP++ ); Delay400Ms(); } } /*======================================================= 顯示字符串 =======================================================*/ void ePutstr(UCHAR x,UCHAR y, UCHAR code *ptr) { UCHAR i,l=0; while (ptr[l] >31){l++;}; for (i=0;i<l;i++) { DispOneChar(x++,y,ptr[i]); if ( x == 16 ){ x = 0; y ^= 1; } } } /*======================================================= 演示一行連續(xù)字符串,配合上位程序演示移動(dòng)字串 =======================================================*/ void DISPLAY( UCHAR dd ) { UCHAR i; for (i=0;i<16;i++) { DispOneChar(i,1,dd++); dd &= 0x7f; if (dd<32) dd=32; } } /*======================================================= 顯示光標(biāo)定位 =======================================================*/ void LocateXY( CHAR posx,CHAR posy) { UCHAR TEMP; TEMP = posx & 0xf; posy &= 0x1; if ( posy )TEMP |= 0x40; TEMP |= 0x80; LcdWriteCommand(TEMP,0); } /*======================================================= 按指定位置顯示數(shù)出一個(gè)字符 =======================================================*/ void DispOneChar(UCHAR x,UCHAR y,UCHAR Wdata) { LocateXY( x, y ); // 定位顯示地址 LcdWriteData( Wdata ); // 寫字符 } /*======================================================= 初始化程序, 必須按照產(chǎn)品資料介紹的初始化過程進(jìn)行 =======================================================*/ void LcdReset( void ) { LcdWriteCommand( 0x38, 0); /* 顯示模式設(shè)置(不檢測(cè)忙信號(hào))*/ Delay5Ms(); LcdWriteCommand( 0x38, 0); /* 共三次*/ Delay5Ms(); LcdWriteCommand( 0x38, 0); Delay5Ms(); LcdWriteCommand( 0x38, 1); /*顯示模式設(shè)置(以后均檢測(cè)忙信號(hào))*/ LcdWriteCommand( 0x08, 1); /*顯示關(guān)閉*/ LcdWriteCommand( 0x01, 1); &nbs |
| 2樓: | >>參與討論 |
| 作者: etiller 于 2005/7/15 8:07:00 發(fā)布:
樓主有沒有1602的資料給一份 尤其是關(guān)于字符對(duì)應(yīng)的字段的說明那部分? |
|
| 3樓: | >>參與討論 |
| 作者: yxhyxh 于 2005/7/15 9:25:00 發(fā)布:
仔細(xì)看看你的初始化程序是否正確。 |
|
| 4樓: | >>參與討論 |
| 作者: yifenqian 于 2005/7/15 19:15:00 發(fā)布:
你的郵箱那? |
|
| 5樓: | >>參與討論 |
| 作者: bcaiyo 于 2005/7/15 19:48:00 發(fā)布:
我剛在用一個(gè)三星的S6A0069的 我剛在用一個(gè)三星的S6A0069的,不過我只用了4位數(shù)據(jù)線。端口少啊。你最好看一下初始化的程序,有的指令處理時(shí)間長(zhǎng)一點(diǎn),看一下忙標(biāo)志位呀,我感覺還是比較好用的 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào) |