王秀
摘 要:文章利用Proteus軟件和keil軟件完成了LCD顯示系統(tǒng)設(shè)計,該系統(tǒng)主要有單片機最小系統(tǒng)和LCD1602組成,并在Proteus軟件里進(jìn)行仿真,結(jié)果表明,本系統(tǒng)能夠正確顯示需要顯示的信息。因此基于Proteus軟件仿真系統(tǒng)設(shè)計能夠讓單片機初學(xué)者理解晦澀難懂的部分,省錢并且能加快單片機學(xué)習(xí)和設(shè)計的進(jìn)程。
關(guān)鍵詞:Proteus;單片機;仿真;液晶顯示器
中圖分類號:TP368.2 文獻(xiàn)標(biāo)志碼:A 文章編號:2095-2945(2017)36-0065-02
引言
單片機這門課程是自動化、機械電子等專業(yè)的一門專業(yè)技術(shù)必修課程,更是他們找工作就業(yè)的一個主要特長和技能,但是很多同學(xué)反應(yīng)這門課程學(xué)習(xí)起來晦澀難懂,主要原因就是單片機是一門實踐性很強的專業(yè)技術(shù)課,光是理論上課再加上有限的幾次硬件實驗是不好掌握這門技能的。Proteus是由Labcenter Electronics開發(fā)的功能強大的單片機仿真軟件,它包括原理圖布圖、混合模式仿真及PCB板制作等功能,它提供了豐富的外圍硬件,可以仿真模擬電路、數(shù)字電路、數(shù)?;旌想娐罚渥畲蟮牧咙c在于能夠?qū)ξ⒖刂破鬟M(jìn)行實物級的仿真,便于操作,效果逼真[1]。將Proteus軟件引入到單片機教學(xué)過程,每節(jié)課都能見證單片機實物仿真,能夠幫助學(xué)生理解很多難懂的概念和程序,讓單片機不再那么抽象和難接近,使學(xué)習(xí)效率大大提高。LCD的顯示控制一直是單片機學(xué)習(xí)中比較難理解和掌握的知識,用Proteus軟件讓學(xué)生仿真LCD的硬件和軟件的實現(xiàn)過程,可以加深學(xué)生對LCD的硬件控制和軟件編制的理解,由此來更好地掌握LCD顯示技術(shù)。本文設(shè)計案例是讓LCD滾動顯示兩行內(nèi)容:Welcome to jd305和Good study MCU!
1 LCD1602介紹及設(shè)置
液晶顯示器(Liquid Crystal Display),簡稱LCD,由于
LCD具有功耗低、體積小、超薄型、顯示高品質(zhì)等特點,而廣泛應(yīng)用在便攜式電子產(chǎn)品中。目前我們所使用的LCD是由LCD面板、驅(qū)動與控制電路組合而成的,大部分LCD都使用HD44780集成電路作為控制器,它是集驅(qū)動器與控制器于一體的專用于字符顯示的LCD顯示控制驅(qū)動集成電路。HD44780集成電路應(yīng)用簡單,只要將待顯示的字符的ASCⅡ碼放入內(nèi)部數(shù)據(jù)顯示存儲器(DD RAM),內(nèi)部控制線路就會自動通過HD44780的字符發(fā)生器將字符傳送到顯示器上。LCD1602型可以顯示2行,每行可以顯示16個字符。LCD1602共有16個引腳,引腳包括8條數(shù)據(jù)線、3條控制線和3條電源線,其中RS是寄存器選擇引腳,當(dāng)該引腳是1時,選擇是數(shù)據(jù),當(dāng)該引腳是0時,選擇的是命令。E是使能引腳,當(dāng)E=高脈沖時,可以向LCD1602里寫數(shù)據(jù)或命令。R/W是讀寫引腳,當(dāng)該引腳是1時,讀操作,當(dāng)該引腳是0時,寫操作,一般是寫,所以該引腳一般接地即可。
顯示模式設(shè)置,要讓LCD顯示字符,必須對光標(biāo)、字符移動方向等進(jìn)行設(shè)置,顯示才會符合預(yù)期要求。如要設(shè)置為16*2顯示、5*7點陣、8位數(shù)據(jù)接口,指令代碼為38H;光標(biāo)和顯示模式設(shè)置。指令代碼:0000 01 I/D S,I/D-地址指針加1或減1選擇位。I/D=1,讀或?qū)懸粋€字符后地址指針加1;I/D=0,讀或?qū)懸粋€字符后地址指針減1。如寫完一個字符后,指針加1,光標(biāo)右移,指令代碼是06H。其他指令,清屏指令是01H,全屏左移字符指令是18H,全屏右移字符指令是1CH。
2 LCD顯示系統(tǒng)硬件電路設(shè)計
LCD顯示系統(tǒng)由AT89C51、LCD1602、電源電路和復(fù)位電路組成[2],LCD1602的D0-D7引腳接單片機的P2口,E引腳接P3.4引腳,RS接P3.5引腳,R/W引腳直接接地控制。單片機與LCD1602在Proteus軟件的連接圖如圖1所示。
3 LCD顯示系統(tǒng)軟件設(shè)計
在Proteus軟件畫好電路圖,并進(jìn)行電氣規(guī)則檢查,如果沒有錯誤就可以進(jìn)行軟件設(shè)計了。在keil軟件里用C語言編制程序,編譯,如果沒有錯誤,即可生成可執(zhí)行HEX文件。LCD顯示系統(tǒng)C程序如下所示。
#include
#define uchar unsigned char
#define uint unsigned int
uchar code h1[]="Welcome to jd305";
uchar code h2[]="Good study MCU!";
sbit len=P3^4; //液晶使能端
sbit lrs=P3^5; //液晶數(shù)據(jù)命令選擇端
uchar num;
void delay(uint t) //延時子程序
{
uint x,y;
for(x=t;x>0;x--)
for(y=200;y>0;y--);
}
void write_cm(uchar cm) //寫命令子程序
{ lrs=0;
P2=cm;
len=0;
delay(10);
len=1;
delay(10);
len=0;
}
void write_shu (uchar shu) //寫數(shù)據(jù)子程序
{ lrs=1;
P2=shu;
len=0;
delay(10);
len=1;
delay(10);
len=0;
}
void init()//初始化
{ write_cm(0x38);
write_cm(0x0e);
write_cm(0x06); //顯示模式設(shè)置:數(shù)據(jù)地址指針加1,光標(biāo)右移,字符不移
write_cm(0x01); //清屏
}
void main( )
{ init();
write_cm(0x80+0x10); //指定第一行地址
for(num=0;num<16;num++)
{
write_shu(h1[num]); //寫入第一行顯示數(shù)據(jù)
delay(10);
}
write_com(0x80+0x50); //指定第二行地址
for(num=0;num<15;num++)
{ write_shu(h2[num]); //寫入第二行顯示數(shù)據(jù)
delay(10);
}
while(1)
{
for(num=0;num<15;num++)//滾動設(shè)置
{ write_cm(0x1c);
delay(100);
}
}
}
4 Proteus仿真
在KEIL里編譯程序生成可執(zhí)行文件后,利用Proteus軟件將可執(zhí)行HEX文件下載到Proteus電路圖的單片機芯片里,具體方法是雙擊單片機芯片,就可將可執(zhí)行HEX文件加載到單片機中[3]。然后點擊仿真運行按鈕就可觀看LCD實物仿真效果,仿真圖見圖1所示。
5 結(jié)束語
基于Proteus的LCD顯示系統(tǒng)設(shè)計,充分體現(xiàn)了Proteus電路設(shè)計、Keil程序設(shè)計以及聯(lián)合仿真調(diào)試一體化的設(shè)計理念,并且用Proteus軟件進(jìn)行單片機仿真設(shè)計,節(jié)能、省錢、提高效率,簡化了單片機系統(tǒng)設(shè)計過程,經(jīng)過實踐證明值得推廣應(yīng)用。
參考文獻(xiàn):
[1]張毅剛,俞洋,劉丹,等.單片機原理與應(yīng)用設(shè)計[M].北京:電子工業(yè)出版社,2016.
[2]張成法,安慶森,韓淑琴.基于單片機的LCD顯示系統(tǒng)設(shè)計[J].信息與電腦,2016(15):128.
[3]吳凌燕,王守權(quán),郭偉波.基于Proteus的LCD顯示研究[J].現(xiàn)代電子技術(shù),2011,34(19):208.endprint