基于stm32的智能台灯设计
STM32F103C8T6,输出PWM通过三极管开关控制高亮灯珠。
按键控制模式转变,自动手动感应三种模式。
HTU21温湿度采集。
光强度采集。
单片机源程序如下:
- #include "delay.h"
- #include "sys.h"
- #include "oled.h"
- #include "bmp.h"
- #include "SHT2x.h"
- #include "adc.h"
- #include "led.h"
- #include "key.h"
- #include "timer.h"
- u16 light,RT;
- float temp,humi;
- u16 DS18B20Temp;
- extern u8 mode_flag;
- int main(void)
- {
- delay_init(); //延时函数初始化
- NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 LED_Init();
- Adc1_Channe_Init();
- LED_Init();//LCED端口初始化
- KEY_Init();
- OLED_Init(); //初始化OLED
- OLED_StartShow();
- OLED_Clear();
- OLED_StaticShow();
- delay_ms(20);
- SHT2x_Init();
- TIM4_PWM_Init(1000,0);//PWM频率80KHz
-
- TIM_SetCompare4(TIM4,1000);//初始化灯灭,1000为反相占空比
- while(1)
- {
-
- KEY_Scan_s();
- light=get_Adc_Value(ADC_Channel_1);
- light=light*10000/(409.6*17);
- temp= SHT2x_GetTempPoll();//获取SHT20 温度
- humi= SHT2x_GetHumiPoll();//获取SHT20 湿度
-
- RT=get_Adc_Value(ADC_Channel_4);
- // light_on_off();
- OLED_ShowNum(36,4,temp,2,16);//显示温度值
- OLED_ShowNum(36,6,humi,2,16);//显示湿度值
- OLED_ShowNum_point(32,2,light);
- // OLED_ShowNum(120,0,mode_flag,1,16);//显示ASCII字符的码值
- }
- }
复制代码
所有资料51hei提供下载:
基于单片机的智能台灯程序.7z
(214.6 KB, 下载次数: 74)
|