单片机温度显示器实验报告(广州大学)

合集下载

单片机 温度实训报告

单片机  温度实训报告

单片机实训报告题目 : 1602显示万年历和温度系部 :专业:班级:姓名 :学号 :指导教师 :2011年12月15日目录一、引言 (3)1.1、意义 (3)1.2、系统功能 (3)1.3、成员工作 (3)二、使用硬件 (4)三、使用原理图 (5)四、完成万年历和温度的程序 (7)五、感悟 (14)六、致谢 (15)七、参考文献 (16)八、老师的评语 (16)引言1.1、意义目前单片机的应用可以说是相当的广泛,已经渗透到我们生活中的各个领域。

从高端导弹的导航装置,飞机上各种仪表的控制,自动控制领域的机器人,以及自动化过程的实时和数据处理,到我们日常生活的各种智能IC卡系统,安全保障系统,录象机,摄象机,手机,电视,以及可控玩具,等等,都是单片机“惹的祸”。

而且,目前我国的单片机教育已经向高中教育发展,可见在不久的将来,单片机对于工科学生而言就会象电路基础原理一样成为基础课。

所以我们要跟着时代的步伐前进,学好单片机。

1.2、系统功能在单片机中,基本上有三类信息在流动,一类是数据,即各种原始数据1、中间结果、程序等。

这样要由外部设备通过“口”进入单片机,再存放在存贮器中,在运算处理过程中,数据从存贮器读入运算器进行运算,运算的中间结果要存入存贮器中,或最后由运算器经“出入口”输出。

用户要单片机执行的各种命令(程序)也以数据的形式由存贮器送入控制器,由控制器解读(译码)后变为各种控制信号,以便执行如加、减、乘、除等功能的各种命令。

所以,这一类信息就称为控制命令,即由控制器去控制运算器一步步地进行运算和处理,又控制存贮器的读(取出数据)和写(存入数据)等。

所以芯片就达到某种功能,就给设备带来效果。

1.3、成员工作写程序:张俊兵调试:张俊兵设计报告:张俊兵使用硬件单片机18b20LCD1602USB供电线串口线使用原理图1.1、单片机使用的原理图1.2、仿真图完成万年历和温度的程序#include<reg52.h>#include<intrins.h>#include<DS18B20.h>sbit RS=P0^0;sbit E=P0^2;sbit RW=P0^1;sbit BEEP=P1^7;#define Data P2#define KEY P3#define uchar unsigned charint hour,min,sec,tcnt,a,h,m,day,month,yearl,yearh;int z,j;#define NO_key 0x7fvoid DelayUs(unsigned char us)//delay us{unsigned char uscnt;uscnt=us>>1;while(--uscnt);}void DelayMs(unsigned char ms)//delay Ms{while(--ms){DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250);}}void WriteCommand(unsigned char c){DelayMs(5);//short delay before operationE=0;RS=0;RW=0;_nop_();E=1;Data=c;E=0;}void WriteData(unsigned char c){DelayMs(5); //short delay before operationE=0;RS=1;RW=0;_nop_();E=1;Data=c;E=0;RS=0;}void InitLcd(){DelayMs(15);WriteCommand(0x38); //display modeWriteCommand(0x38); //display modeWriteCommand(0x38); //display modeWriteCommand(0x06); //显示光标移动位置WriteCommand(0x0c); //显示开及光标设置WriteCommand(0x01); //显示清屏}int set_xy(int x,int y)//to set current position {if((y<0)|(y>1)|(x<0)|(x>15))return 0;else{if(y==0){WriteCommand(0x80+x);}else{WriteCommand(0xc0+x);}}return 1;}int wr_char(unsigned char dat,int x,int y){if(!set_xy(x,y))//write a char to some position return 0;WriteData(dat);return 1;}int wr_str(unsigned char *str,int x,int y){if(!set_xy(x,y))return 0;//to write a string to some position while(*(str++))WriteData(*(str-1));return 1;}int wr_int1(int num,int x,int y){unsigned char seg[1];if(!set_xy(x,y))return 0;if(num<0){WriteData('-');num=-num;}seg[0]=num;WriteData(seg[0]+'0');return 1;}int wr_int(int num,int x,int y){unsigned char seg[2];if(!set_xy(x,y)) //to write a interger to some position return 0;if(num<0){WriteData('-');num=-num;}seg[1]=num/10;num=num%10;seg[0]=num;WriteData(seg[1]+'0');WriteData(seg[0]+'0');return 1;}void delay(unsigned int cnt){while(--cnt);}unsigned char Key_Scan(void){unsigned char i,n;unsigned char key_temp;KEY=0xf0;if((KEY&0xf0)!=0xf0){delay(10000);if((KEY&0xf0)!=0xf0){for(i=0;i<4;i++){KEY=~(1<<i);n=KEY;n&=0xf0;if(n!=0xf0){switch(n){case(0x70):key_temp=15-(3-i)*4;break;case(0xb0):key_temp=14-(3-i)*4;break;case(0xd0):key_temp=13-(3-i)*4;break;case(0xe0):key_temp=12-(3-i)*4;break;default:key_temp=NO_key;}return key_temp;}}}}return NO_key;}void check_wendu(void){unsigned int b,c,d;d=ReadTemperature()-5; //获取温度值并减去DS18B20的温漂误差b=d/100; //计算得到十位数字c=d/10-b*10; //计算得到个位数字z=d/10; //计算得到整数位j=d-b*100-c*10; //计算得到小数位if(z<0){z=0;j=0;} //设置温度显示上限if(z>99){z=99;j=9;} //设置温度显示上限}main(){unsigned char opear;InitLcd();DelayMs(15);TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;ET0=1;EA=1;wr_str(" : : ",0,0);wr_str(" : ",0,1);wr_str(" - - ",6,1);wr_str(" . ",9,0);while(1){opear=Key_Scan();if(opear!=NO_key){switch(opear){case(0):hour++;if(hour==24){hour=0;day++;}wr_int(hour,0,0);break;case(1):min++;if(min==60){min=0;hour++;}wr_int(min,3,0);break;case(2):h++;if(h==24)h=0;wr_int(h,0,1);break; case(3):m++;if(m==60){m=0;h++;}wr_int(m,3,1);break;case(4):day++;if(day==31){day=0;month++;}wr_int(day,14,1);break;case(5):month++;if(month==13){month=1;yearl++;}wr_int(month,11,1);break;case(6):yearl++;if(yearl==100){yearl=0;yearh++;}wr_int(yearl,8,1);break;case(7):yearh++;if(yearh==100){yearh=20;}break;}}if(hour==h&&min==m){BEEP=0;}else{BEEP=1;}if(a==1){a=0;check_wendu();if(z<99&&j<9){wr_int(z,9,0);wr_int1(j,12,0);}wr_int(yearh,6,1);wr_int(yearl,8,1);wr_int(month,11,1);wr_int(day,14,1);wr_int(hour,0,0);wr_int(min,3,0);wr_int(sec,6,0);wr_int(h,0,1);wr_int(m,3,1);}}}void t0 (void)interrupt 1 using 0{tcnt++;if(tcnt==4000){tcnt=0;sec++;a=1;wr_int(sec,6,0);if(sec==60){sec=0;min++;if(min==60){min=0;hour++;if(hour==24){hour=0;day++;if(month==2&&((yearl==0&&yearh%4==0)||(yearl!=0&&yearh%4==0))&&day==30)day=1;else if(month==2&day==29)day=1;else if((month==4||month==6||month==9||month==11)&&day==31)day=1;else if(day==32)day=1;if(day==1){month++;if(month==13){month=1;yearl++;if(yearl==100)yearl=0;yearh++;if(yearh==100)yearh=20;}}}}}}}DS18B20调用的程序:#ifndef __DS18B20_H__#define __DS18B20_H__#include <reg52.h>sbit DQ=P3^7; //定义DS18B20总线I/O/*****延时子程序*****/void Delay_DS18B20(int num){while(num--) ;}/*****初始化DS18B20*****/void Init_DS18B20(void){unsigned char x=0;DQ = 1; //DQ复位Delay_DS18B20(8); //稍做延时DQ = 0; //单片机将DQ拉低Delay_DS18B20(80); //精确延时,大于480usDQ = 1; //拉高总线Delay_DS18B20(14);x = DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败 Delay_DS18B20(20);}/*****读一个字节*****/unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;Delay_DS18B20(4);}return(dat);}/*****写一个字节*****/void WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;Delay_DS18B20(5);DQ = 1;dat>>=1;}}/*****读取温度*****/unsigned int ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0x44); //启动温度转换Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器a=ReadOneChar(); //读低8位b=ReadOneChar(); //读高8位t=b;t<<=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; //放大10倍输出并四舍五入return(t);}感悟当今时代,是一个新技术层出不穷的时代。

单片机温度测控实习报告

单片机温度测控实习报告

学号实习报告远程温度监控起止日期:2013 年 6 月24 日至2013 年7 月19 日学生姓名xxx班级10电信科1班成绩指导教师(签字)计算机与信息工程学院2013年7 月14 日目录第一章生产实习介绍 (1)1.1实习的目的 (1)1.2实习的意义 (1)1.3项目概要 (1)1.4设计任务和要求 (2)第二章系统开发与调试 (3)2.1系统功能介绍 (3)2.2开发系统总的原理图 (3)2.3单片机开发板的焊接 (3)2.3.1焊接操作要领 (3)2.3.2焊接注意事项 (4)2.3.3焊接清单 (4)第三章开发板调试程序及结果 (6)3.1 LED流水灯的调试 (6)3.1.1调试程序 (6)3.1.2 LED调试结果 (7)3.2数码管调试 (7)3.2.1数码管程序 (7)3.2.2数码管调试结果 (8)3.3液晶(LCD—1206)显示调试 (8)3.3.1 LCD调试程序 (8)3.3.2 LCD调试结果 (12)第四章开发板扩展应用-----远程温度监控 (13)4.1 远程温度监控介绍 (13)4.1.1 要求 (13)4.1.2 分析 (13)4.2主要部件分析 (13)4.2.1传感器DS18B20简介 (13)4.2.2 实验模拟电路图 (14)4.2.3 报警模块 (14)4.2.4 温度检测 (15)4.2.5 电平串口发送 (15)4.3调试及结果 (16)4.3.1 调试主要程序 (16)4.3.2 调试结果 (24)第五章开发过程遇到的问题、现象及解决办法 (24)5.1所遇问题、现象 (25)5.2解决办法 (25)第六章实习体会 (26)第一章生产实习介绍1.1实习的目的大三临近放假,学校组织我们于电信楼进行生产实习,以提高我们对所学科目的更深层次的认识,从开始对单片机的焊接到最后的调试和应用,锻炼了自己动手实干的能力,获取了一定的工作经验,提高自身修养,主要基于我们所学的单片机及相关知识,进行一定的开发与应用,提高自己的动手能力,做好与所学知识的结合,为以后需要从事相关的工作打好一个基础。

单片机的显示实验报告

单片机的显示实验报告

一、实验目的本次实验旨在通过学习单片机显示技术,掌握单片机控制数码管显示的基本原理和方法。

通过实验,加深对单片机基本原理和实际应用的理解,提高动手实践能力。

二、实验内容1. 硬件设备(1)单片机:AT89C51(2)晶振:12MHz(3)电容:22pF(两个)(4)复位电路:10K电阻与10F电容实现自动复位(5)显示器:7段共阳级数码管2. 软件环境(1)仿真软件:Proteus 7.8(2)编程软件:Keil 4.223. 实验步骤(1)搭建实验电路根据实验要求,利用Proteus软件搭建单片机实验电路,包括单片机、晶振、电容、复位电路和7段共阳级数码管。

(2)编写程序利用Keil 4.22编程软件编写控制数码管显示的程序,实现以下功能:1)数码管显示0-9循环显示2)数码管显示自定义字符3)数码管显示时间(小时、分钟、秒)(3)编译程序将编写的程序编译生成HEX文件。

(4)仿真运行在Proteus软件中加载HEX文件,观察数码管显示效果。

三、实验结果与分析1. 数码管显示0-9循环显示通过编写程序,实现数码管显示0-9循环显示的功能。

程序中,首先定义一个数组,存储0-9的数字编码;然后通过循环遍历数组,控制数码管显示对应的数字。

2. 数码管显示自定义字符为了实现数码管显示自定义字符,需要设计字符编码。

根据字符形状,将字符编码存储在数组中。

程序中,通过改变数组指针,控制数码管显示不同的字符。

3. 数码管显示时间实现数码管显示时间功能,需要设计一个计时器。

程序中,通过定时器中断,更新时间数据。

当定时器溢出时,更新数码管显示的时间。

四、实验总结通过本次实验,掌握了单片机控制数码管显示的基本原理和方法。

具体收获如下:1. 熟悉了Proteus和Keil软件的使用,提高了编程能力。

2. 加深了对单片机基本原理和实际应用的理解。

3. 学会了数码管显示程序的设计和调试。

4. 提高了动手实践能力。

五、拓展实验1. 实现多个数码管的连接和显示2. 设计一个可编程的字符编码表,实现更多字符的显示3. 利用数码管显示复杂图形,如动画效果4. 将数码管显示与其他功能结合,如温度、湿度显示等通过以上拓展实验,可以进一步提高单片机显示技术的应用水平。

单片机温度控制器实验报告

单片机温度控制器实验报告

南京邮电大学通达学院2010/2011学年第1学期课程设计实验报告课题名称基于CPU的8LED温度显示控制器的设计专业通信工程学生班级070018学号07001836姓名赵静静指导老师林建中实验日期2010 年11 月19 日题目:基于单片cpu的8led温度显示控制器的设计一,实验目的和要求1,Proteus软件的MCS51单片机仿真学习2,根据提供的参考工程,在proteus平台自己重新设计实验电路所需要的电器原理图,并在此基础上编写相对应的程序,实现其功能,学习proteus软件的使用,其中包括原理图器件的选取,原理图的电气连接,程序的编写编译以及运行,并能查出其错误等。

基本要求:用热敏电阻或温度传感器作温度探头,通过AD转换器变换,把温度数据转换成BCD码在LCD上显示。

显示精度±0。

5℃能记录和回放温度参数,记录间隔可任意设定(1S到1h,步长1s)回放数据速度可设定画出温度变化曲线。

发挥部分:1 显示精度提高到±0。

1℃2 显示精度提高到±0。

01℃3 与实际温度计温度比较,找出温度显示误差曲线,在报告中描出,并分析误差来源4 实现温度自动补赏二,实验仪器微型计算机一台三,实验原理温度测量通常可以用两种方式来实现,一种是用热敏电阻之类的器件,由于感温效应,热敏电阻的阻值能够随温度变化,当热敏电阻接入电路,测量过它的电流或其两端的电压就会随温度变化发生响应的变化,在将温度变化的电压或电流采集过来,进行A/D 转化后,发送到单片机进行处理,通过显示电路,就可以将被测温度显示出来。

这种设计需要用到A/D转换电路,其测温电路比较麻烦。

第二种方法是用温度传感器芯片。

温度传感器芯片能把温度信号转换成数字信号,直接发送给单片机,转换后通过显示电路既可以显示。

四,基本芯片及其原理单片机微型计算机简称单片机,是指在一块芯片体上集成了中央处理器CPU、随机存储器RAM、程序存储器ROM或EPROM、定时器/计数器、中断控制器以及串行和并行I/O 接口等部件,构成一个完整的微型计算机。

温度显示器实习报告

温度显示器实习报告

一、实习背景随着科技的不断发展,温度控制技术在工业、农业、医疗等领域得到了广泛应用。

为了提高对温度变化的监测和控制能力,我国许多企业和研究机构纷纷研发出各种温度显示器。

本实习报告以某公司生产的液晶屏温度显示器为研究对象,通过对该产品的设计、制造、调试等方面的实习,深入了解温度显示器的原理、功能和应用。

二、实习目的1. 熟悉温度显示器的结构、原理和功能。

2. 掌握液晶屏、单片机等电子元器件的使用方法。

3. 学习温度传感器的工作原理和选型方法。

4. 提高电子设计、调试和测试能力。

三、实习内容1. 产品概述该温度显示器采用液晶屏显示,具有以下特点:(1)显示清晰、直观,便于用户观察;(2)采用AT89C51单片机作为核心控制单元,具有较好的稳定性和可靠性;(3)内置温度传感器,可实时监测环境温度;(4)支持温度设定功能,方便用户调整;(5)具有过温报警功能,确保设备安全运行。

2. 原理分析(1)液晶屏原理液晶屏是一种介于液体和固体之间的物质,具有光学各向异性的特点。

当液晶分子受到电场作用时,会改变其排列方向,从而改变液晶的透光性。

通过控制液晶分子的排列,可以实现图像的显示。

(2)单片机原理AT89C51单片机是一种常用的8位微控制器,具有丰富的指令系统、I/O接口和定时器等功能。

在本产品中,单片机主要负责控制液晶屏显示、读取温度传感器数据、处理按键输入和实现过温报警等功能。

(3)温度传感器原理温度传感器是一种将温度信号转换为电信号的装置。

本产品采用DS18B20数字温度传感器,具有以下特点:①高精度:测量精度为±0.5℃;②抗干扰能力强;③易于接口,方便与单片机连接。

3. 设计与调试(1)硬件设计根据产品需求,设计电路原理图,主要包括以下部分:①液晶屏驱动电路;②单片机最小系统;③温度传感器电路;④按键电路;⑤过温报警电路。

(2)软件设计编写单片机程序,实现以下功能:①初始化液晶屏和温度传感器;②读取温度传感器数据;③显示温度值;④处理按键输入;⑤实现过温报警。

单片机温度测量与报警系统报告(广州大学)

单片机温度测量与报警系统报告(广州大学)

广州大学机械设计制造及其自动化特色专业单片机温度测量与报警系统报告专业班级: 机械113 班组员及分工单片机温度测量与报警系统一、前言随着科技的飞速发展和普及,高性能设备越来越多,各行各业对温度的要求也越来越高。

传统的温度监测模式是以人为基础,依靠人工轮流值班,人工巡回查看等方式来测量和记录环境状况信息。

在这种模式下,不仅效率低下不利于人才资源的充分利用,而且缺乏科学性,许多重大事故都是由人为因素造成的,人工维护缺乏完整的管理系统。

而问世监控系统就可以解决这样人才资源浪费,管理不及时的问题,这是由于它的智能化设计所决定的。

它的工作步骤如下:人工设置安全温度,系统的温度传感器感应环境温度,然后单片机判断感应到的温度是否超过安全温度。

本设计使用单片机作为核心进行控制。

单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特特点,在数字、智能化方面有广泛的用途。

二、课题设计目的1.巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。

2.培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试和对电路的焊接的动手能力。

3.通过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。

三、功能设计本课题的研究重点是设计一种基于单片机的数字温度计控制系统。

利用数字温度传感器DS18B20,此传感器通过读取被测试温度值,进行转换。

包括传感器数据采集电路、温度显示电路、上限报警调整电路,电动机变速转动电路,单片机主板电路等电路组成。

(1)主要工作:1.温度调试基本范围0℃—100℃。

2.精度误差小于1℃。

3.LED数码管显示。

4.可以设定温度安全报警功能。

5.电机可以通过不同转速以抽风形式降低室内温度。

6.实现报警提示。

(2)主要功能:1、室温调节、火灾预防当工厂内机器发热的温度达到安全温度时,温度传感器检测到温度后,会通过蜂鸣器的响声把信息传达给工作人员,同时电动机根据温度值的不同而进行不同转速的抽风散热,从而可以防止火灾的发生。

温度实时显示实验报告

实验名称:温度实时显示实验实验日期:2021年X月X日实验地点:实验室一、实验目的1. 了解温度实时显示系统的工作原理。

2. 掌握温度传感器的使用方法。

3. 熟悉温度实时显示系统的搭建过程。

4. 提高实际操作能力。

二、实验原理温度实时显示系统主要由温度传感器、数据采集模块、显示模块和电源模块组成。

温度传感器用于检测环境温度,数据采集模块将温度传感器的信号转换为数字信号,显示模块将数字信号转换为可视化的温度值,电源模块为系统提供稳定的电源。

三、实验仪器与材料1. 温度传感器:DS18B202. 数据采集模块:Arduino Uno3. 显示模块:LCD16024. 连接线:杜邦线5. 电源模块:9V电池6. 实验平台:面包板四、实验步骤1. 准备实验材料,搭建实验电路。

2. 编写Arduino程序,实现温度数据的采集和显示。

3. 将程序上传至Arduino板。

4. 启动实验,观察温度实时显示效果。

五、实验结果与分析1. 实验结果在实验过程中,成功搭建了温度实时显示系统,并实现了温度数据的实时采集和显示。

实验过程中,温度传感器的数据采集模块、显示模块和电源模块均工作正常。

2. 实验分析(1)温度传感器DS18B20具有高精度、高稳定性等特点,能够满足实验要求。

(2)Arduino Uno作为数据采集模块,能够实时读取温度传感器的数据,并通过LCD1602显示屏进行显示。

(3)实验过程中,温度实时显示系统工作稳定,数据采集准确,显示效果良好。

六、实验结论1. 成功搭建了温度实时显示系统,实现了温度数据的实时采集和显示。

2. 温度实时显示系统具有较高的精度和稳定性,适用于实际应用场景。

3. 通过本次实验,掌握了温度传感器的使用方法、数据采集模块的搭建以及Arduino程序的编写,提高了实际操作能力。

七、实验改进与展望1. 在实验过程中,发现温度实时显示系统在极端温度条件下,数据采集和显示效果可能受到影响。

单片机_温度采集并显示的实验报告

温度采集并显示实验设计报告2012082633 卜瑜一、实验目的1、理解RAM 、ROM 的存储类型。

2、实现用七段数码管的一个位显示0~9℃。

二、实验设计1、实验仪器、设备:计算机、型号为STC89C52RC 的51单片机开发板2、软件:USB 驱动软件、keil4开发软件、STC-ISP3、实验流程图设计:否是下一个单元点亮开始 初始化,关闭LED 打开LED查表并延时 循环周期到?4、软件设计:1)keil4软件使用A.双击keil4标志,执行keil4软件B.在E盘中新建文件夹:20140319,以保存本实验中所产生的文件。

将计算机中原有的shixun1文件夹中所有文件复制与该文件夹中。

C.打开.uvproj格式文件,将文件改写成:#include<AT89X51.H>//=======================================#define uint unsigned int;#define uchar unsigned char;//=======================================#include <REGX51.H>uchar sample=1;uint x,y;code uchar table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//=======================================void main(void){//初始化P1_7=1;//关闭P0=0xff;while(1){P1_7=0;//打开P0=table[sample%10];//delayfor( x=0;x<1000;x++ ){for( y=0;y<250;y++ ){}}sample++;}}//=======================================//endD、输入完成后,点击图标保存,再分别点击进行调试。

基于DS18B20的温度显示仪实习报告

基于DS18B20的温度显示仪实习报告实习题目实习时间年月日至年月日共周实习单位或实习地点实习单位评语:(分散实习填)签字:公章:年月日指导教师评语:成绩指导教师签字:年月日注:后附实习总结。

其内容应包括:实习目的、实习内容、实习结果及实习心得等项目目录第一章绪论 (4)第二章系统整体设计 (5)第三章系统的硬件选择及设计 (6)第四章系统的软件设计 (13)第五章系统调试 (18)结论 (19)致谢 (20)参考文献 (21)附录A (22)附录B (23)附录C (24)第一章绪论1.1选题的背景、目的及意义温度控制在工业自动化控制中占有非常重要的地位。

单片机系统的开发给现代工业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的应用。

将单片机控制方法运用到温度控制系统中,可以克服温度控制系统存在的严重滞后现象,同时在提高采样频率的基础上可以很大程度的提高控制效果和精度。

现代自动控制越来越朝着智能化发展,在很多自动控制系统中都用到了主控机,小型机,甚至是巨型机处理机等,当然这些处理机有一个很大的特点,那就是很高的运行速度,很大的内存,大量的数据存储器。

但是随之而来的是巨额的成本。

在很多小型系统中,处理机的成本占系统成本的比例高达20%,而对于这些小型系统来说,配置一个如此高速的处理机没有任何必要,因为这些小系统追求经济效益,而不是在乎系统的快速性,所以用成本低廉的单片机控制小型的,而不是很复杂,不需要大量复杂运算的系统中是非常合适的。

随着电子技术以及应用需求的发展,单片机技术得到了迅速发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。

1.2国内外研究状况和相关领域中已有的研究成果已经研究出了SNB1000T总线式温度显示仪。

SNB1000系列智能显示仪,配合各种传感器构成各种状态显示仪表,本身自带工业通用的MODBUS-RTU通讯协议,是在线监测仓库、机房等环境状态的实用型仪器,也可广泛应用于需要实时温度、湿度、压力、水位等数据采集监测的各种应用场合。

单片机原理与应用实验报告——温度测量显示及设定

《单片机原理与应用》课程实验报告院系:班级:学生:学号:指导教师:设计时间:哈尔滨工业大学1 实验的目的、内容和设备1.1 实验的目的单片机综合实验的目的是训练单片机应用系统的编程及调试能力,通过对一个单片机应用系统进行系统的编程和调试,掌握单片机应用系统开发环境和仿真调试工具及仪器仪表的实用,掌握单片机应用程序代码的编写和编译,掌握利用单片机硬件仿真调试工具进行单片机程序的跟踪调试和排错方法,掌握示波器和万用表等杆塔工具在单片机系统调试中应用。

1.2 实验内容实验的内容是利用APP001开发板实现一个温度测量显示和控制的单片机应用系统,利用APP001开发板上的温度传感器测量温度,通过键盘输入一个稳定设定值,当测量温度高于设定温度时发出声音报警,开启散热风扇开关,并在LCD上显示实时温度值,设定温度值和散热风扇的开关状态,其中日期和时间利用单片机的定时器来产生,并能通过键盘来设定。

通过该实验学习和掌握以下的内容:1)MPLAB开发环境的使用,程序编写和排错及软件仿真2)利用MPLAB和ICD2对程序进行在线仿真和调试3)使用万用表和示波器等仪器对硬件系统进行测量和调试4)PIC18F452单片机的I/O和PWM驱动及编程方法5)PIC18F452单片机LCD和键盘接口及编程方法6)PIC18F452单片机的USART编程及与PC机的通讯方法7)利用Timer1外接32.768kHz的晶振产生RTC1.3 实验设备1)运行MPLAB的PC机2)示波器、万用表3)直流电源4)ICD2仿真器5)APP001多功能实验板2 总体设计2.1 硬件总体设计系统组成方案图1系统框图2.2 软件总体设计图2主程序框图图3 中断程序框图3 硬件设计1)散热风扇开发输出控制:实验中我们利用一个LED来模拟风扇状态,当散热风扇开关打开时,LED被点亮发光,当散热风扇关闭时,LED不发光。

开发板上的指示灯D11由RB2,低电平亮,高电平灭。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、数码管显示的数值(如图)

经过几天的编写程序与导入开发板检测,我们小组成员对c语言有了进一步的认识,学会了写流程图,设计模块化程序,了解并运用了一些C语言常用程序段,例如:2个变量额交换,延时,查找数码led字模表,平滑过渡,求平均值,链表循环等。开始时,我们先了解各程序的功能,然后划分函数,在编写,主要遇到的困难时对main函数的编写,以及检验成语成功后,把程序导入开发板却无效等。后来发现时延长函数问题,通过小组协商,解决了问题,实现3位随机数的功能。

#include "config.h"
void main()
{
char val=0,*x;
unsigned int temp,te,sum,i;
HC_595_init();
while(1)
{ for(i=1;i<=15;i++)
{
temp=gettemp();
putlist(temp);
}
te=getlist(x);
3、取平均值:在ad_value[15]中有15个元素,第一次把temp的值赋予ad_value[0],point自增,把temp的新值赋予ad_value[1],当point大于等于15时,归零。开始下一次调用函数,有新的值替代ad_value[0],保持循环。每次调用函数都会返回一个sum值,如此下去,到达一定值后会趋于稳定。
sum=getsum(te);
for(i=0;i<800;i++)
{
Seg7_Led_display(sum);
}
}
}

实验原理简述:
1、取随机数:把Rand()出来的值赋到temp,在把返回值temp返回到函数get_tenp中,最后把返回值赋值到变量i中储存起来。
2、循环链表:调用函数put_list(),把i作为实际参数将值复制给函数的形式参数x,将x复制到list_top指向的位置,数值进入链表。使用语句list_top++;使它增加“1”,那么list_top指向第二个元素。然后调用get_list函数,将list_bottom指向的值赋予指向temp的指针,这样temp得到新的值,完成提取。再把list_bottom自增“1”,指向链表第二个元素。重复下去,使得链表执行先进先出的任务,并让list_top、list_bottom循环起来,从而达到链表循环。
温度显示器实验报告
张黎明1107200117丘雄锋1107200084刘栋1107200091
一主函数流程图链表取值函数流程图否 Nhomakorabea是





这次实验主要使用了ICCAVR和AVR STUDIO两个软件,ICCAVR主要用于编写程序文件。使用的编程语言为C语言,而AVR STUDIO主要用于程序的下载和仿真调试,这两款软件操作简单,使用方便。
相关文档
最新文档