1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標(biāo)題:
教大家怎么寫一個(gè)液晶1602的程序(絕對(duì)很簡(jiǎn)單!!)
[打印本頁(yè)]
作者:
51hei社區(qū)
時(shí)間:
2016-1-11 01:50
標(biāo)題:
教大家怎么寫一個(gè)液晶1602的程序(絕對(duì)很簡(jiǎn)單!!)
今天,小編給各位電子愛好者伙伴講解這么一個(gè)程序,也許你看了郭天祥的10天學(xué)會(huì)單片機(jī)后感覺好多代碼都不能親手動(dòng)手去寫對(duì)嗎?其實(shí)自己寫代碼寫模塊都是有一定的方法的,掌握了一定的方法,以后不管寫什么,你都會(huì)如魚得手,小編總結(jié)了一個(gè)很多人都頭疼的問(wèn)題,如何寫一個(gè)液晶顯示的程序呢?代碼好長(zhǎng)!!!!怎么辦?害怕了?沒有動(dòng)力干了?小編告訴你,你立馬有動(dòng)力,不再懼怕類似1602的模塊!!請(qǐng)往下看。
首先:
要寫一個(gè)液晶1602的程序,我們需要明白液晶有三個(gè)端口是要寫入相關(guān)的數(shù)據(jù)的;分別是E、RS、RW。
數(shù)據(jù)手冊(cè)內(nèi)容眾多,小編就不一一闡釋了;
所以,請(qǐng)看lcd1602數(shù)據(jù)手冊(cè):
http://m.raoushi.com/mcu/827.html
接著:
看完了數(shù)據(jù)手冊(cè),有木有發(fā)現(xiàn)靈感?是不是好多都是可以看著自己就可以敲出來(lái)?
好了,我們開始寫程序:
寫液晶的時(shí)候分為以下步驟:
1、寫指令(看看數(shù)據(jù)手冊(cè)里有的)
void writecmd(uchar com)
{
E=0; //為什么要寫這一條呢,看看時(shí)序圖就清楚了
RS=0;
RW=0;
P0=com;
delay(2); //延時(shí)一下會(huì)穩(wěn)定很多,后面一條也是一樣的
E=1;
delay(2);
E=0;
}
//以上的P0就是液晶送數(shù)據(jù)的端口,當(dāng)然你可以是P2口,看你的 電路是怎么樣那就怎么改,至于為什么是com,這是個(gè)自定義形式參數(shù)來(lái)的,也可以改成別的,但是不能是關(guān)鍵字,這個(gè)參數(shù)傳的就是你想要寫的指令;下面寫數(shù)據(jù)的P0是你想要寫的數(shù)據(jù)。詳情看看大程序便知
2、寫數(shù)據(jù)(同樣數(shù)據(jù)手冊(cè)也有)
void writedata(uchar dat)//寫數(shù)據(jù),函數(shù)名隨便你定義看得懂就行
{
E=0; //寫數(shù)據(jù)和寫命令的方法差不多,復(fù)制過(guò)來(lái)。照著數(shù)據(jù)手 //冊(cè)的寫數(shù)據(jù)要求去寫!
RS=1;
RW=0;
P0=dat;
delay(2);
E=1;
delay(2);
E=0;
}
3、初始化(一樣的,數(shù)據(jù)手冊(cè)也有,照寫)
void init(void)
{ delay(15);
writecmd(0x38);
delay(5);
writecmd(0x38);
delay(5);
writecmd(0x38);
writecmd(0x38);
writecmd(0x08);
writecmd(0x01);
writecmd(0x06);
writecmd(0x0c);
}
好了一個(gè)液晶的基本操作就是這三部分組成的,不難吧?
接下來(lái)來(lái)看看我們?nèi)绾物@示如圖所示的字符:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//這三個(gè)引腳參考資料
sbit E=P2^7; //1602使能引腳
sbit RW=P2^6; //1602讀寫引腳
sbit RS=P2^5; //1602數(shù)據(jù)/命令選擇引腳
uchar tab1[]="
m.raoushi.com
"; //要顯示什么就在這兒改
uchar tab2[]="LCD1602 test ok!"; //[size=15.5555562973022px]要顯示什么就在這兒改
void delay(uint del) //延時(shí)1ms
{
uint i,j;
for(i=0;i<del;i++)
for(j=0;j<=168;j++);
}
void writecmd(uchar com) //寫指令
{
E=0;
RS=0;
RW=0;
P0=com;
delay(2);
E=1;
delay(2);
E=0;
}
void writedata(uchar dat)//寫數(shù)據(jù)
{
E=0;
RS=1;
RW=0;
P0=dat;
delay(2);
E=1;
delay(2);
E=0;
}
void init(void) //初始化
{
delay(15);
writecmd(0x38);
delay(5);
writecmd(0x38);
delay(5);
writecmd(0x38);
writecmd(0x38);
writecmd(0x08);
writecmd(0x01);
writecmd(0x06);
writecmd(0x0c);
}
void main()
{ uchar j;
init();
writecmd(0x80); //告訴液晶在哪個(gè)地方顯示 (設(shè)置地址指針)//80H+00
for(j=0;j<16;j++) //有16個(gè)字符,要循環(huán)16次
{
writedata(tab1[j]);
delay(2);
}
writecmd(0x80+0x40); //再設(shè)置第二行的起始位置80H+40H
for(j=0;j<16;j++) //有16個(gè)字符,要循環(huán)16次
{ writedata(tab2[j]);
delay(2);
}
while(1); //讓液晶顯示就一直停在這里。
}
好了,你們可以照著我這個(gè)程序去修改得到你們想要的顯示結(jié)果,同樣也可以發(fā)揮一下你們的想法,如何讓液晶進(jìn)行移屏顯示呢?怎么樣做出移動(dòng)的效果呢?有待大家的努力噢!小編最主要的目的是要告訴大家,任何模塊拿起來(lái)都不要懼怕,把數(shù)據(jù)手冊(cè)看一遍,看不懂再看一遍,然后看看別人是怎么寫的,自己動(dòng)手改一遍,再寫一遍,轉(zhuǎn)化為自己的東西,這樣就可以學(xué)到經(jīng)驗(yàn)了。
作者:
努力山
時(shí)間:
2017-12-20 15:11
太好了受益很深;
作者:
wugq5
時(shí)間:
2017-12-20 19:02
簡(jiǎn)潔明了,謝謝分享!
作者:
qjzyx
時(shí)間:
2017-12-24 17:35
謝謝,你說(shuō)的很易學(xué)懂!
作者:
only5784
時(shí)間:
2017-12-24 18:04
太謝謝了,正在犯愁。多謝大俠
作者:
lsc_nj
時(shí)間:
2017-12-24 19:47
簡(jiǎn)潔明了,謝謝分享!
作者:
lsc_nj
時(shí)間:
2017-12-25 10:46
謝謝,你說(shuō)的很易學(xué)懂!
作者:
huang0762
時(shí)間:
2017-12-25 14:36
真的非常感謝成功點(diǎn)亮
作者:
maoanlai
時(shí)間:
2018-1-1 14:56
請(qǐng)問(wèn)怎么顯示單片機(jī)里的數(shù)據(jù)啊,就是不是從程序里定義的,而是由單片機(jī)從別的地方都出來(lái)的數(shù)據(jù)
作者:
邁特拉布
時(shí)間:
2018-5-5 23:45
謝謝你
作者:
carolineee
時(shí)間:
2018-5-22 15:46
學(xué)習(xí)了、謝謝
作者:
流年521
時(shí)間:
2018-5-22 18:12
簡(jiǎn)單明了,有收獲,謝謝樓主
作者:
一杯樹同學(xué)
時(shí)間:
2018-5-22 20:56
謝謝分享
作者:
feiji666
時(shí)間:
2018-5-22 21:08
學(xué)習(xí)了,值得收藏
作者:
康德
時(shí)間:
2018-7-23 14:47
感謝分享。有些困惑解開了,謝謝
作者:
FQ967
時(shí)間:
2018-7-24 09:35
記號(hào)一下!慢慢消化!
作者:
轟爆機(jī)
時(shí)間:
2018-7-24 11:25
感謝大神
作者:
單片機(jī)萌新21
時(shí)間:
2018-7-24 11:36
感謝解決了這一塊的疑惑
作者:
lwf1978l
時(shí)間:
2018-7-24 14:13
寫的很簡(jiǎn)潔,思路很清楚。
作者:
kapoc7
時(shí)間:
2018-7-24 16:27
支持技術(shù)貼,對(duì)我們初學(xué)者來(lái)說(shuō)真是及時(shí)雨。
作者:
xhkk
時(shí)間:
2018-7-24 17:12
其實(shí)就是這么回事
作者:
Azure645
時(shí)間:
2018-7-31 17:52
學(xué)習(xí)了、謝謝
作者:
jie1997
時(shí)間:
2018-8-1 11:25
謝謝樓主,適合小白學(xué)習(xí)。
作者:
281770683
時(shí)間:
2018-8-4 12:09
簡(jiǎn)單明了
作者:
泰瑞爾的羽翼
時(shí)間:
2018-8-4 13:59
前來(lái)學(xué)習(xí)了
作者:
rz1976
時(shí)間:
2018-9-7 08:26
路過(guò)學(xué)習(xí)學(xué)習(xí)。
作者:
FDGFDG
時(shí)間:
2018-10-3 17:52
樓主,為什么我顯示的字母是黑點(diǎn)
作者:
快樂(lè)眼淚
時(shí)間:
2018-10-3 19:33
正在學(xué)習(xí),謝謝!
作者:
wangzihao233
時(shí)間:
2018-12-3 13:43
最后沒有while(1)咋辦
作者:
gnez
時(shí)間:
2018-12-5 22:45
感謝分享!!!!
作者:
cb474265474265
時(shí)間:
2018-12-6 07:42
多謝樓主分享,學(xué)習(xí)了。
作者:
yiwen_005
時(shí)間:
2018-12-6 10:54
感謝。自己琢磨了老半天,終于會(huì)了。
作者:
yzhbyyy
時(shí)間:
2019-5-20 14:45
感謝分享!!!!!!!
作者:
LiYouhong263
時(shí)間:
2019-5-20 19:32
太收益了,簡(jiǎn)單明了。
作者:
辰宿列張
時(shí)間:
2019-6-13 10:16
感謝,但不知道我哪里出錯(cuò)了,顯示出來(lái)是錯(cuò)誤的,代碼直接照抄的
作者:
nsush
時(shí)間:
2019-6-14 19:15
看了之后,忍無(wú)可忍了,一定要回復(fù)下,很有用,樓主多謝!辛苦了!
作者:
nsush
時(shí)間:
2019-6-19 03:05
另外,為啥初始化里,0x38,就是定義顯示兩行,5*8字符的。要刷3次?
作者:
cphnkj188
時(shí)間:
2019-6-19 18:29
經(jīng)典,以前看不懂的這樣一講就容易理解了,謝謝!
作者:
囚心久愛不膩
時(shí)間:
2019-7-11 10:48
樓主,再分享一個(gè)12864的唄,最近被他難住了
作者:
azi197417
時(shí)間:
2019-7-11 14:03
簡(jiǎn)單明了,學(xué)習(xí)中
作者:
7320527
時(shí)間:
2019-7-11 15:26
不錯(cuò)的程序,謝謝啦
作者:
化蝶
時(shí)間:
2019-7-14 11:35
謝謝分享,贊一個(gè)
作者:
Amber815
時(shí)間:
2019-7-19 11:15
思路清晰,學(xué)習(xí)方法很贊哦!
作者:
Amber815
時(shí)間:
2019-7-19 14:41
但是LCD不現(xiàn)實(shí)怎么辦
作者:
wangxing123456
時(shí)間:
2019-7-22 14:42
謝謝分享!
作者:
12345678..
時(shí)間:
2019-7-22 22:37
感謝分享
作者:
下一秒-
時(shí)間:
2019-7-23 09:10
贊得很,剛好在學(xué)這個(gè)1602!
作者:
謝建業(yè)
時(shí)間:
2019-7-31 09:02
謝謝,簡(jiǎn)直太優(yōu)秀了,感謝分享,
作者:
夏宇閃擎
時(shí)間:
2019-8-1 09:20
感謝樓主,收貨頗多
作者:
123LI
時(shí)間:
2019-8-1 10:10
不錯(cuò),很有心
作者:
作業(yè)終結(jié)者
時(shí)間:
2020-4-17 15:09
支持,已經(jīng)收藏
作者:
LUREN1
時(shí)間:
2020-4-19 20:46
淺顯易懂,受益匪淺
作者:
王偉全
時(shí)間:
2020-4-19 21:10
很給力,比較簡(jiǎn)單易懂
作者:
shyboy133
時(shí)間:
2020-5-3 19:21
謝謝樓主分享,很有用。
作者:
412903510
時(shí)間:
2020-5-4 22:24
很棒!
作者:
lsg0280
時(shí)間:
2021-7-7 16:03
這篇文章指明了成長(zhǎng)的道路。
作者:
man1234567
時(shí)間:
2021-7-7 17:38
對(duì)照時(shí)序圖講解就更好了
作者:
pq1972
時(shí)間:
2021-7-7 18:08
謝謝分享這么好的經(jīng)驗(yàn),新手最需要。也最缺少這樣的經(jīng)驗(yàn)。
作者:
方禾
時(shí)間:
2021-7-9 21:03
簡(jiǎn)潔
作者:
沒啥好名
時(shí)間:
2021-10-30 21:46
都不用判忙的嗎?
作者:
沒啥好名
時(shí)間:
2021-10-31 09:00
nsush 發(fā)表于 2019-6-19 03:05
另外,為啥初始化里,0x38,就是定義顯示兩行,5*8字符的。要刷3次?
只用一次就可以了
作者:
沒啥好名
時(shí)間:
2021-10-31 09:01
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^6;
sbit rw=P2^5;
sbit en=P2^7;
uchar tab1[]="
m.raoushi.com
";
void busy()
{
uchar sta;
P0=0xff;
rs=0;
rw=1;
do{
en=1;
sta=P0;
en=0;
}while(sta&0x80);
}
void wr_lcd(uchar a,uchar b)
{
busy();
rs=a;
rw=0;
P0=b;
en=1;
en=0;
}
void init(void)
{
wr_lcd(0,0x38);
wr_lcd(0,0x08);
wr_lcd(0,0x0c);
wr_lcd(0,0x06);
wr_lcd(0,0x01);
}
void main()
{
uchar a;
init();
wr_lcd(0,0x80);
for(a=0;a<8;a++)
{
wr_lcd(1,tab1[a]);
}
while(1);
}
這樣不簡(jiǎn)單一點(diǎn)?
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1