lcd1602在proteus中怎么找
proteus提供了很多LCD的仿真器件,分享一個(gè)關(guān)于lcd1602的查找操作,希望對(duì)需要的朋友有幫助。
第1步:使用proteus打開一個(gè)工程,點(diǎn)擊DEVICES的P,準(zhǔn)備放置元件。
第2步:在Pick Devices對(duì)話框中的“Category”列表找到“Optoelectronics”。在“Sub-category”列表中選擇“Alphanumeric LCDs”,可以在右側(cè)的Results中看到可以使用的LCD元件,其中Description列名了分辨率,16x2即為1602,確認(rèn)后點(diǎn)擊“OK”鍵。
如果不記得1602的具體路徑,那么可以使用關(guān)鍵詞LCD在Pick Devices對(duì)話框進(jìn)行檢索,這樣可以縮小查找范圍。
另一種比較粗暴的方法是利用proteus自帶的Demo工程里的現(xiàn)有元件的信息,經(jīng)常使用proteus應(yīng)該都知道它提供了LCD1602的仿真Demo工程。我們可以通過“File”-》“Open Sample Project”打開Sample工程。
在軟件彈出的“Sample Projects Browser”的Category列表找到VSM for 8051,右側(cè)Results顯示出了幾個(gè)LCD的工程,其中一個(gè)就是LCD1602的。
當(dāng)然,我們也可以使用LCD關(guān)鍵詞進(jìn)行查找,這樣能夠更快的鎖定LCD1602示例工程。
選擇LCD1602工程后,點(diǎn)擊“打開”。
在LCD1602工程中找到LCD1602元件,可以看到它的元件具體名稱為L(zhǎng)M016L,接著通過在Pick Devices檢索LM016L關(guān)鍵詞即可找到該器件。
lcd1602proteus仿真
先看懂液晶操作時(shí)序圖(寫操作:寫命令、寫數(shù)據(jù))
1.讀操作時(shí)序
2.寫操作時(shí)序
由時(shí)序圖可知,寫操作時(shí)(包括寫指令、寫數(shù)據(jù)),RS=0;RW=0;再進(jìn)行I/O口寫操作,然后使能端口完成一次高脈沖(——高——低),這是液晶就會(huì)執(zhí)行寫操作的內(nèi)容;
1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表10-14所示:
思路:
1、控制液晶顯示輸出,需要對(duì)其進(jìn)行寫數(shù)據(jù)(寫數(shù)據(jù)前,同樣需要先告訴液晶你下一步要在哪里寫,因此寫數(shù)據(jù)前,要寫命令先設(shè)定數(shù)據(jù)指針)
程序設(shè)計(jì)方式:
write_com();//寫命令函數(shù),
write_date();//寫數(shù)據(jù)函數(shù)
2、由于要先進(jìn)行初始化,(初始化實(shí)際就是對(duì)液晶寫指令,告訴其工作方式等)因此初始化函數(shù)里面自然就需要調(diào)用寫命令函數(shù)write_com();
程序結(jié)構(gòu)如下:
int init()
{
EN = 0;
write_com(0X38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
write_com(0X0C);//設(shè)置開顯示,不顯示光標(biāo)
write_com(0X06);//寫一個(gè)字符時(shí),整屏右移
write_com(0X01);//顯示清零
return 0;
}
主函數(shù)部分程序結(jié)構(gòu):
int main()
{
init();//調(diào)用初始化函數(shù)
write_com(0x80);//調(diào)用寫指令函數(shù),設(shè)置寫數(shù)據(jù)開始指針(第一行)
for(x=0;x《6;x++)//數(shù)據(jù)寫入循環(huán)程序
{
write_date(table[x]);
delay(150);
}
write_com(0x80+0x40); ;//調(diào)用寫指令函數(shù),設(shè)置寫數(shù)據(jù)開始指針(第二行)
for(x=0;x《17;x++)//數(shù)據(jù)寫入循環(huán)程序
{
write_date(table1[x]);
delay(150);
}
while(1);
return 0;
}
完整程序如下:
1 #include《reg52.h》
2 int init(); //聲明初始化函數(shù)
3 int write_com(unsigned char);//聲明寫命令函數(shù)
4 int write_date(unsigned char);//聲明寫數(shù)據(jù)函數(shù)
5 int delay(unsigned char);//聲明延遲函數(shù)
6 unsigned char x;
7 sbit RS = P1^0;
8 sbit RW = P1^1;
9 sbit EN = P1^2;
10 unsigned char code table[]=“HELLO!”;
11 unsigned char code table1[]=“MY name is Terry!”;
12
13 int main(void)//主函數(shù)
14 {
15 init();
16 write_com(0x80);
17 for(x=0;x《6;x++)
18 {
19 write_date(table[x]);
20 delay(150);
21 }
22 write_com(0x80+0x40);
23 for(x=0;x《17;x++)
24 {
25 write_date(table1[x]);
26 delay(150);
27 }
28 while(1);
29 return 0;
30 }
31
32 int init()//初始化函數(shù)體
33 {
34 EN = 0;
35 write_com(0X38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
36 write_com(0X0C);//設(shè)置開顯示,不顯示光標(biāo)
37 write_com(0X06);//寫一個(gè)字符時(shí),整屏右移
38 write_com(0X01);//顯示清零
39 return 0;
40 }
41
42 int write_com(unsigned char com)//寫命令的函數(shù)體
43 {
44 RS = 0;
45 RW = 0;
46 P0 = com;
47 delay(5);
48 EN = 1;
49 delay(5);
50 EN = 0;
51 return 0;
52 }
53
54 int write_date(unsigned char date)//寫數(shù)據(jù)的函數(shù)體
55 {
56 RS = 1;
57 RW = 0;
58 P0 = date;
59 delay(5);
60 EN = 1;
61 delay(5);
62 EN = 0;
63 return 0;
64 }
65
66 int delay(unsigned char xms)
67 {
68 unsigned char x,y;
69 for(x=xms;x》0;x--)
70 for(y=110;y》0;y--);
71 return 0;
72 }
顯示輸出如下:
小編推薦閱讀:
lcd1602只亮不顯示_lcd1602簡(jiǎn)單顯示程序
評(píng)論