本帖最后由 lcw_swust 于 2013-10-12 14:43 编辑
功能:
语音报时(16KHz,8位),一个闹钟,4位数码管显示,温度显示,手电筒。
(在暗处,工作电流在0.5mA左右,论功耗,还是贴片LED做成点阵比数码管更低些)
*原理:单片机外接32.768KHz晶振用于计时,4位共阴数码管显示,
5mm高亮LED做手电筒,MF58-100K热敏电阻测温,
外接SPIFLASH存储WAV文件, 用PWM驱动喇叭发出声音。
*所用单片机为ATmega88V (MEGA88PA-AU),SPIFLASH为SST25VF080B
*熔丝设置为出厂默认值DF62,使用片内8MHz的RC振荡器
*外接32.768KHz作为T2的异步时钟源
*由数码管内的LED(反向偏置)测量环境亮度,热敏电阻(MF58,100K)测量温度
*使用4位共阴极数码管
*MCU平时工作于"省电模式",由T2唤醒后,动态扫描LED,且处理计时,
*T0:16KHz中断,用于播放WAV
T1:产生PWM,代替DAC,等效于开关功放
*按键与LED的段复用
键1:SET,设置,相应参数闪烁,再按选择下一个参数,
此键长按为手电筒开关
键2:INC,增加,让闪烁的参数增加,长按此键连续增加
待机状态按下键2,显示闹钟时间,播报闹钟时间\闹钟开关以及整点报时开关
键3:RD,报时,播报时间与温度
*按键若在10秒内无操作,将回到待机状态
*平时显示时间4秒\显示温度2秒
显示时间时,若闹钟打开,则最右方的小数点亮起
显示温度时,若整点报时开启,则最右方的小数点亮起
*当检测到电池电压低于3.2V时只显示小数点
注意:由于数码管LED测光时放电较慢,在COM4与SEGD间接入了一个20M欧的电阻用于加快放电。
(将PART1与PART2解压到同一文件夹内,双击运行BAT文件可将文件合并)
|