熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2018-4-30 21:01
正文摘要:這個(gè)程序的目的是顯示出welcome Harbin China 我先是使用的查忙程序,但是LCD沒有顯示 后來用的這個(gè)程序沒有使用差忙的程序,而是使用的延時(shí)函數(shù),但是1602液晶屏還是沒有顯示,誰(shuí)知道是怎么回事嗎? #include< ... |
|
void LCD_initialize()//初始化函數(shù) { write_command(0x38); _nop_(); write_command(0x0c); _nop_(); write_command(0x0b); _nop_(); write_command(0x01); delay(1); } 這個(gè)你把0xb改為0x6就可以顯示,但是顯示是一次顯示的。我用自己的實(shí)驗(yàn)板演示了以下。 |
| 檢查一下是a6還是a18 |
|
* 指針運(yùn)算符 //*p為p所指向的存儲(chǔ)單元的內(nèi)容 p就相當(dāng)于存儲(chǔ)單元地址 |
|
謝謝蟹蟹,還有個(gè)問題,這兩個(gè)*都不可省略嘛???? |
| *是指針 |
|
void string(uchar ad,uchar *p,uchar n)//顯示字符函數(shù) { uchar i; write_command(ad); for(i=0;i<n;i++) { write_data(*p++); delay(100); } } 請(qǐng)問這個(gè)*號(hào)是什么呢?為什么去掉之后就不對(duì)了,而顯示亂碼 |
| 時(shí)序問題或者電位器 |
zl2168 發(fā)表于 2018-5-2 12:52 已經(jīng)改好了,多謝幫助! |
wulin 發(fā)表于 2018-5-2 16:27 行,已經(jīng)改好了,多謝幫助! |
改了一下,實(shí)物驗(yàn)證正常。 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define out P0 sbit RS=P2^0;//將P2口的0,1,2號(hào)口作為RS RW E的接口 sbit RW=P2^1;// sbit E=P2^2;// //void LCD_initialize();//初始化函數(shù) //void check_busy();//查忙函數(shù),但是這次沒有用到 //void write_command(uchar com);//寫命令函數(shù) //void write_data(uchar dat);//寫數(shù)據(jù)函數(shù) //void string(uchar ad,uchar*p,uchar n);//使Lcd顯示字符的函數(shù) //void delay(uchar i);//延時(shí)函數(shù) void delay(uchar i)//延時(shí)函數(shù) { uchar t; while(i--) { for(t=0;t<120;t++); } } void write_command(uchar com)//寫命令函數(shù) { // delay(1); E=0; RS=0; // RW=0; out=com; delay(1); E=1; delay(1); E=0; // delay(1); } void write_data(uchar dat)//寫數(shù)據(jù)函數(shù) { // delay(1); // E=0; RS=1; // RW=0; out=dat; delay(1); E=1; delay(1); E=0; // delay(1); } void LCD_initialize()//初始化函數(shù) { RW=0; write_command(0x38); write_command(0x01); write_command(0x0c); write_command(0x06); // write_command(0x0b); write_command(0x80); } void string(uchar ad,uchar *p,uchar n)//顯示字符函數(shù) { uchar i; write_command(ad); for(i=0;i<n;i++) { write_data(*p++); delay(100); } } void main() { LCD_initialize();//LCD初始化 while(1) { string(0x85,"welcome",7);//寫入welcome string(0xc2,"Harbin China",12);//寫入Harbin China delay(100); write_command(0x01);//清屏 delay(100); } } |
|
實(shí)例67 LCD1602顯示屏顯示 先Proteus仿真一下,確認(rèn)有效。
實(shí)例61 LCD1602顯示屏顯示.rar
(49.26 KB, 下載次數(shù): 289)
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1。書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語(yǔ)句條條有注解。 |
Powered by 單片機(jī)教程網(wǎng)