单片机小白学习之路(十)---点阵

发布者:asa1670最新更新时间:2020-03-29 来源: eefocus关键字:单片机  点阵  循环显示 手机看文章 扫描二维码
随时随地手机看文章

目标:用点阵点亮一个灯

1. 8x8LED点阵简介

LED点阵是由发光二极管排列组成的显示器件,在我们日常生活的电器中随处可见,被广泛应用于汽车报站器,广告屏等。

13367077-1569c212aab1de6f.png

8x8点阵

13367077-6f2c85a0bdafcd55.png

生活中利用


2. 内部结构

13367077-afe23c57c7c71bb8.png

内部结构

有点数码管,矩阵按键的影子,有两种接法,都一样其实,我们是左边的那个接法。
控制和矩阵按键差不多,行为一组,列为一组。左边的列是由74HC595芯片控制的,
上面的行是P0端口控制的

13367077-58891fb058fde494.png

点阵模块电路


看看我们这个芯片的说明书:

13367077-8fcd5f541845c659.png

引脚说明


这个芯片是8 位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。

模块电路里的符号是自己可改的, 我们看引脚就知道了,
  • 模块电路中D0~D7是并行数据输出。

  • 9脚是串行的输出。

  • 10脚(/SRCLR)是主复位低电平有效,既然是低电平有效,我们不能让它一直复位 不然没法工作了,所以接电源,上升沿有效

  • 11脚(SRCLK)是移位寄存器 时钟输入端,就是把并行口SER传入的数据按规律送到输出端,上升沿有效

  • 12脚(RCLK)存储寄存器时钟输入,就是把输出端存的数据给输出出去到外界,上升沿有效

  • 13脚(/OE)输出有效(低电平),意思是是低电平时才会允许输出,不然芯片不工作了,上面的短接片我们在单片机上把OE与GND接在一起

  • 14脚(SER)就 是串行输入端了


下面就是该怎么写代码了 ,注意上面内部结构图中标注了,高低位的所在位置

3.代码

#include

#include   //提供和_nop_,他也提供左右移动函数

 

typedef unsigned int u16;

typedef unsigned char u8;

 

sbit SRCLK = P3^6;//一个上升沿把SER端的一个数据弄到输出端

sbit RCLK = P3^5; //如果是一个上升沿则准许输出端的数据输出点阵

sbit SER = P3^4; //串行输入端,输入数据

 

void HC595SendByte(u8 dat)

{

    u8 a;

    SRCLK = 0;

    RCLK = 0;

    for(a=0;a<8;a++){

        SER = dat>>7; //数据dat向右移7位,最高位变最低位

        dat<<=1; //dat数据自己左移一位相当于把第二位变第一位

        //为下一次做准备

        SRCLK = 1;

        _nop_(); //一个机器周期,相当于1us

        _nop_();    

        SRCLK = 0;//为下次做准备

    }

    RCLK = 1;//把输出端所有数据给点阵

    _nop_();

    _nop_();

    RCLK = 0;

}

 

void main()

{

    while(1){

        HC595SendByte(0x80);

        P0 = 0x7f;

    }

}


SER输入数据dat是0x80(1000 0000),P0是(0111 1111),再对比内部机构的高低位所在位置是不是左上角那个灯导通了?


还要注意一下我们这个芯片移位的规则,它的规则是先移最高位的数字,但又从最低位那取,感觉有点蛋疼,但就这样没办法.


所以for循环里dat右移7位把最高位变最低,给了SER(串行输入端),下面那个意思dat不是已经完成最高位输出了吗,那就不再考虑它了,直接左移一位,把最高位挤走,次高位变最高位赋值给dat


SRCLK输入1,与前面输入的0构成上升沿于是数据移走


RCLK在for循环外,因为它想等串行输入端所有数据全部移到输出端再启动,它来一个上升沿,于是塞满的输出端得到释放(输出)

关键字:单片机  点阵  循环显示 引用地址:单片机小白学习之路(十)---点阵

上一篇:单片机小白学习之路(十二)---直流电机的控制
下一篇:单片机小白学习之路(九)---矩阵按键在数码管上显示数字

推荐阅读最新更新时间:2024-11-17 06:03

51单片机RAM 数据存储区学习笔记
1.RAM keil C语言编程 RAM是程序运行中存放随机变量的数据空间。在keil中编写程序,如果当前模式为small模式,如果总的变量大小未超过128B,则未初始化的变量的初值默认为0.如果所有的变量超过单片机small模式下的128B大小,则必须对变量进行初始化,否则超过RAM大小变量的值是不确定的,在small模式下超过128B大小的变量也必须在编译器中重新设定存储器的存储模式。 在keil中,可选择small,compact,large三种方式存储数据变量: 在keil中可以用“TargetOptions”来配置这一项: 图1 选择数据存储模式 2.片内数据存储区 (1) 工作寄存器区 工作寄存
[单片机]
51<font color='red'>单片机</font>RAM 数据存储区学习笔记
新塘N76E003单片机在Keil中下载程序以及下载引脚复用
1.安装好下载器相关的其他驱动,就是用下载工具可以下载。 2.打开 Keil ,插上下载器,这时会提示升级固件,一路同意就好,最后还需要拔下再插上,然后在 Keil中选择: 3.点击“Settings”,如下图设置: 4.设置好之后就可以直接在 Keil 中下载程序了。 最后是关于两个下载引脚复用的问题: 在下载设置中这样选择,下载完成后,断电重新上电就可以当作正常IO使用了,程序中不用书写代码设置。
[单片机]
新塘N76E003<font color='red'>单片机</font>在Keil中下载程序以及下载引脚复用
基于单片机ATmega16的无线温度监测系统
摘要:利用AVR系列的ATmega16单片机、无线收发模块nRF24L01、数字温度传感器DS18B20和LCD1602液晶显示器设计了无线温度监测系统。该系统通过配置ATmega16单片机,采集DS18B20转换的温度量,将温度信息显示在LCD1602液晶显示器上,同时通过无线收发模块将温度信息传送到管理终端进行显示和处理。系统同时保证当被测温度不在合理范围时发出声音报警信号。 关键词:单片机;ATmega16;DS18B20;无线温度监测;nRF24L01 0 引言 随着社会的发展和进步,越来越多的场合对温度的要求日臻严格,温度监控系统的应用日趋受到重视。在农业发展领域,农业大棚、冷库、培育温室等众多场合都需要温度测量技
[工业控制]
基于<font color='red'>单片机</font>ATmega16的无线温度监测系统
中国IoT需求可期 MCU/MPU整合方案后市看好
物联网(IoT)应用持续拓展增加了微控制器(MCU)的使用需求,恩智浦(NXP)半导体自2017年起与谷歌(Google)、亚马逊(Amazon)合作,提供客户软硬整合解决方案。 在未来,恩智浦除了将持续与欧美的第三方合作之外,同时也计划将同样合作模式复制到中国市场。 恩智浦半导体大中华区微处理器(MPU)及微控制器产品营销经理黄健洲表示,除了在欧美市场与Google、Amazon的合作之外,也将以相同合作模式出发,在中国市场复制同样的解决方案, 并且已在2017年底与阿里巴巴集团旗下阿里云Link签署合作备忘录,正式成为策略合作伙伴。 根据《2015–2016年中国物联网发展年度报告》显示,在2020年全球物联网装置可达
[单片机]
51单片机是什么?
51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。 当前常用的51系列单片机主要产品有: *Intel的:80C31、80C51、87C51,80C32、80C52、87C52等; *ATMEL
[单片机]
单片机实现简单音乐发生器
/* 主程序 */ void main() { uchar key,k; TMOD = 0x01; // T0,工作方式1 ET0 = 1; EA = 1; while(1) { P1 = 0xf0; // 发全0行扫描码 if ((P1&0xf0)!=0xf0) // 若有键按下 { delay(); // 延时去抖动
[单片机]
访问单片机各部分使用的寻址方式
1.访问片内RAM低128字节使用哪些寻址方式?访问片内RAM高128字节使用什么寻址方式?访问SFR使用什么寻址方式? 答: 访问片内RAM低128字节使用直接寻址,寄存器间接寻址,位寻址;访问片内RAM高128字节使用寄存器间接寻址;访问SFR使用直接寻址,位寻址。 2.访问片外RAM使用什么寻址方式? 答: 访问片外RAM使用寄存器间接寻址 3.访问程序存储器使用什么寻址方式?指令跳转使用什么寻址方式? 答: 访问程序存储器使用指令绝对寻址,指令相对寻址。指令跳转使用指令绝对寻址,指令相对寻址。 script src="/js/ti_keywords.js" /script
[单片机]
计算机近距离无线数据采集系统设计
  引言   针对某医疗装置中的人体生理信号采集和传输问题,本文设计了计算机近距离无线数据采集系统。采用 Nodic公司的nRF2401作为无线收发核心器件。系统由一台PC、无线数据接收模块和无线数据采集发射模块组成。无线数据发射模块以C8051F021单片机为处理核心,采用单片机内部的12位ADC对现场的模拟信号进行采集和发送;无线数据接收模块以C8051F021单片机作为处理核心,接收与发射模块由nRF2401无线收发芯片完成,采用MAX5591实现12位D/A转换,采用 RS-485总线与PC进行通信,它负责现场数据的接收和初步处理,并转发给PC以供显示和监控,同时将数字量转换为模拟量,供示波器显示;PC有良好的人机界面,利
[测试测量]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved