找回密码
 立即注册

QQ登录

只需一步,快速开始

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

32*64双色点阵成功驱动 汉字上下翻页显示

  [复制链接]
跳转到指定楼层
楼主

下载: 代码.rar (1.84 KB, 下载次数: 221)

源程序:
  1. /*****************************************************
  2. 文件名称:点阵测试.C
  3. 功能描述:实现点阵汉字上下翻页显示
  4. 编译环境:Keil4  
  5. 硬件设施:STC12C5A60S2+12M晶振,32*64双色点阵
  6. 时间说明: 2012-08-17
  7. 作者:    王言鑫
  8. ****************************************************/
  9. //#include<reg52.h>
  10. //#include<ziku.h>
  11. #include<STC12C5A60S2.H>
  12. #define uchar unsigned char
  13. #define uint unsigned int

  14. sbit R1=P2^0;
  15. sbit R2=P2^1;
  16. sbit G1=P2^2;
  17. sbit G2=P2^3;
  18. sbit LCK=P2^4;
  19. sbit SCK=P2^5;
  20. sbit OE=P2^6;
  21. sbit H138_A=P1^0;
  22. sbit H138_B=P1^1;
  23. sbit H138_C=P1^2;
  24. sbit H138_D=P1^3;
  25. uchar code table[][48]=
  26. {
  27. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xFF,0x3F,0xFF,0x1F,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0xFC,0x3B,0xFF,0xB3,0xFF,0xA7,0xFF,0xAF,0xFF,0x8F},
  28. {0xF8,0x9F,0xE0,0x8F,0xE4,0x87,0xFD,0xA7,0xF9,0xB3,0xFB,0xB9,0xF3,0xB8,0xE7,0xBC,0xC7,0xBC,0xFD,0xBF,0xFE,0x3F,0xFE,0x3F,0xFF,0xBF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"永",0*/

  29. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFE,0x00,0xF0,0x00,0xF0,0x87,0xF7,0x8F,0xFF,0x9F,0xFF,0x1F,0xFF,0x1F,0xFE,0x1F,0xFE,0x1F},
  30. {0xFC,0x8F,0xF9,0x91,0xF9,0x98,0xF3,0x9C,0xF7,0x9C,0xE7,0x9E,0xEF,0x9F,0xFF,0x9F,0xFF,0x9F,0xFF,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"不",1*/

  31. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xFF,0x3F,0xFF,0x3F,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xF8,0x00,0xE1,0xFE,0xEF,0xFF,0xFF,0x8F,0xFC,0x0F},
  32. {0xFE,0x0F,0xFC,0x0F,0xFE,0x7F,0xFF,0xFF,0xFF,0x0F,0xFC,0x07,0xFC,0xE7,0xFC,0xE7,0xFC,0xC7,0xFC,0x0F,0xFE,0x0F,0xFF,0x3F,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"言",2*/

  33. {0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xFF,0x3F,0xFF,0x3F,0xFF,0xBF,0xFF,0xC7,0xFF,0x07,0xFC,0x1F,0xFD,0x3F,0xFF,0x6F,0xFE,0x17,0xFC,0x17,0xFC,0x37,0xFD,0xFF,0xFF,0xCF},
  34. {0xFE,0x00,0xFC,0x00,0xE0,0x6E,0xC6,0x6F,0xDE,0xEF,0xFE,0xEF,0xFE,0xEF,0xFC,0xEF,0xFC,0xEF,0xF8,0xEF,0xF9,0xEF,0xFF,0xEF,0xFF,0xEF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"弃",3*/

  35. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xFF,0xFC,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFC,0x61,0xF8,0x89,0xE0,0x99,0xE1,0x89,0xEC,0x89},
  36. {0xF8,0x89,0xF8,0x99,0xF1,0x89,0xF5,0x89,0xE5,0x99,0xED,0x99,0xCD,0x89,0xDD,0x89,0xFD,0x91,0xFD,0xF9,0xFD,0xFD,0xFD,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"相",4*/

  37. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0x8F,0xFF,0x3F,0xFE,0x7F,0xFC,0xF7,0xFB,0xA7,0xFD,0xEF,0xFD,0xDF,0xFD,0xC3,0xFF,0x1D,0xFC,0x3D,0xF9,0x2C,0xF7,0x00},
  38. {0xE6,0x1F,0xE4,0x7F,0xFC,0x8F,0xFE,0xCF,0xFE,0x4F,0xFC,0x1F,0xF9,0x1F,0xFB,0x8F,0xF3,0x2F,0xC4,0x73,0xFC,0xF1,0xFF,0xF0,0xFF,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"爱",5*/

  39. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xFC,0x01},
  40. {0xC0,0x00,0xC0,0x7C,0xDF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"一",6*/

  41. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0x9F,0xFC,0x97,0xFC,0x83,0xF8,0x03,0xFA,0x0F,0xF3,0x1F},
  42. {0xF7,0x97,0xF7,0x87,0xFE,0x07,0xFE,0x0F,0xFE,0x1F,0xFF,0x9F,0xFF,0x9F,0xFF,0x80,0xFC,0x00,0xF0,0x7E,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF}/*"生",7*/


  43. };
  44. uchar num,sum,move,flag,temp,number;       
  45. char num0,m;
  46. int tim;
  47. /*****************************************************
  48. 函数名称:void write_595()
  49. 功能说明:给595写数据
  50. 参数:    DR1、DG1-上半屏 DR2、DG2-下半屏  
  51. 返回值:  无
  52. ****************************************************/
  53. void write_595(uchar DR1,uchar DG1,uchar DR2,uchar DG2)
  54. {
  55.      uchar i;
  56.          for(i=0;i<8;i++)
  57.          {
  58.              LCK=0;
  59.                  R1=DR1&0X80;
  60.                  R2=DR2&0X80;
  61.                  G1=DG1&0X80;
  62.                  G2=DG2&0X80;
  63.                  LCK=1;
  64.                  DR1<<=1;
  65.                  DR2<<=1;
  66.                  DG1<<=1;
  67.                  DG2<<=1;
  68.          }
  69. }
  70. /*****************************************************
  71. 函数名称:void delay()
  72. 功能说明:延时函数
  73. 参数:    z
  74. 返回值:  无
  75. ****************************************************/
  76. void delay(uchar z)
  77. {
  78.     uchar x,y;
  79.         for(x=0;x<z;x++)
  80.             for(y=0;y<110;y++);
  81. }

  82. void main()
  83. {
  84.     R1=0;
  85.         R2=0;
  86.         G1=0;
  87.         G2=0;
  88.         OE=1;
  89.         tim=50;                                           //控制延时时间
  90.         sum=0;
  91.         num0=0;                                           //列扫描偏置
  92.         number=2;                                   //汉字宽度/8         
  93.         temp=0;                                           //数据在字库中的位置
  94.         TMOD=0X01;
  95.         TL0=(65536-50000)%256;
  96.         TH0=(65536-50000)/256;
  97.         EA=1;
  98.         ET0=1;
  99.         TR0=1;
  100.         while(1)
  101.         {
  102.             for(num=0;num<16;num++)
  103.                 {
  104.                     sum=num+num0;
  105.                         if(sum<16)
  106.                         {
  107.                               temp=0;
  108.                                   write_595(0xff,table[0+temp][num*number+0],0xff,table[1+temp][num*number+0]);
  109.                               write_595(0xff,table[0+temp][num*number+1],0xff,table[1+temp][num*number+1]);
  110.                               write_595(0xff,table[2+temp][num*number+0],0xff,table[3+temp][num*number+0]);
  111.                                   write_595(0xff,table[2+temp][num*number+1],0xff,table[3+temp][num*number+1]);
  112.                           write_595(0xff,table[4+temp][num*number+0],0xff,table[5+temp][num*number+0]);
  113.                               write_595(0xff,table[4+temp][num*number+1],0xff,table[5+temp][num*number+1]);
  114.                                   write_595(0xff,table[6+temp][num*number+0],0xff,table[7+temp][num*number+0]);
  115.                                   write_595(0xff,table[6+temp][num*number+1],0xff,table[7+temp][num*number+1]);               
  116.                        
  117.                                   SCK=0;
  118.                                   SCK=1;
  119.                                   P1=sum;
  120.                         }       
  121.                         else
  122.                         {
  123.                              temp=8;
  124.                              write_595(0xff,table[0+temp][num*number+0],0xff,table[1+temp][num*number+0]);
  125.                                  write_595(0xff,table[0+temp][num*number+1],0xff,table[1+temp][num*number+1]);
  126.                              write_595(0xff,table[2+temp][num*number+0],0xff,table[3+temp][num*number+0]);
  127.                              write_595(0xff,table[2+temp][num*number+1],0xff,table[3+temp][num*number+1]);
  128.                          write_595(0xff,table[4+temp][num*number+0],0xff,table[5+temp][num*number+0]);
  129.                              write_595(0xff,table[4+temp][num*number+1],0xff,table[5+temp][num*number+1]);
  130.                                  write_595(0xff,table[6+temp][num*number+0],0xff,table[7+temp][num*number+0]);
  131.                                  write_595(0xff,table[6+temp][num*number+1],0xff,table[7+temp][num*number+1]);
  132.                                  SCK=0;
  133.                              SCK=1;
  134.                                  P1=sum-16;
  135.                                  temp=0;
  136.                         }               
  137.                
  138.         }
  139. }               
  140. }

  141. void timer() interrupt 1
  142. {
  143.    
  144.         TL0=(65536-50000)%256;
  145.         TH0=(65536-50000)/256;
  146.         flag++;
  147.         if(flag>tim)
  148.         {
  149.             tim=2;
  150.                 flag=0;
  151.                 if(m==0)
  152.                 {
  153.                         if(num0<16)
  154.                         {
  155.                            num0++;
  156.                         }
  157.                         else
  158.                         {   
  159.                            m=1;
  160.                     }         
  161.                 }  
  162.                 if(m==1)
  163.                 {
  164.                         if(num0>0)
  165.                         {
  166.                            num0--;
  167.                         }
  168.                         else
  169.                         {
  170.                            m=0;
  171.                     }
  172.                 }                  
  173.        
  174.            }
  175.           if((num0==0)||(num0==16))
  176.               tim=50;
  177.         else  tim=2;
  178. }

  179. /*****************************************************
  180. 函数名称:void intensity_control(uchar time)
  181. 功能说明:调整屏幕亮度
  182. 参数:    time
  183. 返回值:  无
  184. ***************************************************
  185. void intensity_control(uchar time)
  186. {
  187.     OE=1;
  188.         delay(time);
  189.         OE=0;
  190.         delay(10-time);
  191. } */
复制代码




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

使用道具 举报

沙发
ID:21568 发表于 2016-10-25 16:53 | 只看该作者
希望有仿真图就好
回复

使用道具 举报

板凳
ID:144502 发表于 2016-10-26 10:20 | 只看该作者
没有详细的做法给出来的吗?
回复

使用道具 举报

地板
ID:39958 发表于 2016-11-13 08:55 | 只看该作者
正好用上,谢谢楼主无私奉献!
回复

使用道具 举报

5#
ID:70902 发表于 2016-12-10 16:10 | 只看该作者
正需要,支持一下
回复

使用道具 举报

6#
ID:201101 发表于 2017-5-15 20:40 | 只看该作者
能否分享一份32*64点阵显示的仿真图,1103204684@qq.com万分感谢
回复

使用道具 举报

7#
ID:198608 发表于 2017-5-16 16:00 | 只看该作者
我试了为什么不出字
回复

使用道具 举报

8#
ID:167337 发表于 2017-6-21 15:29 | 只看该作者
谢谢楼主分享好资源,关注32x63点阵屏,正需要学习!
回复

使用道具 举报

9#
ID:291645 发表于 2018-3-20 20:46 | 只看该作者
老铁,32*64 需要几个74HC595啊,有知道的吗
回复

使用道具 举报

10#
ID:255559 发表于 2018-6-30 18:08 | 只看该作者
需要好多,给你个实物图
回复

使用道具 举报

11#
ID:367145 发表于 2018-7-10 10:26 | 只看该作者
楼主你好,你的作品太棒了,我也想试着做一个,能否麻烦你传一份元件清单,谢谢。只有代码也不行啊。
回复

使用道具 举报

12#
ID:65956 发表于 2018-9-27 10:12 | 只看该作者
学习一下,测试一下我的板看看,谢谢分享
回复

使用道具 举报

13#
ID:399426 发表于 2018-9-27 12:26 | 只看该作者
表白神器,多谢分享
回复

使用道具 举报

14#
ID:97554 发表于 2018-9-27 14:24 | 只看该作者
silentstorm 发表于 2017-5-15 20:40
**** 作者被禁止或删除 内容自动屏蔽 ****

这个无需仿真图,3264点阵模块上边是标准的08接口,排列顺序就是左边上数第4脚EN   5脚 R1    6脚R2
右边上数引脚分别为A  B  C  D  G1  G2   LCK  SCK
对应楼主的程序EN = P2.6    R1 = P2.0   R2 = P2.1     A = P1.0   B = P1.1   C = P1.2  D = P1.3   G1= P2.2   G2 = P2.3  LCK = P2.4   SCK = P2.5     

这些对应的引脚也可以由自己的喜好修改,但注意不要使用P0口,P0口不接上拉电阻驱动点阵屏有可能会不亮。
回复

使用道具 举报

15#
ID:97554 发表于 2018-9-27 14:26 | 只看该作者
Asher0120 发表于 2018-3-20 20:46
老铁,32*64 需要几个74HC595啊,有知道的吗

每个8 × 8 模块需要一色一个595,双色的就是每个8 × 8点阵上需要2个595
回复

使用道具 举报

16#
ID:97554 发表于 2018-9-27 14:28 | 只看该作者
hacehi 发表于 2018-7-10 10:26
楼主你好,你的作品太棒了,我也想试着做一个,能否麻烦你传一份元件清单,谢谢。只有代码也不行啊。

我替楼主回答下吧,这个一个单片机最小系统板,一块点阵屏,外加5v 5A以上的电源就可以了
回复

使用道具 举报

17#
ID:97554 发表于 2018-9-27 14:30 | 只看该作者
vs795 发表于 2016-10-26 10:20
没有详细的做法给出来的吗?

会烧写程序,然后把线一一对应接上就可以了
回复

使用道具 举报

18#
ID:97554 发表于 2018-9-27 14:42 | 只看该作者
vs795 发表于 2016-10-26 10:20
没有详细的做法给出来的吗?


3264点阵屏的08接口图示:


单片机与点阵屏连接图示:





有以上器件的,单片机为STC  12C5A60S2 一块3264的LED双色点阵屏,按上图连接好,把程序中的引脚修改为对应硬件的引脚,把程序烧入单片机即可,无需其他元器件。这个供电是5V 供电,电流至少要保证在4A以上。
回复

使用道具 举报

19#
ID:399179 发表于 2018-9-27 18:50 来自手机 | 只看该作者
怎么改字啊?
回复

使用道具 举报

20#
ID:399179 发表于 2018-9-28 06:51 来自手机 | 只看该作者
很棒的样子!
回复

使用道具 举报

21#
ID:403231 发表于 2018-9-28 13:20 | 只看该作者
杨雪飞 发表于 2018-9-27 14:42
3264点阵屏的08接口图示:

市售的那些点阵屏,是不是单片机已经在背后了?因为他们提供改内容软件写入就可以了。
回复

使用道具 举报

22#
ID:97554 发表于 2018-9-29 15:16 | 只看该作者
一片到 发表于 2018-9-28 13:20
市售的那些点阵屏,是不是单片机已经在背后了?因为他们提供改内容软件写入就可以了。

不是的,像银行那些用的叫号的条屏是定制的单片机控制卡,一般的是51单片机然后加的485通讯芯片通过485接口与叫号电脑相连。那些做成大的广告屏用的是专用的控制卡,一般是ARM单片机,内部植有程序,可以通过U盘,串口,或者WIFI进行改字。
回复

使用道具 举报

23#
ID:399179 发表于 2018-9-30 09:44 来自手机 | 只看该作者
这个是不是有专用的软件?就是直接在软件上打字就可以显示了
回复

使用道具 举报

24#
ID:300212 发表于 2018-10-19 22:22 来自手机 | 只看该作者
hacehi 发表于 2018-7-10 10:26
楼主你好,你的作品太棒了,我也想试着做一个,能否麻烦你传一份元件清单,谢谢。只有代码也不行啊。

闲鱼淘个二手的,便宜,这个32*64光买8*8点阵的话都比你淘二手贵的多,所以直接买现成的,剩下程序自己写,我就是这样干的,正在想办法搞程序
回复

使用道具 举报

25#
ID:300212 发表于 2018-10-19 22:29 来自手机 | 只看该作者
杨雪飞 发表于 2018-9-27 14:28
我替楼主回答下吧,这个一个单片机最小系统板,一块点阵屏,外加5v 5A以上的电源就可以了

5a以上电流?
回复

使用道具 举报

26#
ID:411542 发表于 2018-12-10 15:20 | 只看该作者
杨雪飞 发表于 2018-9-27 14:24
这个无需仿真图,3264点阵模块上边是标准的08接口,排列顺序就是左边上数第4脚EN   5脚 R1    6脚R2
右 ...

似乎有点明白。要是用esp8266当MCU,也对应的脚口接上,烧上固件就可以了吧?
回复

使用道具 举报

27#
ID:523395 发表于 2019-4-28 10:29 | 只看该作者
谢谢分享谢谢老大
回复

使用道具 举报

28#
ID:219600 发表于 2019-5-24 13:25 | 只看该作者
学习学习,流动字的我还不会
回复

使用道具 举报

29#
ID:646541 发表于 2019-12-20 18:45 | 只看该作者
能不能帮忙画个仿真图
回复

使用道具 举报

30#
ID:1046983 发表于 2022-10-11 10:44 | 只看该作者
太棒了,收藏了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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