這里主要粘貼的是主程序,其他程序在正點原子的教程里面都有
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "dht11.h"
#include "oled.h"
#include "adc.h"
int main(void)
{
u8 t=0;
u8 temperature;
u8 humidity;
u32 smoke,adc,adc1;
delay_init(); //延時函數初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
uart_init(115200); //串口初始化為115200
OLED_Init();
OLED_Clear(); //清除OLED
Adc_Init();
// OLED_ShowString(5,3,"oled",10);
while(DHT11_Init()) //DHT11初始化
{
OLED_ShowString(5,0,"Error",10);
//OLED_ShowString(5,4,"OLEDTEST",10);
delay_ms(400);
}
OLED_ShowString(5,0,"OK",10);
OLED_ShowString(5,1,"Temp: C",10);
OLED_ShowString(5,2,"Humi: %",10);
OLED_ShowString(5,3,"Smoke: %",10);
OLED_ShowString(5,4,"Ch4: %",10);
while(1)
{
if(t%10==0) //每100ms讀取一次
{
// smoke=Get_Adc_Average(ADC_Channel_6,10);
// OLED_ShowNum(50,4,smoke,3,10);//
adc=Get_Adc(ADC_Channel_6);//ADC1通道6即A6
adc1=Get_Adc(ADC_Channel_8);//ADC1通道8即B0
// adc=(float)adc*3.3/4096;
OLED_ShowNum(50,3,adc,5,10);
OLED_ShowNum(40,4,adc1,5,10);
DHT11_Read_Data(&temperature,&humidity); //讀取溫濕度值
OLED_ShowNum(40,1,temperature,3,10); //顯示溫度
OLED_ShowNum(40,2,humidity,3,10); //顯示濕度
}
delay_ms(100);
t++;
// if(t==10)
// {
// t=0;
// }
}
}
|