课程设计(论文)-单片机温度检测系统设计.docx_第1页
课程设计(论文)-单片机温度检测系统设计.docx_第2页
课程设计(论文)-单片机温度检测系统设计.docx_第3页
课程设计(论文)-单片机温度检测系统设计.docx_第4页
课程设计(论文)-单片机温度检测系统设计.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 任 务 书学院:信息与电气工程学院 专业:自动化 班级:08-2 姓名:覃春锋一、 课程设计题目: 单片机温度检测系统设计二、 课程设计主要参考资料:mcs51/52单片机原理与实践 公茂法 黄鹤松北京航空航天大学出版社单片机实验指导书三、 课程设计应解决的主要问题:(1) 设计实现温度监控系统电路原理图(2) 实现温度数据采集、处理、显示、设置等功能(3) 实现4路0-100度采集,显示(单路显示或循环显示),报警(上下限报警)四、 课程设计相关附件(图纸、软件等):(1) 系统原理图(2) 程序清单(3) proteus keil uvision3五、任务发出日期:2011.6.20 课程设计完成日期:2011.7.1指导教师:高正中 系主任:张开如山 东 科 技 大 学 课 程 设 计目录一、 课程设计题目二、 设计目的三、 课题意义四、 系统的总体设计五、硬件电路设计1、 cpu的选型2、 显示电路的设计3、 温度采集电路的设计4、 键盘电路设计5、 复位电路6、 时钟电路7、 报警电路六、系统原理图七、程序清单山 东 科 技 大 学 课 程 设 计一、 课程设计题目单片机温度检测系统设计二、设计目的通过课程设计熟练掌握所学单片机的内容,提高对课程的综合运用能力,学习单片机应用系统的综合设计过程。培养发现问题、解决问题的能力。三、课题意义温度检测具有重要的意义,无论是在工业、农业、航空航天业或是军事行业都具有十分重要的应用地位。尤其是在自动控制领域,温度是一个极其重要的参数,可以作为控制量或是反馈信号。这就必须要有对温度进行检测的器件和传送变换的能力。因此课题的意义就在于为以后所用的温度采集控制打下基础,同时锻炼提高单片机的运用能力。四。系统的总体设计1、系统的总体框图2、各单元的详细说明此次设计的温度检测系统主要包括上图所示的五个单元:温度采集单元、按键单元、显示单元、报警单元和处理器单元。另外还有复位、时钟频率等单元将在后面的硬件电路部分加以说明。温度采集单元将待测对温度通过专用的测量元件,以常用的温度量化标准为基准,向外送出测出的温度值。一般用于测量温度的器件在测得温度后都是以电压或电流的形式送出温度值。此处考虑到要对所测的温度进行综合应用(显示、报警等),最好是将温度值以数字量的形式送入处理器单元。依据课题要求,要对四路温度进行检测,温度0-100就可以确定直接选用数字温度检测芯片。数字测温芯片具有体积小、功耗低、反应迅速、接线方便等特点而被广泛应用于低温、小范围的温度检测系统中。而且所得信号都是以数字量的形式向外发送。以ds18b20为例,它可以测得-55到+125之间的温度。具有微型化、低功耗、高性能、抗干扰能力强、易于与微处理器连接等特点。山 东 科 技 大 学 课 程 设 计依据工程设计中的实用性、稳定性、经济学等必须考虑的因素,确定此次课程设计用ds18b20这种数字测温芯片。处理器单元处理器单元是整个测温系统的大脑。它是集信号处理、运算、指令处理、命令发出等控制的集中单元,必须具有高速性和稳定性。mcs-51系列单片机是目前市面上应用人群最多,应用领域最广的单片机。单片微型计算机作为微型计算机的一个重要分支,应用广泛、发展迅速,已经对人类社会产生了巨大影响。尤其是美国inter和atmel公司生产的mcs-51系列单片机,具有集成度高、处理能力强、可靠性强、系统结构简单、价格低廉等优点,应用极其广泛。因此处理器选用at89c51单片机。按键单元按键单元的作用是负责向处理器发出一些控制指令,起到人机交互中的输入作用。本次课题中的显示方式(循环显示,单路显示)、设置各路温度上下限等功能都是有按键来实现的。本着实用简便的原则,按键单元采用了四个独立式按键。显示单元显示单元的作用是显示温度值,并伴随显示路数和报警符号。显示作为人机交互的输出,能够让人了解到处理器内部的运行情况。现在主要的显示方式有lcd液晶显示和led发光二级管数码显示。都具有低功耗、反应灵敏的特点。考虑到温度显示主要是数字和显示亮度等因素,此次用led数码管显示。报警单元报警单元的作用是在温度超过上下限时报警,以达到提醒警示的作用。此次设计中用两个发光二极管,一红一绿,分别起到上下限报警作用 。五、硬件电路设计1、cpu的选型cpu作为一个系统的中央处理器单元需要高速的运算能力和较强的稳定性。本次选用的cpu是at89c51单片机。at89c51单片机管脚图at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。山 东 科 技 大 学 课 程 设 计at89c2051是一种带2k字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版本。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性:与mcs-51 兼容 4k字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0hz-24hz三级程序存储器锁定128*8位内部ram32可编程i/o线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路在本次设计中温度是输入是从p1口送入,按键的一部分也从p1口送入。p2和p1口联合运用它们的分时复用功能,把显示接在p0口,把报警接在p2口,p3口主要用到它的中断作用。2、显示电路的设计显示单元采用4个共阳极的led数码管静态显示。用到的器件有8段码共阳极led数山 东 科 技 大 学 课 程 设 计码管、74ls373锁存器,74ls02 4或非门。74ls373是一种数据锁存器,d0d7这8个端口为输入端;q0q7这8个端口为数据输出端,另有两个选通控制信号端oe和le。单片机的数据输出都要经过锁存。虽然p0口有锁存的功能,但要让4个数码管同时发光,这一个端口是不够用的,这就需要使用外部数据锁存器。显示单元电路图由以上电路图可知此静态显示单元中,每个数码管都有各自独立的地址,可以通过访问外部ram指令:movx , dptr , a来实现温度的显示。 3、温度采集电路ds18b20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有ltm8877,ltm8874等等。主要根据应用场合的不同而改变其外观。封装后的ds18b20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。技术性能描述 、 独特的单线接口方式,ds18b20在与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯。 、测温范围 55+125,固有测温分辨率0.5。 、支持多点组网功能,多个ds18b20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。 、工作电源: 35v/dc 、在使用中不需要任何外围元件 、 测量结果以912位数字量方式串行传送 ds18b20管脚图山 东 科 技 大 学 课 程 设 计 、不锈钢保护管直径 6 、适用于dn1525, dn40dn250各种介质工业管道和狭小空间设备测温 、 标准安装螺纹 m10x1, m12x1.5, g1/2”任选 、pvc电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。 ds18b20内部结构 温度采集单元电路图4、键盘电路设计本次设计选用了独立键盘来设置显示方式和温度上下限。如右图所示,当按键没有按下时,p1.4 为高电平,按下时为低电平。通过这种高低电平的变化来实现控制作用。实际编程应用中还要对按键进行去抖操作。山 东 科 技 大 学 课 程 设 计按键单元电路图5、复位电路一般情况下,单片机通电后要进行复位,称上电复位。当单片机由于某种原因而死机或是跑飞时也要复位,以保证其能够恢复正常工作。右图是一个简单的手动复位和上电复位电路。r5,r6构成手动复位电路。r6一般取15k,当r5=200,r6=1k时,按键按下时,实现复位。复位电压是4.17v。 复位电路图6、时钟电路单片机的时钟一般需要多相时钟,所以时钟电路有振荡器和分频器构成。mcs-51内部有一个用于构成振荡器的可控高增益反向放大器,两个引脚是xtal1和xtal2,分别是该放大器的输入端和输出端。在片外跨接一个晶振和两个匹配电容c1,c2就构成一个自激振荡器。其中匹配电容要根据石英 报警电路振荡器的要求选取,一般选用20-30pf的瓷片电容。7、报警电路报警电路选用光控报警方式,用发光二级管来实现。山 东 科 技 大 学 课 程 设 计报警电路图六、系统原理图山 东 科 技 大 学 课 程 设 计系统原理图七、程序清单 19;*;*多温度测温系统*;* flag0 bit p1.0flag bit p1.1flag1 bit p1.2 flag3 bit p1.3org 0000h ljmp main org 0003h ljmp int_0 ;中断进入温度上下限设置org 0030hmain: mov 41h,#0 ;存储第一路温度值 mov 42h,#0 ;存储第二路温度值 mov 43h,#0 ;存储第三路温度值 mov 44h,#0 ;存储第四路温度值 mov 51h,#100 ;存储第一路温度上限值 mov 61h,#10;存储第一路温度下限值 mov 52h,#100 ;存储第二路温度上限值 mov 62h,#10 ;存储第二路温度下限值 mov 53h,#100 ;存储第三路温度上限值 mov 63h,#10 ;存储第三路温度下限值 mov 54h,#100;存储第四路温度上限值 mov 64h,#10 ;存储第四路温度下限值 setb it0setb easetb ex0lcall taket ;读取各路温度 mov r1,#4 ;r1存要显示的路数 mov r0,#44h ;r0存显示的温度值;*循环显示*f4: lcall taketmov a,r0 lcall desplaylcall warninglcall delay ;调用延时程序dec r0djnz r1,f5mov r1,#4 mov r0,#44hf5: ajmp test1f1: ;独立显示 lcall taket mov a,r0 lcall desplay ajmp test1;*判断状态*test1: jnb p1.4,next11ljmp next12next11: ljmp f1 ;a按下 next12: ljmp f4 ;a没按下,f4状态用于循环显示;*读出各路温度* ;*读出第1路的温度*taket: lcall intp10 mov a,#0cch ;送入跳过rom命令lcall writep10mov a,#44h ;送入温度转换命令lcall writep10lcall intp10mov a,#0cch ;送入跳过rom命令lcall writep10mov a,#0beh ;送入读温度暂存器命令lcall writep10lcall readp10 ;读出温度mov 21h,alcall readp10mov 20h,alcall translat11;* 读出第2路的温度*lcall intp11mov a,#0cch ;送入跳过rom命令lcall writep11mov a,#44h ;送入温度转换命令lcall writep11lcall intp11mov a,#0cch ;送入跳过rom命令lcall writep11mov a,#0beh ;送入读温度暂存器命令lcall writep11lcall readp11 ;读出温度mov 23h,alcall readp11mov 22h,alcall translat12;*读出第3路的温度*lcall intp12mov a,#0cch ;送入跳过rom命令lcall writep12mov a,#44h ;送入温度转换命令lcall writep12lcall intp12mov a,#0cch ;送入跳过rom命令lcall writep12mov a,#0beh ;送入读温度暂存器命令lcall writep12lcall readp12 ;读出温度mov 25h,alcall readp12mov 24h,alcall translat13;*读出第4路的温度*lcall intp13mov a,#0cch ;送入跳过rom命令lcall writep13mov a,#44h ;送入温度转换命令lcall writep13lcall intp13mov a,#0cch ;送入跳过rom命令lcall writep13mov a,#0beh ;送入读温度暂存器命令lcall writep13lcall readp13 ;读出温度mov 27h,alcall readp13mov 26h,alcall translat14ret;*中断设置温度上下限子程序*int_0: mov r7,#1 ;选择哪一路 mov 78h,#0 ;记录温度上限值 mov r2,#0 ;记录温度下限值 ajmp testab1: jnb p1.4,b0 ;选择设置哪一路 ljmp b2b0: lcall delay2 jnb p1.4,b1 ljmp b2b1: inc r7 cjne r7,#5,b2 mov r7,#1b2: lcall desplay2 lcall delay1 ajmp testa_b: jnb p1.4,b3 ;设置温度上限 ljmp b5b3: lcall delay2 jnb p1.4,b4 ljmp b5b4: inc 78h mov a,#50h add a,r7 mov r0,a b5: mov a,78h mov r0,a lcall desplay3 lcall delay3 ajmp test ab_: jnb p1.4 ,b6 ;设置温度下限 ljmp b7 b6: lcall delay2 jnb p1.4,b8 ljmp b7b8: inc r2 mov a,#60h add a,r7 mov r0,a b7: mov a,r2 mov r0,a lcall desplay3 lcall delay3 ajmp test test: jnb p1.5,next1 ljmp next2next1: jnb p1.6,y1 ;ab都按下,用于选择路数 ljmp a_by1 : ljmp a_b_ ;a按下b没按下,用于设置上限next2: jnb p1.6 ,y2 ljmp ab1 ;b按下a 没按下,用于设置下限y2: ljmp ab_ ;ab都没按下 a_b_: reti;*报警判断程序* ;第1路报警warning: mov a,41h;第1路温度值 mov r5,51h;第1路温度上限 mov r6,61h;第1路温度下限 clr c subb a,r6 jc dd3 setb p2.1 ;低温报警,绿灯亮 ljmp dd5dd3: clr p2.1 mov r7,#1 lcall desplay1 lcall delaydd5: clr c mov a,41h subb a,r5 jc dd4 clr p2.0 mov r7,#1 lcall desplay1 lcall delay ljmp dd6dd4: setb p2.0 ;高温报警,红灯亮;第2 路报警dd6: mov a,42h mov r5,52h mov r6,62h clr c subb a,r6 jc dd7 setb p2.1 ljmp da5dd7: clr p2.1;低温报警,绿灯亮 mov r7,#2 lcall desplay1 lcall delayda5: clr c mov a,42h subb a,r5 jc dd8 clr p2.0 mov r7,#2 lcall desplay1 lcall delay ljmp da6 dd8: setb p2.0 ;高温报警,红灯亮;第3 路报警da6: mov a,43h mov r5,53h mov r6,63h clr c subb a,r6 jc dd9 setb p2.1 ljmp db5dd9: clr p2.1;低温报警,绿灯亮 mov r7,#3 lcall desplay1 lcall delaydb5: clr c mov a,43h subb a,r5 jc da9 clr p2.0 mov r7,#3 lcall desplay1 lcall delay ljmp db6 da9: setb p2.0 ;高温报警,红灯亮db6: mov a,44h mov r5,54h mov r6,64h clr c subb a,r6 jc da7 setb p2.1 ljmp dc5da7: clr p2.1 ;低温报警,绿灯亮 mov r7,#4 lcall desplay1 lcall delaydc5: clr c mov a,44h subb a,r5 jc dd10 clr p2.0 mov r7,#4 lcall desplay1 lcall delay ljmp dc6 dd10: setb p2.0 ;高温报警,红灯亮dc6: ret;*延时程序*delay: mov r4,#30dd2: mov r5,#200dd1: mov r3,#100ddas: djnz r3,ddas djnz r5,dd1 djnz r4,dd2 retdelay1:mov r4,#5ddas1: mov r5,#200ddas2: mov r3,#100ddas3: djnz r3,ddas3 djnz r5,ddas2 djnz r4,ddas1 retdelay3:mov a ,r4 push acc mov r4,#5ddas11:mov r5,#200ddas21:mov r3,#100ddas31:djnz r3,ddas31 djnz r5,ddas21 djnz r4,ddas11 pop acc mov r4,a retdelay2:;延时5msmov r6,#5loop1:mov r4,#0fahloop:mov r5,#70h djnz r4,loopdjnz r6,loop1ret;*p1.0初始化*intp10: clr ea setb p1.0 nop clr p1.0 mov r2,#3tsr1 :mov r3,#80 djnz r3,$djnz r2,tsr1 setb p1.0nopnopnop mov r7,#25tsr2 : jnb p1.0,tsr3 djnz r7,tsr2 ljmp tsr4tsr3 :setb flag0 ljmp tsr5tsr4 :clr flag0 ljmp tsr6tsr5 :mov r3,#80 djnz r3,$tsr6 :setb ea ret;*p1.1初始化*intp11: clr ea setb p1.1 nop clr p1.1mov r2,#3tsr11 :mov r3,#80 djnz r3,$ djnz r2,tsr11 setb p1.1 nop nop nop mov r7,#25tsr21 :jnb p1.1,tsr31 djnz r7,tsr21 ljmp tsr41tsr31 :setb flag0 ljmp tsr51tsr41 :clr flag0 ljmp tsr61tsr51 :mov r3,#80 djnz r3,$tsr61 :setb ea ret;*p1.2初始化*intp12:clr ea setb p1.2 nop clr p1.2 mov r2,#3tsr12 :mov r3,#80 djnz r3,$ djnz r2,tsr12 setb p1.2 nop nop nop mov r7,#25tsr22 :jnb p1.2,tsr32 djnz r7,tsr22 ljmp tsr42tsr32 :setb flag0 ljmp tsr52tsr42 :clr flag0 ljmp tsr62tsr52 :mov r3,#80 djnz r3,$tsr62 :setb ea ret;*p1.3初始化*intp13:clr ea setb p1.3 nop clr p1.3 mov r2,#3tsr13 :mov r3,#80 djnz r3,$ djnz r2,tsr13 setb p1.3 nop nop nop mov r7,#25tsr23:jnb p1.3,tsr33 djnz r7,tsr23tsr33 :setb flag0 ljmp tsr53tsr43 :clr flag0 ljmp tsr63tsr53 :mov r3,#80 djnz r3,$tsr63 :setb ea ret;*写p1.0*writep10:mov r2,#8 clr c wr1: clr p1.0mov r3,#6djnz r3,$rrc amov p1.0,cmov r3,#23djnz r3,$setb p1.0nopdjnz r2,wr1setb p1.0ret;*写p1.1*writep11:mov r2,#8 clr c wrr1: clr p1.1mov r3,#6djnz r3,$rrc amov p1.1,cmov r3,#23djnz r3,$setb p1.1nopdjnz r2,wrr1setb p1.1ret;*写p1.2*writep12:mov r2,#8 clr c wrs1: setb p1.2mov r3,#6djnz r3,$clr p1.2rrc amov p1.2,cmov r3,#23djnz r3,$setb p1.2nopdjnz r2,wrs1setb p1.2ret;*写p1.3*writep13:mov r2,#8 clr c wrt1: clr p1.3mov r3,#6djnz r3,$rrc amov p1.3,cmov r3,#23djnz r3,$setb p1.3nopdjnz r2,wrt1setb p1.3ret;*读p1.0*readp10: mov r6,#8re01: clr c setb p1.0 nop nop clr p1.0 nop nop setb p1.0 mov r2 ,#7 djnz r2,$ mov c,p1.0 mov r3,#23 djnz r3,$ rrc a djnz r6,re01 rettranslat11: ;对读出的温度数据转换 mov a,21h mov c,20h.0 rrc a mov c,20h.1 rrc a mov c,20h.2 rrc a mov c,20h.3 rrc a mov 41h,a ret ;*读p1.1*readp11: ;低位存在23h,高位存在22h mov r2,#8re11: clr c setb p1.1 nop nop clr p1.1 nop nop nop setb p1.1 mov r3 ,#7 djnz r3,$ mov c,p1.1 mov r3,#23 djnz r3,$ rrc a djnz r2,re11 rettranslat12: mov a,23h mov c,22h.0 rrc a mov c,22h.1 rrc a mov c,22h.2 rrc a mov c,22h.3 rrc a mov 42h,a ret ;*读p1.2*readp12: ;低位存在25h,高位存在24mov r2,#8re21: clr c setb p1.2 nop nop clr p1.2 nop nop nop setb p1.2 mov r3 ,#7 djnz r3,$ mov c,p1.2 mov r3,#23 djnz r3,$ rrc a djnz r2,re21 ret translat13: mov a,25h mov c,24h.0 rrc a mov c,24h.1 rrc a mov c,24h.2 rrc a mov c,24h.3 rrc a mov 43h,a ret ;*读p1.3*readp13: ;低位存在27h,高位存在26hre30: mov r2,#8re31: clr c setb p1.3 nop nop clr p1.3 nop nop nop setb p1.3 mov r3 ,#7 djnz r3,$ mov c,p1.3 mov r3,#23 djnz r3,$ rrc a djnz r2,re31 rettranslat14: mov a,27h mov c,26h.0 rrc a mov c,26h.1 rrc a mov c,26h.2 rrc a mov c,26h.3 rrc a mov 44h,a ret ;*显示程序* ;显示程序,入口参数,r1 desplay: mov b,#100 div ab mov 55h,a ;百位 mov a,b mov b,#10 div ab mov 56h,a ;十位 mov 57h,b ;个位mov a,55h cjne a,#0,z1mov dptr,#0dfffhmov a,#0ffhmovx dptr,aljmp z2z1: mov dptr,#tab mov a,55h movc a,a+dptr mov dptr,#0dfffh;第二个数码管地址,显示百位movx dptr,az2: mov dptr,#tab mov a,56h movc a,a+dptr mov dptr,#0bfffh;第三个数码管地址,显示十位 movx dptr,a mov dptr,#tab mov a,57h movc a,a+dptr mov dptr ,#7fffh;第四个数码管地址,显示个位movx dptr,a mov a,r1mov dptr,#tabmovc a,a+dptrmov dptr,#0efffh;第一个数码管地址,显示路数 movx

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论