找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15927|回复: 23
收起左侧

单片机+74HC595入门8X8点阵教学(想学的新人进来看看)

  [复制链接]
ID:424598 发表于 2019-4-24 21:22 | 显示全部楼层 |阅读模式
写在前面的话
希望所有发贴求助的新人朋友们, 请先在论坛搜索, 论坛有很多老师们发的贴子, 虽然有很多描述得不清不楚, 但总是有能用的
8X8点阵我也参考了好多, 发代码的确实不少, 但在硬件方面配套的原理图, 连接图都不太清楚, 于是就瞎子摸象, 总算是搞清楚了
特发此贴跟大家分享


照样, 先上原理图, 接线图
点阵0423(修正).png



程序有附仿真程序, 方便调试
JD20190424210555.png


由于是测试, 所以用排针+杜邦线
IMG_20190423_050352.jpg


IMG_20190423_050400.jpg


IMG_20190423_050456.jpg


IMG_20190423_052826.jpg


IMG_20190423_052911.jpg


单片机源程序如下:

  1. /*********************************************************************************
  2. 接线方式请看main.h说明
  3.         二片74HC595 + 一个8*8点阵(1088AS共阴)
  4.         实现文字静态显示+移动显示(左移/右移/上移/下移)
  5.         代码精简,方便理解
  6. **********************************************************************************/
  7. #include "main.h"

  8. //定义变量
  9. uchar temp = 0xfe;

  10. /*取模说明:
  11. 菜单选项:
  12. "点阵格式" : 根据你的点阵是共阴还是共阳, 我的是共阴, 所以选择的是阴码
  13. "取模走向" : 根据你的需求, 选择逆向或顺向, 我这里选择的是逆向
  14. "取模方式" : 请看下面示例说明, 根据移动方向选择
  15. "每行显示数据" : 点阵=8, 索引=8
  16. "液晶面板仿真" : 像素大小=8
  17. "输出数制" : 选择"十六进制数"
  18. "输出选项" : 选择"输出精简格式"和"输出紧凑格式"
  19. "自定义格式" : 选择"C51格式", 其它默认

  20. 主界面选项:
  21. 字体: 幼圆
  22. 字宽: 8                字高: 8
  23. 点阵宽: 8        点阵高: 8
  24. */

  25. //动态显示数组
  26. uchar Display_word1[48] = {                        //数组个数(这里的40代表有40个十六进制,因为是8*8点阵,所以每个字有8个十六进制)
  27. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //空白(前面放一个空白屏,实现移动出字效果)
  28. //0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10,        //箭头

  29. //逆向+逐列式或列行式 (左移/右移)
  30. 0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,        //"一",0
  31. 0x80,0x80,0x80,0xFE,0x90,0x90,0x80,0x80,        //"上",1
  32. 0x00,0x40,0x44,0x44,0x44,0x44,0x40,0x00,        //"二",2
  33. 0x00,0x02,0x02,0xFE,0x0A,0x12,0x02,0x00,        //"下",3


  34. //逆向+行列式或逐行式 (上移/下移)
  35. /*0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,        //"一",0
  36. 0x00,0x08,0x08,0x08,0x38,0x08,0x08,0xFF,        //"上",1
  37. 0x00,0x00,0x3C,0x00,0x00,0x00,0x7E,0x00,        //"二",2
  38. 0x00,0x7E,0x08,0x18,0x28,0x08,0x08,0x08,        //"下",3
  39. */

  40. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //空白(最后放一个空白屏,以免出现乱码)
  41. };

  42. //静态显示数组(第1个参数为几个字,第2个参数为每字多少字节)
  43. uchar Display_word2[3][8] = {
  44. 0x0C,0x1E,0x3E,0x7C,0x7C,0x3E,0x1E,0x0C,        //心
  45. 0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10,        //箭头
  46. 0x0C,0x1E,0x3E,0x7C,0x7C,0x3E,0x1E,0x0C,        //心
  47. };

  48. //****************************************************
  49. //主函数
  50. //****************************************************
  51. void main()
  52. {
  53.         uint i;
  54.         uchar j,k;
  55.         while(1)
  56.         {               
  57.                 ///////////////////////////////////////////////////////////////////////////
  58.                 //静态显示
  59.                 for(j = 0 ; j < 3 ; j++) {                //共需显示3个字
  60.                         for(i = 0 ; i < 1000 ; i++)        {                //静态显示时间
  61.                                 temp = 0x7f;
  62.                                 for(k = 0 ; k < 8 ; k++) {                //显示1-8列(8为显示8列)如果改成4则有4列显示,另4列黑屏
  63.                                         Send_Data(Display_word2[j][k]);
  64.                                 }
  65.                         }
  66.                 }

  67.                 ///////////////////////////////////////////////////////////////////////////               
  68.                 //移动方式(想要不同的移动方式,就按以下说明修改)

  69.                 //for(j = 0 ; j < 40 ; j++) //左移(逐列式)/上移(逐行式)
  70.                 //for(j = 39 ; j-1 > 0 ; j--)        //右移(逐列式)/下移(逐行式)

  71.                 for(j = 0 ; j < 40 ; j++) {                                //要显示的字数(每个字8位,这里是显示一屏空白+4个字,所以是8+4*8=40)
  72.                         for(i = 0 ; i < 50 ; i++) {                        //控制移动的速度(数字越小移动速度越快,越大越慢)
  73.                                 temp = 0x7f;

  74.                                 //移动方式(想要不同的移动方式,就按以下说明修改)
  75.                                 //for(k = 0 ; k < 8 ; k++) //左移(逐列式)/右移(逐列式)
  76.                                 //for(k = 8 ; k-1 > 0 ; k--) //上移(逐行式)/下移(逐行式)

  77.                                 for(k = 0 ; k < 8 ; k++) {                //(每个字取8次数组, 不要修改)
  78.                                         Send_Data(Display_word1[j+k]);
  79.                                 }
  80.                         }
  81.                 }
  82.         }                                       
  83. }
复制代码

压缩包内, 附了仿真程序, 点阵程序和取模说明和工具
JD20190424210828.png

全部资料51hei下载地址:
STC89C52+74HC595+8X8点阵移动程序.zip (2.65 MB, 下载次数: 427)

评分

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

查看全部评分

回复

使用道具 举报

ID:520127 发表于 2019-4-25 00:07 | 显示全部楼层
感谢大哥分享源码
回复

使用道具 举报

ID:492212 发表于 2019-4-25 12:35 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:492212 发表于 2019-4-25 12:35 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:343102 发表于 2019-4-25 14:57 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:516983 发表于 2019-4-26 10:48 | 显示全部楼层
请问大哥有汇编得程序吗
回复

使用道具 举报

ID:424598 发表于 2019-4-26 13:47 来自手机 | 显示全部楼层
土豪男 发表于 2019-4-26 10:48
请问大哥有汇编得程序吗

没有,没学过汇编
回复

使用道具 举报

ID:579763 发表于 2019-7-8 10:21 | 显示全部楼层
正好在找这相关资料!!!
回复

使用道具 举报

ID:529757 发表于 2019-7-8 20:20 | 显示全部楼层
真的很nice
回复

使用道具 举报

ID:572981 发表于 2019-7-9 16:41 | 显示全部楼层
感谢
回复

使用道具 举报

ID:97097 发表于 2019-9-26 09:20 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:414344 发表于 2019-10-17 00:18 | 显示全部楼层
为什么下了  仿真没见又效果
回复

使用道具 举报

ID:625633 发表于 2019-10-17 15:07 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:625659 发表于 2019-10-17 15:31 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:643653 发表于 2019-11-17 15:18 | 显示全部楼层
下载之后  任意点阵字符代码生成器  里面的应用程序打不开,一点击就显示错误
回复

使用道具 举报

ID:778399 发表于 2020-6-13 18:23 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:789451 发表于 2020-6-25 13:43 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:787783 发表于 2020-6-25 16:10 | 显示全部楼层
很有用,谢谢
回复

使用道具 举报

ID:495287 发表于 2020-6-27 13:45 | 显示全部楼层
感谢楼主分享源码,好运常伴楼主。
回复

使用道具 举报

ID:795427 发表于 2022-1-21 22:03 | 显示全部楼层
谢谢分享,不错,写的很详细。
回复

使用道具 举报

ID:297903 发表于 2022-2-6 13:22 | 显示全部楼层
感谢分享,有空也整一个试下!!
回复

使用道具 举报

ID:679189 发表于 2022-5-5 21:31 | 显示全部楼层
干的漂亮!
回复

使用道具 举报

ID:1066865 发表于 2023-7-17 14:43 | 显示全部楼层
怎么显示不同字体的设置
回复

使用道具 举报

ID:1112603 发表于 2024-5-16 12:55 | 显示全部楼层
刚学过74HC595驱动数码管,下载看看和这个控制点阵的有什么不同,谢谢分享!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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