【STC8A8K64D4开发板】第3-9讲:手势识别(基于PAJ7620U2) 学习目的了解IK-PAJ7620U2手势识别传感器模块的功能。掌握IK-PAJ7620U2的I2C协议、操作流程,并编程实现配置IK-PAJ7620U2工作于接近检测和手势识别模式以及读取检测结果。
【STC8A8K64D4开发板】第3-8讲:超声波测距(基于HC-SR04) 一个用作发射器,当接收到“Trig”引脚的触发信号后对外发射40 KHz超声波脉冲,另外一个用作接收器,监听到发射器发射的脉冲后,“Echo”引脚将产生一个输出脉冲,该脉冲宽度为超声波发出到接收的时间,由此可确定脉冲传播的距离。Timer0用于测试回响信号高电平持续时间,这里我们需要计算一下,以确保Timer0的最大溢出时间大于回响信号高电平持续时间,这样,我们每次测量时,就可以让Timer0从0开始计数,测量完成后读出Timer0的计数值即可计算出时间,同时,还可以利用定时器的溢出中断判断测量是否超时。
【STC8A8K64D4开发板】第3-7讲:声音探测传感器 1.学习目的1.了解声音探测传感器模块的作用。2.掌握单片机编程读取声音探测传感器模块引脚输出状态,从而判断周围环境声音强度有没有达到设置的阈值。
【STC8A8K64D4开发板】第3-3讲:LCD1602液晶显示模块的应用 1.学习目的1.了解LCD1602显示模块涉及到的3种存储器:CGROM、CGRAM和DDRAM。2.掌握LCD1602显示模块的显示原理:DDRAM和字符显示区域是如何对应的,写DDRAM时写入的数据和显示的字符如何关联起来的。3.根据LCD1602显示模块的读写时序和指令集,编写LCD1602显示模块的驱动程序。
【STC8A8K64D4开发板】第3-2讲:温湿度传感器DHT11 学习目的了解DHT11数字温湿度传感器的基本原理及其数据格式。掌握STC8A8K64D4与DHT11单总线通信的程序设计,通信步骤,数据校验等。
【STC8A8K64D4开发板】第3-1讲:温度传感器DS18B20 1.学习目的1.了解DS18B20数字温度传感器的基本原理及其数据格式。2.掌握STC8A8K64D4与DS18B20单总线通信的程序设计,通信步骤,数据校验等。
【STC8A8K64D4开发板】第2-19讲:4×4矩阵按键识别 单片机设计中,按键作为一种常用的人机接口被广泛应用,在家用、娱乐、工控等设备上都可以见到按键的应用。我们最常用的两种按键接入方式是独立按键和矩阵按键。
【STC8A8K64D4开发板】第2-18讲:直接存储器访问(DMA) DMA全称是Direct Memory Access,即直接存储器访问。DMA的作用是从一个地址空间在无需CPU干预的情况下将数据“搬运”到另一个地址空间,由此实现外设和存储器之间或者存储器和存储器之间的高速数据传输。
【STC8A8K64D4开发板】第2-17讲:PCA实现数模转换(DAC) DAC (全称是Digital to Analog Convertor)数模转换器是一种将数字信号转换为模拟信号(以电流、电压或)的设备或电路。在很多数字系统中(例如计算机、单片机),信号以数字方式(0或者1)存储和传输,而数模转换器DAC可以将这样的信号转换为模拟信号,从而使得他们能够被外界(人或其他非数字系统)识别。数模转换器DAC的常见用法是在音乐播放器中将数字形式存储的音频信号输出为模拟的声音。
【STC8A8K64D4开发板】第2-16讲:可编程计数器阵列PCA PCA全称是可编程计数器阵列(Programable Counter Array),其中P表示可以编程控制、C表示计数器、A表示阵列,即有多路通道。他和我们前面学习的定时/计数器类似,对于初学者,可以把他理解为一个功能更加强大的定时/计数器。
【STC8A8K64D4开发板】第2-15讲:脉宽调制PWM 另外, PWM 波形发生器为每路 PWM 又设计了两个用于控制波形翻转的计数器 T1/T2,可以非常灵活的控制每路 PWM 的高低电平宽度,从而达到对 PWM 的占空比以及 PWM 的输出延迟进行控制的目的。可设定 1~32767 之间的任意值作为 PWM 的周期,PWM 波形发生器内部的计数器从 0 开始计数,每个 PWM 时钟周期递增 1,当内部计数器的计数值达到[PWMCH,PWMCL]所设定的 PWM 周期时,PWM 波形发生器内部的计数器将会从 0 重新开始开始计数。即输出一定占空比的波形。
【STC8A8K64D4开发板】第2-14讲:I2C总线的应用 I2C数据传输如下图所示,在起始条件(S)后,发送从机地址,从机地址是7位,从机地址后紧跟着的第8位是读写位(R/W),读写位为0表示写,读写位为1表示读。按页写时如果地址跨页,会出现如下图所示的情形:我们期望从地址0x04开始连续写入“A B C D E F”6个数据,但是实际写时,因为写地址增加到0x07后自动复位到0x00,所以实际写入的地址0x04~0x07写入“A B C D”4个数据,地址0x00和0x01写入“E”和“ F”2个数据。如下图所示,按页写时如果地址没有超过当前页面,写入正确。
【STC8A8K64D4开发板】第2-13讲:SPI总线的应用 SPI的4种模式中,最常用的是模式0和模式3。正是由于SPI有4种通信模式,因此当我们使用SPI总线时,需要去查询SPI总线中主机设备(如STC8A8K64D4)和从机设备(如SPI Flash)的数据手册,确定他们支持什么模式,从而选择适合的通信模式。因为Flash的编程原理都是只能将各个bit由1写为 0,而不能将0写为1,因此在Flash编程之前,为了保证写入的正确性,必须将对应的扇区擦除,擦除操作会将该扇区的内容全部恢复为0xFF,这样执行写入操作就可以正确执行了。
【STC8A8K64D4开发板】第2-12讲:数码管显示 这里,定义一个变量“ledseg_nod”用于记录数码管的位,每次刷新后“ledseg_nod”加1,到达8时,表示8位数码管全部刷新,“ledseg_nod”的值设置为0,开始新一轮刷新。开发板上使用的是8段数码管。位选是选择待操作的数码管,如开发板上的是8位数码管,位选就是选择8位数码管中的某一个。数码管驱动程序原理如下图所示,定义一个数组,该数组共有8个元素,分别用于保存8位数码管的段码,即数组中第1个元素用于保存8位数码管中第1位数码管的段码,第2个元素用于保存第2位数码管的段码,以此类推。
【STC8A8K64D4开发板】第2-11讲:模数转换ADC 但是在实际应用时,我们经常会用到多个ADC通道采样电压值,这时,我们可以使用轮询的方式对各个ADC通道进行采样,具体的实现流程如下图所示,即对当前ADC通道采样完成后,切换到下一个ADC通道,之后启动ADC转换并在转换完成后读取采样结果,如此轮询对使用的各个ADC通道采样,从而实现ADC多通道采样。主函数中调用ADC初始化完成ADC的初始化,之后在主循环中每500ms启动一次ADC转换,启动后一直查询ADC 转换结束标志位ADC_FLAG的值,直到ADC_FLAG置位,即ADC转换完成。
【STC8A8K64D4开发板】第2-10讲:定时器/计数器 定时器和计数器实际都是通过计数器来计数,定时器是对周期不变的脉冲计数(一般来自于系统时钟),由计数的个数和脉冲的周期即可计算出时间,同时,通过一个给定的预期值(即比较值,对应预期的计数值,也就是预期时间),当计数值达到预期值时产生中断,这样就实现了定时,应用程序通过设置不同的预期值实现不同时长的定时。Timer配置为计数器之后,对应的引脚会连接到计数器,因此需要配置引脚的上拉电阻(如果没有外部上拉),之后设置计数寄存器的初值并根据需要开启中断,配置完成后,启动计数器即可。