51单片机学习0x2
0x2
LED点阵屏
LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已
LED点阵屏与数码管一样,有
共阴
和共阳
两种接法,不同的接法对应的电路结构不同LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示
LED点阵屏分类
按颜色:单色、双色(可显示三种颜色)、全彩
按像素:8-8、16-16等
74HC595
- 74HC595是串行输入并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于IO口扩展。
相当于一把手枪,SER填入子弹,SERCLK控制子弹装填(移位),多余的子弹从QH'
口溢出,RCLK清空弹夹。同时,还可以将多个74HC595
串联,拓展IO口。
要注意J24模块GND端,用文字取模软件生成代码
1 | \* main.c *\ |
DS1302实时时钟
- DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能
- RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片
DS1302 涓流充电计时芯片包含一个实时时钟/日历和 31 字节的静态 RAM.通过简单的串行通信。
与时钟/RAM 通讯只需要三根线: CE, I/O (数据线), and SCLK (串行时钟). 数据输出输入时钟/RAM 一次1字节或者在脉冲串中多达 31 字节.
- I/O口电平由命令字和数据组成
- CE:操作使能
- 根据第一位判断是写入还是读出
- SCLK:上升沿,I/O口电平被写入。下降沿,DS1302输出数据。
- 读比写少一个周期
- 输出为
BCD码
,每相邻数字只有一位不同- DEC=BCD/1610+BCD%16; (2位BCD)
- BCD=DEC/1016+DEC%10; (2位BCD)
从这开始就不写全部代码了(懒的敲yes!),主要写写思路:
通过定义一个数组来存储时间,修改时间也是通过修改时间数组来实现。通过Timeshow()
来更新时间数组,通过TimeSet()
来设置时间。通过DS1302_SetTime()
将时间数组的更新写入时钟。
1 | //通过按键设置mode值,然后就调用对应函数 |
蜂鸣器
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Randolfluo's blog!