自动化学院单片机课程设计报告专业电子信息技术及仪器班级09062912学号09061939学生姓名瓦达喜指导教师学期大四上完成日期2012.9.9一、目的智能仪表课程设计是一项综合性的专业实践活动,目的是让学生将所学的基础理论和专业知识运用到具体的工程实践中,以培养学生综合运用知识能力、实际动手能力和工程实践能力,为此后的毕业设计打下良好的基础。
二、任务本次智能仪表课程设计的任务是设计一个温度控制器,并完成相关的编程工作。
基本任务是利用AT89C51单片机、ADC0809模数转换器等芯片设计一个具有温度测量显示和开关控制输出的装置。
三、温度控制系统具体设计要求电路设计、软件编程的功能和要求:1)该装置要求利用Proteus仿真软件完成软件编程与实现。
2)用6只共阴极的八段数码管来分别显示工作状态、设定温度和实际温度温度。
如下图所示:实际温度设定温度工作状态:“1”“1”表示开机“0”“0”表示关机3)用3只按钮来分别作为开机/关机键、温度设定上升键和下降键。
4)用1只LED发光二极管来表示加热器开关量控制输出,所有发光二极管均要求用2003达林顿管或三极管放大驱动。
5)温度设定范围0~99℃,在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5℃时,加热器控制输出“开”。
6)上电后,自动显示关机状态、设定温度50℃和实际室内温度,这时用户可以设定温度进行设定,但只有在按下启动/关闭键后,控制器正式工作;在运行期间,若对温度状态进行设定,则控制器按新设定开始。
若关机后(非断电)重新启动控制器,则自动进入上次关机前的设定状态。
7)温度传感器采用AT502热敏电阻(Proteus软件中用滑动变阻器代替)。
8)完成电路原理图设计,请注意:只设计本课题要求相关的电路;9)完成2)~ 5)所规定功能的软件流程图和编程工作;10)完成软硬件调试四、硬件设计部分1、系统设计整体框架图如图4-1所示图4-1 温度控制系统框架图本系统总体框架如图4-1所示,主要是基于AT89C51单片机和其他四个模块组成,四个模块即:LED显示模块、加热器控制模块、按键扫描/处理模块和基于ADC0808芯片的数据采集模块。
AT89C51单片机将通过ADC0808数据采集模块采集到的数据经过相应的处理送往LED显示模块进行显示。
数据采集模块:系统要求对温度进行实时采样、控制、显示,利用芯片ADC0808对温度采样,用一路模拟通道采集信号,就能满足要求。
由于温度的变化在短时间内不是非常明显,没必要一直都要采集温度值,因此本系统采用内部中断0产生定时中断定时的对温度值进行采集,并送显示。
按键扫描/处理模块:通过外部中断来实现,即有中断产生就去执行按键相应程序(开/关加热器、温度设置值上调、温度设置值下调)。
加热器控制模块:在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5℃时,加热器控制输出“开”。
实时的控制温度的变化使得温度值在设定值附近,以满足系统的设计要求。
1-1 ADC0809与MCS-51系列单片机的接口方法ADC0809与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式,本系统中选用中断接口方式。
由于ADC0809无片内时钟,时钟信号可由单片机I/0口产生。
ADC0809内部设有地址锁存器,所以通道地址由P0口的低3位直接与ADC0809的A 、B 、C 相连。
通道基本地址为0000H ~0007H 。
其对应关系如表4-1-1所示。
表4-1-1 0809输入通道地址控制信号:将P2.7作为片选信号,在启动A/D 转换时,由单片机的写信号和P2.7控制ADC 的地址锁存和启动转换。
由于ALE 和START 连在一起,因此ADC0809在锁存通道地址的同时也启动转换。
在读取转换结果时,用单片机的读信号RD 和P2.7引脚经或非门后,产生正脉冲作为OE 信号,用以打开三态输出锁存器。
其接口电路如图4-3-1 数据采集电路所示。
2、AT89C51晶振电路和复位电路 2-1 晶振电路原理图 如图4-2-1所示图4-2-1内部振荡器方式地址码输入通道C B A 0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 111IN7c、2c构成并联内部方式时钟电路如图4-2-1所示。
外接晶体以及电容1谐振电路,接在放大器的反馈回路中,内部振荡器产生自激振荡,一般晶振可在2~12MHz之间任选。
对外接电容值虽然没有严格的要求,但电容的大小多少会影响振荡频率的高低、振荡器的稳定性、起振的快速性和温度的稳c和2c通常选30pF左右;外接陶瓷谐振器时,1c和2c 定性。
外接晶体时,1的典型值为47pF。
2-2 上电外部复位电路如图4-2-2所示图4-2-2上电外部复位电路单片机的复位是靠外部电路实现的。
无论是HMOS还是CHMOS型,在振荡器正运行的情况下,RST引脚保持二个机器周期以上时间的高电平,系统复位。
在RST端出现高电平的第二个周期,执行内部复位,以后每个周期复位一次,直至RST端变低。
本文采用上电外部复位电路,如图4-2-2所示,相关参数为典型值。
3、数据采集模块3-1 原理图如图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转换,在输出端形成高低电平输入单片机的P1端,这就形成了对电阻值的数据采样。
温度表的建立:温度标的建立就是通过滑动变阻器的改变电阻值来对OUT输出端端口的高低电平的改变来对应相应的温度值。
比如:滑动变阻器上显示的是12%,那么OUT端口显示的二进制代码是00001100B,通过对端口的比较:if (adcv==buddle[i])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,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,0x0 b,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,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} ;通过对端口数据的比较,然后再给变量赋值建立了从0--98十进制与二进制之间的关系。
4、温度值/加热器开关设置模块4-1电路原理图,如图4-4-1所示图4-4-1 温度值/加热器设置原理图4-2 工作原理三个开关中任何一个开关按下,INT0都将置低。
INT0置低时单片机将有一个外部中断0产生中断,此时说明有按键按下。
单片机检测到有按键按下但是还是未知哪个按键。
此时我们可以通过检测P2.7,P3.0,P3.1口的状态来判断是哪个按键按下,如果在相应位置上出现低电平则相应按键被按下。
然后执行相应的按键功能的程序以及显示程序。
5、LED显示模块5-1LED原理图如图4-5-1所示图4-5-1 LED显示电路图5-2 LED显示工作原理本系统应用8段6位共阴数码管作为显示器件,用片选信号来控制数码管的显示字符,应位选信号来控制点亮那个数码管。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;其他数字以此类推。
P0口对应的是控制数码管的段选,也就是说可以让数码管显示不同的数字,字符。
而在不同的数码管显示则是通过P2口的位选来实现的。
换句话说P2口就是控制1--6号数码管哪个被点亮,哪个来显示数字。
如果程序循环显示的时间比较少那就呈现在眼前的就是六位数码管全亮,其实是循环点亮,但是人的眼没法在这么短时间内辨别出来。
6、加热器控制模块6-1 电路原理图如图6-1-1所示图6-1-1 加热器控制电路6-2 电路图简要说明本系统用1只LED发光二极管来表示加热器开关量控制输出,电路如图6-1-1所示。