熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2013-9-28 15:03
正文摘要:圖12-3 液晶下拉電阻 如果不加這個(gè)下拉電阻,剛開始講點(diǎn)亮LED小燈的時(shí)候,我們就得寫一句:LCD1602_E=0,可能很多初學(xué)者容易弄不明白,所以我們才加了這樣一個(gè)電路。但是在實(shí)際開發(fā)過程中,就不必 ... |
| 為什么不直接出個(gè)新版講解單片機(jī)視頻呢,主頁推薦的郭天祥的視頻第一模糊,第二視頻播放速度和聲音速度延遲8S左右,雖然我可以通過下載視頻通過軟件吧延遲擬補(bǔ)回來但是真的太麻煩了,而且郭視頻也需要新一代更新更新呀 |
| 學(xué)習(xí)內(nèi)容越來越難了,努力中 |
| 液晶屏“讀數(shù)據(jù)”操作,應(yīng)該是R/W = H吧? |
最近在學(xué)指針,非常棒的文章 。因?yàn)樽x的比較仔細(xì),所以看到流水燈例程時(shí)發(fā)現(xiàn)個(gè)小錯(cuò)誤,應(yīng)該是P1=~buf![]() |
| 指針的使用最為靈活也最麻煩,這降解真心好,理解好的畫用的非常好 |
| 絕世好貼! |
| 耐心學(xué)習(xí)!謝謝樓主 |
|
仔細(xì)看了這篇教程 我也在開發(fā)板上試了 是存在問題的 就是 字符的 重復(fù)顯示 我改了一下 現(xiàn)在 編譯通過且成功 特地分享 /*問題 1602重復(fù)顯示*/ #include<reg52.h> #define LCD1602_DB P0 //1602 IO口 sbit LCD1602_RD=P1^2; // 數(shù)據(jù)命令選擇端 H DATA L CMD sbit LCD1602_RW=P1^3; // 讀寫端 H READ L WRITE sbit LCD1602_E=P1^4; // 使能 void readbusy(); //判忙 1忙 0空 void write_data(unsigned char dat); void write_cmd(unsigned char cmd); void LCD1602_INIT(); unsigned char code word1[]={"cjb study 1602"}; void LCDShowstr(unsigned char addr_start,unsigned char *p); //x y表示坐標(biāo) p表示指針變量 即數(shù)組word的首地址 void main() { LCD1602_INIT(); LCDShowstr(0x80,word1); while(1){} } void LCD1602_INIT() //1602INIT { write_cmd(0x38); //顯示模式設(shè)置 1602 固定命令 write_cmd(0x0c); //開顯示器 關(guān)閉光標(biāo) 0000 1DCB D=1開顯示 C=1顯示光標(biāo) B=1 光標(biāo)閃爍 write_cmd(0x06); //文字不動(dòng) 地址自動(dòng)加1 0000 01NS N=1 寫入一個(gè)字符后 地址自動(dòng)加1 S=0 寫入一個(gè)字符 整屏不移動(dòng) write_cmd(0x01); //清屏 } /*1602每次的寫入都要確保其處于不忙的狀態(tài) 狀態(tài)字的最高位D7代表其是否忙碌1 禁止寫入 0 應(yīng)許寫入*/ void readbusy() { unsigned char sta; LCD1602_DB=0XFF; //P0置位,判斷D7是不是1602拉低的 LCD1602_RD=0; LCD1602_RW=1; //讀D7狀態(tài) RD RW 不能寫錯(cuò) do{ LCD1602_E=1; //使能 sta=LCD1602_DB; }while(sta&0x80); //等到sta 首位為0 時(shí) 退出循環(huán) 此時(shí)1602處于空閑狀態(tài) LCD1602_E=0; //讀完了關(guān)閉使能 液晶輸出數(shù)據(jù)對總線的干擾 } void write_data(unsigned char dat) //寫數(shù)據(jù) { readbusy(); LCD1602_RD=1; //參考時(shí)序圖 LCD1602_RW=0; LCD1602_DB=dat; LCD1602_E=1; LCD1602_E=0; } void write_cmd(unsigned char cmd) //寫命令 { readbusy(); LCD1602_RD=0; //參考時(shí)序圖 LCD1602_RW=0; LCD1602_DB=cmd; LCD1602_E=1; LCD1602_E=0; } void LCDShowstr(unsigned char addr_start,unsigned char *p) { write_cmd(addr_start); while(*p!='\0') { write_data(*p++); } } 至于問題出在哪里 我認(rèn)為 是坐標(biāo)哪里有問題 希望大神求解 |
| 真的寫得很好,很適合初學(xué)者。 |
| 講的很詳細(xì)透徹 |
| 挺好挺好,學(xué)會(huì)了不少東西 |
Powered by 單片機(jī)教程網(wǎng)