找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机12864液晶滚动显示图片proteus仿真,程序

[复制链接]
跳转到指定楼层
楼主
大家好,这是我最近做的仿真,附件里包含有程序代码,proteus仿真,原理图,还有报告


  1. #include <reg51.h> //51 单片机常用寄存器定义
  2. #include <absacc.h> //解析XBYTE 宏定义
  3. /*常用操作命令和参数定义*/
  4. #define DISPON 0x3f //显示开
  5. #define DISPOFF 0x3e //显示关,参考指令表"显示开关设置"
  6. #define FIRSTROW 0xc0 //显示起始行设置,参考指令表,由LXBYTE[5..0]在0 到63 行选择
  7. #define SETY 0xb8 //Y 方向,8 页64 行,参考指令表,由PXBYTE[2..0]在0 到8 页选择
  8. #define SETX 0x40 //X 方向,半屏64 列,参考指令表,由CXBYTE[5..0]在0 到63 列选择
  9. #define LLCD_CMD_WR XBYTE[0xf4f0]
  10. #define LLCD_DAT_WR XBYTE[0xf5f0]
  11. #define LLCD_CMD_RD XBYTE[0xf6f0]
  12. #define LLCD_DAT_RD XBYTE[0xf7f0]
  13. #define RLCD_CMD_WR XBYTE[0xf8f0]
  14. #define RLCD_DAT_WR XBYTE[0xf9f0]
  15. #define RLCD_CMD_RD XBYTE[0xfaf0]
  16. #define RLCD_DAT_RD XBYTE[0xfbf0]
  17. /*一贞图片,宽度x 高度=128x64*/
  18. code unsigned char logo[] =
  19. {
  20. 0xFF,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  21. 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  22. 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  23. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0xFF,0xFF,0xFF,0xFF,
  24. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  25. 0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  26. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xE3,0xC3,0xC7,0xFF,0xFF,0xFF,
  27. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  28. 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,
  29. 0x10,0xFE,0x10,0x10,0xF8,0x10,0x00,0x00,0x00,0x44,0xFC,0x44,0x44,0x28,0x48,0x88,
  30. 0xFE,0x88,0x4E,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  31. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  32. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x07,0x03,0x01,
  33. 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x0F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,
  34. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  35. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  36. 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x04,
  37. 0x03,0x00,0x00,0x00,0x0F,0x08,0x08,0x0E,0x00,0x04,0x07,0x02,0x01,0x02,0x09,0x08,
  38. 0x0F,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  39. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  40. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
  41. 0x04,0x04,0x04,0x84,0x8C,0x88,0x88,0x98,0x18,0x10,0x00,0x00,0x01,0x03,0x07,0x0F,
  42. 0x1F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  43. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  44. 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x22,0x22,
  45. 0x22,0xA2,0x7E,0xA2,0x22,0x22,0x22,0x20,0x00,0x00,0x00,0xFC,0x14,0x92,0x92,0x92,
  46. 0x92,0x92,0x92,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  47. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  48. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  49. 0x03,0x03,0x03,0x01,0x07,0x07,0x07,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  50. 0xFC,0x80,0x04,0x00,0x0E,0x1F,0x1F,0x1F,0x1F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,
  51. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  52. 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x04,
  53. 0x02,0x01,0x00,0x01,0x02,0x04,0x08,0x08,0x00,0x08,0x06,0x01,0x00,0x0F,0x04,0x04,
  54. 0x04,0x04,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  55. 0xFF,0xFF,0x3F,0x7F,0x7F,0x7F,0x7F,0x3F,0x7F,0x7F,0x7F,0x3F,0x7F,0xFF,0xFF,0xFF,
  56. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  57. 0x00,0x00,0x00,0x80,0xE0,0x30,0x18,0x0C,0x00,0x00,0x10,0x00,0x10,0x70,0x60,0x70,
  58. 0x70,0xFF,0xFE,0xFC,0xE0,0xC0,0xC0,0x80,0xC0,0xE0,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,
  59. 0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x1F,0x1F,0x1F,0x0F,0x0F,0x0F,0x0F,0x1F,0x1F,0x0F,
  60. 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x48,0x90,0x00,0x48,0xD8,0x68,0xF8,0x68,0xD8,
  61. 0x48,0x40,0x00,0xF0,0x90,0x90,0xF0,0x20,0x20,0xF8,0x90,0x50,0x30,0x90,0x00,0x20,
  62. 0xE0,0x38,0xE0,0x10,0xD0,0x50,0x58,0x50,0xD0,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
  63. 0xFF,0xFF,0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFF,0xFF,0xFF,
  64. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xE0,0xC0,0x80,0x00,0x00,
  65. 0x00,0x00,0x00,0x00,0x04,0x0C,0x04,0x04,0x04,0x04,0x02,0x02,0xC6,0xA6,0xA6,0xE6,
  66. 0xE7,0xFF,0xFF,0x1F,0x07,0xC3,0xC0,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  67. 0xFF,0xFF,0xFF,0xFE,0xFE,0xFC,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
  68. 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x08,0x3E,0x02,0x01,0x3E,0x2A,0x3F,0x2A,0x2A,
  69. 0x3F,0x02,0x00,0x0F,0x08,0x08,0x2F,0x25,0x1D,0x04,0x1C,0x25,0x25,0x31,0x00,0x24,
  70. 0x17,0x08,0x17,0x03,0x25,0x25,0x3D,0x05,0x05,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
  71. 0xFF,0xFF,0xFF,0xE3,0xE3,0xE3,0xF7,0xEF,0xC7,0xC7,0xCF,0xCF,0xCF,0xFF,0xFF,0xFF,
  72. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x7E,
  73. 0xFE,0xFC,0xFC,0xF0,0xF0,0xE0,0xE0,0xC0,0xC0,0x80,0x80,0x81,0x81,0x81,0xC1,0xC1,
  74. 0xE1,0xF0,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  75. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  76. 0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,
  77. 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,
  78. 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,
  79. 0xFF,0xFF,0xF9,0xFB,0xF3,0xC3,0x83,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  80. 0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,
  81. 0x00,0x00,0x01,0x01,0x01,0x03,0x07,0x07,0x0F,0x1F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,
  82. 0xFF,0x7F,0xEF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  83. 0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xE7,0x67,0x67,0x67,0xE7,0xE7,0x67,0x07,0x3F,0x37,
  84. };
  85. void delay(unsigned char timer);/*通用延时函数*/
  86. void check_busy(unsigned char);/*LCD 忙检测*/
  87. void lcd_init(void);/*LCD 初始化*/
  88. void lcd_cmd_wr(unsigned char, unsigned char);/*写命令*/
  89. void lcd_data_wr(unsigned char, unsigned char);/*写数据*/
  90. void lcd_bmp_wr(unsigned char *bmp);/*写一贞128×64 点的图片显示*/
  91. void lcd_clr(void);/*数据清屏*/
  92. void lcd_mov_up();/*整屏向上循环移动*/
  93. /*主函数,显示一贞图片范例*/
  94. void main(void)
  95. {
  96. delay(50000);//适当延时,等待LCD 复位
  97. lcd_init();
  98. lcd_bmp_wr(logo);//logo 图片数据附后
  99. while(1)
  100. {
  101. //整屏向上循环移动
  102. lcd_mov_up();
  103. lcd_clr();
  104. delay(50000);
  105. lcd_bmp_wr(logo);//logo 图片数据附后
  106. }
  107. }
  108. /*LCD 忙检测*/
  109. void check_busy(unsigned char right)
  110. {
  111. unsigned char temp=0xff;
  112. do
  113. {
  114. if(right) temp=RLCD_CMD_RD;
  115. else temp=LLCD_CMD_RD;
  116. }
  117. while((temp|0x7f)==0xff);//检测D7 是否为1,1 表示LCD 忙,如果忙,继续检测,直到空闲止
  118. }
  119. /*写命令*/
  120. void lcd_cmd_wr(unsigned char cmdcode, unsigned char right)
  121. {
  122. check_busy(right);
  123. if(right) RLCD_CMD_WR = cmdcode;
  124. else LLCD_CMD_WR = cmdcode;
  125. }
  126. /*LCD 初始化*/
  127. void lcd_init(void)
  128. {
  129. lcd_cmd_wr(DISPON,0); //开显示,0 参数表示左屏
  130. lcd_cmd_wr(FIRSTROW,0); //设定显示首列
  131. lcd_cmd_wr(SETY,0); //设定Y 坐标
  132. lcd_cmd_wr(SETX,0); //设定X 坐标
  133. lcd_cmd_wr(DISPON,1); //1 参数表示右屏
  134. lcd_cmd_wr(FIRSTROW,1);
  135. lcd_cmd_wr(SETY,1);
  136. lcd_cmd_wr(SETX,1);
  137. }
  138. /*写数据*/
  139. void lcd_data_wr(unsigned char dispdata, unsigned char right)
  140. {
  141. check_busy(right);
  142. if(right) RLCD_DAT_WR = dispdata;
  143. else LLCD_DAT_WR = dispdata;
  144. }
  145. /*数据清屏*/
  146. void lcd_clr(void)
  147. {
  148. unsigned char i,j;
  149. for(i=0;i<8;i++)//共8 页
  150. {
  151. lcd_cmd_wr(SETY+i,0);
  152. lcd_cmd_wr(SETX,0);
  153. lcd_cmd_wr(SETY+i,1);
  154. lcd_cmd_wr(SETX,1);
  155. for(j=0;j<64;j++)//每页64 列
  156. {
  157. lcd_data_wr(0,0);
  158. lcd_data_wr(0,1);
  159. }
  160. }
  161. }
  162. /*写一贞128×64 点的图片显示*/

  163. void lcd_bmp_wr(unsigned char *bmp)
  164. {
  165. unsigned char i,j;
  166. for(i=0;i<8;i++)
  167. {
  168. //页地址设定
  169. lcd_cmd_wr(SETY+i,0);
  170. lcd_cmd_wr(SETX,0);
  171. lcd_cmd_wr(SETY+i,1);
  172. lcd_cmd_wr(SETX,1);
  173. for(j=0;j<64;j++)
  174. {
  175. lcd_data_wr(bmp[128*i+j],0);//左半屏
  176. lcd_data_wr(bmp[128*i+j+64],1);//右半屏
  177. }
  178. }
  179. }
  180. /*整屏向上循环移动*/
  181. void lcd_mov_up()
  182. {
  183. unsigned char i;
  184. for(i=0;i<64;i++)//64 行循环
  185. {
  186. lcd_cmd_wr(FIRSTROW+i,0);
  187. lcd_cmd_wr(FIRSTROW+i,1);
  188. delay(500);//适当延时
  189. }
  190. }
  191. /*通用延时函数*/
  192. void delay(unsigned char timer)
  193. {
  194. unsigned char i;
  195. while(--timer)
  196. for(i=0;i<100;i++);
  197. }
复制代码


12864液晶滚动显示图片.rar

47 KB, 下载次数: 58, 下载积分: 黑币 -5

成果

评分

参与人数 2黑币 +55 收起 理由
ltn654127 + 5 很有帮助,谢谢。
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:214718 发表于 2017-6-26 12:41 | 只看该作者
下下来学习一下,希望有用
回复

使用道具 举报

板凳
ID:572624 发表于 2019-6-26 14:50 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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