|
這是我以前做的一個(gè)課程設(shè)計(jì),通過藍(lán)牙APP發(fā)送指令,能夠調(diào)節(jié)燈帶亮度。燈帶通過晶閘管控制的。控制部分:
1.png (1.51 MB, 下載次數(shù): 160)
下載附件
2018-5-11 00:42 上傳
硬件整體圖:
2.png (1006.62 KB, 下載次數(shù): 170)
下載附件
2018-5-11 00:43 上傳
單片機(jī)源程序如下:
- #include <STC15.h>
- #include "OLED_Init.h"
- #include "UART.h"
- #include "pwm.h"
- void main()
- {
- Init_OLED();
- UartInit();
- Init_T0_PWM();
-
- EA = 1;
-
- while(1)
- {
- writeTime();
- RH(); //讀取溫度
- OLED_ShowString(48,2,timeData,16); //顯示當(dāng)前時(shí)間
- OLED_ShowNum(48,4,Temperature,2,16); //顯示溫濕度
- OLED_ShowNum(48,6,Humidity,2,16);
- }
- }
復(fù)制代碼-
- /*------------------------------------------------------------------*/
- /* If you want to use the program or the program referenced in the */
- /* article, please specify in which data and procedures from STC */
- /*------------------------------------------------------------------*/
- #include <stc15.h>
- #include "PWM.h"
- /************* 功能說明 **************
- 本程序演示使用定時(shí)器做軟件PWM。
- 定時(shí)器0做16位自動(dòng)重裝,中斷,從T0CLKO高速輸出PWM。
- 本例程是使用STC15F/L系列MCU的定時(shí)器T0做模擬PWM的例程。
- PWM可以是任意的量程。但是由于軟件重裝需要一點(diǎn)時(shí)間,所以PWM占空比最小為32T/周期,最大為(周期-32T)/周期, T為時(shí)鐘周期。
- PWM頻率為周期的倒數(shù)。假如周期為6000, 使用24MHZ的主頻,則PWM頻率為4000HZ。
- ******************************************/
- #define ZQ 10 //ZD:周期=ZD*100US
- #define ZB
- #define PWM_HIGH_MIN 0 //限制PWM輸出的最小占空比。用戶請(qǐng)勿修改。
- #define PWM_HIGH_MAX 10 //20級(jí)光強(qiáng)度調(diào)節(jié)
- sbit PWM_OUT = P0^0; //定義PWM輸出引腳。
- typedef unsigned char u8;
- typedef unsigned int u16;
- typedef unsigned long u32;
- unsigned int PWM_Temp=0,PWM_ZB=1;
- /****************定時(shí)器1初始化****************/
- void Init_T0_PWM(void) //100微秒@22.1184MHz
- {
- AUXR |= 0x80; //定時(shí)器時(shí)鐘1T模式
- TMOD &= 0xF0; //設(shè)置定時(shí)器模式
- TMOD |= 0x01; //設(shè)置定時(shí)器模式
- TL0 = 0x5C; //設(shè)置定時(shí)初值
- TH0 = 0xF7; //設(shè)置定時(shí)初值
- TF0 = 0; //清除TF0標(biāo)志
- TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
- ET0 = 1;
- }
- /********************* Timer0中斷函數(shù)************************/
- void timer0_int (void) interrupt 1 using 1
- {
- TL0 = 0x5C; //設(shè)置定時(shí)初值
- TH0 = 0xF7; //設(shè)置定時(shí)初值
-
- if(PWM_Temp==ZQ) PWM_Temp=1;
-
- if(PWM_ZB >= PWM_HIGH_MAX) PWM_ZB = PWM_HIGH_MAX; //如果寫入大于最大占空比數(shù)據(jù),則強(qiáng)制為最大占空比。
- if(PWM_ZB <= PWM_HIGH_MIN) PWM_ZB = PWM_HIGH_MIN; //如果寫入小于最小占空比數(shù)據(jù),則強(qiáng)制為最小占空比。
-
- if(PWM_ZB>=PWM_Temp) {PWM_OUT=1;}else{PWM_OUT=0;}
- PWM_Temp++;
- }
復(fù)制代碼
0.jpg (39.83 KB, 下載次數(shù): 142)
下載附件
2018-5-11 05:15 上傳
所有資料51hei提供下載:
藍(lán)牙調(diào)光程序.rar
(85.94 KB, 下載次數(shù): 29)
2018-5-11 00:44 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|