學了那么久的單片機了,一直想做一個綜合的應用,正好家里缺個看時間的東東,我尋思就做個萬年歷吧。
設計的功能有:時間顯示,日期顯示,溫度與濕度顯示,整點報時,亮度控制,來電提醒
硬件上采用了ds3231+tl5615+am2320+3264點陣屏+w25qxx,主控是stm32f103c8t6
大體思路是am2320與ds3231分別提供溫濕度與時間數據,w25qxx儲存報時與提醒的音頻數據(采用wav的格式),tl5615作為da輸出驅動揚聲器,3264點陣屏就負責顯示。
新人第一次發帖,請各位大佬前輩們輕噴 ,部分程序來自網絡,感謝大家共享的資料,放幾張效果圖大家看看,溫濕度是兩秒鐘交替顯示一次。帖子最后放上程序。還有聲音數據是通過另一個板子寫到w25qxx的,如果有需要我再放出來 。
歡迎大家提出自己的建議與想法,也歡迎大家與我一同交流學習,留個郵箱吧:302810694@qq.com
制作出來的實物圖如下:
QQ圖片20190220195252.jpg (1.38 MB, 下載次數: 61)
下載附件
2019-2-20 19:53 上傳
QQ圖片20190220195330.jpg (1.19 MB, 下載次數: 59)
下載附件
2019-2-20 19:53 上傳
單片機源程序如下:
- #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)
2019-2-20 21:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|