標題: stm32f103可控調光系統制作 帶時鐘顯示 附程序 [打印本頁]
作者: hao152 時間: 2020-1-5 20:40
標題: stm32f103可控調光系統制作 帶時鐘顯示 附程序
通過stm32f103c8t6單片機的定時器3輸出四路可調的PWM(TIM3)。
通過按鍵控制呼吸燈頻率以及模式轉換。
通過oled12864顯示實時時鐘,并且可以通過按鍵修改時間。
通過oled12864屏幕顯示信息(顯示實時時間以及呼吸頻率等級)。
通過HC-05藍牙模塊調節PWM的頻率
主要功能:
基于STM32的呼吸燈裝置,使用定時器3(TIM3)輸出4路PWM。
在屏幕上會顯示呼吸頻率等級和實時時鐘,裝置具有三個按鍵,其中一個為模式轉換,按下依次修改年月日時分的數值。另外兩個按鍵為加數和減數,這兩個按鍵共用與按鍵修改時間和調整呼吸頻率。
當模式按鍵未按下時,加減鍵修改呼吸頻率。
當模式按鍵按下第一次時,此時為年份修改,通過按鍵加減修改年份。
當模式按鍵按下第二次時,此時為月份修改,通過按鍵加減修改月份
當模式按鍵按鍵按下三、四、五次時,分別對應修改日、時、分,通過按鍵加減修改數值。
另外可以通過藍牙修改呼吸燈的頻率
接線:
引腳 | |
| |
| IIC 屏幕數據線以及時鐘線 分別接入屏幕的SCL SDA |
| |
| |
清單:
制作出來的實物效果圖:
1.jpg (60.29 KB, 下載次數: 56)
下載附件
2020-1-5 20:37 上傳
2.jpg (70.14 KB, 下載次數: 59)
下載附件
2020-1-5 20:37 上傳
3.jpg (188.89 KB, 下載次數: 70)
下載附件
2020-1-5 20:37 上傳
4.jpg (170.56 KB, 下載次數: 59)
下載附件
2020-1-5 20:37 上傳
單片機源程序如下:
- #include "stm32f10x.h" //STM32頭文件
- #include "sys.h"
- #include "delay.h"//延時
- #include "oled0561.h"//oled屏幕
- #include "NVIC.h"//外部中斷
- #include "usart.h"//串口
- #include "key.h"//按鍵
- #include "i2c.h"
- #include "rtc.h"
- #include "pwm.h"
- void xianshishijian(void);
- void xiugai(void);
- u8 a,dengji=20;
- u8 bya=6;
- int main (void){//主程序
- u8 a,fx=1;
- u32 ti=0;
- RCC_Configuration(); //系統時鐘初始化
- TIM3_Init(); //定時器3 pwm
- USART1_Init(9600);//串口1初始化并啟動
- KEY_Init();//按鍵初始化
- KEYPAD1_INT_INIT();//按鍵中斷初始化
- KEYPAD2_INT_INIT();//按鍵中斷初始化
- KEYPAD3_INT_INIT();//按鍵中斷初始化
- RTC_Config();
- I2C_Configuration();//i2c初始化
- OLED0561_Init();//屏幕初始化
- delay_ms(10);
- OLED_DISPLAY_PIC1();//開機動畫
- delay_s(1);
- OLED_DISPLAY_CLEAR();
- bya=RTC_Set(2019,12,10,13,34,00);
- delay_s(1);
- printf("%d",dengji);
-
-
- while(1){
- for(a=0;a<8;a++){
- OLED_DISPLAY_16x16(4,a*16,a);//顯示信息
- }
-
-
- xianshishijian();
- xiugai();
-
- delay_ms(1);
- if(fx==1)
- {
- ti++;
- if(ti>dengji)
- {
- fx=0;
- }
- }
- else
- {
- ti--;
- if(ti==0)
- {
- fx=1;
- }
- }
- TIM_SetCompare1(TIM3, ti*10);//設置TIMx捕獲比較2寄存器值
- TIM_SetCompare2(TIM3, ti*10);
- TIM_SetCompare3(TIM3, ti*10);
- TIM_SetCompare4(TIM3, ti*10);
- }
- }
- void xiugai(void){
- if((jia1==1||jia==1)&&mode==0){
- dengji++;
- printf("%d",dengji);
- jia=0;
- jia1=0;
- }
- if((jian1||jian==1)&&mode==0){
- if(dengji>0){
- dengji--;
- printf("%d",dengji);
- jian=0;
- jian1=0;
- }
- }
-
- switch(mode){
- case 1:
- OLED_DISPLAY_8x16(0,3*8,'_');
- OLED_DISPLAY_8x16(0,4*8,'_');
- OLED_DISPLAY_8x16(0,5*8,'_');
- OLED_DISPLAY_8x16(0,6*8,'_');
- a=ryear/1000+48;
- OLED_DISPLAY_8x16(0,3*8,a);
- a=ryear%1000/100+48;
- OLED_DISPLAY_8x16(0,4*8,a);
- a=ryear%100/10+48;
- OLED_DISPLAY_8x16(0,5*8,a);
- a=ryear%10+48;
- OLED_DISPLAY_8x16(0,6*8,a);
- if(jia==1){
- ryear++;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jia=0;
- }
- if(jian==1){
- ryear--;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jian=0;
- }
- break;
-
- case 2:
- OLED_DISPLAY_8x16(0,8*8,'_');
- OLED_DISPLAY_8x16(0,9*8,'_');
- a=rmon/10+48;
- OLED_DISPLAY_8x16(0,8*8,a);
- a=rmon%10+48;
- OLED_DISPLAY_8x16(0,9*8,a);
- if(jia==1){
- rmon++;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jia=0;
- }
- if(jian==1){
- rmon--;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jian=0;
- }
- break;
-
- case 3:
- OLED_DISPLAY_8x16(0,11*8,'_');
- OLED_DISPLAY_8x16(0,12*8,'_');
- a=rday/10+48;
- OLED_DISPLAY_8x16(0,11*8,a);
- a=rday%10+48;
- OLED_DISPLAY_8x16(0,12*8,a);
- if(jia==1){
- rday++;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jia=0;
- }
- if(jian==1){
- rday--;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jian=0;
- }
- break;
-
- case 4:
- OLED_DISPLAY_8x16(2,4*8,'_');
- OLED_DISPLAY_8x16(2,5*8,'_');
- a=rhour/10+48;
- OLED_DISPLAY_8x16(2,4*8,a);
- a=rhour%10+48;
- OLED_DISPLAY_8x16(2,5*8,a);
- if(jia==1){
- rhour++;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jia=0;
- }
- if(jian==1){
- rhour--;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jian=0;
- }
- break;
-
- case 5:
- OLED_DISPLAY_8x16(2,7*8,'_');
- OLED_DISPLAY_8x16(2,8*8,'_');
- a=rmin/10+48;
- OLED_DISPLAY_8x16(2,7*8,a);
- a=rmin%10+48;
- OLED_DISPLAY_8x16(2,8*8,a);
- if(jia==1){
- rmin++;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jia=0;
- }
- if(jian==1){
- rmin--;
- bya=RTC_Set(ryear,rmon,rday,rhour,rmin,rsec);
- jian=0;
- }
- break;
- default:
- mode=0;
-
-
- }
- }
- void xianshishijian(void){
-
-
-
- //************等級
- OLED_DISPLAY_16x16(6,4*16,14);
- OLED_DISPLAY_16x16(6,5*16,15);
- OLED_DISPLAY_8x16(6,12*8,':');
- a=dengji/10+48;
- OLED_DISPLAY_8x16(6,13*8,a);
- a=dengji%10+48;
- OLED_DISPLAY_8x16(6,14*8,a);
-
-
- RTC_Get(); //讀出時間值,同時判斷返回值是不是0,非0時讀取的值是錯誤的。
- // printf("%d-%d-%d %02d:%02d:%02d ",ryear,rmon,rday,rhour,rmin,rsec);//顯示日期時間
- // printf("%d\r\n",bya);//0為成功
- //****************年
- a=ryear/1000+48;
- OLED_DISPLAY_8x16(0,3*8,a);
- a=ryear%1000/100+48;
- OLED_DISPLAY_8x16(0,4*8,a);
- a=ryear%100/10+48;
- OLED_DISPLAY_8x16(0,5*8,a);
- a=ryear%10+48;
- OLED_DISPLAY_8x16(0,6*8,a);
- OLED_DISPLAY_8x16(0,7*8,'/');
- //****************月
- a=rmon/10+48;
- OLED_DISPLAY_8x16(0,8*8,a);
- a=rmon%10+48;
- OLED_DISPLAY_8x16(0,9*8,a);
- OLED_DISPLAY_8x16(0,10*8,'/');
- //****************日
- a=rday/10+48;
- OLED_DISPLAY_8x16(0,11*8,a);
- a=rday%10+48;
- OLED_DISPLAY_8x16(0,12*8,a);
- //**************時
- a=rhour/10+48;
- OLED_DISPLAY_8x16(2,4*8,a);
- a=rhour%10+48;
- OLED_DISPLAY_8x16(2,5*8,a);
- OLED_DISPLAY_8x16(2,6*8,':');
- //***************分
- a=rmin/10+48;
- OLED_DISPLAY_8x16(2,7*8,a);
- a=rmin%10+48;
- OLED_DISPLAY_8x16(2,8*8,a);
- OLED_DISPLAY_8x16(2,9*8,':');
- //***************秒
- a=rsec/10+48;
- OLED_DISPLAY_8x16(2,10*8,a);
- a=rsec%10+48;
- OLED_DISPLAY_8x16(2,11*8,a);
- }
- /*
- 【變量定義】
- u32 a; //定義32位無符號變量a
- u16 a; //定義16位無符號變量a
- u8 a; //定義8位無符號變量a
- vu32 a; //定義易變的32位無符號變量a
- vu16 a; //定義易變的 16位無符號變量a
- vu8 a; //定義易變的 8位無符號變量a
- uc32 a; //定義只讀的32位無符號變量a
- uc16 a; //定義只讀 的16位無符號變量a
- uc8 a; //定義只讀 的8位無符號變量a
- delay_us(1); //延時1微秒
- delay_ms(1); //延時1毫秒
- delay_s(1); //延時1秒
- */
復制代碼
所有資料51hei提供下載:
課題設計.7z
(213.65 KB, 下載次數: 63)
2020-1-6 00:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
男人阁久久
|
国产精品美女久久久久久免费
|
国产欧美日韩一区
|
成年人在线观看
|
综合二区|
国产精品视频在线观看
|
a级黄色网
|
黄视频网站在线
|
在线亚洲一区二区
|
亚洲久草
|
成人av观看
|
天天色综|
亚洲精品黄色
|
久久网站免费视频
|
自拍偷拍第一页
|
欧美日韩综合
|
一级特黄在线
|
精品国产乱码久久久久久丨区2区
|
日韩a v在线免费观看
|
av大片|
亚洲黄色av|
久草网站|
av一区二区三区四区
|
亚洲福利
|
亚洲一区二区三区观看
|
国产欧美视频一区
|
日韩一区二区三区精品
|
久久久久91
|
久久99精品久久久久久青青日本
|
欧美一区成人
|
日本一区二区视频
|
中文字幕精品视频
|
欧美一区2区三区4区公司
|
色婷婷综合网
|
99久久精品国产一区二区三区
|
成人一级视频在线观看
|
国产精品久久久久久久久婷婷
|
国产免费人成xvideos视频
|
欧美成人黄色小说
|
三级成人在线
|
欧美精品一区免费
|