AutoLeaders控制组——51单片机学习笔记(LED点阵屏、DS1302时钟芯片)

本文详细介绍了单片机控制LED点阵屏显示原理与实现实时时钟的方法。涵盖LED点阵屏的连接原理、显示图形动画的技术细节,以及使用DS1302芯片实现精确时钟的功能。适合初学者和有一定基础的电子爱好者学习。

本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整。

以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅)

一些内容涉及前面的知识点,可能需要提前了解(可以翻看本人之前的文章或者去B站看UP主的视频)

目录

9-1、LED点阵屏

LED点阵屏介绍

LED点阵屏分类

LED点阵屏显示原理

8×8LED连接原理图

74HC595运行原理

原理图介绍

运行机制解释

步骤解释:

补充:

①能否LED点阵屏两端都直接连接I/O口

②为什么当点阵屏多个灯亮时,灯比较昏暗

9-2、LED点阵屏显示图形&动画

代码一

写入代码

Ⅰ、新建工程及main.c文件

补充:C51的sfr、sbit

Ⅱ、编写74HC595运行函数

Ⅲ、将对应寄存器初始化

Ⅳ、添加已有的模块化文件

Ⅴ、写入LED点阵屏显示一列的代码函数

Ⅵ、编写主函数代码

Ⅶ、烧录程序

代码二

写入代码:

Ⅰ、将上面的目录复制一份,重命名后打开。

Ⅱ、模块化LED点阵屏显示的相关函数

补充:获得对应图案的每列十六进制方法

 Ⅲ、编写数组,存储流动字幕的每一列十六进制数

Ⅳ、编写主函数

Ⅴ、烧录程序

代码三

写入代码

Ⅰ、将代码二的文件复制一份,重命名

Ⅱ、更改存储数据的数组

Ⅲ、更改主函数中帧数更改的部分

Ⅳ、烧录程序

补充:code关键字

10-1、DS1302实时时钟

DS1302介绍

简介:

补充:

作用:(与之前定时器制作时钟对比)

应用电路

DS1302芯片内部结构

 时钟运行部分

访问部分

寄存器部分

操作步骤:

一、首先设置模式(这里设置为写入)

二、接着选择寄存器类型,按照地址设置

三、选择操作对象(这里为CK,即clock)

四、写入第7位

五、读取或写入设置的寄存器数据

六、回归初始状态

10-2、DS1302时钟&可调时钟

代码一

Ⅰ、新建工程并创建main.c文件

Ⅱ、添加存在的已模块化的文件

Ⅲ、建立DS1302的模块化代码文件

Ⅳ、测试前面写入的代码是否有效

补充:BCD码

补充:DS1302寄存器一些位的作用

Ⅴ、设置存储初始时间的数组

Ⅵ、设置写入时间的函数

Ⅶ、设置读取时间的函数

Ⅷ、将新加的内容的声明添加进DS1302.h文件中

Ⅸ、在主函数中添加液晶屏的时间显示

Ⅹ、将程序烧录进单片机,即可看到预期效果

代码二

Ⅰ、将上面的代码文件复制一份,并重命名

Ⅱ、将需要的已经模块化的代码添加进工程目录下

Ⅲ、将显示时间的液晶屏函数代码单独移出成为一个函数

Ⅳ、添加时间设置函数

Ⅴ、设置中断函数实现进入设置时,设置数字闪烁效果

Ⅵ、编辑主函数部分

Ⅶ、将程序烧录进单片机

 Ps:

尝试:


9-1、LED点阵屏

LED点阵屏介绍

LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等

LED点阵屏分类

按颜色:

单色

 双色

 

全彩

 按像素:8*8、16*16等(大规模的LED点阵通常由很多个小点阵拼接而成)。

—— 一般设置为8的倍数。

LED点阵屏显示原理

解释内容

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

LED点阵屏示意图:

 一位数码管:

 

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

LED点阵屏原理图(共阳接法):

 

双色LED点阵屏原理图(共阳接法):

 当为单色LED点阵屏时,共阴接法与共阳解法区别不大(可以通过扫描转换效果);为多色LED点阵屏时,能明显体会到区别(如上图)。

Ps:

(1)共阴接法只需要将LED倒过来,更改连接的相关线即可。

(2)引脚排序为乱序排序(实物接线就近原则),因此需要对比自己单片机的原理图,避免出错。

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

Ps:扫描概念类通于矩阵键盘扫描,利用视觉暂留效果。

8×8LED连接原理图

 

 

由上图可知,LED点阵屏一侧由P0_0~P0_7的位寄存器(I/O口)控制,另一侧一侧由DPa~DPh控制,而对应的另一侧连接到74HC595中。

由图可见,74HC595可以通过P3_4~P3_6三根线控制右边八根线,由此能极大减少I/O口占用,节省I/O口。

74HC595运行原理

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

板子上的74HC595

 

原理图介绍

 

右侧QA~QH为八位并行的输出端。

OE(Output Enable)为输出使能,当OE接了低电平,右侧才能输出。

(上面有一横线代表低电平有效,或下降沿有效)

RCLK(register clock)为寄存器时钟。

SRCLR(serial clear)为串行清零端,低电平时会将芯片里面数据进行清空(因此这里接VCC)。

SRCLK(serial clock)为串行时钟。

SER(serial)为串行数据。

QH用于多片级联。

在这里使用P34~P36这三个引脚控制右边八位的输出。

运行机制解释

 

①当串行输出时,数据在时钟的激励下一个一个从SER的线输出;

②当并行输出时,数据直接从最右侧八个引脚同时输出外面。

步骤解释:

①写入第一个数据。

首先给SER写入数值。(假设为1)

接着将SERCLK接入高电平(上升沿),此时1会被读取进移位寄存器最上面的位置。

 

然后将SERCLK清零,回到默认状态(低电平)。

——单片机I/O口默认状态为高电平,因此最开始需要先设置成低电平。

②写入第二个数据。

首先给SER写入设置。(假设为0)

接着将SERCLK接入高电平(上升沿),此时0会被读取进移位寄存器最上面的位置,而最开始的1会向下移动一位。

 

然后将SERCLK清零,回到默认状态(低电平)。

③写入接下来的数据。

重复步骤②的原理,最终写完8个位置。

 

④将左边数据移入右边。

将RCLK接入高电平(一开始的I/O口为高电平,因此最开始要初始化为低电平),然后左边数据就会同一时刻被搬入右边(相当于大门被打开),并同时在右侧的输出口输出数据。

 

补充:多片级联的运行原理

多片级联即在QH’后再相连了与之前一样的一片运行电路。

两片级联:

 

当第一片的移位写满之后,就会移位到QH’内(即下一片的SER),于是再写入的值,最下面的会被推入第二片区域里面,以此类推,最终将第二片填满。(两片的SERCLK是连接在同一个I/O口上的)

当填满后,即可将RCLK接入高电平,将数据一次性输出。(两片的RCLK也是连接在一个I/O口上的)

其他的多片级联

原理跟两片级联相同,只是在QH’后加入其他的74HC595芯片进行级联,数量增多了。

作用:

通过这种方式,能将I/O口扩展(节省I/O口)——3个I/O口控制多位,但是由于是一位位推入,因此运行时间将会较缓慢。

补充:

①能否LED点阵屏两端都直接连接I/O口

 

即使想将连接的部分都替换为I/O口直接控制,也不可行。

因为单片机的工作模式为弱上拉模式,输出的高电平信号弱,因此会使得LED亮度低,甚至不工作。

所以需要利用74HC595使得输出高电平能力增强。

或者加入一个三极管开关,使得接入高电平时,开关导通,一头的VCC直接接入LED的正极一侧。

截自视频:

 

导通:

 

如上图所示,当给高电平时,VCC直接导通到LED部分,使得LED能正常运行。

②为什么当点阵屏多个灯亮时,灯比较昏暗

因为74HC595芯片为恒压输出,当连接的灯增多时,会使得电流变小,灯亮度变暗。

9-2、LED点阵屏显示图形&动画

代码一

实现效果:在LED点阵屏上显示一个图案(这里以笑脸为例)。

写入代码

Ⅰ、新建工程及main.c文件

方法如之前一样。

补充:C51的sfr、sbit

sfr(special function register):特殊功能寄存器声明

例:sfr P0 = 0x80;

声明P0口寄存器,物理地址为0x80

sbit(special bit):特殊位声明

例:sbit P0_1 = 0x81;    或    sbit P0_1 = P0^1;

声明P0寄存器的第1位

可位寻址/不可位寻址:

在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有8位,所以位的数量是寄存器数量的8倍,单片机无法对所有位进行编码,故每8个寄存器中,只有一个是可以位寻址的。

对不可位寻址的寄存器,若要只操作其中一位而不影响其它位时,可用“&=”、“|=”、“^=”的方法进行位操作。

具体可联系定时器的部分。

在REGX52.H文件中,能看到对应的单片机位声明。

寄存器声明:

 

位声明:

 

由上面可知,将对应的地址(后面的十六进制数)赋值给P0_0口,使得P0_0代表单片机相应部分地址。——所以可以更改对应的名字,只要地址相同,作用就相同。

 

(这里是在主函数文件操作的,因此使用的是P3^5之类,其代表的就是对应地址数字)

Ⅱ、编写74HC595运行函数

 

解释SER=Byte&(0x80>>i):

利用&运算符中有0为0,全1为1的的规则,使得直接取出Byte(十六进制数,转化为二进制进行运算)的二进制中一个位数;

然后通过移位符>>,实现取出对应的位数;

最后利用单位数变量非0即1的规则,给SER赋值,实现提取对应二进制位进行赋值。

 

Ⅲ、将对应寄存器初始化

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值