最近玩MAX7129控制点阵,弄了一个用51和MAX7219控制两个1088AS点阵滚动显示。此文章作为总结。方便自己日后需要时回顾,也方便他人借鉴参考。文中如果有地方不准确,有错误,欢迎指正。
这次主要用了一个STC89C52RC、两个MAX7219和两个1088AS8*8点阵。
刚开始做了好几天没弄出来,最后发现是硬件出了问题……弄好硬件后很快就做了出来。下面主要是在整个过程中一些探索

1088AS

因为之前没找到相关资料,所以自己一个一个引脚测了一下,第一张图是自己测的各引脚控制的行或列以及是接GND还是VCC,右侧
是标有1088AS和突出一个半圆的一侧。第二张厂家公司提供的,他这个排列方式……反正我是有点懵。

MAX7219

芯片的各个引脚

芯片的各个引脚作用以及典型应用电路可以从芯片手册中了解。注意DIG-\SEG+。

程序

这个直接附上,也不难。

#include <reg52.h>
//宏定义
#define uchar unsigned char
#define uint  unsigned int
//定义MAX7219与单片机的连接引脚
sbit CLK  = P1^0;//时钟序列输入端
sbit CS = P1^1;//载入数据端
sbit DIN  = P1^2;//串行数据输入端
//Hello World数组
uchar code array[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x10,0x7E,0x00,0x7C,0x54,0x5C,0x00,
0x7E,0x40,0x00,0x7E,0x40,0x00,0x38,0x44,0x38,0x00,0x3E,0x40,0x38,0x40,0x3E,0x00,
0x38,0x44,0x38,0x00,0x7C,0x08,0x04,0x00,0x7E,0x40,0x00,0x70,0x50,0x7E,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
//hello world!
};
//延时函数
void Delay_xms(uint x)
{uint i,j;for(i=0;i<x;i++){for(j=0;j<112;j++);}
}
//向MAX7219写入字节
void write_MAX7219_byte(uchar DATA)
{uchar i;CS = 0;for(i=8;i>=1;i--){CLK = 0;DIN = DATA&0x80;DATA=DATA<<1;CLK = 1;}
}
//向第一个MAX7219写入数据
void write_MAX7219_1(uchar address,uchar dat)
{CS = 0;write_MAX7219_byte(address);write_MAX7219_byte(dat);CS = 1;
}
//向第二个MAX7219写入数据
void write_MAX7219_2(uchar address,uchar dat)
{CS = 0;write_MAX7219_byte(address);write_MAX7219_byte(dat);CLK = 1;write_MAX7219_byte(0x00);write_MAX7219_byte(0x00);CS = 1;
}
//设置MAX7219
void Init_MAX7219()
{write_MAX7219_1(0x09,0x00);write_MAX7219_1(0x0A,0x03);write_MAX7219_1(0x0B,0x07);write_MAX7219_1(0x0C,0x01);write_MAX7219_1(0x0F,0x00);write_MAX7219_2(0x09,0x00);write_MAX7219_2(0x0A,0x03);write_MAX7219_2(0x0B,0x07);write_MAX7219_2(0x0C,0x01);write_MAX7219_2(0x0F,0x00);
}void main()
{uchar i,j;Delay_xms(50);Init_MAX7219();while(1){for(j=0;j<=40;j++){for(i=1;i<9;i++){write_MAX7219_1(i,array[j+i-1]);write_MAX7219_2(i,array[8+j+i-1]);}Delay_xms(500);}}
}

字的取模

取模我用的字是“hello world”,这个刚开始学习51时取模方法不同,这个不需要黑白反显。下图是我的点阵两个都是有半圆的一边朝右,所以取模时,先设定的是高8宽48,就是横着一行字,然后顺时针旋转九十度再左右调转,取出来就可以了

调试

调的地方就是
这行里面的array[8+j+i-1]里的8

write_MAX7219_2(i,array[8+j+i-1]);

刚开始想当然的弄了个9,后来发现好像不对,然后在写入数据后面加了个延时,延长了他在切换列时的间隔,发现第二个点阵比设想中的快了一个,然后将9改成了8

for(i=1;i<9;i++){write_MAX7219_1(i,array[j+i-1]);write_MAX7219_2(i,array[8+j+i-1]);Delay_xms(150);}

使用51单片机和MAX7219控制点阵滚动显示相关推荐

  1. 51单片机IIC 12864 OLED屏幕滚动显示仿真

    51单片机IIC 12864 OLED屏幕滚动显示仿真 程序代码接着前面文章<STC15W408AS单片机IIC驱动0.96寸OLED显示> 这里不再贴出代码了,前面有一篇有实物效果演示, ...

  2. 【51单片机】MAX7219 LED点阵GUI设计

    文章目录 一.主要功能 二.硬件资源 1.硬件准备 2.硬件连接 三.软件设计 1.软件结构 2.主要代码 四.实验现象 联系作者 一.主要功能 LED点阵显示初始信息,可通过K3键切换显示模式,可实 ...

  3. 串口控制74HC164C语言,51单片机74HC164串口控制数码管显示

    一般数码管需要接7个脚才能显示,如果用单片机本身的I/O口,虽然可以但是浪费宝贵的i/O口资源.本例用移位寄存器74HC164作为数码管驱动进行控制. 74HC164特性   是一种8位串转并口的控制 ...

  4. 51单片机实现电机控制和LCD显示

    利用51单片机PWM技术实现对直流电机的控制,在预设档位上进行调节,并且在LCD屏幕上显示. PS:更改针脚可以PWM调灯光. PS:有LCD点亮的模块.

  5. 基于51单片机的蓝牙控制双色LED点阵显示屏(实物图+原理图+源码+全套资料)

    资料编号:086 采用stm32单片机,可以通过蓝牙app控制点阵显示不同效果, 具体功能请看演示视频,全套资料齐全: 86-基于51单片机的蓝牙控制双色LED点阵显示屏(实物图+原理图+源码+全套资 ...

  6. K_A02_003 基于单片机驱动8位数码管模块(MAX7219) 0-7静态显示+滚动显示

    目录 一.资源说明 二.基本参数 1.电气参数 2.引脚说明 三.通信协议说明 工作时序 对应程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+8位数码管模块 1.2.STM32F1 ...

  7. 51单片机PID算法控制无刷直流电机proteus仿真

    51单片机PID算法控制无刷直流电机proteus仿真 1.五个按键,停止/启动,正转,反转,加速,减速 2.显示lcd1602,第一行设置速度set= 3.第二行实际速度speed= r/min 4 ...

  8. 基于51单片机的自动浇花系统设计/基于51单片机的智能抽奖系统控制设计/基于51单片机的数字时钟与日历显示控制设计 毕业设计

    1147基于51单片机的自动浇花系统设计 设计思路:通湿度传感器实时监测湿度,通过LCD显示出实时的湿度采集值,可以通过按键设定目标界限,当达到这个界限值时,浇花系统的电机装置运行. 电路包含:LCD ...

  9. 51单片机模拟电梯控制(含完整代码)

    51单片机模拟电梯控制 前言 一.普中51-单核-A2开发板 二.系统功能 三 .预定义 四.电梯内按有报警按键,该功能由外部中断功能和蜂鸣器实现 五.延时函数-----电梯每上升,下降一层和开门关门 ...

最新文章

  1. 使用1个盘三个5G分区创建12G逻辑卷
  2. 2017网易校招真题 合唱团
  3. oracle游标循环定义变量赋值,PL/SQL  循环 数组 游标的使用
  4. 关于微信浏览器H5 React,Vue工程化项目input无法自动聚焦疑难杂症排查
  5. AMD中国:没有对拼多多及其平台上任何店铺授权
  6. Excel的导入与导出(POI)
  7. Python webdriver 读取本地csv文件中数据 提示:IOError: [Errno 2] No such file or directory
  8. java获取中文拼音首字母
  9. 大数模拟——K - Large Division LightOJ - 1214
  10. java安装后怎么打开_java安装后怎么打开教程
  11. ARCore快速入门-02导入ARCore For Unity
  12. 学习笔记|复杂嵌套的三目表达式如何分割?
  13. Qt:十六进制字符串和十六进制互转
  14. PS 钢笔工具
  15. Web入门学习笔记1——建立第一个网站
  16. git-cz 规范提交代码注释
  17. mysql绘制er图菱形表示什么意思_ER图中菱形表示的是()
  18. 亿级(无限级)并发,没那么难-科普文
  19. 服务器返回的14种常见HTTP状态码
  20. Unity Shader GrabPass 使用注意的问题

热门文章

  1. 希尔伯特黄变换matlab,HHT变换的三种方法 Matla
  2. 【bmzctf-crypto】--writeup
  3. 2022 Weex 工程搭建流程
  4. C++实现顺序结构线性表的基本操作
  5. Python学习整理(之一)
  6. golang指定图片大小,图片生成(白底黑字)。将一张随机图片与生成图片合成
  7. macOS Catalina 10.15.6(19G2021)原版镜像CDR下载
  8. java远程代码注入_Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-3241 )...
  9. 频偏纠正matlab实现,频偏估计matlab代码
  10. Ethercat学习日记