[工学]基于STM32开发板的多功能温度计设计报告.doc_第1页
[工学]基于STM32开发板的多功能温度计设计报告.doc_第2页
[工学]基于STM32开发板的多功能温度计设计报告.doc_第3页
[工学]基于STM32开发板的多功能温度计设计报告.doc_第4页
[工学]基于STM32开发板的多功能温度计设计报告.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

生产实习设计报告设计题目:基于STM32F107开发板的多功能温度计设计生产组长姓名:张家明 设计组长姓名:张家明设计小组成员:孙凯强、魏国祥、温琛林、王学良、王植阳 王如胜、王江、王圣南、魏征、田开 日期:2012年9月15日一、概述本设计基于STM32F107开发板,利用核心板上的STM32控制基板上的温度传感器DS18B20,实现DS18B20与STM32的双向通信;通过DS18B20实现温度测量,然后STM32对DS18B20转换后的数据进行读取和处理,转换成实际温度值后得到温度显示码,最后在OLED显示测得的温度(显示出温度值的符号位和整数位,以及一位小数)。该多功能温度计除具备测温功能外,还有如下附加功能:可手动切换显示温度、日期、星期和时间;手动校时、调整日期;最高最低温度记忆功能;切换显示;每日闹钟功能;可通过RS232串口传输当前温度和时间至PC机。本设计最终通过Matlab实现了温度标定,提高了测温准确度。二、总体设计1总体系统结构DS18B20MCUMCUOLED按键、拨码开关MCU2模块划分测温模块OLED显示模块按键、拨码开关模块蜂鸣器模块串行通信模块3人员分工张家明完成源程序的编写,以及代码的修改、编译、下载、调试等工作;孙凯强、魏国祥、温琛林、王学良负责DS18B20、OLED相关资料的搜集和整理;王植阳、魏征、田开负责日历时钟芯片PCF8563相关资料的搜集和整理;王如胜、王江、王圣南负责最后产品各项功能的验证。三、关键模块设计测温模块DS18B20是由DALLAS半导体公司推出的一种“一线总线”接口的温度传感器。DS18B20工作在3V5.5V 的电压范围,可以程序设定912位的分辨,测温范围55125,在-10+85时精为0.5。本设计中,DS18B20通过程序将其分辨率设为12位(温度分辨为0.0625)。DS18B20与STM32的连接电路OLED显示模块OLED使用的控制器为SSD1305,可通过写入不同的命令字来设置对比度、显示开关、电荷泵、页地址等。OLED被配置为使用I2C的方式。I2C的地址二进制位为0111100X,16进制为0x78(写地址),0x79(读地址)。OLED的Reset平时应该拉高,在初始化的时候,应该有一个从低电平到高电平的跳变。使用的MCU端口为PB6 CLK I2CPB7 SDA I2CPE6 RESET (低有效)按键、拨码开关模块基板一共有4个按键,分别为KEY1,KEY2,KEY3,KEY4。其中,按键未按下,对应的GPIO口为高电平,按键按下后变为低电平。使用的MCU端口为PE2 KEY4 GPIOPE3 KEY3 GPIOPE4 KEY2 GPIOPE5 KEY1 GPIO平拨开关一种有4个。开关拨到上方为低电平,拨到中间和下方为高电平。使用的MCU 端口为PD11 SW4 GPIOPC15 SW3 GPIOPC14 SW2 GPIOPC13 SW1 GPIO 拨码开关电路图蜂鸣器模块当PD15 为高电平的时候,蜂鸣器响。低电平的时候,蜂鸣器没有声音。使用的MCU端口为PD15 BUZZ GPIO串行通信模块RS232的电平转换芯片为MAX232CE。外部接口为DB9。有两个LED指示灯,TXD用来显示接受到数据,RXD用来显示正在发送数据。对外接口为DB9接口,定义为:2RXD,3TXD,5GND。因此,基板可以通过串口线直接连接到PC机,和PC机进行通信。使用的MCU端口为:PD5 UART2_TX(Remap)PD6 UART2_RX(remap)四、测试结果1开机上电后显示“中国海洋大学”图标、“中国海洋大学 09级自动化”、“多功能温度计”等文字,显示过后自动进入温度显示模式;2进入温度显示模式后,OLED显示出当前所测温度(摄氏+华氏); 此时拨动SW1可显示自开机上电或复位后所记录的摄氏最高最低温度值;拨动SW2可显示相对应的华氏最高最低温度值;拨动SW3可启动串行传输功能,即通过RS232串口传输当前温度和时间至PC机;将拨码开关拨回原位即可返回温度显示界面;3. 按下KEY1可在温度显示模式和日期、星期和时间显示模式之间来回切换;4进入日期、星期和时间显示模式后,按下KEY2进入校时模式,此时可通过KEY1选择校准小时、分钟、秒;每次校准时,按下KEY3则对应项+1,按下KEY4则对应项-1;小时或分钟或秒校准后都需要按下KEY2,此时显示对应项校准完成;所有项目均校准完成后,按下KEY4推出校时模式,返回日期、星期和时间显示模式;5进入日期、星期和时间显示模式后,按下KEY3进入调整日期模式,此时可通过KEY1选择调整年、月、日;每次调整时,按下KEY3则对应项+1,按下KEY4则对应项-1;年或月或日调整后都需要按下KEY2,此时显示对应项校准完成;所有项目均校准完成后,按下KEY4推出日期调整模式,返回日期、星期和时间显示模式;6进入日期、星期和时间显示模式后,拨动SW1进入闹钟设定模式,此时可通过KEY1选择设定小时、分钟以及取消闹钟;每次设定时,按下KEY3则对应项+1,按下KEY4则对应项-1;小时或分钟设定或取消闹钟后都需要按下KEY2,此时显示对应项设定完成;所有项目均设定完成后,将SW1拨回原退位即可出闹钟设定模式,返回日期、星期和时间显示模式;7闹钟响起时,拨动SW2即可停止响铃。五、总结本设计完全基于STM32F107开发板,利用开发板上的DS18B20、OLED、PCF8563日历时钟芯片、按键与拨码开关、蜂鸣器等资源实现了测温,显示温度(摄氏+华氏),最高最低温度记忆,显示日期、星期、时间,手动校时、调整日期,每日闹钟等诸多功能。另外在测温标定方面也通过Matlab进行了实际值与测量值之间的函数关系拟合(详见“附录一”),提高了测温的准确度;在测温精度方面也已经达到了预期要求。附录一Matlab实现温度标定%2012年9月9日2012年9月14日共六天,每天于不同时间、不同地点随机测温50%次,同时记录实际温度值,绘出每日测量温度曲线与实际温度曲线,同时绘制%每日测量值与实际值之间的差值走势图n=1:50;%2012年9月9日temp1_1=26.0 26.1 26.0 25.7 25.5 25.5 25.4 25.6 25.7 25.6. 25.5 25.5 25.4 25.3 25.2 25.2 25.2 25.5 25.4 25.4. 25.3 25.2 25.2 25.2 25.2 25.2 25.2 25.2 25.2 25.2. 25.2 25.2 25.0 26.1 26.2 26.4 26.5 26.5 26.6 26.6. 26.5 26.3 26.2 26.1 26.1 25.9 25.9 25.9 26.0 26.2; %实际值temp2_1=28.5 28.4 28.4 26.1 27.1 27.4 27.3 27.5 27.6 27.3. 27.3 27.0 27.1 26.8 27.1 27.0 27.1 27.1 27.1 27.2. 27.2 27.4 27.3 27.6 27.5 27.6 27.5 27.5 27.4 27.5. 27.5 27.5 27.1 26.6 26.2 27.1 27.3 27.6 28.1 28.3. 28.2 28.3 28.3 28.2 28.3 27.9 27.9 28.0 27.9 28.0; %测量值temp3_1=zeros(1,50);temp3_1=temp2_1-temp1_1;figure(1)subplot(3,2,1)plot(n,temp1_1,r);axis(1 50 22 30);xlabel(n);ylabel(temperature);title(2012年9月9日)hold onplot(n,temp2_1,b)grid onfigure(2)subplot(3,2,1)plot(n,temp3_1,r)axis(1 50 -0.5 3)xlabel(n);ylabel(差值);title(2012年9月9日)grid on %2012年9月10日temp1_2=26.5 26.1 25.7 25.4 25.3 25.2 25.3 25.4 25.4 25.5. 25.5 25.6 25.6 25.7 26.7 26.7 26.6 26.6 26.5 26.5. 26.5 26.4 26.5 26.5 26.4 26.4 26.3 26.2 26.1 25.4. 25.5 25.5 25.4 25.5 25.2 25.4 25.4 25.3 25.3 25.2. 25.0 25.2 25.1 25.2 25.1 25.1 25.9 26.0 26.2 26.0; %实际值temp2_2=25.8 26.4 27.1 27.1 27.6 27.4 27.6 27.4 26.9 27.4. 27.3 27.3 27.2 27.2 27.1 27.3 27.6 27.9 28.0 28.1. 28.2 28.2 28.1 28.3 28.4 28.3 28.1 28.2 28.0 25.9. 26.8 27.4 27.3 27.8 26.1 26.9 27.0 27.1 27.4 27.3. 27.2 27.4 26.9 27.4 27.4 27.1 28.0 28.1 28.3 28.6; %测量值temp3_2=zeros(1,50);temp3_2=temp2_2-temp1_2;figure(1)subplot(3,2,2)plot(n,temp1_2,r);axis(1 50 22 30);xlabel(n);ylabel(temperature);title(2012年9月10日)hold onplot(n,temp2_2,b)grid onfigure(2)subplot(3,2,2)plot(n,temp3_2,r)axis(1 50 -0.5 3)xlabel(n);ylabel(差值);title(2012年9月10日)grid on%2012年9月11日temp1_3=25.9 25.7 26.0 26.4 25.8 25.6 25.4 25.5 25.5 25.6. 25.6 25.7 25.6 25.5 25.4 25.4 25.3 25.3 25.2 25.3. 25.4 25.4 25.5 25.1 25.2 25.1 25.2 25.1 25.1 25.9. 26.0 26.1 26.1 26.1 26.1 26.2 26.3 26.4 26.3 26.2. 26.2 26.4 26.4 26.3 26.4 26.5 26.5 26.4 24.8 24.8; %实际值temp2_3=26.7 28.4 28.8 27.9 25.9 26.3 27.4 27.6 27.8 27.8. 28.0 27.8 27.4 27.3 26.9 27.0 26.8 27.1 26.6 26.8. 27.1 27.5 27.7 26.3 26.7 27.6 27.4 27.8 27.9 27.2. 27.3 27.5 27.9 28.1 27.8 27.9 28.0 28.0 27.9 27.8. 27.9 27.9 27.8 27.8 27.9 28.0 28.1 28.0 26.0 26.6; %测量值temp3_3=zeros(1,50);temp3_3=temp2_3-temp1_3;figure(1)subplot(3,2,3)plot(n,temp1_3,r);axis(1 50 22 30);xlabel(n);ylabel(temperature);title(2012年9月11日)hold onplot(n,temp2_3,b)grid onfigure(2)subplot(3,2,3)plot(n,temp3_3,r)axis(1 50 -0.5 3)xlabel(n);ylabel(差值);title(2012年9月11日)grid on%2012年9月12日temp1_4=24.8 24.8 24.8 24.8 24.9 24.9 24.9 25.0 25.1 25.0. 25.1 25.2 25.2 26.2 26.1 26.2 26.4 25.5 25.3 25.2. 25.1 25.1 25.1 25.3 25.4 25.5 25.5 25.4 25.5 25.7. 25.6 25.4 25.3 25.2 24.9 24.9 24.9 24.9 24.9 24.9. 25.0 25.0 25.0 24.9 24.9 24.9 24.9 24.9 24.9 25.0; %实际值temp2_4=26.7 26.9 26.9 27.1 27.1 27.3 27.3 27.7 27.4 27.3. 27.6 27.8 27.6 26.4 26.6 26.8 26.8 27.7 27.4 27.3. 27.2 27.3 27.4 27.3 27.3 27.4 27.8 27.4 27.6 27.6. 27.6 27.8 27.8 27.4 25.3 26.9 27.1 27.2 27.1 26.9. 26.9 27.0 26.7 26.5 26.4 26.3 25.2 25.4 25.6 27.0; %测量值temp3_4=zeros(1,50);temp3_4=temp2_4-temp1_4;figure(1)subplot(3,2,4)plot(n,temp1_4,r);axis(1 50 22 30);xlabel(n);ylabel(temperature);title(2012年9月12日)hold onplot(n,temp2_4,b)grid onfigure(2)subplot(3,2,4)plot(n,temp3_4,r)axis(1 50 -0.5 3)xlabel(n);ylabel(差值);title(2012年9月12日)grid on%2012年9月13日temp1_5=24.9 25.0 25.1 24.9 23.8 23.5 23.3 23.2 23.2 23.1. 23.0 23.0 23.0 22.4 22.4 22.5 22.5 22.6 22.7 22.8. 22.8 22.8 22.9 22.9 22.9 23.4 23.8 23.9 24.1 24.2. 24.3 24.7 24.6 24.5 24.5 24.5 24.4 24.5 25.0 24.9. 24.8 24.5 24.7 23.5 23.4 23.2 23.1 23.1 23.2 23.3; %实际值temp2_5=25.2 26.1 26.5 26.6 24.3 24.8 25.3 25.3 25.4 25.5. 25.8 25.3 25.4 24.6 24.8 25.0 25.0 25.1 25.2 25.2. 25.3 25.4 25.6 25.5 25.7 24.6 25.8 26.0 26.0 26.1. 26.0 26.2 26.1 26.1 26.3 26.4 26.5 26.9 26.9 26.8. 26.6 26.0 25.6 23.8 23.9 24.1 24.1 24.4 24.9 24.7; %测量值temp3_5=zeros(1,50);temp3_5=temp2_5-temp1_5;figure(1)subplot(3,2,5)plot(n,temp1_5,r);axis(1 50 22 30);xlabel(n);ylabel(temperature);title(2012年9月13日)hold onplot(n,temp2_5,b)grid onfigure(2)subplot(3,2,5)plot(n,temp3_5,r)axis(1 50 -0.5 3)xlabel(n);ylabel(差值);title(2012年9月13日)grid on%2012年9月14日temp1_6=23.4 23.5 23.7 23.8 23.9 24.0 24.8 24.8 24.7 24.8. 24.8 24.8 24.7 24.9 24.8 24.8 24.8 24.7 24.7 24.2. 24.1 24.1 24.2 24.3 24.4 24.4 24.5 24.5 24.4 24.5. 24.5 24.5 24.5 24.5 24.6 24.5 24.6 24.9 24.9 25.0. 24.9 25.2 25.3 25.4 25.4 25.3 25.5 23.1 23.2 23.2; %实际值temp2_6=24.9 25.2 25.9 25.9 25.9 26.1 25.8 26.5 26.7 26.8. 26.8 26.6 26.8 26.5 26.6 26.8 26.7 26.6 26.5 24.8. 25.8 26.1 26.1 26.1 26.1 26.2 26.1 26.1 26.2 26.3. 26.4 25.1 26.1 26.3 26.6 26.3 26.6 27.0 27.3 27.4. 27.3 26.9 26.9 26.7 26.4 26.1 26.1 24.3 24.4 24.6; %测量值 temp3_6=zeros(1,50);temp3_6=temp2_6-temp1_6;figure(1)subplot(3,2,6)plot(n,temp1_6,r);axis(1 50 22 30);xlabel(n);ylabel(temperature);title(2012年9月14日)hold onplot(n,temp2_6,b)grid onfigure(2)subplot(3,2,6)plot(n,temp3_6,r)axis(1 50 -0.5 3)xlabel(n);ylabel(差值);title(2012年9月14日)grid on运行结果:%运用最小二乘算法(LS)实现测量值与实际值之间的函数关系拟合clc%2012年9月9日temp1_1=25.0 25.2 25.3 25.4 25.5 25.6 25.7 25.9 26.0 26.1 26.2 26.3 26.5 26.6;%实际值temp2_1=27.1 27.5 27.2 27.3 27.4 27.3 27.6 27.9 28.0 28.1 28.0 28.3 28.2 28.1;%测量值subplot(3,2,1)plot(temp1_1,temp2_1,*)hold ona_1=polyfit(temp1_1,temp2_1,1);b_1=polyval(a_1,temp1_1);plot(temp1_1,b_1,r);xlabel(实际值);ylabel(测量值);title(2012年9月9日)disp(a_1) %2012年9月10日temp1_2=25.0 25.1 25.2 25.3 25.4 25.5 25.6 25.7 25.9 26.0 26.1 26.2 26.3 26.4 26.5;%实际值temp2_2=27.2 27.4 27.4 27.6 26.9 27.3 27.3 27.2 28.0 28.1 28.0 28.2 28.3 28.4 28.6;%测量值subplot(3,2,2)plot(temp1_2,temp2_2,*)hold ona_2=polyfit(temp1_2,temp2_2,1);b_2=polyval(a_2,temp1_2);plot(temp1_2,b_2,r);xlabel(实际值);ylabel(测量值);title(2012年9月10日)disp(a_2) %2012年9月11日temp1_3=24.8 25.1 25.2 25.3 25.4 25.5 25.6 25.7 26.0 26.1 26.2 26.3 26.4 26.5; %实际值temp2_3=26.6 27.6 27.7 26.9 27.3 27.7 27.7 27.8 27.3 27.8 27.9 28.0 28.0 28.0; %测量值subplot(3,2,3)plot(temp1_3,temp2_3,*)hold ona_3=polyfit(temp1_3,temp2_3,1);b_3=polyval(a_3,temp1_3);plot(temp1_3,b_3,r);xlabel(实际值);ylabel(测量值);title(2012年9月11日)disp(a_3) %2012年9月12日temp1_4=24.8 24.9 25.0 25.1 25.2 25.4 25.5 25.6 25.7 26.1 26.2 26.4 26.5 26.6; %实际值temp2_4=27.0 27.2 27.4 27.4 27.3 27.4 27.8 27.6 27.6 28.0 28.2 28.6 28.0 28.6; %测量值subplot(3,2,4)plot(temp1_4,temp2_4,*)hold ona_4=polyfit(temp1_4,temp2_4,1);b_4=polyval(a_4,temp1_4);plot(temp1_4,b_4,r);xlabel(实际值);ylabel(测量值);title(2012年9月12日)disp(a_4) %2012年9月13日temp1_5=22.4 22.5 22.6 22.7 22.8 22.9 23.0 23.1 23.2 23.3 23.4 23.8 23.9 24.1. 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 25.0 25.1; %实际值temp2_5=24.7 25.0 25.1 25.2 25.3 25.6 25.5 24.7 25.3 25.3 24.6 25.8 26.0 26.0. 26.1 26.0 26.5 26.4 26.1 26.2 26.6 26.8 26.9 26.5; %测量值subplot(3,2,5)plot(temp1_5,temp2_5,*)hold ona_5=polyfit(temp1_5,temp2_5,1);b_5=polyval(a_5,temp1_5);plot(temp1_5,b_5,r);xlabel(实际值);ylabel(测量值);title(2012年9月13日)disp(a_5) %2012年9月14日temp1_6=23.1 23.2 23.3 23.4 23.5 23.7 23.8 23.9 24.0 24.1 24.2 24.3 24.4 24.5. 24.6 24.7 24.8 24.9 25.0 25.2 25.3 25.5; %实际值temp2_6=24.3 24.5 25.3 24.9 25.2 25.9 25.9 25.9 26.1 25.9 26.1 26.1 26.2 26.2. 26.6 26.5 26.8 27.1 27.4 26.9 26.6 26.1; %测量值subplot(3,2,6)plot(temp1_6,temp2_6,*)hold ona_6=polyfit(temp1_6,temp2_6,1);b_6=polyval(a_6,temp1_6);plot(temp1_6,b_6,r);xlabel(实际值);ylabel(测量值);title(2012年9月14日)disp(a_6) result=(a_1+a_2+a_3+a_4+a_5+a_6)/6 运行结果:a_1=0.7675 7.9065a_2=0.9364 3.6170a_3=0.5865 12.5073a_4=0.7543 8.3793a_5=0.6970 9.1990 a_6=0.9616 2.7093 result=0.7839 7.3864测量值=0.7839实际值+7.3864实际值=(测量值-7.3864)/0.7839 附录二关键程序代码/temperature_test.c#include include.h#include OLED.h#include DS18B20.h#include realtime.hunsigned char symbol_1=0x06,0x09,0x09,0xE6,0xF8,0x0C,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,0x00,0x00,0x00,0x07,0x1F,0x30,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x10,0x00,0x00;/unsigned char symbol_2=0x00,0x00,0x18,0x24,0x24,0x18,0x02,0xFE,0x82,0x82,0x82,0xE2,0x06,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x03,0x00,0x00,0x00,0x00;/float temper = 0.0;float temper_2=0.0;float temper_max=0.0;float temper_min=0.0;float temper2_max=0.0;float temper2_min=0.0;void USART2_Init(void)GPIO_InitTypeDef GPIO_InitStructure;/* 开启相应部件的时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO |RCC_APB2Periph_GPIOD, ENABLE);/* 将USART Tx的GPIO配置为推挽复用模式 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOD, &GPIO_InitStructure);/* 将USART Rx的GPIO配置为浮空输入模式*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_PinRemapConfig (GPIO_Remap_USART2 ,ENABLE);void USART2_Configuration(u32 BaudRate)USART_InitTypeDef USART_InitStructure;/* 开启相应部件的时钟 */RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);/* 第4步:配置USART参数 - BaudRate - Word Length = 8 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled*/USART_InitStructure.USART_BaudRate = BaudRate;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART2, &USART_InitStructure);/* 第5步:使能 USART, 配置完毕 */USART_Cmd(USART2, ENABLE);/* CPU的小缺陷:串口配置好,如果直接Send,则第1个字节发送不出去如下语句解决第1个字节无法正确发送出去的问题 */USART_ClearFlag(USART2, USART_FLAG_TC); /* 清发送外城标志,Transmission Complete flag */void transmit() time RealTime; float f_temp; float f_temp_2;SystemInit();USART2_Init();USART2_Configuration(9600);while(DS18B20_Init()/初始化DS18B20,兼检测18B20printf(DS18B20 Failed!rn);DelayMs(5000);printf(Please Check!rn);DelayMs(5000); GetTime(&RealTime); printf(Time: %02d:%02d:%02dn,RealTime.hour,RealTime.minute,RealTime.second); printf(Temp: );f_temp = DS18B20_Get_Temp(); f_temp_2=f_temp*9.0/5.0+32.0;printf(%2.1frn ,f_temp); printf(Temp: ); printf(%2.1frn ,f_temp_2); printf(nn); DelayMs(200); void temperature(void) u8 str16; temper = DS18B20_Get_Temp(); temper_2=temper*9.0/5.0+32.0; temper_min=temper; temper2_min=temper_2; PrintStringLocate(Temperature is ,Ascii8x16,0x00,0x00); WriteData(symbol_1,80,96,3,5,0); WriteData(symbol_2,80,96,6,8,0); while(1) while(DS18B20_Get_Temp()=85.0); temper = DS18B20_Get_Temp(); temper_2=temper*9.0/5.0+32.0; if(temper_maxtemper) temper_min=temper; if(temper2_mintemper_2) temper2_min=temper_2; PrintStringLocate(Temperature is ,Ascii8x16,0x00,0x00); WriteData(symbol_1,80,96,3,5,0); WriteData(symbol_2,80,96,6,8,0); sprintf(str, %2.1f ,temper); PrintStringLocate(str,Ascii8x16,0x03,0x03); sprintf(str, %2.1f ,temper_2); PrintStringLocate(str,Ascii8x16,0x06,0x03); DelayMs(200); if(SW1Up() WriteData(0,0,132,0,8,0); /清屏 WriteData(symbol_1,105,121,3,5,0); WriteData(symbol_1,105,121,6,8,0); while(1) PrintStringLocate(Max:,16,0x03,0x01); sprintf(str, %2.1f ,temper_max); PrintStringLocate(str,Ascii8x16,0x03,0x06); PrintStringLocate(Min:,16,0x06,0x01); sprintf(str, %2.1f ,temper_min); PrintStringLocate(str,Ascii8x16,0x06,0x06); if(SW1Down() WriteData(0,0,132,0,8,0); /清屏 break; if(SW2Up() WriteData(0,0,132,0,8,0); /清屏 WriteData(symbol_2,105,121,3,5,0); WriteData(symbol_2,105,121,6,8,0); while(1) PrintStringLocate(Max:,16,0x03,0x01); sprintf(str, %2.1f ,temper2_max); PrintStringLocate(str,Ascii8x16,0x03,0x06); PrintStringLocate(Min:,16,0x06,0x01); sprintf(str, %2.1f ,temper2_min); PrintStringLocate(str,Ascii8x16,0x06,0x06); if(SW2Down() WriteData(0,0,132,0,8,0); /清屏 break; if(SW3Up() transmit(); if(KEY1PressDown() WriteData(0,0,132,0,8,0); /清屏 break; if(KEY2PressDown() while(1) WriteData(0,0,132,0,8,0); delay_ms(10000); if(KEY3PressDown() break; /*函数名: putchar*功能说明:重定义putc函数,这样可以使用printf函数从串口3打印输出*/int putchar(int ch)/* Place your implementation of fputc here */* e.g. write a character to the USART */USART_SendData(USART2, (uint8_t) ch);/* Loop until the end of transmission */while (USART_GetFlagStatus(USART2, USART_FLAG_TC) = RESET)return ch;#ifde

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论