学了那么久的单片机了,一直想做一个综合的应用,正好家里缺个看时间的东东,我寻思就做个万年历吧。
设计的功能有:时间显示,日期显示,温度与湿度显示,整点报时,亮度控制,来电提醒
硬件上采用了ds3231+tl5615+am2320+3264点阵屏+w25qxx,主控是stm32f103c8t6
大体思路是am2320与ds3231分别提供温湿度与时间数据,w25qxx储存报时与提醒的音频数据(采用wav的格式),tl5615作为da输出驱动扬声器,3264点阵屏就负责显示。
新人第一次发帖,请各位大佬前辈们轻喷,部分程序来自网络,感谢大家共享的资料,放几张效果图大家看看,温湿度是两秒钟交替显示一次。帖子最后放上程序。还有声音数据是通过另一个板子写到w25qxx的,如果有需要我再放出来。
欢迎大家提出自己的建议与想法,也欢迎大家与我一同交流学习,留个邮箱吧:302810694@qq.com
制作出来的实物图如下:
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include <3264.h>
- #include "timer.h"
- #include <ds3231.h>
- #include "myiic.h"
- #include <tl5615.h>
- #include "w25qxx.h"
- #include "exti.h"
- #include "wavplay.h"
- #include <AM2320.h>
- extern u8 line,number[12][16],number2[15][6];
- extern u8 sec,min,hour,day,month,year,week,alarmflag,pwm_set;
- extern float temp,hum;
- int main(void)
- {
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
- delay_init(); //延时函数初始化
- LED3264_init();
- IIC_Init();
- waken_am2320();
- W25QXX_Init();
- TIM3_Int_Init(5,7200); //2k
- TIM1_Int_Init(2000,7200); //5hz
- TIM2_Int_Init(20,72);
- TLC5615_init();
- EXTIX_Init();
- Playwav(458751,51408);
- while(1)
- {
- if(alarmflag==1)
- {
- if((min==0)&(sec==0))
- {
- if((hour>5)&(hour<22))
- {
- alarm_hour(hour);
- }
- }
- }
- else
- {
- Write_TLC5615(0);
- }
- if((hour==5)&(min==0)&(sec==0))
- pwm_set=2;
- if((hour==10)&(min==0)&(sec==0))
- pwm_set=4;
- if((hour==16)&(min==0)&(sec==0))
- pwm_set=3;
- if((hour==18)&(min==0)&(sec==0))
- pwm_set=2;
- if((hour==21)&(min==0)&(sec==0))
- pwm_set=1;
- if((hour==22)&(min==0)&(sec==0))
- pwm_set=0;
-
- }
- }
复制代码
所有资料51hei提供下载:
点阵屏万年历.7z
(216.74 KB, 下载次数: 117)
|