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

什么站做咨询网站好南宁做网站科技公司

什么站做咨询网站好,南宁做网站科技公司,烟台论坛,网站制作一般多少钱一、项目介绍 当前介绍的项目是基于 STM32F103ZET6 系列 MCU 设计的数显热水器#xff0c;通过显示屏来显示热水器的温度及其工作状态#xff0c;通过 PT100 传感器来检测热水器的温度变化#xff0c;并通过电加热片实现加热过程#xff0c;以达到控制热水器温度的目的。 …一、项目介绍 当前介绍的项目是基于 STM32F103ZET6 系列 MCU 设计的数显热水器通过显示屏来显示热水器的温度及其工作状态通过 PT100 传感器来检测热水器的温度变化并通过电加热片实现加热过程以达到控制热水器温度的目的。 二、设计流程 2.1 硬件选型 STM32F103ZET6 系列 MCUOLED 显示屏PT100 温度传感器电加热片继电器 2.2 软件设计 1显示屏 使用 OLED 显示屏来显示热水器的温度及其工作状态通过 SPI 接口与 STM32 芯片进行通讯。设计温度值及其单位、热水器工作状态等。 2温度传感器 使用 PT100 温度传感器来检测热水器内部温度的变化并将数据通过 ADC 转换后传输给 STM32 芯片以实现对热水器加热过程的控制。 3电加热片 使用电加热片模拟热水器加热过程通过继电器控制电加热片的通断以调节热水器的温度。 4控制系统 通过 STM32 芯片来实现对热水器的控制读取温度传感器的数据。 三、代码设计 3.1 OLED显示屏 1SPI 接口初始化 需要对 STM32F103ZET6 的 SPI 接口进行初始化配置设置相关的时钟和模式使其能够与 OLED 显示屏进行通讯。 RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE); // 打开SPI3时钟 SPI_InitTypeDef spi_init_type; spi_init_type.SPI_Direction SPI_Direction_2Lines_FullDuplex; spi_init_type.SPI_Mode SPI_Mode_Master; spi_init_type.SPI_DataSize SPI_DataSize_8b; spi_init_type.SPI_CPOL SPI_CPOL_Low; spi_init_type.SPI_CPHA SPI_CPHA_1Edge; spi_init_type.SPI_NSS SPI_NSS_Soft; spi_init_type.SPI_BaudRatePrescaler SPI_BaudRatePrescaler_32; // 设置 SPI 时钟频率为 72 MHz / 32 2.25MHz spi_init_type.SPI_FirstBit SPI_FirstBit_MSB; SPI_Init(SPI3, spi_init_type); SPI_Cmd(SPI3, ENABLE);2OLED 显示屏初始化 以下是 OLED 显示屏的初始化代码 void OLED_Init(void) {GPIO_SetBits(GPIOB, GPIO_Pin_6); //RST SETGPIO_ResetBits(GPIOB, GPIO_Pin_6); //RST RESETGPIO_SetBits(GPIOB, GPIO_Pin_6); //RST SETwrite_command(0xAE); // 关闭显示write_command(0xD5); // 设置时钟分频因子,震荡频率write_command(0x80); // 分频因子1 ,震荡频率(fosc)8MHzwrite_command(0xA8); // 设置驱动路数MUX(复用方式)write_command(0x1F); // 1/32 duty (0x0F~0x3F)write_command(0xD3); // 设置显示偏移write_command(0x00); // 不偏移write_command(0x40); // 设置显示开始行[5:0], 对于设置了32行的液晶// 这里的值为0表示从0行开始显示write_command(0x8D); // 对比度设置write_command(0x14); // AHB参考电压256等分 移位[3:0]100[n,1/256]write_command(0x20); // 水平方向上的寻址模式write_command(0x00); // 垂直方向上的寻址模式write_command(0xA1); // 设置段再映射write_command(0xC0); // 设置COM扫描方向write_command(0xDA); // 设置COM引脚硬件配置write_command(0x12);write_command(0x81); // 对比度设置write_command(0xBF); // 设置电荷泵电压write_command(0xD9); // 设置预充电周期write_command(0xF1);write_command(0xDB); // 设置VCOMH电压倍率write_command(0x40);write_command(0xAF); // 打开显示OLED_Clear(); // 清屏 }3OLED 显示函数 接下来编写 OLED 显示函数实现字符和数字的显示功能。 void OLED_show_string(uint8_t x, uint8_t y, char *str) {uint8_t i 0;while (str[i] ! \0) {OLED_show_char(x, y i * 8, str[i]);i;} }void OLED_show_char(uint8_t x, uint8_t y, char ch) {uint8_t c ch - 32;if (c 96) return;uint8_t* buffer (uint8_t*)oled_buffer;uint8_t cx, cy;for (cy 0; cy 8; cy) {uint8_t line font[c][cy];for (cx 0; cx 6; cx) {if (line 0x1) {buffer[(y cy) * OLEDWIDTH x cx] 1;} else {buffer[(y cy) * OLEDWIDTH x cx] 0;}line 1;}}OLED_Draw_Pixel(x 6, y, 0);OLED_Draw_Pixel(x 6, y 1, 0);OLED_Draw_Pixel(x 6, y 6, 0);OLED_Draw_Pixel(x 6, y 7, 0); }4结果显示 在代码中调用 OLED_show_string 函数和 OLED_show_char 函数显示数值和字符。 OLED_Init(); OLED_Clear(); OLED_show_string(0, 0, HELLO WORLD!); OLED_show_string(0, 16, TEMP:20 C);3.2 测温代码 1引脚配置 需要对 STM32F103ZET6 的 IO 口进行配置将用于连接 PT100 温度传感器的引脚设置为输入模式。 这里以 PA0 引脚作为 PT100 传感器的连接口即 PT100 三线连接中的 R3 端代码如下 GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU; // 上拉输入模式 GPIO_Init(GPIOA, GPIO_InitStructure);2ADC 配置 接下来需要对 STM32F103ZET6 的 ADC 进行初始化配置使其能够读取 PT100 温度传感器输出的电压信号。 这里以 ADC1 通道5 作为读取口代码如下 ADC_InitTypeDef ADC_InitStructure; RCC_ADCCLKConfig(RCC_PCLK2_Div6); // 设置 ADC 时钟为 PCLK2 的 1/6 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); // 打开 ADC1 时钟 ADC_DeInit(ADC1); // 初始化 ADC1 ADC_InitStructure.ADC_Mode ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode DISABLE; ADC_InitStructure.ADC_ContinuousConvMode ENABLE; // 连续转换模式 ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel 1; ADC_Init(ADC1, ADC_InitStructure); ADC_Cmd(ADC1, ENABLE); // 开启 ADC13温度转换函数 根据 PT100 温度传感器输出电压与温度的关系可使用线性函数计算出温度值。 转换公式如下 Rt (Vref - Vpt) / Ipt // Rt 为 PT100 的阻值Vref 为基准电压Vpt 为 PT100 输出电压Ipt 为 PT100 驱动电流 Temp a * Rt b // Temp 为温度值a 和 b 为经过拟合后的系数其中 Rt 的计算需要使用差分运算放大器进行转换这里不再赘述。假设已经得到 Rt 值则温度转换函数代码如下 float PT100_Get_Temperature(float Rt) {float a 3.9083e-3f, b -5.775e-7f, R0 100.0f; // 根据实际数据进行拟合得到 a、b 和 R0 的值float Tem, delta;delta pow(Rt / R0, 2) a * (Rt / R0) b;Tem (delta 0) ? (-R0*a sqrt(delta)) / (2 * b) : 0;return Tem; }4数据采集 根据差分放大器输出的电压值得到 PT100 温度传感器的阻值再根据阻值计算出实际温度最后将温度值通过串口打印出来。以下是数据采集代码 float ADC_Get_Voltage(void) {float voltage 0;uint16_t adc_val 0;ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_239Cycles5); // 配置 ADC 通道5ADC_SoftwareStartConvCmd(ADC1, ENABLE); // 使能软件触发 ADC 转换while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)); // 等待转换结束adc_val ADC_GetConversionValue(ADC1); // 读取 ADC 转换结果voltage (float)adc_val * 3.3f / 4096; // 计算基准电压return voltage; }float PT100_Get_Rt(float Vpt) {float Rsource 10e3f, Rpt 100.0f; // Rsource 为差分放大器输出电阻Rpt 为 PT100 阻值float Ipt (3.3f - Vpt) / Rsource; // 计算 PT100 驱动电流float Rt (3.3f - Vpt) / Ipt; // 根据欧姆定律计算出 PT100 阻值return Rt; }void USART1_Send_Float(float f) {char buf[32];sprintf(buf, %.1f\r\n, f); // 转换为字符串while (*buf){USART_SendData(USART1, *buf);while (USART_GetFlagStatus(USART1, USART_FLAG_TC) RESET);buf;} }int main(void) {...while (1){float Vpt ADC_Get_Voltage(); // 获取差分放大器输出电压float Rt PT100_Get_Rt(Vpt); // 计算 PT100 阻值float Temp PT100_Get_Temperature(Rt); // 根据阻值计算温度USART1_Send_Float(Temp); // 将温度值打印到串口delay_ms(500);}... }
http://wiki.neutronadmin.com/news/239506/

相关文章:

  • 织梦网站栏目对应首页app 网站开发公司
  • 唐山官方网站建设南宁关键词排名优化外包
  • 包头市做网站公司自己建网站做外贸
  • 网站建设与管理 教材php房产中介网站源码
  • vue和react可以做pc网站吗网站建设后台管理便捷
  • 网站建设规划表o2o网站开发公司
  • 不良网站举报中心官网网站建设餐饮
  • 温州网站优化案例精准ip地址查询工具
  • 普洱做网站的报价海口双语网站建设
  • 遂宁网站建设五金公司宣传册设计样本
  • 专业做民宿的网站网站还没有做可以备案吧
  • 网站电脑端和手机端在线室内设计网站
  • 沙元浦做网站的公司六安网站优化
  • 中山企业营销型网站制作小莉帮忙郑州阳光男科医院
  • 丽水网站建设企业自建微网站服务器
  • 成都成华网站建设网站反链如何做
  • c 网站开发调试东莞制作企业网站公司
  • 北京城乡和住房建设部网站关于做美食的小视频网站
  • 安乡网站制作男女做暖暖视频免费网站
  • 网站标题具体怎样优化微商平台app
  • 网站文章模块音乐网站建设的目的
  • 青岛网站制作流程电子商务网络营销方式
  • 浙江省建设诚信系统网站建设拍卖网站
  • 郑州网站推广招聘天津老区建设促进会网站
  • 电子商务网站版面布局wordpress媒体库 ftp
  • 南京网站制作案例建设网站 宣传平台
  • 做网站的没有进项票怎么办用自己电脑做服务器 网站吗
  • 手机版的网站开发上海房产网签合同查询
  • 郑州哪里有做网站的企业建站官网
  • 做网站运营需要培训吗高端婚纱摄影网站