完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include <STM32f10x_lib.h>
#include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" #include "exti.h" #include "wdg.h" #include "timer.h" #include "lcd.h" #include "rtc.h" #include "wkup.h" #include "adc.h" #include "dma.h" #include "24cxx.h" #include "flash.h" #include "touch.h" #include "24l01.h" #include "mmc_sd.h" #include "remote.h" #include "ds18b20.h" int main(void) { u8 key; u16 adcx; float temp1; float temperate; short temp; Stm32_Clock_Init(9);//系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口1初始化 LCD_Init(); //初始化液晶 LED_Init(); Adc_Init(); //LED初始化 Remote_Init(); //初始化红外接收 while(1) { if(Remote_Rdy) { key=Remote_Process(); switch(key) { case 162: LCD_ShowString(86,150, "POWER"); OINT_COLOR=BLUE;//设置字体为蓝色 LCD_ShowString(60,170,"TEMP_VAL:"); LCD_ShowString(60,190,"TEMP_VOL:0.000V"); LCD_ShowString(60,210,"TEMPERATE:00.00C"); while(1) { adcx=Get_Temp(); LCD_ShowNum(132,170,adcx,4,16);//显示ADC的值 temp1=(float)adcx*(3.3/4096); temperate=temp1;//保存温度传感器的电压值 adcx=temp1; LCD_ShowNum(132,190,adcx,1,16); //显示电压值整数部分 temp1-=(u8)temp1; //减掉整数部分 LCD_ShowNum(148,190,temp1*1000,3,16);//显示电压小数部分 temperate=(1.43-temperate)/0.0043+25;//计算出当前温度值 LCD_ShowNum(140,210,temperate,2,16); //显示温度整数部分 temperate-=(u8)temperate; LCD_ShowNum(164,210,temperate*100,2,16);//显示温度小数部? LED0=!LED0; delay_ms(250); } break; case 226: LCD_ShowString(86,150, "ALIEN "); while(DS18B20_Init())//初始化DS18B20,兼检测18B20 { LCD_ShowString(60,170,"DS18B20 Check Failed!"); delay_ms(500); LCD_ShowString(60,190,"Please Check! "); delay_ms(500); } LCD_ShowString(60,170,"DS18B20 Ready! "); OINT_COLOR=BLUE;//设置字体为蓝色 LCD_ShowString(60,190, "Temperate: . C"); while(1) { temp=DS18B20_Get_Temp(); if(temp<0) { temp=-temp; LCD_ShowChar(140,150,'-',16,0);//显示负号 } LCD_ShowNum(148,190,temp/10,2,16);//显示温度值 LCD_ShowNum(172,190,temp%10,1,16);//显示温度值 delay_ms(200); } break; } } } } |
|
相关推荐
3个回答
|
|
你去掉while(1)单执行一次那不就得了吗?
|
|
|
|
|
|
|
|
如果我改成这样,温度能切换 ,但读出来的温度也是不准确,不能连续扫描
#include #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" #include "exti.h" #include "wdg.h" #include "timer.h" #include "lcd.h" #include "rtc.h" #include "wkup.h" #include "adc.h" #include "dma.h" #include "24cxx.h" #include "flash.h" #include "touch.h" #include "24l01.h" #include "mmc_sd.h" #include "remote.h" #include "ds18b20.h" int main(void) { u8 key; u16 adcx; float temp1; float temperate; short temp; Stm32_Clock_Init(9);//系统时钟设置 delay_init(72);//延时初始化 uart_init(72,9600); //串口1初始化 LCD_Init();//初始化液晶 LED_Init(); Adc_Init(); //LED初始化 Remote_Init(); //初始化红外接收 while(1) { if(Remote_Rdy) { key=Remote_Process(); switch(key) { case 162: LCD_ShowString(86,150, "OWER"); POINT_COLOR=BLUE;//设置字体为蓝色 LCD_ShowString(60,170,"TEMP_VAL:"); LCD_ShowString(60,190,"TEMP_VOL:0.000V"); LCD_ShowString(60,210,"TEMPERATE:00.00C"); while(1) { if(key==162) { adcx=Get_Temp(); LCD_ShowNum(132,170,adcx,4,16);//显示ADC的值 temp1=(float)adcx*(3.3/4096); temperate=temp1;//保存温度传感器的电压值 adcx=temp1; LCD_ShowNum(132,190,adcx,1,16);//显示电压值整数部分 temp1-=(u8)temp1; //减掉整数部分 LCD_ShowNum(148,190,temp1*1000,3,16);//显示电压小数部分 temperate=(1.43-temperate)/0.0043+25;//计算出当前温度值 LCD_ShowNum(140,210,temperate,2,16); //显示温度整数部分 temperate-=(u8)temperate; LCD_ShowNum(164,210,temperate*100,2,16);//显示温度小数部分 LED0=!LED0; delay_ms(250); } goto loop; } loop:break; case 226: LCD_ShowString(86,150, "ALIEN "); while(DS18B20_Init())//初始化DS18B20,兼检测18B20 { LCD_ShowString(60,170,"DS18B20 Check Failed!"); delay_ms(500); LCD_ShowString(60,190,"lease Check! "); delay_ms(500); } LCD_ShowString(60,170,"DS18B20 Ready! "); POINT_COLOR=BLUE;//设置字体为蓝色 LCD_ShowString(60,190, "Temperate: . C"); LCD_ShowString(60,210," "); while(1) { if(key==226) { temp=DS18B20_Get_Temp(); if(temp<0) { temp=-temp; LCD_ShowChar(140,150,'-',16,0);//显示负号 } LCD_ShowNum(148,190,temp/10,2,16);//显示温度值 LCD_ShowNum(172,190,temp%10,1,16);//显示温度值 delay_ms(200); } goto loop1; } loop1:break; } } } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1658 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1568 浏览 1 评论
996 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
695 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1616 浏览 2 评论
1876浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
660浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
528浏览 3评论
547浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
517浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 23:52 , Processed in 0.718918 second(s), Total 84, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号