ImageVerifierCode 换一换
格式:DOC , 页数:22 ,大小:604.12KB ,
资源ID:828512      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-828512.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(温度控制器系统报告智能仪表课程报告.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

温度控制器系统报告智能仪表课程报告.doc

1、温度控制系统设计报告智能仪表课程设计报告一、 目的智能仪表课程设计是一项综合性的专业实践活动,目的是让学生将所学的基础理论和专业知识运用到具体的工程实践中,以培养学生综合运用知识能力、实际动手能力和工程实践能力,为此后的毕业设计打下良好的基础。二、 任务本次智能仪表课程设计的任务是设计一个温度控制器,并完成相关的编程工作。基本任务是利用AT89C51单片机、ADC0809模数转换器等芯片设计一个具有温度测量显示和开关控制输出的装置。三、温度控制系统具体设计要求电路设计、软件编程的功能和要求:1)该装置要求利用Proteus仿真软件完成软件编程与实现。2)用6只共阴极的八段数码管来分别显示工作状

2、态、设定温度和实际温度温度。如下图所示: 实际温度 设定温度 工作状态:“1”“1”表示开机 “0”“0”表示关机3)用3只按钮来分别作为开机/关机键、温度设定上升键和下降键。4)用1只LED发光二极管来表示加热器开关量控制输出,所有发光二极管均要求用2003达林顿管或三极管放大驱动。5)温度设定范围099,在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5时,加热器控制输出“开”。6)上电后,自动显示关机状态、设定温度50和实际室内温度,这时用户可以设定温度进行设定,但只有在按下启动/关闭键后,控制器正式工作;在运行期间,若对温度状态进行设

3、定,则控制器按新设定开始。若关机后(非断电)重新启动控制器,则自动进入上次关机前的设定状态。7)温度传感器采用AT502热敏电阻(Proteus软件中用滑动变阻器代替)。8)完成电路原理图设计,请注意:只设计本课题要求相关的电路;9)完成2) 5)所规定功能的软件流程图和编程工作;10)完成软硬件调试四、硬件设计部分1、系统设计整体框架图如图4-1所示图4-1 温度控制系统框架图本系统总体框架如图4-1所示,主要是基于AT89C51单片机和其他四个模块组成,四个模块即:LED显示模块、加热器控制模块、按键扫描/处理模块和基于ADC0808芯片的数据采集模块。AT89C51单片机将通过ADC08

4、08数据采集模块采集到的数据经过相应的处理送往LED显示模块进行显示。数据采集模块:系统要求对温度进行实时采样、控制、显示,利用芯片ADC0808对温度采样,用一路模拟通道采集信号,就能满足要求。由于温度的变化在短时间内不是非常明显,没必要一直都要采集温度值,因此本系统采用内部中断0产生定时中断定时的对温度值进行采集,并送显示。按键扫描/处理模块:通过外部中断来实现,即有中断产生就去执行按键相应程序(开/关加热器、温度设置值上调、温度设置值下调)。加热器控制模块:在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5时,加热器控制输出“开”。实时

5、的控制温度的变化使得温度值在设定值附近,以满足系统的设计要求。1-1 ADC0809与MCS-51系列单片机的接口方法ADC0809与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式,本系统中选用中断接口方式。由于ADC0809无片内时钟,时钟信号可由单片机I/0口产生。ADC0809内部设有地址锁存器,所以通道地址由P0口的低3位直接与ADC0809的A、B、C相连。通道基本地址为0000H0007H。其对应关系如表4-1-1所示。地址码输入通道CBA000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7表4-1-1 080

6、9输入通道地址控制信号:将P2.7作为片选信号,在启动A/D转换时,由单片机的写信号和P2.7控制ADC的地址锁存和启动转换。由于ALE和START连在一起,因此ADC0809在锁存通道地址的同时也启动转换。在读取转换结果时,用单片机的读信号和P2.7引脚经或非门后,产生正脉冲作为OE信号,用以打开三态输出锁存器。其接口电路如图4-3-1 数据采集电路所示。2、 AT89C51晶振电路和复位电路2-1晶振电路原理图 如图4-2-1所示图4-2-1 内部振荡器方式内部方式时钟电路如图4-2-1所示。外接晶体以及电容、构成并联谐振电路,接在放大器的反馈回路中,内部振荡器产生自激振荡,一般晶振可在2

7、12MHz之间任选。对外接电容值虽然没有严格的要求,但电容的大小多少会影响振荡频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。外接晶体时,和通常选30pF左右;外接陶瓷谐振器时,和的典型值为47pF。2-2上电外部复位电路如图4-2-2所示图4-2-2上电外部复位电路单片机的复位是靠外部电路实现的。无论是HMOS还是CHMOS型,在振荡器正运行的情况下,RST引脚保持二个机器周期以上时间的高电平,系统复位。在RST端出现高电平的第二个周期,执行内部复位,以后每个周期复位一次,直至RST端变低。本文采用上电外部复位电路,如图4-2-2所示,相关参数为典型值。 3、 数据采集模块3-1 原

8、理图如图4-3-1所示图4-3-1数据采集电路3-2 数据采集模块工作原理数据采集电路就是将滑动变阻器上的阻值通过IN0读入经过AD转换在OUT1-OUT8输出高低电平。我们的电阻电阻阻值是1千欧,从0到100%显示,我们的输出端有256种显示方式。00h-0ffh。 我们在滑动变阻器前面加上一个串联电阻阻值为1.56K,这样子我们滑动阻值的1%就对应输出端的二进制数00000001B,这样子二进制转换成相应的十进制在建立表格方面也会有相应的简便。当P2.6,WR置低位时,ALE跟OE(输出使能端)置高位,start端也至高位,这时INT0从滑动变阻器读进来的阻值通过AD转换,在输出端形成高低

9、电平输入单片机的P1端,这就形成了对电阻值的数据采样。温度表的建立:温度标的建立就是通过滑动变阻器的改变电阻值来对OUT输出端端口的高低电平的改变来对应相应的温度值。 比如:滑动变阻器上显示的是12%,那么OUT端口显示的二进制代码是00001100B,通过对端口的比较:if(adcv=buddlei)adcv即为端口的二进制数。然后对变量realtep赋值。这样再调用显示函数,在数码管上就显示12.uchar code fm =0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,

10、31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98 ; uchar code buddle=0x00,0x01,0x02 ,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,

11、0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,

12、0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0x62 ; 通过对端口数据的比较,然后再给变量赋值建立了从0-98十进制与二进制之间的关系。 4、 温度值/加热器开关设置模块4-1电路原理图,如图4-4-1所示图4-4-1 温度值/加热器设置原理图4-2 工作原理三个开关中任何一个开关按下,INT0都将置低。INT0置低时单片机将有一个外部中断0产生中断,此时说明有按键按下。单片机检测到有按键按下但是还是未知哪个

13、按键。此时我们可以通过检测P2.7,P3.0,P3.1口的状态来判断是哪个按键按下,如果在相应位置上出现低电平则相应按键被按下。然后执行相应的按键功能的程序以及显示程序。5、 LED显示模块5-1 LED原理图 如图4-5-1所示图4-5-1LED显示电路图5-2 LED显示工作原理本系统应用8段6位共阴数码管作为显示器件,用片选信号来控制数码管的显示字符,应位选信号来控制点亮那个数码管。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)

14、连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;其他数字以此类推。P0口对应的是控制数码管的段选,也就是说可以让数码管显示不同的数字,字符。而在不同的数码管显示则是通过P2口的位选来实现的。换句话说P2口就是控制1-6号数码管哪个被点亮,哪个来显示数字。如果程序循环显示的时间比较少那就呈现在眼前的就是六位数码管全亮,其实是循环点亮,但是人的眼没法在这么短时间内辨别出来。6、加热器控制模块

15、6-1电路原理图 如图6-1-1所示图6-1-1加热器控制电路6-2 电路图简要说明本系统用1只LED发光二极管来表示加热器开关量控制输出,电路如图6-1-1所示。当P10输出低电平时,LED点亮,表明加热器处于工作状态。7、整个系统电路原理图 如7-1-1所示图7-1-1温度控制系统原理图(工作状态)五、软件设计部分5-1函数程序设计流程图如图5-1图5-1温度控制系统主函数主函数中包含了加热控制子程序,温度设置/加热器开关、数据采集和模数转换模块都采用中断程序,以利于节省资源提高单片机的利用率。通过比较温度设置值和外界实际温度值来确定是否开启加热器,以及什么时候开启或关闭加热器,同时将加热

16、器的工作状态在LED上显示出来。以至于达到自动控制的目的。使得温度一直在设置值附近。5-1-1加热器控制子程序流程系统要求温度设定范围099,在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5时,加热器控制输出“开”,所以其流程图如图5-1-1所示。图5-1-1 加热器温度控制子程序流程图5-2 按键扫描/处理(外部中断0程序)流程图如图5-2-1图5-2-1按键扫描/处理(外部中断0程序)流程图采用中断程序来查询按键的按下与否。按键按下后通过读取P1口的状态来确定哪个按键的按下,最终确定程序该往哪个方向执行。中断结束返回主函数,将数值送LE

17、D显示程序显示。5-3定时器中断0程序由于温度的变化在短时间内几乎没什么变化,因此本系统采用内部定时器0来定时控制ADC0808的工作,这样有利于保护芯片,可以让芯片有一定的休息时间,而又不影响系统的精度。当定时器定时时间到时,单片机内部产生一个中断使得主程序暂时停止执行而转至执行中断程序,即ADC0808转换程序。启动ADC808,当判断到转换完成时,单片机将ADC0808输出口的数据读入内部寄存器,经过相应的处理转换成温度值,调用显示程序将其显示在数码管上。中断程序执行结束返回主函数继续执行。如图5-3-1所示图5-3-1外部中断0程序流程图6-1 LED显示子程序该系统中用6只共阴极的八

18、段数码管来分别显示工作状态、设定温度和实际温度温度,从节省单片机资源和写程序方便角度考虑,采用动态显示方式。6-2 LED显示子程序流程图如图6-2图6-2LED显示子程序流程图六、课程设计总结程序:#include #define uint unsigned int#define uchar unsigned charsbit led1=P20; /开关机数码管sbit led2=P21; /sbit led3=P22; /设定温度数码管sbit led4=P23; /sbit led5=P24; /实际温度数码管sbit led6=P25; /sbit key1=P27; /OFF/ONs

19、bit key2=P30; /设定温度加键sbit key3=P31; /设定温度减键sbit wr=P36; /sbit rd=P37; /sbit cs=P26; /wr,rd,cs对ADC0808选通工作sbit hot=P34; sbit l0=P10;sbit l1=P11; /开关机数码管sbit l2=P12; /sbit l3=P13; /设定温度数码管sbit l4=P14; /sbit l5=P15; /实际温度数码管sbit l6=P16; /sbit l7=P17;uchar code fm =0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,

20、16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98 ; uchar code buddle=0x00,0x01,0x02 ,0x03,0x04,0x05,

21、0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,

22、0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0x62 ; /加热uchar code table= /0-9数码管显示表0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; uchar turn=0,settep=66,realtep,adcv,num;uint i; /全局

23、变量turn表示开关机,settep表示设定温度,realtep表示实际温度/*delayms延迟函数*/void delayms(uint ms)uint i,j;for(i=ms;i0;i-) /delayms延时函数,for(j=110;j0;j-);/*outside1外部中断1的初始函数*/void outside1_init(void)EA=1; /开总中断EX1=1; /允许外部中断1中断IT1=1; /外部中断1为脉冲触发方式/*outside1外部中断1函数,对按键中断子程序定义*/void outside1(void) interrupt 2EX1=0; /执行外部中断1程

24、序时,屏蔽外部中断1的响应if(key1=0) /是否有key1按键按下 delayms(10); /有,延迟,消抖if(key1=0) /确认是否有key1按键按下if(turn=0) /ON/OFF选择turn=1; /turn为0,按下key1,turn为1表开机else /turn=0; /turn为1,按下key1,turn为0表关机if(key2=0) /是否有key2按键按下delayms(10); /有,延迟,消抖if(key2=0) /确认是否有key2按键按下if(turn=1) /开机时if(settep=1) /settep设定温度大于等于1时,可以继续减settep-

25、;EX1=1; /允许外部中断1中断,继续等待按键/*outside0外部中断0初始化函数*/void outside0_init(void)EA=1; /总中断开EX0=1; /允许外部中断0中断IT0=1; /外部中断0为脉冲触发方式/*outside0外部中断0函数,对ADC值对应查温度定义*/void outside0(void) interrupt 0EX0=0; /关闭外部中断0中断adcv=P1; /把P1口的数据传给adcvfor(i=0;i=98;i+)if(adcv=buddlei)realtep=fmi;EX0=1;/*timer0定时器0的初始化函数*/void tim

26、er0_init(void)TMOD=0x01; /定时器0工作方式选择,定时,工作方式1TH0=(66536-45872)/256; /设定定时时间初始值,11.0592M的晶振5ms为45872TL0=(66536-45872)%256; /低八位EA=1; /开总中断ET0=1; /允许定时器0中断TR0=1; /定时器0运行控制位/*timer0定时器0功能函数,启动/停止ADC,1秒扫描一次*/void timer0() interrupt 1TH0=(66536-45872)/256; /装初始值,高八位TL0=(66536-45872)%256; /低八位if(turn=1) /

27、当开机时,才启动ADC0808num+; /num计数if(num=1) /启动ADCwr=0; /cs=0; /rd=0; /wr,cs,rd控制启动ADC if(num=20) /num=20是为1秒num=0; /num清零wr=1; /cs=1; /rd=1; /wr,cs,rd关闭ADC等下次再启动/*display数码管显示函数定义*/void display(uchar turn,uchar settep,uchar realtep)/显示子函数 turn表示开关,settep表示设定温度,realtep表示实际温度uchar setshi,setge,realshi,realg

28、e;/setshi,setge对设定温度的settep的十位和个位拆分,realshi,realge对实际温度的十位和个位拆分setshi=settep/10; /settep的十位放在setshisetge=settep%10;/settep的个位放在setgerealshi=realtep/10;/realtep的十位放在realshirealge=realtep%10;/realtep的个位放在realgeP0=0xff;/清除P0口led1=0;/选通数码管1P0=tableturn;/P0口送数delayms(5);/点亮,延迟5msled1=1;/关闭数码管1P0=0xff;/清除

29、P0口led2=0;/选通数码管2P0=tableturn;/P0口送数delayms(5);/点亮,延迟5msled2=1;/关闭数码管2P0=0xff;/清除P0口led3=0;/选通数码管3P0=tablesetshi;/P0口送数delayms(5);/点亮,延迟5msled3=1;/关闭数码管3P0=0xff;/清除P0口led4=0;/选通数码管4P0=tablesetge;/P0口送数delayms(5);/点亮,延迟5msled4=1;/关闭数码管4P0=0xff;/清除P0口led5=0;/选通数码管5P0=tablerealshi;/P0口送数delayms(5);/点亮,

30、延迟5msled5=1;/关闭数码管5P0=0xff;/清除P0口led6=0;/选通数码管6P0=tablerealge;/P0口送数delayms(5);/点亮,延迟5msled6=1;/关闭数码管6/*heat加热函数定义*/void heat()if(turn=1)/开机时,才能进行加热if(setteprealtep)/当实际温度小于设定温度5度以下,开始加热hot=0;/加热开else if (turn=0)hot=1;/*main主函数*/ void main()outside0_init();/外部中断0初始化outside1_init();/外部中断1初始化timer0_init();/定时器0初始化while(1)heat();/加热函数display(turn,settep,realtep);/显示函数- 21 -

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922