![907e89011ea2c0f24426b15195d26f54.gif](https://img-blog.csdnimg.cn/img_convert/907e89011ea2c0f24426b15195d26f54.gif)
![8662b5ae83bef6a2efc36ca233553d1d.png](https://img-blog.csdnimg.cn/img_convert/8662b5ae83bef6a2efc36ca233553d1d.png)
这是 北航士谔书院 的第 984 篇推送
题目的要求为设计一个温度测量装置,主要考察了DS1302时钟,DS18B20温度传感器,数码管以及按键的使用。题目的主要需求可以概括如下:
![0c8671ee52d4094c07fa1c03f1d2e083.png](https://img-blog.csdnimg.cn/img_convert/0c8671ee52d4094c07fa1c03f1d2e083.png)
由于系统主要有3状态,可以采用类似有限状态机的方法完成实现,以变量state来指示系统工作的状态,并采取对应的操作。由于题目中需要用到计时特定秒数的需求,所以我们将需要计时的逻辑放在计时器中断中。下面分模块阐述代码:
![7c20021e292beba1fcb10e60d14c4b25.png](https://img-blog.csdnimg.cn/img_convert/7c20021e292beba1fcb10e60d14c4b25.png)
在每一次的开始,都需要关闭蜂鸣器和LED。这对于每一个题目都类似。
![6b20d94b4335626f1c35dd486c3a676a.png](https://img-blog.csdnimg.cn/img_convert/6b20d94b4335626f1c35dd486c3a676a.png)
Init all函数初始化了系统的工作状态和开启了一个每2ms执行一次的中断。
(具体实现方式参见基础部分中断篇的阐述)
2. 按键模块