stm32_note_09day

stm32_note_09day

===========================
2022-8-25
===========================

一.温故知新

    1.根据分析的DHT11的读写时序来写DHT11传感器的驱动
    2.分析DS18B20传感器的内容
        1)三管脚的封装形式(VCC DQ GND)
        2)一线传输(以串行的方式传输数据)<半双工的工作模式>
        3)工作电压范围	3.0V - 5.5V
        4)测量范围	-55℃ - +125℃
        5)误差范围(在-10℃ - 85℃)会有±0.5℃的误差
        6)可以采集到整数的数据和小数的数据
        7)在DS18B20的内部会有9个字节的暂存器
        第0个字节		温度的低字节数据
        第1个字节		温度的高字节数据
            高字节的高5位是符号位
            存储的是温度的补码数据
        第2个字节		温度的上限
        第3个字节		温度的下限
        第4个字节		配置
            是用来配置DS18B20采集温度所占位数
            0 R1 R0 1 1 1 1 1
            00	9bit的温度数据
            01	10bit的温度数据
            10	11bit的温度数据
            11	12bit的温度数据
        第5 6 7字节	保留
        第8个字节		检验
        8)在DS18B20传感器中支持很多的指令
        9)DS18B20官方手册给了发送指令的案例
        A)分析DS18B20的读写时序

二.数码管

    我们的开发板上使用的四位共阴极的数码管
    1.显示类的设备
    市面上的显示类型的设备有很多种
    LCD、OLED、数码管、段码屏、点阵屏、光立方...
    2.数码管
    数码管可以分为七段数码管和八段数码管
    八段数码管要比七段数码管多一个用于显示小数的小数点
    数码管中的每一个段就相当于是一个LED灯
    3.共阴极数码管和共阳极数码管
    共阴极数码管 : 数码管上所有的LED灯的阴极都连接到了一起,接地
    共阳极数码管 : 数码管上所有的LED灯的阳极都连接到了一起,接电源
    共阴极数码管的编码和共阳极数码管的编码正好相反
    共阳极数码管的编码 :
    uchar code table[]={0xc0,0xf9,0xa4,0xb0,//0 1 2 3
            0x99,0x92,0x82,0xf8,//4 5 6 7
            0x80,0x90,0x88,0x83,//8 9 A B
            0xc6,0xa1,0x86,0x8e};//C D E F
    共阴极数码管的编码 :
    uchar code table[]={0x3f,0x06,0x5b,0x4f,//0 1 2 3
            0x66,0x6d,0x7d,0x07,//4 5 6 7
            0x7f,0x6f,0x77,0x7c,//8 9 A B
            0x39,0x5e,0x79,0x71};//C D E F
    如何获取数码管的编码
    1)可以百度查找
    2)可以通过转换软件直接转换
    4.四位数码管
    四位数码管可以分别显示千位 百位 十位 个位
    已知一个数码管有8个LED灯需要8个数据段
    四位数码管有32个LED灯需要32个数据段
    如果直接连接到芯片的管脚上需要消耗芯片的32个管脚
    这样的方式对于芯片的管脚来说太浪费了
    5.四位数码管的问题

原理图
resources/7_原理图.png

        1)芯片管脚的浪费
        把所有数码管的A段都连接到一起
        把所有数码管的B段都连接到一起
        ...
        把所有数码管的DP段都连接到一起
        2)相同数据段都连接到了一起
        给四位数码管一个数据编码,这4个数码管会显示相同的数据
        3)把四位数码管的4个公共端也都连接到GPIO的管脚上
        将来想要让某个数码管显示数据,就让给数码管的公共端输出低电平
        其他数码管输出高电平
        4)经过2) 3)的处理产生了一个问题,
            四位数码管不能同时显示不同的数据
        利用人眼睛的视觉暂留
    6.分析开发板原理图
        开发板上的四位共阴极的数码管
        公共端连接到了74HC138模块上
        数据段连接到了74HC595模块上
        如果想要驱动数码管,首先需要驱动74HC138和74HC595
    7.分析74HC138

74HC138
resources/5_74HC138.png

        74HC138是一个典型的三八译码器(是作为一个选择器来使用的)
        三个输入,八个输出(给一定的输入就会用相应的输出)
    打开<STM32RBT6\DataSheet\其他>目录下<74HC138.pdf>
        P3	封装形式(了解管脚功能)
        P4	真值表
        查看开发板原理图
        
    8.

74HC595
resources/6_74HC595.png

        74HC595是一个可以把串行数据转换成并行数据的模块
    打开<STM32RBT6\DataSheet\其他>目录下<74HC595.pdf>
        P4	封装形式(了解管脚功能)
        P5	工作原理分析
        
    9.根据开发板原理图把需要操作的管脚找到
    HC138_A0	PC11	74HC138中的控制	推挽输出
    HC138_A1	PC12	74HC138中的控制	推挽输出
    HC138_A2	PD2	74HC138中的控制	推挽输出
    HC595_SCLK	PB5	移位寄存器的时钟	推挽输出
    HC595_LCLK	PB4	存储寄存器的时钟	推挽输出
    HC595_DATA	PB3	把串行数据存储到	推挽输出
                移位寄存器中

==============================
任务
1.把9527显示到数码管上
2.把DHT11采集的温湿度的数据显示到数码管上
==============================
作业
1.把今天讲过的内容完整的复习一遍
2.把开发板作为记秒表的设备
    KEY0	开始记秒表
    KEY1	暂停
    KEY2	清零
    00.00
    秒数.
==============================