- 1、小猪外链里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、小猪外链网资源分享仅为个人学习、交流之用,同时向原著作者表达敬意。
3、小猪外链网仅提供信息存储空间服务,小猪外链网信息均来源于用户自行发布,不承担任何法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,可以按照《小猪外链网文章侵权处理流程》进行处理,同时向原著作者表达敬意。
4、内容由网友自主上传,如有侵权、违规请联系邮箱616859395@qq.com进行处理。


液晶显示模块和数码显示管对比,液晶显示模块会变得更为技术专业、好看。液晶显示器以其体型小、功能损耗低、纤薄轻便、表明形式多样、方便使用这些众多优势,在电子产品、通信、电器产品、仪表设备等功耗低软件系统当中获得更加普遍的运用了,促使这一些电子产品的工业触摸屏越来越愈来愈形象化、愈来愈品牌形象了,液晶显示模块如今早已普遍的运用于液晶电视、电子手表、打印机、计算方式、便携式计算机、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的led背光开关电源正级( 5V)的键入管脚。
第16脚:BLK的led背光开关电源负级,收到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. }
【申明】一部分信息内容来源于互联网技术,力争安全性立即、准确,目地取决于传送其他信息,并不意味着对其思想观点赞成或对其真实有效承担。如本网转截信息内容涉及到出版权等问题,请立即与本网联络删掉。
网站公告
近期本站被人为恶意注册及发布垃圾帖,每一个发帖都会经过审核,一经发现违法或垃圾帖的用户,帖子将被删除或封号,请大家共同维护互联网环境,共创美好互联网未来。
详细的发帖规则请阅读:
《小猪外链网发帖规则》
《小猪外链网最新金币规则》
注:本站严禁发布灰色违禁违法内容,如发现立刻永久封号,如开通会员的概不退款。
免责申明:本网站内容由平台入驻会员撰写,除创始人账号外,其他观点仅代表作者本人,不代表小猪外链网立场。如果内容涉及侵犯其他公司、团体的利益、请联系小猪SEO外链网客服举证删除
您的IP:18.219.224.246,2025-05-05 08:06:09,Processed in 0.2436 second(s).