久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于新唐M0內核的智能空氣檢測儀程序設計
[打印本頁]
作者:
736898032
時間:
2019-8-10 17:04
標題:
基于新唐M0內核的智能空氣檢測儀程序設計
NuMicro® NUC131系列特色為寬電壓工作范圍2.5V至5.5V, 工作溫度: -40℃至105℃, 內建22.1184MHz高精度晶振(1%準確度)。 備有豐富的外設, 如CAN2.0A/B, 定時器, 看門狗定時器,多組UART, SPI,
I2C
, PWM, 12位ADC, 模擬比較器等.提供多種包裝 LQFP48, LQFP64。
1.lcd段碼屏顯示
2.傳感器部分:溫濕度 SHT31 PM2.5: 四方光電 PM2008 CO2 : CM1106 TVOC傳感器
3.4路觸摸按鍵: 經典算法 : 長按 短按 持續按鍵 復合按鍵
5,慶科wifi模塊 串口通信
6.鋰電池 充電 升壓 二合一
7.設備聯控:采用標準的MOSBUS RTU 協議
51hei截圖_20190810170256.png
(63.58 KB, 下載次數: 90)
下載附件
2019-8-10 17:03 上傳
單片機源程序如下:
/**************************************************************************//**
* @file main.c
* @version V2.00
* $Revision: 5 $
* $Date: 15/01/16 11:44a $
* @brief Implement timer counting in periodic mode.
* @note
* Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
******************************************************************************/
#include "define.H"
#define PLL_CLOCK 50000000
/*---------------------------------------------------------------------------------------------------------*/
/* Global Interface Variables Declarations */
/*---------------------------------------------------------------------------------------------------------*/
volatile uint32_t g_au32TMRINTCount[4] = {0};
uint8_t PwmIO_count;
uint16_t PM_value;
uint16_t CO2_value;
uint16_t HCHO_value;
#if 0
/*
V003 2019-03-02
1,Power on and power off button change to touch leave control,
perviously is short press control.
2.WIFI COM temperture,perviously version PCBA send indoor temperture,
modified to send inlet air temperature.
V009 2019-05-25
1.Add DS1302 RTC
2.Adjust the GPIO with 20190325 schematic
V010 2019-05-29
1.Set PM2.5 value 999 up limit
2.Modify the button sequence except child lock.
*/
#endif
/**
* @brief Timer0 IRQ
*
* @param None
*
* @return None
*
* @details The Timer0 default IRQ, declared in startup_NUC131.s.
*/
void TMR0_IRQHandler(void)
{
if(TIMER_GetIntFlag(TIMER0) == 1)
{
/* Clear Timer0 time-out interrupt flag */
TIMER_ClearIntFlag(TIMER0);
if(Time.t_1ms==0)
{
Time.t_1ms=10;
F_10ms=1;
Time_handler();
}
Time.t_1ms--;
F_1ms=1;
if (++PwmIO_count > 14)
PwmIO_count = 0;
if (PwmIO_set > PwmIO_count)
LedCom_pin = 1;
else
LedCom_pin = 0;
// LedCom_pin=1;
}
}
/**
* @brief Timer1 IRQ
*
* @param None
*
* @return None
*
* @details The Timer1 default IRQ, declared in startup_NUC131.s.
*/
void TMR1_IRQHandler(void)
{
if(TIMER_GetIntFlag(TIMER1) == 1)
{
/* Clear Timer1 time-out interrupt flag */
g_au32TMRINTCount[1]++;
}
}
/**
* @brief Timer2 IRQ
*
* @param None
*
* @return None
*
* @details The Timer2 default IRQ, declared in startup_NUC131.s.
*/
void TMR2_IRQHandler(void)
{
if(TIMER_GetIntFlag(TIMER2) == 1)
{
/* Clear Timer2 time-out interrupt flag */
TIMER_ClearIntFlag(TIMER2);
TIMER_ClearIntFlag(TIMER1);
if(Buzz.B_Buzzer_Model)
{
if(Buzz_Frec_pin)
Buzz_Frec_pin=0;
else
Buzz_Frec_pin=1;
}
}
}
/**
* @brief Timer3 IRQ
*
* @param None
*
* @return None
*
* @details The Timer3 default IRQ, declared in startup_NUC131.s.
*/
void TMR3_IRQHandler(void)
{
if(TIMER_GetIntFlag(TIMER3) == 1)
{
/* Clear Timer3 time-out interrupt flag */
TIMER_ClearIntFlag(TIMER3);
g_au32TMRINTCount[3]++;
}
}
#if 0
void SYS_Init(void)
{
/*---------------------------------------------------------------------------------------------------------*/
/* Init System Clock */
/*---------------------------------------------------------------------------------------------------------*/
/* Enable HIRC clock */
CLK_EnableXtalRC(CLK_PWRCON_IRC22M_EN_Msk);
/* Waiting for HIRC clock ready */
CLK_WaitClockReady(CLK_CLKSTATUS_IRC22M_STB_Msk);
/* Switch HCLK clock source to HIRC */
CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1));
/* Enable HXT */
// CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);
/* Waiting for clock ready */
// CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);
/* Set core clock as PLL_CLOCK from PLL and SysTick source to HCLK/2*/
CLK_SetCoreClock(PLL_CLOCK);
CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLK_S_HCLK_DIV2);
/* Enable peripheral clock */
CLK_EnableModuleClock(UART0_MODULE);
// CLK_EnableModuleClock(UART4_MODULE);
CLK_EnableModuleClock(TMR0_MODULE);
CLK_EnableModuleClock(TMR1_MODULE);
CLK_EnableModuleClock(TMR2_MODULE);
CLK_EnableModuleClock(TMR3_MODULE);
/* Peripheral clock source *///CLK_CLKSEL1_UART_S_PLL
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
// CLK_SetModuleClock(UART4_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0_S_HIRC, 0);
CLK_SetModuleClock(TMR1_MODULE, CLK_CLKSEL1_TMR0_S_HIRC, 0);
CLK_SetModuleClock(TMR2_MODULE, CLK_CLKSEL1_TMR2_S_HIRC, 0);
CLK_SetModuleClock(TMR3_MODULE, CLK_CLKSEL1_TMR3_S_HIRC, 0);
/*---------------------------------------------------------------------------------------------------------*/
/* Init I/O Multi-function */
/*---------------------------------------------------------------------------------------------------------*/
/* Set PB multi-function pins for UART0 RXD, TXD */
/* Set GPB multi-function pins for UART0 RXD(PB.0) and TXD(PB.1) */
SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;
// SYS->GPB_MFP &= ~(SYS_GPC_MFP_PC7_Msk | SYS_GPC_MFP_PC6_Msk);
// SYS->GPB_MFP |= SYS_GPC_MFP_PC7_UART4_RXD | SYS_GPC_MFP_PC6_UART4_TXD;
}
#endif
void SYS_Init(void)
{
/*---------------------------------------------------------------------------------------------------------*/
/* Init System Clock */
/*---------------------------------------------------------------------------------------------------------*/
/* Enable Internal RC 22.1184MHz clock */
CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);
/* Waiting for Internal RC clock ready */
CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk);
/* Switch HCLK clock source to Internal RC and HCLK source divide 1 */
CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1));
/* Enable external XTAL 12MHz clock */
// CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);
/* Waiting for external XTAL clock ready */
// CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);
/* Set core clock as PLL_CLOCK from PLL */
CLK_SetCoreClock(PLL_CLOCK);
/* Enable UART module clock */
CLK_EnableModuleClock(UART0_MODULE);
CLK_EnableModuleClock(UART1_MODULE);
CLK_EnableModuleClock(UART2_MODULE);
CLK_EnableModuleClock(UART3_MODULE);
CLK_EnableModuleClock(UART4_MODULE);
CLK_EnableModuleClock(TMR0_MODULE);
CLK_EnableModuleClock(TMR1_MODULE);
CLK_EnableModuleClock(TMR2_MODULE);
CLK_EnableModuleClock(TMR3_MODULE);
/* Select UART module clock source */
// CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));
/* Select UART module clock source */
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
CLK_SetModuleClock(UART2_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
CLK_SetModuleClock(UART3_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
CLK_SetModuleClock(UART4_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_CLKDIV_UART(1));
CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0_S_HIRC, 0);
CLK_SetModuleClock(TMR1_MODULE, CLK_CLKSEL1_TMR0_S_HIRC, 0);
CLK_SetModuleClock(TMR2_MODULE, CLK_CLKSEL1_TMR2_S_HIRC, 0);
CLK_SetModuleClock(TMR3_MODULE, CLK_CLKSEL1_TMR3_S_HIRC, 0);
/* Enable ADC module clock */
CLK_EnableModuleClock(ADC_MODULE);
/* ADC clock source is 22.1184MHz, set divider to 7, ADC clock is 22.1184/7 MHz */
CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL1_ADC_S_HIRC, CLK_CLKDIV_ADC(7));
/*---------------------------------------------------------------------------------------------------------*/
/* Init I/O Multi-function */
/*---------------------------------------------------------------------------------------------------------*/
/* Set GPB multi-function pins for UART0 RXD(PB.0) and TXD(PB.1) */
SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;
// SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB4_Msk | SYS_GPB_MFP_PB5_Msk);
// SYS->GPB_MFP |= SYS_GPB_MFP_PB4_UART1_RXD | SYS_GPB_MFP_PB5_UART1_TXD;
SYS->GPB_MFP &= ~( SYS_GPB_MFP_PB5_Msk);
SYS->GPB_MFP |= SYS_GPB_MFP_PB5_UART1_TXD;
SYS->GPD_MFP &= ~(SYS_GPD_MFP_PD14_Msk | SYS_GPD_MFP_PD15_Msk);
SYS->GPD_MFP |= SYS_GPD_MFP_PD14_UART2_RXD | SYS_GPD_MFP_PD15_UART2_TXD;
// SYS->GPA_MFP &= ~(SYS_GPA_MFP_PA3_Msk | SYS_GPA_MFP_PA2_Msk);
// SYS->GPA_MFP |= SYS_GPA_MFP_PA3_UART3_RXD | SYS_GPA_MFP_PA2_UART3_TXD;
SYS->ALT_MFP4 &= ~(SYS_ALT_MFP4_PA5_Msk | SYS_ALT_MFP4_PA6_Msk);
SYS->ALT_MFP4 |= SYS_ALT_MFP4_PA5_UART3_RXD | SYS_ALT_MFP4_PA6_UART3_TXD;
SYS->GPA_MFP &= ~(SYS_GPA_MFP_PA5_Msk | SYS_GPA_MFP_PA6_Msk);
SYS->GPA_MFP |= SYS_GPA_MFP_PA5_UART3_RXD | SYS_GPA_MFP_PA6_UART3_TXD;
SYS->GPC_MFP &= ~(SYS_GPC_MFP_PC7_Msk | SYS_GPC_MFP_PC6_Msk);
SYS->GPC_MFP |= SYS_GPC_MFP_PC7_UART4_RXD | SYS_GPC_MFP_PC6_UART4_TXD;
/*
SYS->GPF_MFP &= ~(SYS_GPF_MFP_PF0_Msk | SYS_GPF_MFP_PF1_Msk);
SYS->GPF_MFP |= SYS_GPF_MFP_PF0_GPIO | SYS_GPF_MFP_PF1_GPIO; */
/* Configure the GPA0 - GPA3 ADC analog input pins */
SYS->GPA_MFP &= ~( SYS_GPA_MFP_PA7_Msk ) ;
SYS->GPA_MFP |= SYS_GPA_MFP_PA7_ADC7;
}
void GPIO_Init(void)
{
#if 0
GPIO_SetMode(PC, BIT6, GPIO_PMD_OUTPUT);//UART4 TX
PC6=0;
GPIO_SetMode(PA, BIT6, GPIO_PMD_OUTPUT);//UART4 TX
PA6=0;
GPIO_SetMode(PB, BIT1, GPIO_PMD_OUTPUT);//UART4 TX
PB1=0;
#endif
GPIO_SetMode(PA,BIT1,GPIO_PMD_OUTPUT);//Sensor power
GPIO_SetMode(PA,BIT12,GPIO_PMD_OUTPUT);//SW485
GPIO_SetMode(PA,BIT13,GPIO_PMD_OUTPUT);//BackLight
GPIO_SetMode(PA,BIT2,GPIO_PMD_INPUT);//KEY
GPIO_SetMode(PA,BIT3,GPIO_PMD_INPUT);
GPIO_SetMode(PA,BIT4,GPIO_PMD_INPUT);
GPIO_SetMode(PA,BIT14,GPIO_PMD_OUTPUT);//Led Com
GPIO_SetMode(PC,BIT0,GPIO_PMD_OUTPUT);//Led
GPIO_SetMode(PC,BIT1,GPIO_PMD_OUTPUT);//Led
GPIO_SetMode(PC,BIT2,GPIO_PMD_OUTPUT);//Led
GPIO_SetMode(PC,BIT3,GPIO_PMD_OUTPUT);//Led
GPIO_SetMode(PB,BIT3,GPIO_PMD_OUTPUT);//Buzz`
GPIO_SetMode(PD,BIT6,GPIO_PMD_OUTPUT);//Buzz
GPIO_SetMode(PD,BIT7,GPIO_PMD_OUTPUT);//Sensor power
GPIO_SetMode(PB,BIT2,GPIO_PMD_OUTPUT);//WIFI power
GPIO_SetMode(PB,BIT12,GPIO_PMD_INPUT);//CHG
GPIO_SetMode(PB,BIT15,GPIO_PMD_OUTPUT);//1302
GPIO_SetMode(PF,BIT1,GPIO_PMD_OUTPUT);//1302
GPIO_SetMode(PF,BIT0,GPIO_PMD_OUTPUT);//1302
WIFI_EN();
PA14=1;
Led_pin1 = 0;
Led_pin2 = 0;
Led_pin3 = 0;
Led_pin4 = 0;
// PD7 = 1;
/* Led_pin1=0;
Led_pin2=0;
Led_pin3=0;
Led_pin4=0; */
//GPIO_SetMode(PB,BIT12,GPIO_PMD_OUTPUT);//TEST`
SW485_DIS();
}
uint8_t Adc_Cnt;
uint32_t Adc_buffer2;
uint32_t Adc_buffer1;
uint16_t VBatMv=0;
void ADC_Init(void)
{
ADC_Open(ADC, ADC_ADCR_DIFFEN_SINGLE_END, ADC_ADCR_ADMD_CONTINUOUS, 0x80);
/* Power on ADC module */
ADC_POWER_ON(ADC);
/* Clear the A/D interrupt flag for safe */
ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);
/* Start A/D conversion */
ADC_START_CONV(ADC);
}
void ADC_Scan(void)
{
/* Clear the A/D interrupt flag for safe */
// ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);
/* Start A/D conversion */
// ADC_START_CONV(ADC);
/* Wait conversion done */
// while(!ADC_GET_INT_FLAG(ADC, ADC_ADF_INT));
/* Clear the A/D interrupt flag for safe */
ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);
Adc_buffer1+=ADC_GET_CONVERSION_DATA(ADC,7);
if(++Adc_Cnt<149)
return;
Adc_buffer2=Adc_buffer1;
Adc_Cnt=0;
Adc_buffer1=0;
if(VBatMv==0)
{
VBatMv=Adc_buffer2/64;
}
else
{
VBatMv+=Adc_buffer2/64;
VBatMv/=2;
}
}
/*---------------------------------------------------------------------------------------------------------*/
/* MAIN function */
/*---------------------------------------------------------------------------------------------------------*/
int main(void)
{
volatile uint32_t u32InitCount;
/* Unlock protected registers */
SYS_UnlockReg();
/* Init System, peripheral clock and multi-function I/O */
SYS_Init();
/* Lock protected registers */
SYS_LockReg();
/* Init UART0 for printf */
UART0_Init();
UART1_Init();
UART2_Init();
UART3_Init();
UART4_Init();
GPIO_Init();
TVOC_init();
IIC_Init();
InitCHM_01A();
PA13=1;
Rtc_init();
Init_DS1302();
/* Open Timer0 in periodic mode, enable interrupt and 1 interrupt tick per second */
TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 1000);
TIMER_EnableInt(TIMER0);
/* Open Timer1 in periodic mode, enable interrupt and 2 interrupt ticks per second */
TIMER_Open(TIMER1, TIMER_PERIODIC_MODE, 2);
TIMER_EnableInt(TIMER1);
/* Open Timer2 in periodic mode, enable interrupt and 4 interrupt ticks per second */
TIMER_Open(TIMER2, TIMER_PERIODIC_MODE, 4);
TIMER_EnableInt(TIMER2);
/* Open Timer3 in periodic mode, enable interrupt and 8 interrupt ticks per second */
TIMER_Open(TIMER3, TIMER_PERIODIC_MODE, 8);
TIMER_EnableInt(TIMER3);
/* Enable Timer0 ~ Timer3 NVIC */
NVIC_EnableIRQ(TMR0_IRQn);
NVIC_EnableIRQ(TMR1_IRQn);
NVIC_EnableIRQ(TMR2_IRQn);
NVIC_EnableIRQ(TMR3_IRQn);
/* Start Timer0 ~ Timer3 counting */
TIMER_Start(TIMER0);
TIMER_Start(TIMER1);
TIMER_Start(TIMER2);
TIMER_Start(TIMER3);
SetTemp=25;
SetHum=50;
ADC_Init();
Init1729();
WriteDDRAM();
WriteDDRAM();
// WriteDDRAM();
// Buzz.B_Buzzer_Model=1;
UART_ClearIntFlag(UART1, UART_ISR_DATWKIF_Msk | UART_ISR_CTSWKIF_Msk | UART_ISR_BUF_ERR_INT_Msk|
UART_ISR_MODEM_INT_Msk| UART_ISR_RLS_INT_Msk);
UART_EnableInt(UART0, (UART_IER_RDA_IEN_Msk));
UART_EnableInt(UART1, (UART_IER_RDA_IEN_Msk));
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
Airbox_190525.7z
(2.17 MB, 下載次數: 34)
2019-8-10 18:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
jiajia86
時間:
2019-12-9 15:40
謝謝分享。
作者:
Qierven
時間:
2019-12-11 10:59
謝謝分享
作者:
舞者人生
時間:
2019-12-18 08:47
本帖最后由 舞者人生 于 2019-12-19 08:24 編輯
參考學習一下,原理圖看不清楚,能不給出清晰版的
作者:
舞者人生
時間:
2019-12-19 08:14
學習參考
作者:
fengye615
時間:
2020-6-4 20:53
參考學習一下,就是原理圖看不清楚
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
美女天天操
|
亚洲欧美日韩电影
|
午夜国产
|
日韩一二区
|
天天射色综合
|
日韩成人在线播放
|
91视频免费黄
|
亚洲人成人一区二区在线观看
|
国产色片
|
激情视频网站
|
综合色播
|
久久这里只有
|
亚洲综合色婷婷
|
99久久99
|
av大片在线观看
|
在线视频 中文字幕
|
婷婷久久综合
|
国产一区二区日韩
|
男女羞羞视频在线
|
国产伦精品一区二区三区照片91
|
日韩亚洲欧美综合
|
日韩精品一区二区三区
|
久久亚洲欧美日韩精品专区
|
在线国产一区二区
|
欧美日韩国产在线观看
|
国产精品免费视频一区
|
免费福利视频一区二区三区
|
日韩精品亚洲专区在线观看
|
99福利视频
|
亚洲社区在线
|
a级片在线观看
|
亚洲精品天堂
|
天天干天天操天天爽
|
在线观看中文字幕av
|
中文字幕av在线一二三区
|
羞羞视频在线观免费观看
|
国产精品成人一区二区三区
|
成人免费视频久久
|
中日韩毛片
|
午夜精品久久久久久久久久久久久
|
久久成人免费
|