单片机课程设计说明书第1页共18页单片机课程设计自动温度检测报警系统学生姓名:学号:学院:班级:电子信息工程一班指导老师:完成日期:2011年12月25日单片机课程设计说明书第2页共18页引言目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用必须重视。温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。在控制领域中,对温度的控制有着举足轻重的作用。例如陶瓷的烧烤,只有控制住温度的适度,才能制作出一件完美的艺术品,否则只是一件废品;还有如酿酒的过程,也需要对温度进行控制。可见,在生活的许多方方面面都有着对温度进行感知和控制的需要。本次设计的目的就是基于AT89C51单片机设计一个温度检测,报警的系统,该系统能实时采集周围的温度信息进行显示,程序内部设定有报警上下限,根据应用环境不同可设定不同的报警上下限。该系统实现了对温度的自动监测,为设备的正常运行提供了条件,在工业中具有一定的实用价值和广泛的应用前景。单片机课程设计说明书第3页共18页1设计任务与要求1.1设计任务基于AT89C51单片机设计温度检测报警,可以实时采集周围的温度信息进行显示,并且可以根据应用环境不同设定不同的报警上下限。1.2设计要求1.实时温度检测并显示其对应的值。2.具有温度报警功能。3.可以设报警置温度上下限。1.3实用价值与理论意义温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。在控制领域中,对温度的控制有着举足轻重的作用。例如陶瓷的烧烤,只有控制住温度的适度,才能制作出一件完美的艺术品,否则只是一件废品;还有如酿酒的过程,也需要对温度进行控制。可见,在生活的许多方方面面都有着对温度进行感知和控制的需要。而本次设计的温度检测报警系统是在日常生活和工业应用非常广泛的工具,能实时采集周围的温度信息进行显示,程序内部设定有报警上下限,根据应用环境不同可设定不同的报警上下限。该系统实现了对温度的自动监测,为设备的正常运行提供了条件,在工业中具有一定的实用价值和广泛的应用前景。单片机课程设计说明书第4页共18页2系统硬件设计2.1系统设计框图图2.1系统设计框图2.2系统电路图设计2.2.1系统电路设计框图图2.2.1系统电路设计框图2.2.2系统主要硬件需求介绍(1)AT89C51单片机AT89C51是一种带4K字节闪烁可编程可擦除只读存储器,是低电压,高性AT89C51单片机把所测试的温度显示到数码管上温度传感器进行温度采集,经过A/D转换(ADC0808内部完成此操作),送入单片机存储,通过定时器0进行定时读取蜂宁器报警,在温度达到相应设定的温度值,触发蜂宁器发出响声,进行报警。可以设定报警方式(上限报警还是下限报警)单片机课程设计说明书第5页共18页能CMOS8位微处理器,俗称单片机。AT89C51管脚介绍:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。图2.2.2(1)AT89C51管脚P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。P3口也可作为AT89C51的一些特殊功能口。RST:复位输入。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。(2)ADC0808ADC0808是采样分辨率为8位的、以逐次逼近原单片机课程设计说明书第6页共18页理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能如下:1~5和26~28(IN0~IN7):8路模拟量输入端。8、14、15和17~21:8位数字量输出端。22(ALE):地址锁存允许信号,输入,高电平有效。图2.2.2(2)ADC0808管脚图6(START):A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。7(EOC):A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。9(OE):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。12(VREF(+))和16(VREF(-)):参考电压输入端11(Vcc):主电源输入端。13(GND):地。23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路(3)四段八位数码管数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0~9、字符A~F、H、L、P、R、U、Y及小数点“.”。四段八位数码管的外形结构如图2.2.2(3)所示。数码管又分为共阴极和共阳极两种结构。数码管引脚图八段数码管结构数码管工作原理:共阳单片机课程设计说明书第7页共18页极数码管的8个发光二极管的阳极(二极管正端)连接在一起。图2.2.2(3)四段八位数码管通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点2.2.3系统电力模块图(1)单片机电路连接图图2.2.3(1)为单片机电路连接图,其中晶振频率可以根据自己需要进行选择,范围在0-24MHZ,常用12MHZ。复位电路得电容一般用10UF,但并不唯一,只要RC所得时间大于两个机器周期即可。还有其P0内部无上拉电阻,所以在执行输出功能时,外部必须接上拉电阻(一般10K即可)。图2.2.3(1)单片机电路连接图(2)液晶显示电路模块图2.2.3(2)为液晶显示电路模块,图中为一个四位八段数码管,其接法为共阴极接法。单片机课程设计说明书第8页共18页图2.2.3(2)液晶显示电路模块(3)A/D转换电路模块图2.2.3(3)为A/D转换电路模块物理量的输入为IN0管脚,模量的输出为OUT1—8。.图2.2.3(3)A/D转换电路模块单片机课程设计说明书第9页共18页2.2.4系统电力图图2.2.4系统电力图单片机课程设计说明书第10页共18页3系统软件设计3.1程序主要模块流程图图3.1AT89C51主程序流程图3.2源程序清单与注释(见附录一)4实验结果4.1正常情况数码管显示的数字在77—153范围内,且报警等都不亮,蜂鸣器不发出声音,结果如图4.1.单片机课程设计说明书第11页共18页图4.1正常情况4.2低于温度下限数码管显示温数字低于77,P3.1为低电平,故在这路上的LED灯亮,蜂鸣器发出声音,结果如图4.2。.图4.2低于下限4.3高于温度上限数码管显示数字高于153,P3.0为低电平,故在这路上的LED灯亮,蜂鸣器发出声音,结果如图4.3。.图4.3高于上限单片机课程设计说明书第12页共18页5课程设计体会及总结回顾起此次单片机课程设计,我仍感慨颇多,从理论到实践,在接近一月的日子里,可以说得是苦多于甜,但是可以学到很多的的东西,不仅是学习上的,而且是关于做人做事方面的感悟。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。我在设计的过程中遇到了许多问题,同时也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对汇编语言掌握得不透彻。还有,这次的设计让我明白了求人不如求己,虽然我们要讲究合作,但更重要的是自己,只有自己懂,自己做,才不会在关键时刻掉链子。别人终究是一个陪衬,路总是要自己走,属于自己的任务就要自己搞。所以,我们必须要时刻强大自己,别人终究是别人。这个过程虽然不是很平坦,肯定会遇到各种各样的问题,但一旦征服了它那它就是你的东西了,当这样的厚积达到一定程度那你就能享受到薄发那刻的辉煌。单片机课程设计说明书第13页共18页附录LED_0EQU30HLED_1EQU31HLED_2EQU32HADCEQU35HTCNTAEQU36HTCNTBEQU37HH_TEMPEQU38H;温度上限L_TEMPEQU39H;温度下限FLAGBIT00HH_ALMBITP3.0L_ALMBITP3.1SOUNDBITP3.7CLOCKBITP2.4STBITP2.5EOCBITP2.6OEBITP2.7ORG00HSJMPSTARTORG0BHLJMPINT_T0ORG1BHLJMPINT_T1START:MOVLED_0,#00HMOVLED_1,#00HMOVLED_2,#00HMOVDPTR,#TABLEMOVH_TEMP,#153MOVL_TEMP,#77MOVTMOD,#12HMOVTH0,#245MOVTL0,#0MOVTH1,#(65536-1000)/256MOVTL1,#(65536-1000)MOD256单片机课程设计说明书第14页共18页MOVIE,#8aHCLRCSETBTR0;为ADC0808提供时钟WAIT:SETBH_ALMSETBL_ALMCLRSTSETBSTCLRST;启动转换JNBEOC,$SETBOEMOVADC,P1;读取AD转换结果CLROEMOVA,ADCSUBBA,#77;判断是否低于下限JCLALMMOVA,H_TEMPMOVR0,ADCSUBBA,R0;判断是否高于上限JCHALMCLRTR1LJMPPROCLALM:;低温报警CLRL_ALMSETBTR1CLRFLAGLJMPPROCHALM:;高温报警CLRH_ALMSETBTR1SETBFLAGLJMPPROCPROC:MOVA,ADC;数值转换MOVB,#100DIVABMOVLED_2,AMOVA,BMOVB,#10DIVABMOVLED_1,A单片机课程设计说明书第15页共18页MOVLED_0,BLCALLDISPSJMPWAITINT_T0:CPLCLOCK;提供ADC0808时钟RETIINT_T1:MOVTH1,#(65536-1000)/256MOVTL1,#(65536-1000)MOD256CPLSOUNDINCTCNTAMOVA,TCNTAJBFLAG,I1;判断是