Skip to content

Latest commit

 

History

History
135 lines (92 loc) · 4.87 KB

第三课.md

File metadata and controls

135 lines (92 loc) · 4.87 KB

蓝桥杯第一课

复习上一节课

  1. 工程的搭建

    独立按键与工程的搭建
    • stc_config.h的编写
    • (输出)display模块的编写(1ms或者2ms的一个display定时器显示)
    • 独立按键key模块的编写(CH文件)
    • 定时器的编写(5-10ms的按键扫描)(设定每秒执行几次)
      • 计数变量int类型,count
      • 标志位bit类型,Flag
    • main函数的完善
  2. 矩阵按键

与芯片的通讯

  1. 芯片的一般如何进行通讯?

    1. 类型
    • 温度:DS18B20。(功能:读取温度)
    • 时钟:DS1302。(功能:读取时钟,写入时钟)
    • 数模/模数转换器。PCF8591。(数字转模拟,模拟转数字。)
      • 模数:(3.7V →(模数)8位(256阶级0-5V)(5V/256 = ),→0000 0001→0.019V,195→3.7V)
    • 反过来,数模也是如此,给予一个(8位5V)195的数,他会输出3.7V.
    1. 如何和这些芯片通信。
      • 回归到最基础,初始化,写入,读出。
        • 最开始,我们执行这些操作,是命令式。eg: 我要写入,写入的数据。
        • 后来,采用了寄存器的方式。eg:我要写入,写入的地址,地址的数据。(读取,读取的地址,读取的数据。)

  2. 单总线

    1. 比赛会提供驱动文件,关于内部通讯方式,了解即可。
    2. 从数据手册去了解通讯协议(初学可以通过网上的视频)(比赛编程题不考,但是客观题可能考,目前可能有点难理解,简单了解后期加强)
      • 数据手册的构成(主要介绍,电气特性,使用方法,涉及知识)
      • 如何去看(带着目标去看)——使用他的功能
        • 初始化,写入,读出。→时序图
        • 写入的方式是命令式还是寄存器式
        • 使用的流程是什么。
    3. DS18B20的使用方法(编程题会考)命令式的一个芯片
      1. 检查延时,检查头文件的引脚,替换头文件内的头文件
      2. 编写getTemp函数
        • 初始化(BB 44)
        • 读温度 (BB CE) ,然后读回,A,B
        • 处理数据
          • 合并数据
          • 转化成10进制的温度数据
          • 四舍五入
  3. DS18B20的内部结构(数据手册)

  4. 编写程序。

程序,状态机,以及枚举函数指针

  1. 程序编码原则
  • 代码永远是先给人看的,然后再给机器看的。
    • 永远做好整理。
  1. 状态机
  • 独立按键:

    • ——每10ms,进行一次状态判断。

      ​ 现态 事件 跳转条件 次态

      ​ (现态所要做的事情)

      • 未按下 KEY==0 第一次按下

      • 第一次按下 KEY==0 正真的按下

        ​ KEY!=0 未按下

      • 正真的按下 通知程序(Flag) KEY==0 持续的按下

        ​ KEY!=0 未按下

      • 持续的按下 KEY!=0 未按下

  • 功能状态机

    • 按照功能(界面)来分类:工作界面,设置界面

      ​现态 事件 跳转条件 次态

    工作界面 检查温度区间,检查温度(LED)设置按键 设置界面设置界面 输入上下限的温度,并检查保存 设置按键 工作界面

  • 编写程序

    1. 用什么来表示状态(变量+宏定义)
    2. 如何来选择状态(在主函数中使用switch来选择)
    3. 如何执行事件(单独实现一个while(1)函数)
    4. 完成事件,
    5. 完成下一个状态的框架,以及显示(123(设置),567)
  • 编写缓冲区。

    • 构建空间(数组)。下标。
    • 编写操作
      • 添加数据
      • 将数据传到指定位置
        • 临界点
      • 删除所有数据
    • 考虑显示的问题

LED

  1. 和其他外设共享数据位。
    • 单独控制一个灯的时候,可能导致其他的灯不见了
      • L2,亮(P0)→L1亮(P0) 【两者互不干扰】
    • 解决方法:数据缓存 → 显存
  2. 闪烁(软件定时器)(起延时的作用)
    1. 设定变量以及定时器内的计数--。
    2. 初始化:
      1. 先检测定时器有没有被使用
      2. 设置计数变量为自己所需的延时事件。
    3. 不停检测计数是否归零,归零的话,就说明时间到了,可以执行所要的事件了。

到目前的学习内容

1.模块--数码管,按键,温度

2.框架--状态机,缓冲器,软件定时器。

———— →2016年的模拟题综合练习←