找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1898|回复: 0
收起左侧

lcd12232F液晶的串口C51单片机程序

[复制链接]
ID:70134 发表于 2020-9-11 17:06 | 显示全部楼层 |阅读模式
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教!

单片机源程序如下:
  1. /******************************************************/

  2. /* 12232F串口驱动程序C51,11.0592M晶振 */

  3. /*使用这款LCD应该要注意的问题: */ z

  4. /*一定要在VO与VDD及VSS这三个脚间接一个20K的电位器, */

  5. /*电位器的中间脚接VO,其它二脚接VDD和VSS。 */

  6. /*然后调节电位器的大小,直到有显示为止。若是不接的话,*/

  7. /*显示器可能是一片黑暗,什么也没有显示,发命令也没有反*/

  8. /*应的。本程序我已经测试通过了。欢迎大家提出意见。 */

  9. /******************************************************/

  10. #include <AT89X52.H>

  11. #include <intrins.h>

  12. #define uint unsigned int

  13. #define uchar unsigned char

  14. /*12232f pins define*/

  15. sbit CS=P1^5;

  16. sbit SID=P1^6;

  17. sbit SCLK=P1^7;

  18. void delay_1ms(uint x)

  19. {

  20. uint j;

  21. uchar i;

  22. for(j=0;j<x;j++)

  23. {

  24. for(i=0;i<120;i++);

  25. }

  26. }

  27. void send_command(uchar command_data)

  28. {

  29. uchar i;

  30. uchar i_data,temp_data1,temp_data2;

  31. i_data=0xf8;

  32. delay_1ms(10);

  33. CS=1;

  34. SCLK=0;

  35. for(i=0;i<8;i++)

  36. {

  37. SID=(bit)(i_data&0x80);

  38. SCLK=0;

  39. SCLK=1;

  40. i_data=i_data<<1;

  41. }

  42. i_data=command_data;

  43. i_data&=0xf0;

  44. for(i=0;i<8;i++)

  45. {

  46. SID=(bit)(i_data&0x80);

  47. SCLK=0;

  48. SCLK=1;

  49. i_data=i_data<<1;

  50. }

  51. i_data=command_data;

  52. temp_data1=i_data&0xf0;

  53. temp_data2=i_data&0x0f;

  54. temp_data1>>=4;

  55. temp_data2<<=4;

  56. i_data=temp_data1|temp_data2;

  57. i_data&=0xf0;

  58. for(i=0;i<8;i++)

  59. {

  60. SID=(bit)(i_data&0x80);

  61. SCLK=0;

  62. SCLK=1;

  63. i_data=i_data<<1;

  64. }

  65. CS=0;

  66. }

  67. void send_data(uchar command_data)

  68. {

  69. uchar i;

  70. uchar i_data,temp_data1,temp_data2;

  71. i_data=0xfa;

  72. delay_1ms(10);

  73. CS=1;

  74. for(i=0;i<8;i++)

  75. {

  76. SID=(bit)(i_data&0x80);

  77. SCLK=0;

  78. SCLK=1;

  79. i_data=i_data<<1;

  80. }

  81. i_data=command_data;

  82. i_data&=0xf0;

  83. for(i=0;i<8;i++)

  84. {

  85. SID=(bit)(i_data&0x80);

  86. SCLK=0;

  87. SCLK=1;

  88. i_data=i_data<<1;

  89. }

  90. i_data=command_data;

  91. temp_data1=i_data&0xf0;

  92. temp_data2=i_data&0x0f;

  93. temp_data1>>=4;

  94. temp_data2<<=4;

  95. i_data=temp_data1|temp_data2;

  96. i_data&=0xf0;

  97. for(i=0;i<8;i++)

  98. {

  99. SID=(bit)(i_data&0x80);

  100. SCLK=0;

  101. SCLK=1;

  102. i_data=i_data<<1;

  103. }

  104. CS=0;

  105. }

  106. void lcd_init()

  107. {

  108. uchar command_data;

  109. delay_1ms(100);

  110. command_data=0x30;

  111. send_command(command_data); /*功能设置:一次送8位数据,基本指令集*/

  112. command_data=0x04;

  113. send_command(command_data); /*点设定:显示字符/光标从左到右移位,DDRAM地址加1*/

  114. command_data=0x0f;

  115. send_command(command_data); /*显示设定:开显示,显示光标,当前显示位反白闪动*/

  116. command_data=0x01;

  117. send_command(command_data); /*清DDRAM*/

  118. command_data=0x02;

  119. send_command(command_data); /*DDRAM地址归位*/

  120. command_data=0x80;

  121. send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/

  122. }

  123. void display_cpubbs()

  124. {

  125. uchar command_data;

  126. while(1)

  127. {

  128. command_data=0x01;

  129. send_command(command_data); /*清DDRAM*/

  130. command_data=0x80;

  131. send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/

  132. command_data=0x68; /*“h”字的编码*/

  133. send_data(command_data);

  134. command_data=0x74;

  135. send_data(command_data); /*“t”字的编码*/

  136. command_data=0x74;

  137. send_data(command_data); /*“t”字的编码*/

  138. command_data=0x70;

  139. send_data(command_data); /*“p”字的编码*/

  140. command_data=0x3a;

  141. send_data(command_data); /*“:”字的编码*/

  142. command_data=0x2f;

  143. send_data(command_data); /*“/”字的编码*/

  144. command_data=0x2f;

  145. send_data(command_data); /*“/”字的编码*/

  146. command_data=0x57;

  147. send_data(command_data); /*“w”字的编码*/

  148. command_data=0x57;

  149. send_data(command_data); /*“w”字的编码*/

  150. command_data=0x57;

  151. send_data(command_data); /*“w”字的编码*/

  152. command_data=0x2e;

  153. send_data(command_data); /*“.”字的编码*/

  154. command_data=0x63;

  155. send_data(command_data); /*“c”字的编码*/

  156. command_data=0x70;

  157. send_data(command_data); /*“p”字的编码*/

  158. command_data=0x75;

  159. send_data(command_data); /*“u”字的编码*/

  160. command_data=0x62;

  161. send_data(command_data); /*“b”字的编码*/

  162. command_data=0x90;

  163. send_command(command_data); /*把显示地址设为0X90,即为第二行的首位,因为第一行已经满了*/

  164. command_data=0x62;

  165. send_data(command_data); /*“b”字的编码*/

  166. command_data=0x73;

  167. send_data(command_data); /*“s”字的编码*/

  168. command_data=0x2e;

  169. send_data(command_data); /*“.”字的编码*/

  170. command_data=0x63;

  171. send_data(command_data); /*“c”字的编码*/

  172. command_data=0x6f;

  173. send_data(command_data); /*“o”字的编码*/

  174. command_data=0x6d;

  175. send_data(command_data); /*“m”字的编码*/

  176. delay_1ms(3000);

  177. command_data=0x01;

  178. send_command(command_data); /*清DDRAM*/

  179. command_data=0x80;

  180. send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/

  181. command_data=0xbb;

  182. send_data(command_data);

  183. command_data=0xb6;

  184. send_data(command_data); /*“欢”字的编码*/

  185. command_data=0xd3;

  186. send_data(command_data);

  187. command_data=0xad;

  188. send_data(command_data); /*“迎”字的编码*/

  189. command_data=0xb7;

  190. send_data(command_data);

  191. command_data=0xc3;

  192. send_data(command_data); /*“访”字的编码*/

  193. command_data=0xce;

  194. send_data(command_data);

  195. command_data=0xca;

  196. send_data(command_data); /*“问”字的编码*/

  197. command_data=0x90;

  198. send_command(command_data); /*把显示地址设为0X90,即为第二行的首位,因为第一行已经满了*/

  199. command_data=0x63;

  200. send_data(command_data); /*“c”字的编码*/

  201. command_data=0x70;

  202. send_data(command_data); /*“p”字的编码*/

  203. command_data=0x75;

  204. send_data(command_data); /*“u”字的编码*/

  205. command_data=0x62;

  206. send_data(command_data); /*“b”字的编码*/

  207. command_data=0x62;

  208. send_data(command_data); /*“b”字的编码*/

  209. command_data=0x73;

  210. send_data(command_data); /*“s”字的编码*/

  211. command_data=0xc2;

  212. send_data(command_data);

  213. command_data=0xdb;

  214. send_data(command_data); /*“论”字的编码*/

  215. command_data=0xcc;

  216. send_data(command_data);

  217. command_data=0xb3;

  218. send_data(command_data); /*“坛”字的编码*/

  219. delay_1ms(3000);

  220. }

  221. }

  222. main()

  223. {

  224. uchar command_data;

  225. lcd_init();

  226. display_cpubbs();

  227. while(1);

  228. }
复制代码

以上资料51hei下载地址:
LCD_12232F串口.zip (1.31 KB, 下载次数: 24)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表