免费1夜情网站-免费18岁禁看-免费 在线观看 视频-免费 视频 1级-87福利在线-87福利视频

歡迎訪問杭州精顯科技有限公司液晶顯示屏網(wǎng)站! 設(shè)為首頁 | 收藏本站| 網(wǎng)站地圖
全國統(tǒng)一服務(wù)熱線
15382323032
?

技術(shù)知識

您只需一個(gè)電話我們將推薦性價(jià)比高的液晶屏產(chǎn)品選型,讓您花合理的價(jià)格,達(dá)到預(yù)期的效果

全國統(tǒng)一服務(wù)熱線
15382323032

產(chǎn)品動(dòng)態(tài)

聯(lián)系我們

全國統(tǒng)一服務(wù)熱線:

15382323032

客服QQ:3234659108

手機(jī):15382323032

地址:浙江省杭州市余杭區(qū)五常街道西溪軟件園金牛座B2座4層4118-4119

當(dāng)前位置: 主頁 > 資訊中心 > 技術(shù)知識 > >

1602液晶顯示屏程序詳解(C語言詳細(xì)解說)

文章出處:原創(chuàng) 人氣:發(fā)表時(shí)間:2018-07-02

    液晶模塊和數(shù)碼管相比,液晶模塊會(huì)顯得更加專業(yè)、漂亮。液晶顯示屏以其體積小、功耗低、超薄輕巧、顯示內(nèi)容豐富、使用方便等等諸多優(yōu)點(diǎn),在電子設(shè)備、通訊、家用電器、儀器儀表等低功耗應(yīng)用系統(tǒng)之中得到越來越廣泛的應(yīng)用了,使得這一些電子設(shè)備的人機(jī)界面變得越來越直觀、越來越形象了,液晶模塊現(xiàn)在已經(jīng)廣泛的應(yīng)用于液晶電視機(jī)、電子表、復(fù)印機(jī)、計(jì)算器、便攜式、IC卡電話機(jī)、掌上型電子玩具、傳真機(jī)等許多方面。1602的字符型液晶模塊(帶背光),是現(xiàn)在工控系統(tǒng)之中使用最為廣泛的液晶屏之一了。1602采用了標(biāo)準(zhǔn)的16腳接口,其引腳功能如下所示:
  1腳:VSS是電源地,接到GND。
  2腳:VDD接到5V正電源。
  3腳:VL為液晶顯示屏對比度的調(diào)整端,在接正電源時(shí)對比度是最弱的,在接地電源時(shí)對比度是最高,對比度在過高時(shí)顯示會(huì)產(chǎn)生“鬼影”,在使用時(shí)可以通過一個(gè)10K的電位器來調(diào)整對比度。
  4腳:RS是寄存器選擇,在高電平時(shí)選擇數(shù)據(jù)寄存器、在低電平時(shí)則選擇指令寄存器。
  5腳:RW為讀寫信號線,在其高電平時(shí)進(jìn)行讀操作,低電平時(shí)則進(jìn)行寫操作。當(dāng)RS與RW都共同為低電平時(shí),就可以寫入指令或者是顯示地址,當(dāng)RS為低電平,RW為高電平時(shí)就可以讀忙信號,當(dāng)RS為高電平、RW為低電平時(shí)就可以寫入數(shù)據(jù)了。
  6腳:E端是使能端,當(dāng)E端由高電平跳變成低電平的時(shí)候,液晶模塊執(zhí)行命令。
  7~14腳:D0~D7都為8位雙向數(shù)據(jù)線。
  15腳:BLA的背光電源正極(+5V)的輸入引腳。
  16腳:BLK的背光電源負(fù)極,接到GND。

       1602的液晶模塊內(nèi)一般都是帶有標(biāo)準(zhǔn)字庫的,在內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)是存儲(chǔ)了192個(gè)5×7的點(diǎn)陣字符,32個(gè)5×10的點(diǎn)陣字符。另外還會(huì)有字符生成RAM(CGRAM)512字節(jié),供給用戶來自定義字符。比如表1所示,這一些字符都有:英文字母的大小寫、阿拉伯?dāng)?shù)字、常用的符號以及日文假名等,每一個(gè)字符都會(huì)有一個(gè)固定的代碼,比如:大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊會(huì)把地址41H中的點(diǎn)陣字符圖形給顯示出來,我們就能夠看到字母“A”了。

    液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每一條指令之前都一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令會(huì)失效。要顯示字符時(shí)需要先輸入顯示字符地址,也就是說告訴模塊在哪里顯示字符。

    C51程序如下:
[注:AT89S51使用12M晶振]
[cpp] view plain copy
1. /*==========================================================*/  
2. #include <reg51.h>  
3. #define LCM_Data P1  
4. #define Busy 0x80 //用于檢測LCM狀態(tài)字中的Busy標(biāo)識  
5. sbit LCM_RW P2^0; //定義引腳  
6. sbit LCM_RS P2^1;  
7. sbit LCM_E P2^2;  
8.   
9. void WriteDataLCM(unsigned char WDLCM);  
10. void WriteCommandLCM(unsigned char WCLCM,BuysC);  
11. unsigned char ReadDataLCM(void);  
12. unsigned char ReadStatusLCM(void);  
13. void LCMInit(void);  
14. void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);  
15. void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);  
16. void Delay5Ms(void);  
17. void Delay400Ms(void);  
18. unsigned char code csdn[] = {"csdn"};  
19. unsigned char code net[] = {www.csdn.net};  
20. void main(void)  
21. {  
22. LCMInit(); //LCM初始化  
23. Delay5Ms(); //延時(shí)片刻(可不要)  
24. DisplayListChar(0, 5, csdn);  
25. DisplayListChar(1, 0, net);  
26. ReadDataLCM();//測試用句無意義  
27. while(1);  
28. }  
29. //寫數(shù)據(jù)  
30. void WriteDataLCM(unsigned char WDLCM)  
31. {  
32. ReadStatusLCM(); //檢測忙  
33. LCM_Data = WDLCM;  
34. LCM_RS = 1;  
35. LCM_RW = 0;  
36. LCM_E = 0; //若晶振速度太高可以在這后加小的延時(shí)  
37. LCM_E = 0; //延時(shí)  
38. LCM_E = 1;  
39. }  
40. //寫指令  
41. void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時(shí)忽略忙檢測  
42. {  
43. if (BuysC) ReadStatusLCM(); //根據(jù)需要檢測忙  
44. LCM_Data = WCLCM;  
45. LCM_RS = 0;  
46. LCM_RW = 0;  
47. LCM_E = 0;  
48. LCM_E = 0;  
49. LCM_E = 1;  
50. }  
51. //讀數(shù)據(jù)  
52. unsigned char ReadDataLCM(void)  
53. {  
54. LCM_RS = 1;  
55. LCM_RW = 1;  
56. LCM_E = 0;  
57. LCM_E = 0;  
58. LCM_E = 1;  
59. return(LCM_Data);  
60. }  
61. //讀狀態(tài)  
62. unsigned char ReadStatusLCM(void)  
63. {  
64. LCM_Data = 0xFF;  
65. LCM_RS = 0;  
66. LCM_RW = 1;  
67. LCM_E = 0;  
68. LCM_E = 0;  
69. LCM_E = 1;  
70. while (LCM_Data & Busy); //檢測忙信號  
71. return(LCM_Data);  
72. }  
73. void LCMInit(void) //LCM初始化  
74. {  
75. LCM_Data = 0;  
76. WriteCommandLCM(0x38,0); //三次顯示模式設(shè)置,不檢測忙信號  
77. Delay5Ms();  
78. WriteCommandLCM(0x38,0);  
79. Delay5Ms();  
80. WriteCommandLCM(0x38,0);  
81. Delay5Ms();  
82. WriteCommandLCM(0x38,1); //顯示模式設(shè)置,開始要求每次檢測忙信號  
83. WriteCommandLCM(0x08,1); //關(guān)閉顯示  
84. WriteCommandLCM(0x01,1); //顯示清屏  
85. WriteCommandLCM(0x06,1); // 顯示光標(biāo)移動(dòng)設(shè)置  
86. WriteCommandLCM(0x0C,1); // 顯示開及光標(biāo)設(shè)置  
87. }  
88. //按指定位置顯示一個(gè)字符  
89. void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)  
90. {  
91. Y &= 0x1;  
92. X &= 0xF; //限制X不能大于15,Y不能大于1  
93. if (Y) X |= 0x40; //當(dāng)要顯示第二行時(shí)地址碼 0x40;  
94. X |= 0x80; // 算出指令碼  
95. WriteCommandLCM(X, 0); //這里不檢測忙信號,發(fā)送地址碼  
96. WriteDataLCM(DData);  
97. }  
98. //按指定位置顯示一串字符  
99. void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)  
100. {  
101. unsigned char ListLength;  
102. ListLength = 0;  
103. Y &= 0x1;  
104. X &= 0xF; //限制X不能大于15,Y不能大于1  
105. while (DData[ListLength]>0x20) //若到達(dá)字串尾則退出  
106. {  
107. if (X <= 0xF) //X坐標(biāo)應(yīng)小于0xF  
108. {  
109. DisplayOneChar(X, Y, DData[ListLength]); //顯示單個(gè)字符  
110. ListLength++;  
111. X++;  
112. }  
113. }  
114. }  
115. //5ms延時(shí)  
116. void Delay5Ms(void)  
117. {  
118. unsigned int TempCyc = 5552;  
119. while(TempCyc--);  
120. }  
 

?

群創(chuàng)液晶屏 友達(dá)液晶屏 京東方液晶屏 京瓷液晶屏 龍騰液晶屏 天馬液晶屏 奇美液晶屏 三菱液晶屏

主站蜘蛛池模板: 国产欧美亚洲精品第二区首页 | 日韩在线看免费高清完整版 | 亚洲精品老司机福利在线播放 | 99视频在线播放 | 日本一区二区三区精品 | 国产午夜精品免费一二区 | 国产精品1024永久免费视频 | 落跑甜心电视剧全集免费观看在线 | 亚洲专区在线播放 | 久久精品小视频 | 日本高清在线观看 | 日本高清视频在线观看 | 凹凸世界第4季完整免费 | 日本在线观看免费 | 激情综合网址 | 黄色在线视频播放 | 国产成人自产拍免费视频 | 亚洲国产日韩在线人成蜜芽 | 日韩在线不卡一区在线观看 | 欧美日本成人 | 在线观看毛片网站 | 免费福利网站在线观看 | 国产精品视频福利一区二区 | 欧美日韩中文在线视频 | 国产精品俺来也在线观看了 | 在线免费观看精品 | 亚洲欧美天堂 | 欧美成人另类 | 欧美黄色大片免费观看 | 在线亚洲激情 | 亚洲日本天堂 | 精品国产亚一区二区三区 | 国产一级一级一级成人毛片 | 成年男女免费视频网站 | 欧美成人黄色 | 九九热视频在线播放 | 有色视频在线观看免费高清 | 国内精品久久久久久久久 | 麻豆精品久久久一区二区 | 亚洲片在线 | 久久综合九色综合欧美播 |