找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1520|回复: 1
收起左侧

基于51单片机的动态图片显示程序Proteus仿真 128X64液晶

[复制链接]
ID:979776 发表于 2021-11-10 15:31 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif

单片机源程序如下:
  1. #include<reg51.h>
  2. #include "BMP1.h"
  3. #include "BMP2.h"
  4. #include "BMP3.h"
  5. #include "BMP4.h"
  6. #include "BMP5.h"
  7. #include "BMP6.h"
  8. #include "BMP7.h"
  9. #include "BMP8.h"
  10. #include "BMP9.h"
  11. #include "BMP10.h"
  12. #define LCD P0
  13. #define uint unsigned int
  14. #define uchar unsigned char
  15. unsigned char a,i,j,k;
  16. int b;
  17. sbit EN=P2^0;
  18. sbit RW=P2^1;
  19. sbit RS=P2^2;
  20. sbit CS1=P2^3;
  21. sbit CS2=P2^4;
  22. sbit BUSY=P0^0;
  23. void DelayMS(uint ms)//延时
  24. {
  25. uchar i;
  26. while(ms--)
  27. {
  28.   for(i=0;i<120;i++);
  29.   }
  30. }
  31. checkbusy()
  32. {
  33. EN=1;
  34. RW=1;
  35. RS=0;
  36. LCD=0XFF;
  37. if(BUSY);
  38. }
  39. writecode(unsigned char dat) //写命令
  40. {
  41. checkbusy();
  42. EN=1;
  43. RW=0;
  44. RS=0;
  45. LCD=dat;
  46. EN=1;
  47. EN=0;
  48. }
  49. writedata(unsigned char dat) //写数据
  50. {
  51. checkbusy();
  52. EN=1;
  53. RW=0;
  54. RS=1;
  55. LCD=dat;
  56. EN=1;
  57. EN=0;
  58. }
  59. //满屏函数
  60. void LCDDisplay(unsigned char page,unsigned char lineaddress, unsigned char table[8][128])
  61. {
  62. for(i=0;i<8;i++)
  63. {
  64. if(lineaddress<0X80)
  65. {
  66. CS1=0;
  67. CS2=0;
  68. }
  69. writecode(page+i);
  70. writecode(lineaddress);
  71. for(j=0;j<64;j++)
  72. {
  73. writedata(table[i][j]);
  74. lineaddress+=1;
  75. }
  76. if(lineaddress>=0X80)
  77. {
  78. CS1=0;
  79. CS2=1;
  80. lineaddress=lineaddress-0X40;
  81. }
  82. writecode(page+i);
  83. writecode(lineaddress);
  84. for(j=64;j<128;j++)
  85. {
  86. writedata(table[i][j]);
  87. lineaddress+=1;
  88. }
  89. if(lineaddress>=0X80)
  90. {
  91. lineaddress=lineaddress-0X40;
  92. }
  93. }
  94. }
  95. void lcdinti()
  96. {
  97. writecode(0X3F);
  98. writecode(0XC0);
  99. writecode(0XB8);
  100. writecode(0X40);
  101. }
  102. main()
  103. {
  104. lcdinti();
  105. while(1)
  106. {
  107. LCDDisplay(0Xb8,0X40,&a1);
  108. DelayMS(10);       
  109. LCDDisplay(0Xb8,0X40,&a2);
  110. DelayMS(10);               
  111. LCDDisplay(0Xb8,0X40,&a3);
  112. DelayMS(10);               
  113. }
  114. }
复制代码

所有资料51hei附件下载:
动态图片显示.7z (151.78 KB, 下载次数: 17)

评分

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

查看全部评分

回复

使用道具 举报

ID:908826 发表于 2021-11-10 19:15 | 显示全部楼层
这个原理是什么呢,快速播放静态图片实现动态效果吗???
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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