蓝桥杯嵌入式国赛扩展板 CT117E-EX 学习笔记

CT117E-EX 扩展板笔记


数码管(74HC595)

博主参加国赛有点皮,准备的不够就参赛了,结果国赛没敲出来数码管实在有点可惜。望看到本文的朋友在准备国赛一定要把这个功能做到盲打出来,第十届国赛没提供数码管的驱动。

RCLK(R:存储寄存器读取)

  • 上升沿 移位寄存器进入存储寄存器
  • 下降沿 数据保持不变

SCK(S:送入595)

  • 上升沿 数据寄存器数据移位。Q0–>Q1–>Q2–>Q3–>…–>Q7;
  • 下降沿 移位寄存器数据不变

SER(数据脚)

  • 串行数据输入端
void SEG_DisplayValue(u8 Bit1,  u8 Bit2, u8 Bit3)
{
	u8 i = 0;	//
	u8 code_tmp = 0;

	/*
    *略过部分代码
    */
	
	code_tmp = Seg7[Bit1];
	for(i=0;i<8;i++){

		if(code_tmp & 0x80){
			SER_H;
		}else{
			SER_L;
		}
		SCK_H;//数据移位
		code_tmp = code_tmp << 1;   
		SCK_L;
	}		
	RCLK_H;	//上升沿时移位寄存器进入存储寄存器
	RCLK_L;	//下降沿是数据保持不变
}

数码管显示数组

u8 code t_display[]={                       //标准字库
//   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,

//black  -     H    J    K    L    N    o   P    U     t    G    Q    r   M    y
0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,
    
 //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1
0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};    
//   0    1    2    3    4    5    6    7    8    9

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77

ADC按键

ADC KEY 引脚

PA5 ADC_12_IN5

背下ADC按键区间

按键值

ADC值 ADC按键区间
0 <100
200 <400
600 <800
1000 <1200
1300-1400 <1600
1700-1900 <2000
2100-2400 <2600
2800-3000 <3200

DHT11模块

芯片性能

  • 温度测量范围:0-50℃
  • 湿度测量范围:20-90%RH
  • 采样周期 :1S

数据格式

Byte0 Byte1 Byte2 Byte3 Byte4
湿度整数数据 湿度小数数据 温度整数数据 温度小数数据 校验和

编程思路

  • 主机输出
  • 主机拉 至少 18ms
  • 主机拉 20-40us
  • 主机输入
  • 主机等待信号线拉 (DHT11发送持续 40-50us 响应信号)
  • 主机等待信号线拉 (DHT11发送持续 40-50us 拉高信号)
  • for(){ //40bit数据 5Byte
    • 主机等待数据线拉 (数据Bit开始)
    • 主机等待数据线拉
    • 主机延时 时间大于28us小于70usType值 40us
    • 主机读取数据
  • }
  • 主机输出
  • 主机拉高

技巧&TIP

  • DHT11分辨率都是整数级别的读取小数的数据部分没有意义。(全为0)
  • 读取间隔建议大于100ms(采样 1S 过高的读取频率没有意义)
  • 在72MHz频率下 Delay_LCD 运行一次大约 375us
void Delay_LCD(u16 n)
{
	u16 i,j;
	for (i = 0;i<n;++i)
		for(j=0;j<3000;++j);
}
//将里面的 3000 改成 8 运行一次大概 1us 
//运行次数越少比1us越多
//运行次数越多比1us越少

18B20模块

芯片性能

  • ±0.5°C accuracy from -10°C to +85°C
  • Can be powered from data line. Power supply range is 3.0V to 5.5V
  • Converts 12-bit temperature to digital word in 750 ms (max.)

数据格式

数据格式

  • 写Byte数据先写低位
  • 读Byte数据先读出的是低位
  • 读出来的温度先是 LSM 8bit 然后是 MSB 8bit

总线协议&时序

编程思路

第十届提供了底层接口,比赛会下面这些就好了

0xCC OW_SKIP_ROM

0x44 DS18B20_CONVERT

0xCC OW_SKIP_ROM

0xBE DS18B20_READ


LIS302DL

NULL


光敏 D&A

光敏D

  • GPIOA_Pin_3
  • GPIO_Mode_IPU

光敏A

AD通道号就是Pin号

  • GPIOA_Pin_4
  • ADC1
  • ADC_Channel_4

电位器

省赛内容没什么好说的

NULL


PULS&PWM

比较捕获模式万能解题。如果题目不是要求同时采集CH1和CH2可以用PWM捕获模式挺好用的,改进一下可以不使用中断直接读取出占空比和频率,效率挺高。

PA1 TIM2_CH2

PA2 TIM2_CH3

PA6 TIM3_CH1

PA7 TIM3_CH2


界面颜色搭配

萝卜青菜各有所爱,好看就行了

LCD_SetBackColor(Blue);//界面标题
LCD_SetTextColor(White);
//Line0		1
LCD_SetBackColor(White);//界面内容
LCD_SetTextColor(Blue);
//Line1-7	7
LCD_SetBackColor(Blue);//界面介绍
LCD_SetTextColor(Black);
//Line89	2

蓝桥的其他文章与我个人敲的代码

蓝桥杯嵌入式STM32 零碎笔记

蓝桥杯嵌入式 错题本

省赛及国赛的赛题的实现代码可以在我的下载里面找到

你可能感兴趣的:(蓝桥杯,STM32)