找回密码
 立即注册

QQ登录

只需一步,快速开始

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

16×16点阵汉字横移方法(附代码)

  [复制链接]
跳转到指定楼层
楼主
本帖最后由 dfyy8888 于 2015-1-18 17:35 编辑
  1. <p>//matrix.h(字模数组文件)</p><p>//使用zimoV2.2.exe取模,因为是横向移动字幕,所以要纵向取模。</p><p>//在zimoV2.2.exe里面可以一次性取出所有字符的字模数据,不用做任何修改,粘贴到数组即可使用</p><p>//可以单独做一个头文件,字符数不限,只要你单片机rom够大^_^</p><p>
  2. unsigned char code matrix[]={
  3. /*--  文字:  [空字符]  --*/
  4. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  5. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  6. ////////////////////////////////////////////////////////////////////////////////

  7. /*--  文字:  《  --*/
  8. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  9. 0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x09,0x12,0x24,0x48,0x90,0x20,0x40,0x00,0x00,
  10. 0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x90,0x48,0x24,0x12,0x08,0x04,0x00,0x00,

  11. /*--  文字:  三  --*/
  12. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  13. 0x00,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x00,0x00,
  14. 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,

  15. /*--  文字:  字  --*/
  16. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  17. 0x08,0x30,0x20,0x24,0x24,0x24,0xA4,0x64,0x25,0x26,0x24,0x20,0x20,0x28,0x30,0x00,
  18. 0x40,0x40,0x40,0x40,0x40,0x42,0x41,0xFE,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,

  19. /*--  文字:  经  --*/
  20. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  21. 0x04,0x0C,0x35,0xC6,0x04,0x18,0x01,0x41,0x42,0x44,0x48,0x58,0x64,0x42,0x01,0x00,
  22. 0x44,0xE6,0x44,0x48,0x48,0x48,0x02,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x02,0x00,

  23. /*--  文字:  》  --*/
  24. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  25. 0x00,0x00,0x40,0x20,0x90,0x48,0x24,0x12,0x09,0x04,0x02,0x01,0x00,0x00,0x00,0x00,
  26. 0x00,0x00,0x04,0x08,0x12,0x24,0x48,0x90,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,</p><p>
  27. ////////////////////////////////////////////////////////////////////////////////
  28. /*--  文字:  [空字符]  --*/
  29. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  31. };


  32. /********************************************************************/

  33. //字幕横向移动程序,需要改内容时请修改matrix.h文件的字模数据即可。
  34. #include<reg51.h>
  35. #include<intrins.h>
  36. #include"matrix.h"    //字模存放头文件

  37. sbit SDI = P3^4;
  38. sbit SCK = P3^6;
  39. sbit LCK = P3^5;

  40. void HC595_Send(unsigned char dat0,unsigned char dat1,unsigned char dat2,unsigned char dat3);

  41. main()
  42. {
  43.         unsigned char dat0, dat1, dat2, dat3, j, k, n=0;
  44.         unsigned int neg, tmp, i;
  45.         neg = 0x7FFF;
  46.         while(1)
  47.         {
  48.                 for(i=0; i<(sizeof(matrix)-31);i++)
  49.                 {
  50.                         for(k=4; k>0; k--)
  51.                         {
  52.                                 for(j=0; j<16; j++)
  53.                                 {         
  54.                                         tmp = _iror_(neg,j);
  55.                                         dat0 = (unsigned char)(tmp);
  56.                                         dat1 = (unsigned char)(tmp>>8);
  57.                                         if((i+n)/16%2!=0) n+=16;
  58.                                         dat3 = (unsigned char)(*(matrix+i+n));
  59.                                         dat2 = (unsigned char)(*(matrix+i+n+16));
  60.                                         HC595_Send(dat0,dat1,dat2,dat3);
  61.                                         n++;
  62.                                 }
  63.                                 n=0;
  64.                         }
  65.                         if(i/16%2!=0) i+=16;
  66.                 }
  67.         }
  68. }
  69. //下面这个子函数如果把形参改成指针(即数组),速度会很慢,所以把四个for循环都写出来了
  70. void HC595_Send(unsigned char dat0,unsigned char dat1,unsigned char dat2,unsigned char dat3)
  71. {
  72.         unsigned char i;
  73.         SCK = 1;
  74.         LCK = 1;
  75.         for(i=0;i<8;i++)
  76.         {
  77.                 SDI = dat0&0x01;
  78.                 dat0 >>= 1;
  79.                 SCK = 0;
  80.                 SCK = 1;
  81.         }         
  82.         for(i=0;i<8;i++)
  83.         {
  84.                 SDI = dat1&0x01;
  85.                 dat1 >>= 1;
  86.                 SCK = 0;
  87.                 SCK = 1;
  88.         }
  89.         for(i=0;i<8;i++)
  90.         {
  91.                 SDI = dat2&0x01;
  92.                 dat2 >>= 1;
  93.                 SCK = 0;
  94.                 SCK = 1;
  95.         }
  96.         for(i=0;i<8;i++)
  97.         {
  98.                 SDI = dat3&0x01;
  99.                 dat3 >>= 1;
  100.                 SCK = 0;
  101.                 SCK = 1;
  102.         }
  103.         LCK = 0;
  104.         LCK = 1;
  105. }</p>
复制代码
附:电路图(采用4片74HC595,横列各两片,JP595短路帽短接)

未标题-3.jpg (99.58 KB, 下载次数: 264)

未标题-3.jpg

未标题-2.jpg (250.98 KB, 下载次数: 286)

未标题-2.jpg

评分

参与人数 2黑币 +55 收起 理由
zzqy + 5 很给力!
admin + 50 共享资料的积分奖励!

查看全部评分

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

使用道具 举报

沙发
ID:72243 发表于 2015-1-14 23:57 | 只看该作者
第一次在这儿发帖,有点乱
回复

使用道具 举报

板凳
ID:51269 发表于 2015-1-15 12:08 来自手机 | 只看该作者
楼主太谦虚了,我觉得很好,图文并茂的,而且程序的结构很清晰。是我们学习的理想资料。有时间的话我把你的电路做成硬件来测试一下
回复

使用道具 举报

地板
ID:72415 发表于 2015-1-18 00:18 | 只看该作者
嗯,好东西,学校一个比赛就是做这种类似的
回复

使用道具 举报

5#
ID:32773 发表于 2015-2-18 22:52 | 只看该作者
学习  
回复

使用道具 举报

6#
ID:72050 发表于 2015-4-28 17:09 | 只看该作者
这个很有用
回复

使用道具 举报

7#
ID:78850 发表于 2015-5-4 17:11 | 只看该作者
这个不错,只是只有16*16的吗?
回复

使用道具 举报

8#
ID:78298 发表于 2015-5-5 12:10 | 只看该作者
新人回帖赚币。
回复

使用道具 举报

9#
ID:29438 发表于 2015-5-7 13:03 | 只看该作者
好东西,谢谢!
回复

使用道具 举报

10#
ID:78813 发表于 2015-5-9 09:35 | 只看该作者
楼主好人!
回复

使用道具 举报

11#
ID:82652 发表于 2015-6-10 20:14 | 只看该作者
谢谢楼主,我最近在做这样的课设
。万分感谢
回复

使用道具 举报

12#
ID:87330 发表于 2015-7-31 11:44 | 只看该作者
为什么我的显示是乱码?
回复

使用道具 举报

13#
ID:85435 发表于 2015-8-1 20:29 | 只看该作者
在学习光立方程序
回复

使用道具 举报

14#
ID:140435 发表于 2016-9-25 20:43 | 只看该作者
为什么会有led乱跳的现象
回复

使用道具 举报

15#
ID:205447 发表于 2017-6-1 16:02 | 只看该作者
刚好课设需要,学习下,谢谢楼主
回复

使用道具 举报

16#
ID:211119 发表于 2017-6-17 20:05 | 只看该作者
这个有仿真程序吗
回复

使用道具 举报

17#
ID:265704 发表于 2017-12-24 14:24 | 只看该作者
感谢楼主分享
回复

使用道具 举报

18#
ID:495804 发表于 2020-3-11 20:33 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

19#
ID:685726 发表于 2020-3-12 00:18 | 只看该作者
挺完整的,如果能补充595的使用方法和8x8点阵如何连接成更大的点阵就好了
回复

使用道具 举报

20#
ID:905511 发表于 2023-12-19 23:40 | 只看该作者
没想到快9年了,还是那么经典
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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