您好,欢迎访问三七文档
《智能仪器设计》课程设计报告书专业:电子信息工程班级:电子0811姓名:还传俊学号:08201061231基于51单片机的温度检测一、设计目的及原理1.1设计题目和目的1.1.1设计题目采用ATmega16单片机实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配Cu100热电阻,测温范围为0℃~150℃。采用比例控制、并用晶闸管移相驱动1000W电加热器(电源电压为AC220V)。1.1.2设计目的单片机综合练习是一项综合性的专业实践活动,目的是让学生将所学的基础理论和专业知识运用到具体的工程实践中,以培养学生综合运用知识能力、实际动手能力和工程实践能力,为此后的毕业设计打下良好的基础。1.2设计原理由热电阻传感器送来的电信号在测量桥路进行冷端自动补偿后,送入放大器,一面把信号进行放大,同时把非线性信号校正为线性信号,经线性放大信号一路A/D转换电路把模拟量转换成数字信号进行数字显示,另一路传输到调节网络,进行规定的比较运算,同时输出一个需要的控制信号和进行工作状态指示。2二、硬件设计2.1系统原理框图本设计智能温度数显表由温度监测、信号处理、输出控制三部分组成。其系统框图如图1所示,它通过Cu100热电阻传感器获取绕组温度值,经信号调理电路处理后直接送入控制器的A/D转换输入端。微控制器根据信号数据及设定的各种控制参数,按照嵌入的软件控制规律执行计算与处理,自动显示智能仪表数显表可测的温度范围、并根据当前状态输出正常、设定上下线报警等2.2基本模块简介Atmega16l单片机按键报警指示和显示热电阻输入下载通信32.2.1Atmega16单片机温控仪控制核心采用Atmega16单片机,具有16KB系统内可编程Flash的8位微控制器ATmega16有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装)的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时CPU停止工作,而USART、两线接口、A/D转换器、SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU和除了异步定时器与ADC以外所有I/O模块的工作,以降低ADC转换时的开关噪声;Standby模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby模式下则允许振荡器和异步定时器继续工作。2.2.2Cu100热电阻传感器及电路铜电阻在测温范围内电阻值和温度呈现线性关系,温度系数大适用于无腐蚀介质,超过150℃易被氧化,铜电阻有R0=100Ω和R0=50Ω两种,本次课程设计采用的是Cu100的热电阻,Cu100热电阻测温范围为0℃--150℃,其分度表如下:T(℃)-50-40-30-20-10-0R(Ω)78.4882.8087.1191.4195.71100T(℃)010203040506070R(Ω)100104.29108.57112.85117.13121.4125.68129.964T(℃)8090100110120130140150R(Ω)134.24138.52142.80147.08151.37155.67156.96164.27热电阻输入电路:该电路采用Cu100热电阻进行测温,1N4148二极管对热电偶冷端进行补偿,采用TLV2252M放大器对输入信号进行放大。2.2.3数码管显示及指示电路5A:显示电路.RSM0510510510510510510510RSM7510bcdefgha设定值显示实际值显示....a11b7c4d2e1f10g5h3L12LM9RM8R6SMG1....a11b7c4d2e1f10g5h3L12LM9RM8R6SMG2n1n2n3n4n5n6n7n8dataRCKSRCK+5HQwbcdefgha123J5951G13RCK12SER14SRCLR10SRCK11QA15QB1QC2QD3QE4QF5QG6QH7QH19gnd8Vcc16Uy1HC595G13RCK12SER14SRCLR10SRCK11QA15QB1QC2QD3QE4QF5QG6QH7QH19gnd8Vcc16Uy2HC595PB4PB5MOSIPB7SCK123JSPIn1n2n3n4n5n6n7n8SM1显示的是热电偶测的电加热器的实际温度值,SM2显示的是人工设计的电加热器的期望温度值。数码管是有HC595芯片来驱动的,HC595接在SPI通信的3个接口上。B:指示电路指示电路是指示按键的输入状态的。D1、D2、D3、D4与S1、S2、S3、S4一一对应,当某个按键按下时,单片机相应的引脚将置低电平,使该按键相对应的二极管发光。62.2.4按键电路4个按键与单片机的接线图及个按键的作用如上图所示;当单片机的引脚输入为低电平时,表示该引脚所对应的按键按下,单片机实现相应的功能。2.2.5报警电路当温度超过报警限时,单片机相应管脚输出一定频率的电平。蜂鸣器发出响声。2.2.6下载电路下载程序代码用的是SPI接口,用ISP电缆对单片机进行编程。72.2.7通信电路该模块用到跳线,不通信时D0、D1口作为常规I/O口使用;通信时其作为通信口使用,实现单片机与单片机或是其它上位机的通信。2.2.8输出驱动电路采用光控过零驱动晶闸管,进而控制电加热器的通断电。2.2.9电源电路82.3总原理图92.4系统PCB图电源连接口,连接时注意极性,接错将损坏单片机作为电源开关的跳线短路7805的跳线DX210k电位器模拟电源输出JMN1LED灯与模拟输入的跳线DA1、DA2电源指示灯按钮共阳数码管外晶体跳线外参考电压跳线晶体编程接口ATmega16单片机10三、软件设计语言#includeAtmega16.h//Atmega16单片机头文件#includemacros.hFlashunsignedcharSHUMA[]={0xC0,0xF9,0xA4,0XB0,0x99,0x920x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,};//定义数码管译码数组定义数码管位选数组;{SPI初始化;VoidSPI_MasterInit(void){DDRB|=(1〈〈5)|(1〈〈7);SPCR=(1〈〈6)|(1〈〈4)|(1〈〈5)|(1〈〈1)|(1〈〈0);}VoidSPI_595_Out(unsignedchari){SPDR=i;While(!SPDR&(17))){;}}Voidmain(void){unsignedcharsaomiao=0;Unsignedcharw[10];DDRA=0x00;PORTA=0X00;DDRB=0XB0;PORTB=0Xff;DDRC=0XFC;PORTC=0XFF;PORTD=0X00;DDRD=0XFF;SPI_Masterlnit();While(1){{data[0]=1234;data[1]=5678;W[0]=data[0]%10;W[1]=data[0]/10%10;W[2]=data[0]/100%10;W[3]=data[0]/1000%10;W[4]=data[0]%10;W[5]=data[0]/10%10;W[6]=data[0]/100%10;W[1]=data[0]/1000%10;}PORTB&=~(14);SPI_595_Out(weizhi[saomiao]);SPI_595_Out(disp[w[saomiao]];11PORTB=|(14);saomiao++;if(saomiao=8saomiao=0;while(1){ucharj=0;uinti;DDAR=0xFF;DDRB=0XFF;PORTD=0XFF;DDRD=0X00;While(1){if((PIND|0XEE)==0XEF)For(i=0;i2000;i++);If((PIND|0XEF)==0XEF){j++;If(j99)j=0;}While(PIND|0XEF)==0XEF);PORTB=SHUMA[j/10];PORTC=SHUMA[j%10];PORTA=~j;}}{while(1)PORTC=SHUMA[counter];}//数码管与LED灯显示语句:if(display_time==1)//如果显示标记display_time=1,则执行显示任务,完成一位数码管显示{数码管扫描显示语句;//采用两片74HC595扫描数码管display_time==0;}//ADC转换与数字滤波语句:if(sample_time==1){ADC转换、数字滤波与非线性校正程序;sample_time==0;}//ADC输出数值判断、报警、位式算法运算与控制量输出:if(control_time==1){温度值判断与报警语句;//具有比例算法的运算语句:{Error=SetPoint–temp_value;//求偏差LastError=Error;12out=Proportion*Error//比例算法}control_time=0;}//DAC转换语句:if(DAC_time==1){DAC数据输出语句;DAC_time=0;}}//PCA0中断服务程序用于产生PWM输出(高优先级中断)voidPCA0_ISR(void)interrupt11//使用定时器0溢出作为时钟源{//PWM输出语句:unsignedintduty;//定义占空比变量,5000μs对应5V,1000μs对应1VTMOD=0X10;//定时器1,工作模式1,16位定时模式TH1=(65536-1000)/256;//定时1初始化TL1=(65536-1000)%256;ET1=1;//允许定时器1中断EA=1;//允许总中断TR1=1;//启动定时器1}//定时器1中断服务程序,用于产生显示、ADC转换、DAC与控制周期等标记定时器1中断服务程序:timer1()interrupt3{staticbitw;//定义位变量if(w==0)//当w=0时,P2.0输出低电平TL1=(65535-(6000-duty))%256;P2_0=0;}//这里用P2.0引脚输出PWM信号else{TH1=(65535-duty)/256;//定时器1赋初值(高电平区间)TL1=(65535-duty)%256;P2_0=1;//当w=0时,P2.0输出高电平}w=!w;}//设置定时器1中断级别低于PCAvoidtimer1()interrupt3{staticn,m,k,h;n++;m++,k++;h++;if(n==display_time0)//display_time0为显示周期{n=0;display_time=1;}13if(m==sample_time0)//sample_time0为ADC转换周期{m=0;sample_time=1;}if(k==control_time0)//control_time0为控制周期{k=0;control_time=1;}if(h==DAC_time0)//DAC_time0为控制周期{h=0;DAC_time=1;}}四、参考文献【1】夏路易.智能仪表设计基
本文标题:智能仪器课程设计
链接地址:https://www.777doc.com/doc-6286272 .html