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的行为,物理时序则是硬件的行为。不过在它们两者之间又有微妙的 “黏糊点”,只要稍微利用一下这个“黏糊点”我们就可以非常轻松的写出符合“两个时序”的模块,但是前提条件是充足了解“理想时序”。整合篇里还有一个重点,那就是“精密控时”。实现“精密控时”最笨的方法是被动式的设计方法,亦即一边仿真,一边估算时钟的控制精度。这显然是非常“传统”而且“古老”的方法,虽然有效但往往就是最费精神和时间的。相反的,主动式是一种讲求在代码上和想象上实现“精密控时”的设计方法。主动式的设计方法是基于“理想时序”“建模技巧”和“仿顺序操作”作为后盾的整合技巧。不说笔者吹牛,如果采用主动式的设计方法驱动 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; } 二、优点:(一)函数不带参数,可以节省堆栈空间(二)支持ROM查表(三).delay时间非常准确,无需手工计算(四)支持bit变量,节省ram空间,支持字,字节拆分.(五)烧录支持滚动码写入.(六)端口配置可以使用脚本(七) 代码自动生成
标签: 单片机
上传时间: 2022-06-17
上传用户: