0x2

LED点阵屏

  • LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已

  • LED点阵屏与数码管一样,有共阴共阳两种接法,不同的接法对应的电路结构不同

  • LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示

LED点阵屏分类

  • 按颜色:单色、双色(可显示三种颜色)、全彩

  • 按像素:8-8、16-16等

image-20240225202929383

74HC595

  • 74HC595是串行输入并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于IO口扩展。

image-20240225212322481

相当于一把手枪,SER填入子弹,SERCLK控制子弹装填(移位),多余的子弹从QH'口溢出,RCLK清空弹夹。同时,还可以将多个74HC595串联,拓展IO口。

要注意J24模块GND端,用文字取模软件生成代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
\*							main.c							*\
#include <REGX52.H>
#include "Delay.h"
#include "MatrixLED.h"
unsigned char code Animation[]= //动画数组 code关键词表示将此数组存储在flash中
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFE,0x90,0x98,0x64,0x02,0x00,0x02,
0x0C,0x30,0xD0,0x30,0x0C,0x02,0x00,0xFE,
0x80,0x70,0x1C,0x02,0xFE,0x00,0xFE,0x82,
0x82,0x44,0x38,0x00,0x7C,0x82,0x82,0x82,
0x7C,0x00,0xFE,0x02,0x02,0x02,0x00,0xFE,
0x90,0x90,0x80,0x00,0xFE,0x02,0x02,0x02,
0x00,0xFC,0x02,0x02,0x02,0xFC,0x00,0x7C,
0x82,0x82,0x82,0x7C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

void main()
{
unsigned char i=0,Offset = 0 ,Count = 0;
MatrixLED_Init(); //初始化

while(1)
{
for (i = 0; i<8; i++)
MatrixLED_ShowColumn(i,Animation[i+Offset]);
Count++;
//Delay(100);不用Delay因为显示一次图像要逐列执行八次MatrixLED_ShowColumn,LED产生闪烁
if(Count>10)
{
Count = 0;
Offset++;
if(Offset>72) //避免数组越界
Offset = 0;
}
}
}
\* main.c *\




\* MatrixLED.c *\
#include <REGX52.H>
#include "Delay.h"


sbit RCK = P3^5 ; //RCLK,取P3第5位
sbit SCK = P3^6; //SRCLK,取P3第6位
sbit SER = P3^4 ; //SER,取P3第4位


#define MATRIX_LED_PORT P0 //LED显示寄存器

void _74HC595_WriteByte(unsigned char Byte)
{
unsigned char i;
for(i=0;i<8;i++)
{
SER=Byte&(0x80>>i); //从高位向低位写入
SCK=1; //上升延移位
SCK=0; //软件复位
}
RCK=1; //锁存
RCK=0; //软件复位
}

void MatrixLED_ShowColumn(unsigned char Column,Data)
{
_74HC595_WriteByte(Data); // 写入并锁存
MATRIX_LED_PORT=~(0x80>>Column); // 选择列写入
Delay(1);
MATRIX_LED_PORT=0xFF;
}

void MatrixLED_Init() //初始化
{
SCK=0;
RCK=0;
}
\* MatrixLED.c *\

DS1302实时时钟

  • DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能
  • RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片

image-20240227185909359

image-20240227192928469

  • DS1302 涓流充电计时芯片包含一个实时时钟/日历和 31 字节的静态 RAM.通过简单的串行通信。

  • 与时钟/RAM 通讯只需要三根线: CE, I/O (数据线), and SCLK (串行时钟). 数据输出输入时钟/RAM 一次1字节或者在脉冲串中多达 31 字节.

image-20240227195752523

image-20240227200002026

  • I/O口电平由命令字和数据组成
  • CE:操作使能
  • SCLK:上升沿,I/O口电平被写入。下降沿,DS1302输出数据。

蜂鸣器