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

歡迎訪問杭州精顯科技有限公司液晶顯示屏網站! 設為首頁 | 收藏本站| 網站地圖
全國統一服務熱線
19157671329
?

技術知識

您只需一個電話我們將推薦性價比高的液晶屏產品選型,讓您花合理的價格,達到預期的效果

全國統一服務熱線
19157671329

產品動態

聯系我們

全國統一服務熱線:

19157671329

客服QQ:3234659108

手機:19157671329

地址:浙江省杭州市西湖區文一西路830號蔣村商務中心B樓2-8007室

當前位置: 主頁 > 資訊中心 > 技術知識 > >

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

文章出處:原創 人氣:發表時間:2018-07-02

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

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

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

    C51程序如下:
[注:AT89S51使用12M晶振]
[cpp] view plain copy
1. /*==========================================================*/  
2. #include <reg51.h>  
3. #define LCM_Data P1  
4. #define Busy 0x80 //用于檢測LCM狀態字中的Busy標識  
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(); //延時片刻(可不要)  
24. DisplayListChar(0, 5, csdn);  
25. DisplayListChar(1, 0, net);  
26. ReadDataLCM();//測試用句無意義  
27. while(1);  
28. }  
29. //寫數據  
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; //若晶振速度太高可以在這后加小的延時  
37. LCM_E = 0; //延時  
38. LCM_E = 1;  
39. }  
40. //寫指令  
41. void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時忽略忙檢測  
42. {  
43. if (BuysC) ReadStatusLCM(); //根據需要檢測忙  
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. //讀數據  
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. //讀狀態  
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); //三次顯示模式設置,不檢測忙信號  
77. Delay5Ms();  
78. WriteCommandLCM(0x38,0);  
79. Delay5Ms();  
80. WriteCommandLCM(0x38,0);  
81. Delay5Ms();  
82. WriteCommandLCM(0x38,1); //顯示模式設置,開始要求每次檢測忙信號  
83. WriteCommandLCM(0x08,1); //關閉顯示  
84. WriteCommandLCM(0x01,1); //顯示清屏  
85. WriteCommandLCM(0x06,1); // 顯示光標移動設置  
86. WriteCommandLCM(0x0C,1); // 顯示開及光標設置  
87. }  
88. //按指定位置顯示一個字符  
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; //當要顯示第二行時地址碼 0x40;  
94. X |= 0x80; // 算出指令碼  
95. WriteCommandLCM(X, 0); //這里不檢測忙信號,發送地址碼  
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) //若到達字串尾則退出  
106. {  
107. if (X <= 0xF) //X坐標應小于0xF  
108. {  
109. DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字符  
110. ListLength++;  
111. X++;  
112. }  
113. }  
114. }  
115. //5ms延時  
116. void Delay5Ms(void)  
117. {  
118. unsigned int TempCyc = 5552;  
119. while(TempCyc--);  
120. }  
 

?

群創液晶屏 友達液晶屏 京東方液晶屏 京瓷液晶屏 龍騰液晶屏 天馬液晶屏 奇美液晶屏 三菱液晶屏

主站蜘蛛池模板: 亚洲欧美国产五月天综合| 日日艹夜夜艹| 蜜柚影院在线观看免费高清中文 | 亚洲中文字幕无码爆乳APP| 越南一级淫片高清视频| 人人做人人干| 国产精品人成视频免费999| 色婷婷影院| 在线免费视频国产| fyeex性欧美人与曾| 亚洲第一男人天堂| 日本a级在线| CHINA篮球体育飞机2022网站| 婷婷丁香色| 亚洲精品久久久无码一区二区| 小向美奈子av| 欧美一级成人| 亚洲AV 中文字幕 国产 欧美| 在线日本中文字幕| 青青草免费在线观看视频| 久久青草费线频观看国产| 亚欧成人中文字幕一区| 午夜在线视频观看| 国产高清美女一级a毛片久久w| 丝袜美腿美女被狂躁在线观看 | 亚洲精品www久久久久久| 92午夜免费福利757| 亚洲欧美综合网| 欧美日韩在线视频免费完整| 国产亚洲精品香蕉视频播放| 天天排行网| 性色毛片免费视频| 国产成人综合在线| 特黄特色大片免费影院| 欧美一级性| 伊人久久国产精品| 国产精品爽爽久久久久久无码| 婷婷综合激情网| 中文字幕一区二区三区在线观看| 父亲在线日本综艺免费观看全集| 手机看片国产自拍|