STM32F103開發板 DHT11溫濕度DS18B20 氣體MQ-2光敏聲控雨滴傳感器實驗程序**--------------------------------------------------------------------------------------------------------** Created by: FiYu** Created date: 2015-12-12** Version: 1.0** Descriptions: DHT11溫濕度傳感器實驗 **--------------------------------------------------------------------------------------------------------** Modified by: FiYu** Modified date: ** Version: ** Descriptions: ** Rechecked by: **********************************************************************************************************/#include "stm32f10x.h"#include "delay.h"#include "dht11.h"#include "usart.h"DHT11_Data_TypeDef DHT11_Data;/************************************************************************************** * 描 述 : GPIO/USART1初始化配置 * 入 參 : 無 * 返回值 : 無 **************************************************************************************/void GPIO_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure; /* Enable the GPIO_LED Clock */ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO , ENABLE); GPIO_DeInit(GPIOB); //將外設GPIOA寄存器重設為缺省值 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出 GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_DeInit(GPIOA); //將外設GPIOA寄存器重設為缺省值 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽輸出 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOB , GPIO_Pin_9); //初始狀態,熄滅指示燈LED1}/************************************************************************************** * 描 述 : 串口顯示實時溫濕度 * 入 參 : 無 * 返回值 : 無 **************************************************************************************/void DHT11_SCAN(void){ if( Read_DHT11(&DHT11_Data)==SUCCESS) { printf("\r\n讀取DHT11成功!\r\n\r\n濕度為%d.%d %RH ,溫度為 %d.%d℃ \r\n",\ DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci); //printf("\r\n 濕度:%d,溫度:%d \r\n" ,DHT11_Data.humi_int,DHT11_Data.temp_int); } else { printf("Read DHT11 ERROR!\r\n"); }}/************************************************************************************** * 描 述 : MAIN函數 * 入 參 : 無 * 返回值 : 無 **************************************************************************************/int main(void){ SystemInit(); //設置系統時鐘72MHZ GPIO_Configuration(); USART1_Init(); //初始化配置TIM DHT11_GPIO_Config(); // 初始化溫濕度傳感器PB1引腳初始時為推挽輸出 GPIO_ResetBits(GPIOB , GPIO_Pin_9); delay_ms(500); while(1) { GPIO_SetBits(GPIOB , GPIO_Pin_9); DHT11_SCAN(); //實時顯示溫濕度 delay_ms(1500); } }
上傳時間: 2022-05-03
上傳用戶:得之我幸78
宏晶 STC15F2K60S2開發板配套軟件源碼 基礎例程30例/**********************基于STC15F2K60S2系列單片機C語言編程實現使用如下頭文件,不用另外再包含"REG51.H"#include <STC15F2K60S2.h>***********************/#include "STC15F2K60S2.H"//#include "REG51.H" //sfr P4 = 0xC0;#define uint unsigned int #define uchar unsigned char /**********************引腳別名定義***********************/sbit SEL=P4^3; // LED和數碼管選擇引腳 高:LED有效 低:數碼管有效 // SEL連接的單片機引腳必須為帶有上拉電阻的引腳 或將其直接連接VCC#define data P2 // 數據輸入定義 /**********************函數名稱:Delay_1ms功能描述:延時入口參數:unsigned int t 表示要延時t個1ms 出口參數:無備注:通過參數t,控制延時的時間長短***********************/void Delay_1ms(uint t){ uchar j; for(;t>0;t--) for(j=110;j>0;j--) ;}/**********************函數名稱:Led_test功能描述:對8個二極管進行測試,依次輪流點亮8個二極管入口參數:無出口參數:無備注: ***********************/void Led_test(){ uchar G_value=0x01; // 給變量賦初值 SEL=1; //高電平LED有效 while(1) { data=G_value; Delay_1ms(10000); G_value=G_value<<1; if(G_value==0x00) { data=G_value; Delay_1ms(10000); G_value=0x01; } }}/***********************主函數************************/void main(){ ///////////////////////////////////////////////// //注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關的IO口均為 // 高阻態,需將這些口設置為準雙向口或強推挽模式方可正常使用 //相關IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 // P2.3/P2.7/P3.7/P4.2/P4.4/P4.5 ///////////////////////////////////////////////// P4M1=0x00; P4M0=0x00; P2M0=0xff; P2M1=0x00; //將P2設為推挽 Led_test(); }
標簽: STC15F2K60S2
上傳時間: 2022-05-03
上傳用戶:
本設計由數據顯示模塊、溫度采集模塊、時間處理模塊和調整設置模塊四個模塊組成。系統以AT89S52單片機為控制器,以串行時鐘日歷芯片DS1302記錄日歷和時間,它可以對年、月、日、時、分、秒進行計時,還具有閏年補償等多種功能。溫度采集選用DS18B20芯片,萬年歷采用直觀的數字顯示,數據顯示采用1602A液晶顯示模塊,可以在LCD上同時顯示年、月、日、星期、時、分、秒,還具有時間校準等功能。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優點,具有廣闊的市場前景。//*******************主函數**************************//***************************************************void main(){uint i;lcd_init(); //調用液晶屏初始化子函數ds1302_init(); //調用DS1302時鐘的初始化子函數for(i=0;i<RsBuf_N;i++)RsBuf[i]='0';Uart_init(); //調用定時計數器的設置子函數while(1) //無限循環下面的語句:{ keyscan(); //調用鍵盤掃描子函數GPS_TIME();//獲取gps時間 }}
上傳時間: 2022-05-07
上傳用戶:
本設計由數據顯示模塊、溫度采集模塊、時間處理模塊和調整設置模塊四個模塊組成。系統以AT89S52單片機為控制器,以串行時鐘日歷芯片DS1302記錄日歷和時間,它可以對年、月、日、時、分、秒進行計時,還具有閏年補償等多種功能。溫度采集選用DS18B20芯片,萬年歷采用直觀的數字顯示,數據顯示采用1602A液晶顯示模塊,可以在LCD上同時顯示年、月、日、星期、時、分、秒,還具有時間校準等功能。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優點,具有廣闊的市場前景。 設計要求:(1)用4個按鍵實現所有功能,計時準確。(2)可以設定鬧鐘功能。(3)有陰歷功能,平年閏年準確無誤。(4)液晶能顯示年、月、日、星期、時、分、秒、溫度。//*******************主函數**************************//***************************************************void main(){uint i;lcd_init(); //調用液晶屏初始化子函數ds1302_init(); //調用DS1302時鐘的初始化子函數for(i=0;i<RsBuf_N;i++)RsBuf[i]='0';Uart_init(); //調用定時計數器的設置子函數while(1) //無限循環下面的語句:{ keyscan(); //調用鍵盤掃描子函數GPS_TIME(); }}
上傳時間: 2022-05-15
上傳用戶:
用的是沁恒CH552e淘寶買的評估板,USB中斷上傳程序用的是沁恒提供的做了些修改。程序使用2個端點一個,端點1作為普通鍵盤,端點2作為多媒體按鍵,有詳細注釋多媒體按鍵報告,以下是主函數內容。/****主函數****/main(){ CfgFsys( ); //CH552時鐘選擇配置 mDelaymS(5); //修改主頻等待內部晶振穩定,必加 ConfigT0(2); //配置2ms T0中斷 USBDeviceInit(); //USB設備模式初始化 EA = 1; //允許單片機中斷 UEP1_T_LEN = 0; //預使用發送長度一定要清空 UEP2_T_LEN = 0; //清空端點2發送長度 FLAG = 0; //清空USB中斷傳輸完成標志 Ready = 0; LED_VALID = 1; //給一個默認值 P1_DIR_PU &= 0xE0; //在MOD_OC為0時 p1.5 p1.6 P1.7為推挽輸出 P1_MOD_OC = P1_MOD_OC & ~0xE0; //3個口的bit4 = 0 p1.5 p1.6 P1.7設置為推挽輸出 P1_DIR_PU = P1_DIR_PU | 0xE0; //3個口的bit4 = 1 p1.5 p1.6 P1.7設置為輸出 key1 = 1; key2 = 1; key3 = 1; while(1) { KeyDrive(); //按鍵驅動 }}
上傳時間: 2022-05-15
上傳用戶:
#include "NUC1xx.h"#include "Hal.h"#include "pwm.h"//wait current PWM cycle done, otherwise there maybe short pulse on FETvoid PWM_Stop(U8 ch){ switch(ch) { case PWM_CHANNEL_A: PWMA->u32CNR1 = 0; PWMA->u32CMR1 = 0; while(PWMA->u32PDR1 != 0); break; case PWM_CHANNEL_B: PWMA->u32CNR2 = 0; PWMA->u32CMR2 = 0; while(PWMA->u32PDR2 != 0); break; case PWM_CHANNEL_C: PWMA->u32CNR3 = 0; PWMA->u32CMR3 = 0; while(PWMA->u32PDR3 != 0); break; default: while(1); } PWMA->u32POE &= ~(1<<ch); PWMA->u32PCR &= ~(1<<(ch*8));}
上傳時間: 2022-06-01
上傳用戶:kingwide
This manual documents the Microcontroller profile of version 7 of the ARM? Architecture, the ARMv7-M architecture profile. For short definitions of all the ARMv7 profiles see About the ARMv7 architecture, and architecture profiles on page A1-20.ARMv7 is documented as a set of architecture profiles. The profiles are defined as follows: ARMv7-A The application profile for systems supporting the ARM and Thumb instruction sets, and requiring virtual address support in the memory management model. ARMv7-R The realtime profile for systems supporting the ARM and Thumb instruction sets, and requiring physical address only support in the memory management model ARMv7-M The microcontroller profile for systems supporting only the Thumb instruction set, and where overall size and deterministic operation for an implementation are more important than absolute performance. while profiles were formally introduced with the ARMv7 development, the A-profile and R-profile have implicitly existed in earlier versions, associated with the Virtual Memory System Architecture (VMSA) and Protected Memory System Architecture (PMSA) respectively.
標簽: arm
上傳時間: 2022-06-02
上傳用戶:
采用C代碼編寫的8位LED流水燈程序,附件是用PROTEUS設計的仿真電路工程,直接可以使用。請用Proteus 8以上版本。下面是驗證好的源代碼,供大家參考學習:------------------------------------------#include <reg51.h>void main(){LED;t0,t1,t2,t3,t4,t5,t6,t7;LED=P1;P1=0xFF;while(10){P1=0xFE;for(t0=10;t0<25000;t0++){;}P1=0xFD;for(t1=0;t1<25000;t1--) {;}P1=0xFB;for(t2=0;t2<25000;t2++) {;}P1=0xF7;for(t3=0;t3<25000;t3--) {;}P1=0xEF;for(t4=0;t4<25000;t4++) {;}P1=0xDF;for(t5=0;t5<25000;t5--){;}P1=0xBF;for(t6=0;t6<25000;t6++){;}P1=0x7F;for(t7=0;t7<25000;t7++){;}P1=0xBF;for(t6=0;t6<25000;t6++){;}P1=0xDF;for(t5=0;t5<25000;t5++){;}P1=0xEF;for(t4=0;t4<25000;t4++) {;}P1=0xF7;for(t3=0;t3<25000;t3++) {;}P1=0xFB;for(t2=0;t2<25000;t2++) {;}P1=0xFD;for(t1=0;t1<25000;t1++){;}P1=0xFE;}} ----------------------------------------------------
上傳時間: 2022-06-09
上傳用戶:zhanglei193
筆者詳細的談論許多在整合里會出現的微妙思路,如:如何把計數器/定時器整合在某個步驟里,從何提升模塊解讀性和擴展性。此外,在整合篇還有一個重要的討論,那就是 for,while 和 do ... while 等循環。這些都是一些順序語言的佼佼者,可是在 Verilog HDL 語言里它們就黯然失色。整合篇所討論的內容不單是循環而已,整合篇的第二個重點是理想時序和物理時序的整合。說實話,筆者自身也認為要結合“兩個時序”是一件苦差事,理想時序是 Verilog的行為,物理時序則是硬件的行為。不過在它們兩者之間又有微妙的 “黏糊點”,只要稍微利用一下這個“黏糊點”我們就可以非常輕松的寫出符合“兩個時序”的模塊,但是前提條件是充足了解“理想時序”。整合篇里還有一個重點,那就是“精密控時”。實現“精密控時”最笨的方法是被動式的設計方法,亦即一邊仿真,一邊估算時鐘的控制精度。這顯然是非?!皞鹘y”而且“古老”的方法,雖然有效但往往就是最費精神和時間的。相反的,主動式是一種講求在代碼上和想象上實現“精密控時”的設計方法。主動式的設計方法是基于“理想時序”“建模技巧”和“仿順序操作”作為后盾的整合技巧。不說筆者吹牛,如果采用主動式的設計方法驅動 IIC 和 SDRAM 硬件,任何一段代碼都是如此合情合理。
標簽: verilogl
上傳時間: 2022-06-13
上傳用戶:
應廣單片機 MINI-C編程指南.Mini-c總結文檔一、缺點:(一)函數不能帶參數.解決方法:通過A或全局變量進行參數傳遞;(二)不能使用for循環解決方法:用while循環代替for循環.(三)數組和指針功能弱化解決方法:① 使用rom查表② 使用ram查表(四)不支持全局變量定義同時進行初始化解決方法: 在初始化的時候記得對全局變量進行初始化. (五)Bit變量只支持寫入0,或1,不支持直接bit變量取反解決方法 :if(uBitFlag){ uBitFlag=0;}Else{ uBitFlag=1; } 二、優點:(一)函數不帶參數,可以節省堆??臻g(二)支持ROM查表(三).delay時間非常準確,無需手工計算(四)支持bit變量,節省ram空間,支持字,字節拆分.(五)燒錄支持滾動碼寫入.(六)端口配置可以使用腳本(七) 代碼自動生成
標簽: 單片機
上傳時間: 2022-06-17
上傳用戶: