当前位置: 首页 > news >正文

佛山网站建设哪个好新手建网站

佛山网站建设哪个好,新手建网站,中国住房和城乡建设部,带数据库的网页怎么制作今日学习一下这款AHT10 温湿度传感器模块#xff0c;给我的OLED手环添加上测温湿度的功能。 文章提供源码、测试工程下载、测试效果图。 目录 AHT10温湿度传感器#xff1a; 特性#xff1a; 连接方式#xff1a; 适用场所范围#xff1a; 程序设计#xff1a; 设…今日学习一下这款AHT10 温湿度传感器模块给我的OLED手环添加上测温湿度的功能。 文章提供源码、测试工程下载、测试效果图。 目录 AHT10温湿度传感器 特性 连接方式 适用场所范围 程序设计 设计目标 程序设计注意点 AHT10代码 主函数代码 测试效果 完整工程下载 AHT10温湿度传感器 下图为AHT温湿度传感器模块它长这样这里的介绍不重要了解就行快速浏览即可 AHT10,新一代温湿度传感器在尺寸与智能方面建立了新的标准 它嵌入了适于回流焊的双列扁平无引脚SMD封装底面4x5mm,高度1.6mm。 传感器偷出经过标定的数字信号标准I2C格式。AHT10配有一个全新设计的ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件其性能己经大大提升甚至超出了前一代传感器的可靠性水平一代温湿度传感器经过改进使其在恶劣环境下的性能更稳定。  特性 1.模块尺寸    16*11mm 2.接口类型    I2C 3.工作电压    1.8-6.0V 4.接口尺寸    4*2.54mm间距 5.湿度精度    典型 士 2% 6.湿度分辨率0.024% 7.温度精度    典型 土 0.3C 8.温度分辨率典型0.01C 9.工作温度    -40°C--85C  连接方式 适用场所范围 暖通空调 、除湿器检测设备自动控制、数据记录器气象站、家电医疗及其他相关湿度检测控制。 程序设计 设计目标 1.使用IIC通信初始化和读取AHT10传感器的温湿度信息并通过OLED打印 2.IIC通信引脚PB3(SCL)   PB4(SDA) 3.使用定时器2周期性读取AHT10的温湿度信息300ms为周期 程序设计注意点 1.上电启动传感器启动后需要先等待40ms设备才开始正常工作然后发送0x71 来获取状态字节 2.获取到校准使能位后查看其是否已校准若已校准则跳过当前步骤若未校准则发送0xe1进行初始化然后发送0x080x00 3.接着开始触发测量测量先发送0xac然后发送0x330x00  4.测量命令发送完成后需要等待80ms用于温湿度的测量之后再发送命令0x71以读取状态寄存器是否处于空闲状态bit7 idle;若是空闲状态可以直接读取之后六个字节的温湿度数值   5.相对湿度和温度转换公式  接受的处理是使用char类型的数组 去接受每个读取到的八位数据然后根据运算公式计算1024*10242^20   int 强制类型转换为int是为了不丢符号  最后还有俩个函数一个是检查一个是复位的   AHT10代码 #include AHT10.h /** brief AHT10初始化函数 param NONE return NONE */ void AHT10Init() {//IIC_Init();GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);GPIO_InitStructure.GPIO_Pin GPIO_Pin_3|GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; //设置为推挽输出GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOB, GPIO_InitStructure);//初始化GPIOBA GPIO_SetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4); //PA4 输出高delay_ms(50);//延时50ms让传感器稳定I2C_Start();I2C_Send_Byte(AHT10_ADDRESS); //获取状态//初始化校准I2C_Send_Byte(0xe1); I2C_Send_Byte(0x08);I2C_Send_Byte(0x00);I2C_Stop(); delay_ms(50);//延时50ms让传感器稳定 }/** brief 检查AHT10是否存在 param NONE return 0存在 1不存在 */ u8 AHT10Check(void) {u8 ack0;I2C_Start();I2C_Send_Byte(AHT10_ADDRESS);ackI2C_Wait_Ack();I2C_Stop(); return ack; }/** brief AHT10软复位 param NONE return NONE */ void AHT10Reset(void) {I2C_Start();I2C_Send_Byte(AHT10_WRITE);I2C_Wait_Ack();I2C_Send_Byte(0xba);I2C_Wait_Ack();I2C_Stop(); }/** brief 检查AHT10读温湿度数据 param *temperature需要读出的温度数据float指针类型,精度范围-0.3C param *humidity需要读出的湿度数据u8指针类型,精度范围-2RH return 0 读数据正常 1读数据失败 */ u8 AHT10ReadData(float *temperature,u8 *humidity) {u8 ack;u32 SRH0,ST0;u8 databuff[6];I2C_Start();I2C_Send_Byte(AHT10_WRITE);I2C_Wait_Ack();I2C_Send_Byte(0xac);I2C_Wait_Ack();I2C_Send_Byte(0x33);I2C_Wait_Ack();I2C_Send_Byte(0x00);I2C_Wait_Ack();I2C_Stop(); delay_ms(80);//延时一会等待数据读出I2C_Start();I2C_Send_Byte(AHT10_READ);I2C_Wait_Ack();ackI22C_Read_Byte(1);if((ack0x40)0){databuff[0]I22C_Read_Byte(1);databuff[1]I22C_Read_Byte(1);databuff[2]I22C_Read_Byte(1);databuff[3]I22C_Read_Byte(1);databuff[4]I22C_Read_Byte(0);I2C_Stop();SRH(databuff[0]12)(databuff[1]4)(databuff[2]4);ST((databuff[2]0X0f)16)(databuff[3]8)(databuff[4]);*humidity(int)(SRH*100.0/1024/10240.5);*temperature((int)(ST*2000.0/1024/10240.5))/10.0-50;return 0;}I2C_Stop(); return 1; }//初始化IIC void I22C_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); //使能GPIOB时钟GPIO_InitStructure.GPIO_Pin GPIO_Pin_3|GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP ; //推挽输出GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOB, GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4); //PB6,PB7 输出高 } //产生IIC起始信号 void I2C_Start(void) {SDA_OUT(); //sda线输出IIC_SDA1; IIC_SCL1;delay_us(4);IIC_SDA0;//START:when CLK is high,DATA change form high to low delay_us(4);IIC_SCL0;//钳住I2C总线准备发送或接收数据 } //产生IIC停止信号 void I2C_Stop(void) {SDA_OUT();//sda线输出IIC_SCL0;IIC_SDA0;//STOP:when CLK is high DATA change form low to highdelay_us(4);IIC_SCL1; IIC_SDA1;//发送I2C总线结束信号delay_us(4); } //等待应答信号到来 //返回值1接收应答失败 // 0接收应答成功 u8 I2C_Wait_Ack(void) {u8 ucErrTime0;SDA_IN(); //SDA设置为输入 IIC_SDA1;delay_us(1); IIC_SCL1;delay_us(1); while(READ_SDA){ucErrTime;if(ucErrTime250){I2C_Stop();return 1;}}IIC_SCL0;//时钟输出0 return 0; } //产生ACK应答 void I2C_Ack(void) {IIC_SCL0;SDA_OUT();IIC_SDA0;delay_us(2);IIC_SCL1;delay_us(2);IIC_SCL0; } //不产生ACK应答 void I2C_NAck(void) {IIC_SCL0;SDA_OUT();IIC_SDA1;delay_us(2);IIC_SCL1;delay_us(2);IIC_SCL0; } //IIC发送一个字节 //返回从机有无应答 //1有应答 //0无应答 void I2C_Send_Byte(u8 txd) { u8 t; SDA_OUT(); IIC_SCL0;//拉低时钟开始数据传输for(t0;t8;t){ //IIC_SDA(txd0x80)7;if((txd0x80)7)IIC_SDA1;elseIIC_SDA0;txd1; delay_us(2); //对TEA5767这三个延时都是必须的IIC_SCL1;delay_us(2); IIC_SCL0; delay_us(2);} } //读1个字节ack1时发送ACKack0发送nACK u8 I22C_Read_Byte(unsigned char ack) {unsigned char i,receive0;SDA_IN();//SDA设置为输入for(i0;i8;i ){IIC_SCL0; delay_us(2);IIC_SCL1;receive1;if(READ_SDA)receive; delay_us(1); } if (!ack)I2C_NAck();//发送nACKelseI2C_Ack(); //发送ACK return receive; }#ifndef _AHT10_h_ #define _AHT10_h_#include headfire.h #define BITBAND(addr, bitnum) ((addr 0xF0000000)0x2000000((addr 0xFFFFF)5)(bitnum2)) #define MEM_ADDR(addr) *((volatile unsigned long *)(addr)) #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum)) //IO口地址映射 //输出寄存器 #define GPIOA_ODR_Addr (GPIOA_BASE12)//0x4001280C #define GPIOB_ODR_Addr (GPIOB_BASE12)//0x40010C0C //输入寄存器 #define GPIOA_IDR_Addr (GPIOA_BASE8)//0x40010808 #define GPIOB_IDR_Addr (GPIOB_BASE8)//0x40010C08 //IO口操作,只对单一的IO口! //确保n的值小于16! #define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n)//输出 #define PAin(n) BIT_ADDR (GPIOA_IDR_Addr,n)//输入#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n)//输出 #define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n)//输入#define SDA_IN() {GPIOB-CRL0XFFF0FFFF;GPIOB-CRL|(u32)816;} #define SDA_OUT() {GPIOB-CRL0XFFF0FFFF;GPIOB-CRL|(u32)316;}//IO操作函数 #define IIC_SCL PBout(3) //SCL #define IIC_SDA PBout(4) //SDA #define READ_SDA PBin(4) //输入SDA #define AHT10_ADDRESS 0x70 #define AHT10_WRITE 0x70 #define AHT10_READ 0x71/*****************函数声明******************/ extern void AHT10Init(void); extern u8 AHT10Check(void); extern void AHT10Reset(void); extern u8 AHT10ReadData(float *temperature,u8 *humidity);//IIC所有操作函数 void I22C_Init(void); //初始化IIC的IO口 void I2C_Start(void); //发送IIC开始信号 void I2C_Stop(void); //发送IIC停止信号 void I2C_Send_Byte(u8 txd); //IIC发送一个字节 u8 IIC_Read_Byte(unsigned char ack);//IIC读取一个字节 u8 I2C_Wait_Ack(void); //IIC等待ACK信号 void I2C_Ack(void); //IIC发送ACK信号 void IIC_NAck(void); //IIC不发送ACK信号void I2C_Write_One_Byte(u8 daddr,u8 addr,u8 data); u8 I2C_Read_One_Byte(u8 daddr,u8 addr); //读1个字节ack1时发送ACKack0发送nACK u8 I22C_Read_Byte(unsigned char ack);#endif主函数代码 #include main.hfloat temp; u8 hum; int humm,temper; uint16_t AHT10_cnt,AHT10_flag; char buf[30];int main(void) { init_ALL(); //初始化所有函数while(1){ if(AHT10_flag1){AHT10_flag0;AHT10ReadData(temp,hum);tempertemp*10;hummhum;OLED_ShowCHinese(0,0,0); //打印中文“温”OLED_ShowCHinese(16,0,2); //打印中文“度”sprintf(buf,: %d.%d,temper/10,temper%10); OLED_ShowString(32,0,(u8 *)buf,16); OLED_ShowCHinese(0,2,1); //打印中文“湿”OLED_ShowCHinese(16,2,2); //打印中文“度”sprintf(buf,: %d ,humm); OLED_ShowString(32,2,(u8 *)buf,16); }} }//初始化所有函数 void init_ALL(void) {SysTick_Init(72); //初始化滴答计时器Timer2_Init(); //初始化定时器2i2c_GPIO_Config(); //IIC初始化OLED_Init(); //初始化OLED屏幕OLED_Clear(); //清空屏幕数据AHT10Init(); //初始化温湿度传感器}//定时器2中断服务函数 void TIM2_IRQHandler(void) {if (TIM_GetITStatus(TIM2, TIM_IT_Update) SET){ if(AHT10_cnt30) //每300ms刷新一次温湿度数据{AHT10_cnt0;AHT10_flag1;}TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//清出中断寄存器标志位用于退出中断} } 测试效果 完整工程下载 https://download.csdn.net/download/qq_64257614/88248711?spm1001.2014.3001.5503
http://www.w-s-a.com/news/891294/

相关文章:

  • 网站与微信区别wordpress 站内信
  • 宁夏网站开发设计说明书源码下载脚本之家
  • 邱县做网站百度搜索排名机制
  • 运城个人网站建设智慧团建系统官方网站登录
  • 公司营业执照可以做几个网站一家专门做母婴的网站
  • 网站建设商标属于哪个类别搜狗seo快速排名公司
  • 织梦做商城网站企业网络建站
  • 网站后期维护都有什么wordpress首页加图片
  • 展会网站怎么做网页设计与制作教程版徐洪亮课后答案
  • 石景山网站建设设计公司建设网站怎么建立服务器
  • 本地生活服务平台app网站关键词优化原理
  • 建网站的公司叫什么重庆论坛建站模板
  • 湖北网站制作公司银川网站建设哪家不错
  • 网站后台演示地址服装网站建设公司推荐
  • 湖北钟祥建设局网站旅游哪个网站最好
  • 浙江建设工程信息网站辽宁建设工程信息网场内业绩什么意思
  • 郑州做网站公司 汉狮网络专业图片搜集网站怎么做
  • 网站托管是什么品牌推广营销平台
  • 制作网站的难度贵州省兴义市建设局网站
  • 永春建设局网站室内设计师培训班学费多少
  • 做仿站如何获取网站源码windows2012做网站
  • 网站建设最好的公司东莞外贸网站
  • 普兰店网站建设一般做网站什么价格
  • 网站建设的发展目标甘肃网站设计公司
  • 常州西站建设规划室内装修设计学校哪里好
  • 大连网站制作选择ls15227如何编辑网站
  • 网站发稿平台迪士尼网站是谁做的
  • 常州有哪些好的网站建设案例wordpress 360 插件
  • 模板网站有后台么柳城网站建设
  • 地方门户网站制作一级做c爱片的网站