找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机lcd12864应用之滚动图片显示 proteus仿真和源码都有

[复制链接]
ID:137190 发表于 2016-10-9 21:56 | 显示全部楼层 |阅读模式
一个用lcd12864液晶屏实现的滚动图片的显示,用51单片机来驱动的,效果比较牛逼,大家可以直接用proteus仿真软件看到,下面是原理图:
0.png 0.png

仿真工程文件及所有完整程序等资料下载地址:
http://www.51hei.com/bbs/dpj-56304-1.html

单片机源程序:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. typedef unsigned int WORD;
  4. const  WORD code encoding_00[] =                 //神
  5. {
  6.         0x0208,        0x0108,        0x0089,        0xffce,        0x00a8,        0x0318,        0x0000,        0x07f8,
  7.         0x0248,        0x0248,        0xffff,        0x0248,        0x0248,        0x07f8,        0x0000,        0x0000,
  8.         0x0000,        0x0040,        0x0040,        0x0040,        0x0040,        0x0040,        0x0040,        0x3ffe,
  9.         0x4020,        0x4020,        0x4020,        0x4020,        0x4020,        0x3820,        0x0020,        0x0000,
  10.         0x0002,        0x0002,        0x0002,        0x0002,        0x0002,        0x0002,        0x0002,        0x0002,
  11.         0x0002,        0x03fe,        0x0c60,        0x1090,        0x2108,        0x4000,        0x7800,        0x0000,
  12.         0x8080,        0x6080,        0x1ffc,        0x4296,        0x84a5,        0x7ffc,        0x0080,        0x0040,
  13.         0x7e3e,        0x2202,        0x2202,        0x2202,        0x227e,        0x7e40,        0x0040,        0x0000

  14. };

  15. const WORD code encoding_01[] =                 //Pic
  16. {
  17.         0x0103,        0x0706,        0x8a00,        0x0000,        0x0000,        0x0007,        0xc000,        0x0000,
  18.         0x0000,        0x0003,        0xe000,        0x0000,        0x0000,        0x0001,        0x7000,        0x0000,
  19.         0x0000,        0x0000,        0xf000,        0x1800,        0x0000,        0x0000,        0xf000,        0x0e00,
  20.         0x0000,        0x0000,        0x0000,        0x1e00,        0x0000,        0x0000,        0x0000,        0x1700,
  21.         0x0000,        0x0000,        0x0000,        0x1780,        0x0000,        0x0300,        0x03e0,        0x1bc0,
  22.         0x0000,        0x0380,        0x03b0,        0xfdc0,        0x0000,        0x01c0,        0x061f,        0x97e0,
  23.         0x0000,        0x00f0,        0x0e03,        0x1bf0,        0x0000,        0x0070,        0x1fff,        0x89f0,
  24.         0x0000,        0x0010,        0x3000,        0xd8f8,        0x0000,        0x0001,        0xe000,        0x7068,
  25.         0x0000,        0x0003,        0x2001,        0xe028,        0x0000,        0x0002,        0xe3ff,        0xa038,
  26.         0x0000,        0x0003,        0xa203,        0xe000,        0x0000,        0x0001,        0xa280,        0x6000,
  27.         0x0000,        0x0000,        0xe2c0,        0x3000,        0x0000,        0x0000,        0x6260,        0x3800,
  28.         0x0000,        0x0000,        0x7aa0,        0x2c00,        0x0000,        0x0000,        0x7150,        0x3400,
  29.         0x0000,        0x0000,        0x71f8,        0x1e00,        0x0000,        0x0000,        0x303c,        0x2a00,
  30.         0x0000,        0x0000,        0x781e,        0x3b00,        0x0000,        0x0030,        0xc81f,        0x0d00,
  31.         0x0000,        0x0038,        0x8c07,        0x8580,        0x0000,        0x003c,        0x8603,        0x8680,
  32.         0xff00,        0x001e,        0x8301,        0xc380,        0x3d80,        0x001e,        0x8780,        0x0180,
  33.         0x67e0,        0x000b,        0xfc80,        0x01c0,        0x3ffe,        0x000d,        0x80c0,        0x01c0,
  34.         0x003f,        0x0007,        0xc060,        0x01e0,        0x010f,        0x0007,        0xc020,        0x01e0,
  35.         0x7c07,        0xf003,        0xe030,        0x01e0,        0x1033,        0xe801,        0xf81b,        0x00e0,
  36.         0x179f,        0xe000,        0x780f,        0x80e0,        0x1802,        0xf400,        0x7807,        0x80a0,
  37.         0x0713,        0x7c00,        0x1801,        0xffe0,        0x0300,        0x3e00,        0x0000,        0xfff0,
  38.         0x0060,        0x0f80,        0x0000,        0x3ff0,        0x0067,        0xa780,        0x0000,        0x1ff0,
  39.         0x0012,        0x23c0,        0x0000,        0x00f0,        0x0001,        0x31c0,        0x0000,        0x0000,
  40.         0x0000,        0x23c0,        0x0000,        0x0000,        0x0000,        0x0640,        0x0000,        0x0000,
  41.         0x0000,        0x8c60,        0x0000,        0x0000,        0x0000,        0x2520,        0x0000,        0x0000,
  42.         0x0000,        0x1230,        0x0000,        0x0000,        0x0000,        0x7120,        0x0000,        0x0000,
  43.         0x0000,        0x1170,        0x0000,        0x0000,        0x0000,        0x1030,        0x0000,        0x0000,
  44.         0x0000,        0x0230,        0x0000,        0x0000,        0x0000,        0x02b8,        0x0000,        0x0000,
  45.         0x0000,        0x0ab0,        0x0000,        0x0000,        0x0000,        0x00f8,        0x0000,        0x0000,
  46.         0x0000,        0x0c30,        0x0000,        0x0000,        0x0000,        0x04b0,        0x0000,        0x0000,
  47.         0x0000,        0x0130,        0x0000,        0x0000,        0x0000,        0x0020,        0x0000,        0x0000,
  48.         0x0000,        0x0020,        0x0000,        0x0000,        0x0000,        0x0020,        0x0000,        0x0000
  49. };

  50. #define uchar unsigned char
  51. #define uint unsigned int
  52. sbit p3_0=P3^0;
  53. sbit p3_1=P3^1;
  54. sbit p3_2=P3^2;
  55. sbit p3_3=P3^3;
  56. sbit p3_4=P3^4;
  57. sbit p3_5=P3^5;
  58. sbit p2_7=P2^7;


  59. #define LCD_RW   p3_1  
  60. #define LCD_DI   p3_2
  61. #define LCD_E    p3_0
  62. #define LCD_CS1  p3_4
  63. #define LCD_CS2  p3_3
  64. #define LCD_RES  p3_5

  65. #define LCD_BUSY p2_7
  66. #define LCDPORT P2

  67. #define LCDSTARTROW 0xC0

  68. delay_ms(int ms)
  69. {uchar i;
  70. uint  j;
  71. for(j=2*ms;j>0;j--)
  72.   for(i=250;i>0;i--);

  73. }


  74. bit ChechBusy()
  75. {

  76.         LCDPORT=0xFF;
  77.         LCD_RW=1;
  78.         LCD_DI=0;
  79.         LCD_E=1;

  80.         LCD_E=0;
  81.         return LCD_BUSY;
  82. }


  83. void write_cmd(uchar cmd)
  84. {
  85.         while(ChechBusy());
  86.    
  87.     LCD_E=0;
  88.         LCD_RW=0;
  89.         LCD_DI=0;
  90.         LCDPORT=cmd;
  91.         LCD_E=1;
  92.     LCD_E=0;
  93. }


  94. void write_data(uchar d)
  95. {
  96.         while(ChechBusy());

  97.     LCD_E=0;
  98.         LCD_RW=0;
  99.         LCD_DI=1;
  100.         LCDPORT=d;
  101.         LCD_E=1;
  102.         LCD_E=0;

  103. }

  104. void LCD_init()
  105. {
  106.     LCD_CS1=1;
  107.         LCD_CS2=1;

  108.         write_cmd(0x3F);                //开显示。
  109.         write_cmd(LCDSTARTROW);        //设置起始行。
  110. }


  111. void main()
  112. {
  113. int i,j;
  114. uchar u, *p=encoding_01;
  115. LCD_init();
  116. LCD_CS1=1;
  117. LCD_CS2=1;
  118. P1=0;
  119. for (i=0;i<64;i++)
  120. { write_cmd(0xb9);
  121.    
  122.    write_data(encoding_00[i]);
  123. }
  124. write_cmd(0x40);
  125. for (i=0;i<64;i++)
  126. { write_cmd(0xba);
  127.    
  128.    write_data(encoding_00[i]>>8);
  129. }


  130. LCD_CS1=0;
  131. LCD_CS2=1;

  132. for (i=0;i<64*8;i++)
  133. {
  134.    
  135.    u=0xb8+(7-i%8);
  136.    write_cmd(u);
  137.    u=0x40+i/8;
  138.    write_cmd(u);
  139.    u=*((uchar *)encoding_01+i);
  140.    write_data(u);
  141. }

  142. for (u=0;u<64;u++)
  143. {
  144.   write_cmd(0xc0+u);

  145.   delay_ms(500);
  146. }
  147. while(1);
  148. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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