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