编程部分是笔者自己编写,且已在板子上调试成功,免费分享给读者,如有不足忘指正。
使用的芯片为竞赛芯片IAP,并非练习芯片52。
功能简述
设备按照用户通过按键设定的时间间隔自动采集并存储温度数据,并具有采集完成提醒、数码管显示等功能,系统硬件部分主要由按键电路、电源供电电路、RTC 时钟、传感器电路和显示电路组成.
单总线驱动程序、DS1302 芯片驱动程序、CT107D 单片机考试平台电路原理图以及本题所涉及到的芯片数据手册,可参考计算机上的电子文档。程序流程图及相关工程文件请以考生号命名,并保存在计算机上的考生文件夹中(文件夹名为考生准考证号,文件夹位于Windows 桌面上)
设计任务及要求
- 数码管显示
1.1 设备上电后,自动进入参数设置界面(图 1)此时,通过按键 S4 切换 4 个温度
采集间隔时间,分别为 1 秒、5 秒、30 秒和 60 秒;
要求:时钟显示界面(图 2)下,提示符 1、2 以 1 秒为间隔闪烁
1.2 当设备按照用户设定的采集间隔采集到 10 个数据后,指示灯 L1 闪烁提示本
次温度采集已经完成,此时进入数码管温度采集显示界面(图 3)
此时,按下 S6,L1 熄灭,按照时间先后顺序,切换显示设备内存储的温度数据;
按下 S7 按键进入参数设置界面(图 1),待用户输入温度采集间隔之后,可以进行
下一次的温度采集工作。
说明:索引指的是当前显示的温度按照采集时间先后顺序的编号(00-09)。 - 温度检测功能
使用 DS18B20 温度传感器完成温度测量功能。 - RTC
使用 DS1302 时钟芯片完成 RTC 的相关功能。 - 设备工作模式说明
(1)默认 RTC 时间:23 时 59 分 50 秒;
(2)默认温度数据采集间隔为 1 秒;
(3)设备处在不同的显示界面下,与该界面无关的按键操作无效;
(4)温度数据最大存储容量:10 个
代码
main.c
#include"STC15F2K60S2.h"
#include"ds1302.h"
#include"onewire.h"
#define uchar unsigned char
#define uint unsigned int
bit blink;
bit flag_wendu;
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
uchar yi,er,san,si,wu,liu,qi,ba; //yi---ba为1-8个数码管
uchar flag_S4; //标志位
uchar samplemiao; //采集间隔
uchar flag_scan;
uchar shi,fen,miao; //时钟时分秒
uchar wendu; //温度
uchar samplewendu[10]; //采集的10次温度记录在该数组
uchar suoyin; //索引
void allinit(void);
void Timer0Init(void