看此篇博文之前建议先看博主的上一篇博文: 51单片机教程:8*8 点阵显示字符、数字、简单汉字

取走点赞哦~

教你如何用4个8乘8点阵拼成一个16乘16点阵

资料链接:点阵16乘16.rar
一、点阵原理
市面上有很多种类的点阵,但是最常用的还是这种8乘8点阵

内部结构如下图

可以发现点阵就是由led构成,并且有一排是阳极,另一排是阴极,有一排是控制行,另一排是控制列。
打开proteus搜索MATRIX,看到各种型号的点阵,选择8乘8即可

任意选择一个颜色的点阵,我们发现引脚没有做任何标记,默认上排:阴极、控制列;下排:阳极、控制行
(一定要自己测一下,proteus仿真布置的点阵每次方向都可能发生改变)

什么意思呢,也就是跟下图对应关系,只不过引脚位置发生改变

二、4个 “ 2乘2 ” 点阵拼成一个 “ 4乘4” 点阵
我们先从简单开始理解,首先画出4个 “2乘2” 点阵

然后把上下方向的阴极控制列连接起来
把左右方向的阳极控制行连接起来
就拼成了一个4*4点阵

二、4个 “ 8乘8 ” 点阵拼成一个 “ 16乘16” 点阵
注意:proteus的点阵真的很难用,找不到方向,得自己测
测量两个内容:控制列还是控制行、阴极还是阳极

三、仿真:依次显示 “化作尘”,间隔为1秒

这里使用了74hc138与74hc595,不了解原理的自行百度,不做讲解



对应代码:

/*
hc595与hc138控制8*8点阵
一开始写这个程序的时候,程序运行占用存储空间超过了128b
错误:
点阵(四)16乘16.C(98): error C249: 'DATA': SEGMENT TOO LARGE导致程序无法运行,原因是数组占用了大量的内存
后来在数组名前加了code解决了这个问题
意思是把数组存储到程序存储区4kb而不是  data区128b
*/#include <regx51.h>sbit SH_CP = P3^0;
sbit DS = P3^1;
sbit ST_CP = P3^2;//不需要改变的数组保存到code程序存储区
unsigned char code b[3][32] = {/*--  文字:  化  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x01,0x10,0x01,0x10,0x21,0x08,0x11,0x08,0x09,0x0C,0x05,0x0C,0x03,0x0A,0x01,
0x89,0x01,0x48,0x01,0x28,0x01,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x7E,0x08,0x00,/*--  文字: 作  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x90,0x00,0x90,0x00,0x90,0x00,0x88,0x7F,0x48,0x01,0x4C,0x01,0x2C,0x01,0x0A,0x1F,
0x09,0x01,0x08,0x01,0x08,0x01,0x08,0x3F,0x08,0x01,0x08,0x01,0x08,0x01,0x08,0x01,/*--  文字:  尘  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x80,0x00,0x80,0x00,0x90,0x04,0x90,0x08,0x88,0x10,0x84,0x20,0x82,0x20,0x00,0x00,
0x80,0x00,0x80,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x00,0x00,};void delayms(unsigned int m)
{int i,j;for(i=0; i<m; i++)for(j=0; j<120; j++);
}void hc_595(unsigned int temp,unsigned int temp1)    //595段码程序
{char t;bit val;for(t=0; t<8; t++){val = temp & 0x80;     //第一个数据传到第一个595输出DS = val;SH_CP = 0;;  SH_CP = 1;temp = temp<<1;}for(t=0; t<8; t++){val = temp1 & 0x80;    //第二个数据传输到第二个595输出DS = val;SH_CP = 0;;  SH_CP = 1;temp1 = temp1<<1;}ST_CP = 0;;   ST_CP = 1;
} void hc_138()
{unsigned int n,t,i;for(i=0; i<3; i++)                  //显示3个汉字{for(t=0; t<30; t++)               //用来延时1秒{for(n=0; n<16; ++n)          //一次显示一个汉字{  if(n<8)       //第一个138的高电平向下移动{P3_6 = 1;   //第一个138使能,第二个138不工作P2 = n;         }else         //第二个138的高电平向下移动{P3_6 = 0;     //第二个138使能,第一个138不工作P2 = n-8;    }hc_595(b[i][2*n],b[i][2*n+1]);   //发送段码delayms(2);}}}
}void main(void)
{while(1){hc_138();}
}

51单片机教程:51单片机驱动四个8*8点阵,拼凑16*16点阵显示标准汉字。相关推荐

  1. wxpython视频教程-单片机C语言入门_单片机教程_单片机编程语言 - C语言网

    本教程由 继承叔 编写,面向对单片机有基础认知的初学者! 1.单片机了解 单片机是一块集成电路的控制芯片,我们熟知的家电例如洗衣机的定时控制和滚筒运作,电饭煲的保温功能和鸣叫提醒,电冰箱,空调等等这些 ...

  2. c51语言如何按位异或,51单片机教程:单片机逻辑与或异或指令详解

    而所有的或指令,就是将与指仿中的ANL 换成ORL,而异或指令则是将ANL 换成XRL.即 或指令: ORL A,Rn ;A和Rn中的值按位'或',结果送入A中 ORL A,direct;A和与间址寻 ...

  3. 51单片机教程:8*8 点阵显示字符、数字、简单汉字

    点阵显示实验 一.什么是点阵? 我们用之前的方法一个IO口只能控制一个led,如果需要用更少的IO口控制更多的led怎么办呢,于是就有了点阵. 8X8点阵共由64个发光二极管组成,且每个发光二极管是放 ...

  4. 专业导师告诉你,有哪些51单片机教程值得大力推荐

    专业导师告诉你,有哪些51单片机教程值得大力推荐 摘要:前两天我的学生做了一个电路,功能就是用MOS管来控制一个电源的开关,但是做出来后发现不能用控制MOS管的开关,MOS管一直处于导通状态.一起来看 ...

  5. 51单片机教程 第一个51程序 :点亮一个发光二极管

    化作尘百度网盘下载中心:https://pan.baidu.com/s/1eLnnSXwbFi8o0RESJYFPSQ 提取码:uxir 取走点赞哦~ keil+proteus 第一个51程序 :让一 ...

  6. 51单片机安装不了驱动问题的解决方案

    本文章主要针对51单片机安装不了驱动这个问题.提供补充的一个解决方案. 解决方案 1.首先购买的板子是普中51单片机A6开发板,驱动安装不了可以参照论坛这里提供的解决方案:http://www.pre ...

  7. 51单片机教程哪个好?

    单片机入门51单片机是最好的选择. 很多人可能以为51单片机已经过时了,能这么想的绝对是没实际产品开发经验的. 51最大的优势就是价格便宜,在小家电等消费市场有大量的使用. 新手先学51可以培养你对单 ...

  8. 基于51单片机的波形发生器(四种波形)(毕业设计资料)

    四种波形的产生,包括锯齿波.三角波.方波.正弦波.通过LCD液晶显示当前波形以及波形的频率.可以通过按键切换波形,并可以通过按键进行设置当前波形的频率大小,也可以设置频率设置不步进值.资料从主页链接中 ...

  9. 51单片机控制TB6600驱动器驱动42步进电机

    51单片机控制TB6600驱动器驱动42步进电机 第一次 功能实现目标 硬件简介 硬件连接 程序代码 第一次 以前总是看别人写的博客,通过别人的博客解决了我很多问题,从中也学到了各种知识,虽然不是很系 ...

最新文章

  1. 6G+128G的华为新机真香,自费送一台!
  2. 矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence
  3. 使用cpau.exe让不是管理员的用户也有权限运行哪些需要管理员权限的软件。
  4. 每日程序C语言40-不带头结点的尾插法创建链表
  5. 文件给制实施规定的实例(GB8567-88)
  6. Oracle Internal Event:10200 Consistent Read诊断事件
  7. ansible的错误
  8. vscode debug c++与opencv程序
  9. cts(6)---Android8.1(O1)CTS失败项
  10. 账号管理工具_新媒体账号管理工具,自媒体运营神器,管理多个账号很简单
  11. [转载] python indices_Python numpy.indices() 使用实例
  12. 学计算机的博士男朋友,有个计算机博士男朋友的日常?
  13. No matching configuration of project :libusb was found.
  14. 麻瓜python视频教程_麻瓜编程Python Web基础视频教程
  15. 收藏:常见物联网通信技术概览
  16. 认知-认知水平:认知水平
  17. linux服务篇-Squid服务
  18. 淘宝APP用户行为分析
  19. SitePoint播客#43:被动共享
  20. 蓝牙beacon入门教程

热门文章

  1. java横线_java 字体 加横线
  2. markDown简单使用说明
  3. 小学计算机兴趣小组计划书,小学科技兴趣小组活动计划书
  4. day64 url用法以及django的路由系统
  5. 【DockerCE】Docker-CE 20.10.13正式版发布
  6. python镜像安装re模块_Python模块之re模块
  7. 不能学习vlan的解决
  8. 未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?)解决
  9. Amazon ParallelCluster 3 集成 ANSYS CFD 计算
  10. PV-1033/PV-1233/EVP-M33插装式压力补偿流量阀比例放大器