本帖最后由 shanan 于 2017-5-6 12:31 编辑
淘了一个数码管时钟散件,用来复习51 (STC15W408AS),重头开始写软件,代码量:3053行,25个文件,生成hex,一个用了7K(DS18B20),一个用了5K(热敏电阻)。分享给有需要的同学,按键扫描,状态机,数码管显示,DS18B20这些代码可以参考一下。
源文件如下列表:
adc.c
adc.h
constdef.h
const_var.c
const_var.h
ds1302.c
ds1302.h
ds18b20.c
ds18b20.h
extern_var.c
extern_var.h
init.c
init.h
interrupt_routine.c
iodef.h
main.c
pca.c
pca.h
segmentdisplay.c
segmentdisplay.h
subrountine.c
subrountine.h
typedef.h
uart.c
uart.h
实现的功能有:
1. 开机首先显示编译日期,然后开始交替显示 时间(小时、分钟)和温度,数码管的亮度会适应环境光而变化,温度显示3位,编译可配置DS18B20精度,支持9,10,11,12位;
2. 短按上键,显示日期(月、日);
3. 短按下键,显示闹钟时间;
4. 长按上键,进入多功能选择界面,短按上键,轮流选择:秒表、倒计时、测光、测温、闹钟,短按下键进入功能;
5. 秒表:下键开始和暂停计时,计时最小单位是秒,十六进制显示,上键复位,长按上键退出功能,回到时钟;
6. 倒计时:下键开始和暂停计时,计时最小单位是秒,十进制显示,上键增加定时10秒,长按上键退出功能,回到时钟;
7. 测光:固定显示当前ADC采样值,长按上键退出功能,回到时钟;
8. 测温:固定显示当前温度,长按上键退出功能,回到时钟;
9. 闹钟:短按上键依次选择:设置小时,分钟,开关,退出;下键调值;
10. 设置时钟:上下键同时按下保持1秒,然后显示SET,松开;短按上键依次选择:设置年,月和日,小时和分钟,秒和星期,整点报时开关,退出;下键调值;
11. 扩展:代码支持热敏电阻和DS18B20,通过宏定义USE_18B20选择,使用DS18B20时,需要先修改硬件,修改如图,R11短路,Q6上安装DS18B20(正面朝外)并增加4.7K上拉电阻,短路D2:
原理图:
LY51-SZ1 实验板原理图.pdf
(25.98 KB)
工程文件打包:
LY51-SZ1_MOD增强修正版20170121.rar
(298.46 KB)
|