找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于51单片机用LCD显示字符

[复制链接]
ID:657799 发表于 2019-12-6 21:32 | 显示全部楼层 |阅读模式

简单的液晶显示.png

  1. #include<reg51.h>
  2. #include<intrins.h>
  3. sbit RS=P2^0;
  4. sbit RW=P2^1;
  5. sbit E=P2^2;
  6. sbit BF=P0^7;
  7. unsigned char code string[]={"I LIKE 51!"};                 //液晶屏第一行字符,可自行修改
  8. unsigned char code string1[]={" WWW.51hei.COM "};  //液晶屏第二行字符,可自行修改
  9. void delay1ms()
  10. {
  11. unsigned char i,j;
  12. for(i=0;i<10;i++)
  13. for(j=0;j<33;j++)
  14. ;
  15. }
  16. void delay(unsigned char n)
  17. {
  18. unsigned char i;
  19. for(i=0;i<n;i++)
  20. delay1ms();
  21. }
  22. unsigned char BusyTest(void)
  23. {
  24. bit result;
  25. RS=0;
  26. RW=1;
  27. E=1;
  28. _nop_();
  29. _nop_();
  30. _nop_();
  31. _nop_();
  32. result=BF;
  33. E=0;
  34. return result;
  35. }
  36. void WriteInstruction(unsigned char dictate)
  37. {
  38. while(BusyTest()==1);
  39. RS=0;
  40. RW=0;
  41. E=0;
  42. _nop_();
  43. _nop_();
  44. P0=dictate;
  45. _nop_();
  46. _nop_();
  47. _nop_();
  48. _nop_();
  49. E=1;
  50. _nop_();
  51. _nop_();
  52. _nop_();
  53. _nop_();
  54. E=0;
  55. }
  56. void WriteAddress(unsigned char x)
  57. {
  58. WriteInstruction(x|0x80);
  59. }
  60. void WriteData(unsigned char y)
  61. {
  62. while(BusyTest()==1);
  63. RS=1;
  64. RW=0;
  65. E=0;
  66. P0=y;
  67. _nop_();
  68. _nop_();
  69. _nop_();
  70. _nop_();
  71. E=1;
  72. _nop_();
  73. _nop_();
  74. _nop_();
  75. _nop_();
  76. E=0;
  77. }
  78. void LcdInitiate(void)
  79. {
  80. delay(15);
  81. WriteInstruction(0x38);
  82. delay(5);
  83. WriteInstruction(0x38);
  84. delay(5);
  85. WriteInstruction(0x38);
  86. delay(5);
  87. WriteInstruction(0x0f);
  88. delay(5);
  89. WriteInstruction(0x06);
  90. delay(5);
  91. WriteInstruction(0x01);
  92. delay(5);
  93. }
  94. void main(void)
  95. {
  96. unsigned char i;
  97. LcdInitiate();
  98. delay(10);
  99. while(1)
  100. {
  101. WriteInstruction(0x01);
  102. WriteAddress(0x80);
  103. i=0;
  104. while(string[i]!='\0')
  105. {
  106. WriteData(string[i]);
  107. i++;
  108. delay(150);
  109. }
  110. for(i=0;i<4;i++)
  111. delay(250);
  112. WriteAddress(0x80+0x40);
  113. i=0;
  114. while(string1[i]!='\0')
  115. {
  116. WriteData(string1[i]);
  117. i++;
  118. delay(150);
  119. }
  120. for(i=0;i<4;i++)
  121. delay(250);
  122. }
  123. }
复制代码



简单液晶显示.zip

15.02 KB, 下载次数: 19, 下载积分: 黑币 -5

仿真,源文件,HEX文件

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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