找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1096|回复: 0
打印 上一主题 下一主题
收起左侧

LCD44780显示实验(1602)

[复制链接]
跳转到指定楼层
楼主
ID:425503 发表于 2018-11-13 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于LCD在单片机中的使用

单片机源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define out P0
  6. sbit rs=P2^0;
  7. sbit rw=P2^1;
  8. sbit e=P2^2;
  9. //////////////////////////
  10. void check_busy(void);
  11. void write_command(uchar com);
  12. void write_data(uchar dat);
  13. void LCD_initial(void);
  14. void string(uchar ad ,uchar *s);
  15. void lcd_test(void);
  16. void delay(uint);
  17. /////////////////////////////////////////////////////////////////////////////
  18. /////////////////////////////////////////////////////////////////////////////
  19. ////////////////////主程序///////////////////////////////////////////////////
  20. /////////////////////////////////////////////////////////////////////////////
  21. /////////////////////////////////////////////////////////////////////////////
  22. void main(void)
  23. {
  24. LCD_initial();       
  25. while(1)
  26.         {
  27.         string(0x84,"WINDWAY");
  28.         string(0xC2,"A GOOD NEWS");
  29.         delay(100);
  30.         write_command(0x01);//清屏
  31.         delay(100);                       
  32.         }
  33. }
  34. //1ms延时程序
  35. void delay(uint j)
  36. {
  37. uchar i=250;
  38. for(;j>0;j--)
  39.         {
  40.         while(--i);
  41.         i=249;
  42.         while(--i);
  43.         i=250;
  44.         }
  45. }
  46. //查忙程序
  47. void check_busy(void)
  48. {
  49. uchar dt;
  50. do
  51. {
  52. dt=0xff;
  53. e=0;
  54. rs=0;       
  55. rw=1;
  56. e=1;
  57. dt=out;
  58. }while(dt&0x80);
  59. e=0;
  60. }
  61. //写控制指令
  62. void write_command(uchar com)
  63. {
  64. check_busy();
  65. e=0;
  66. rs=0;
  67. rw=0;
  68. out=com;
  69. e=1;
  70. _nop_();
  71. e=0;
  72. delay(1);
  73. }
  74. //写数据指令
  75. void write_data(uchar dat)
  76. {
  77. check_busy();
  78. e=0;
  79. rs=1;
  80. rw=0;
  81. out=dat;
  82. e=1;
  83. _nop_();
  84. e=0;
  85. delay(1);       
  86. }
  87. //液晶屏初始化
  88. void LCD_initial(void)
  89. {
  90.         write_command(0x38);//8位总线,双行显示,5X7的点阵字符
  91.         write_command(0x0C);//开整体显示,光标关,无黑块
  92.         write_command(0x06);//光标右移
  93.         write_command(0x01);//清屏
  94.         delay(1);
  95. }
  96. //输出字符串
  97. void string(uchar ad,uchar *s)
  98. {
  99. write_command(ad);
  100. while(*s>0)
  101.         {
  102.         write_data(*s++);
  103.         delay(100);
  104.         }
  105. }
复制代码

所有资料51hei提供下载:
21(LCD44780显示实验).rar (63.66 KB, 下载次数: 4)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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