1、河北建筑工程学院单片机课程设计报告题目名称单片机的多路温度测量系统设计系电气工程系专业建筑电气与智能化班级电智102学号2010318202学生姓名指导教师职称讲师2013年03月03日1目录一、摘要2二、系统总体方案设计21系统框图结构22设计思路2三、系统硬件设计31控制器单片机32传感器电路设计53复位电路设计64晶振电路设计75LED显示电路设计86键盘电路设计87报警电路设计985V稳压电路设计10四、系统软件设计101系统主程序流程图112系统子程序流程图123键盘程序设计12五、结论131课题总结132心得体会13六、参考文献13七附录141系统程序142总电路图252一、摘要该
2、设计主要应用于多路数字温度测量,以AT89C51单片机系统为核心,采用LM35温度传感器。LM35是一种可组网的高精度模拟式温度传感器,它具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多路温度测量电路变得简单、可靠。本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。主题词AT89C51单片机、温度传感器、软件流程图、LM35。二、总体方案设计方案的阐述与特点本设计是以ST89LE516AD单片机为控制核心、LM35为传感器组成多路温度测试系统,该系统包括传感器电路、键盘与显示电路、串口通信电路等。它具有独特的单总线接口,
3、仅需要占用一个通用I/O端口即可完成与微处理器的通信。全部传感元件及转换电路集成在形如一只三极管的集成电路内。1、系统框图2设计思路本设计方案采用主从分布式思想,由一位上位机(PC微型计算机),下位机(单片机)多路温度数据采集,组成两级分布式多路温度测量的巡回检测系统。该系统采用RS232串行通讯标准,通过上位机(PC)控制下位机(单片机)进行现场温度采集。温度值既可以送回主控PC进行数据处理,由显示器显示。也可以由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。AD08098路模拟信号采集AT89C52控制信号数据信号数值显示电路3下位机采用的是单片机基于数字温度传感器DS18B2
4、0的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松地组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。3、它有如下特点(1)独特的单线接口,既可通过串行口线,也可通过其它I/O口线与微机接口,无需变换其他电路,直接输出被测温度值;(2)多点能力使分布式温度检测应用得以简化;(3)不需要外部元件;(4)既可用数据线供电,也可采用外部电源供电;(5)不需备份电源;(6)通过编程可实现912位的数字读数方式;(7)用户可定义非易失性的温度告警设置;(8)警告搜索命令能识别和寻址温度在编定的极限之外的器件(温度警告情况);(9)应用范围
5、包括恒温控制、工业系统、消费类产品、温度计或任何热敏系统。以上特性使得LM35非常适用于构建高精度、多点温度测量系统。三、硬件设计本课题的整个系统是由单片机、显示电路、键盘电路、驱动电路、串口通信等构成。1控制器单片机的设计本设计采用的单片机为STC12C5A32ADSTC12C5A32AD单片机是单时钟/机器周期1T的兼容8051内核单片机,是高速/低功耗的新一代单片机,全新的流水线/精简指令集结构。STC12C5A32AD单片机主要性能高速1个时钟/机器周期,RISC型8051内核,速度比普通8051快12倍工作电压55V33V低功耗设计空闲模式,掉电模式(可由外部中断唤醒)工作频率035
6、MHZ时钟外部晶体或内部RC振荡器可选芯片内E2PROM功能ISP/IAP,在系统可编程/在应用可编程,无需仿真器8位8通道ADC,转换速度可达300K/S42个硬件16位定时器,兼容普通8051的定时器。再加上2路PCA还可再实现2个16位定时器硬件看门狗(WDT)全双工异步串行口UART,由于STC12系列单片机是高速的8051,可再用定时器或PCA软件实现多串口P10/ADC0/CLKOUT21P11/ADC12P12/ADC2/ECI/RXD23P13/ADC3/CCP0/TXD24P14/ADC4/CCP1/SS5P15/ADC5/MOSI6P16/ADC6/MISO7P17/ADC
7、7/SCLK8RST/P479P30/RXD10P31/TXD11P32/INT012P33/INT113P35/T1/CLKOUT115P36/WR16P37/RD17XTAL218XTAL119GND20P2021P2122P2223P2324P2425P2526P2627P2728NA/P4429ALE/P4530EX_LVD/P46/RST231P0732P0633P0534P0435P0336P0237P0138P0039VCC40P34/T0/CLKOUT014STC12C5A32AD图31STC12C5A32ADVCC电源GND地P0口P0口是一个8位的双向I/O口。对P0端口写
8、“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。P1口P1口是一个具有内部上拉电阻的8位双向I/O口,同时也是模拟量输入口,可以对8路模拟量进行模数转换。5P2口P2口是一个具有内部上拉电阻的8位双向I/O口。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVXDPTR)时,P2口送出高八位地址。P3口P3口是一个具有内部上拉电阻的8位双向I/O口。P3口亦作为特殊功能口使用,如表31所示。表31STC12C5A32AD引脚号特殊功能P30RXD(串行输入)P31TXD(串行输出)P32INT0(外部中断0)P33INT0(外部
9、中断0)P34T0(定时器0外部输入和定时器0时钟频率输出)P35T1(定时器1外部输入和定时器1时钟频率输出)P36WR(外部数据存储器写选通)P37RD(外部数据存储器读选通)RST复位输入,晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。ALE地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。XTAL1振荡器反相放大器和内部时钟发生电路的输入端。XTAL2振荡器反相放大器的输出端。2温度传感器LM35的连线图LM35是由NATIONALSEMICONDUCTOR所生产的温度传感器,其输出电压与摄氏温度成正比,具有10MV/的灵敏度,工作温度范围为4V3
10、0V;输出阻抗为01。LM35温度传感器,由于它采用内部补偿,所以输出可以从0开始,器件有三个引脚,分别是电源负GND,电源正VCC,信号输出端。6电路需要两路运算放大电路,所以选择双路运算放大器,一路作跟随器另一路作同向放大器,LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。5V5V10KR310KR25VLM358LM35LM3585VR410K10KR1100KR5P17图32温度传感器LM353常用的上电复位且开关复位电
11、路当复位键KEY5被按下时,电容C3开始充电,按键放开时,C3开始放电,电流经电阻R4流向接地端,此时单片机复位端RST电平被拉高,当放电时间常数C3R42TCYTCY时为机器周期即给单机机持续两个机器周期的高电平时单片机被复位7S3复位按钮C310UFR112KRST5V图33复位开关电路4晶振电路设计12MHZC230PFC130PFXTAL2XTAL1图34晶振电路STC89LE516AD单片机串口主要有两个数据缓冲寄存器SBUF和一个输入移位寄存器组成,其内部还有一个串行控制寄存器SCON和一个波特率发生器。接收缓冲器与发送缓冲器占用同一个地址99H,其名称亦同样为SBUF。85LED
12、显示电路设计本显示方案采用单片机I/O口串行扩展74LLS64驱动器驱动4位LED数码管实现静态显示,所谓静态显示就是在任何时刻所有LED数码管处于显示状态,静态显示具有编程简单,亮度高,无闪烁,占用CPU资源少等优点。ABFCGDEDPY1234567ABCDEFG8DPDPABFCGDEDPY1234567ABCDEFG8DPDPABFCGDEDPY1234567ABCDEFG8DPDPABFCGDEDPY1234567ABCDEFG8DPDP12345678161514131211109680812345678161514131211109680812345678161514131211
13、1096808123456781615141312111096808A1B2QA3QB4QC5QD6QE7QF8QG9QH10CP8CLR9VCC14GND774LS164A1B2QA3QB4QC5QD6QE7QF8QG9QH10CP8CLR9VCC14GND774LS164A1B2QA3QB4QC5QD6QE7QF8QG9QH10CP8CLR9VCC14GND774LS164QA3QB4QC5QD6QE7QF8QG9QH10VCC14A1B2CP8CLR9GND774LS1645V8888P33P31/TXDP30/RXD图35LED显示电路6键盘电路设计其原理图如下9S2S1S3S4S5S
14、6S7S05V10K8P00P01P02P03P04P05P06P07图36键盘电路本课题使用行列扫描方式,在单片机的P1口上连接上44的键盘,单片机扫描键盘,如果有键按下,单片机会根据键码执行相应的程序,使整个系统的功能更加完善。7报警电路设计为了实现多点温度检测报警系统,本课题采用AT89C51单片机作为主控制器,采用扫描的方式对多点LM35温度传感器获取对应该位置的温度值,经处理后通过串口可以立即发送到上位机,如温度不在设定的范围内,给出报警信号。系统总体硬件电路图如下所示10电压蜂鸣器D8LED51K9R14680D2D1D3D4D7D6D55VA1B3C5G17VCC16G2A10G
15、2B12GND14Y02Y14Y26Y38Y49Y511Y613Y71574LS138901295P27P26P25P26P20图37报警电路8、5V稳压电路为了给STC89LE516AD单片机提供精确的5V基准电压,本设计采用了LM117三端可调正稳压集成电路。它的输出电压范围是12V至37V,负载电流最大为15A。仅需外接两个电阻就可以设置输出电压。此外它的线性调整率和负载调整率都比较好。C147UFR2240C210UFC322UFR11KD1D2IN4007IN40075V单片机VCCLM1178V图375V稳压电路11四、软件设计该软件设计主要包括系统程序和流程图,根据整个系统的要求
16、,完成温度的测量与控制必须经过以下几个步骤单片机接受传感器的温度信号,并通过MAX7219驱动显示出来,单片机扫描键盘,接受控制信号,并将温度显示出来,若温度不在范围内则发出报警。1系统主程序流程图图41主程序流图开始初始化调用A/D转换子程序调用显示子程序122子程序流程图图42子程序流图3键盘程序设计根据设计要求,应采用44的键盘电路结构,P10P13接四条行线,P14P17接四条列线,整个系统的功能可以利用16个按键将系统完善化、系统化,对于键盘各键的功能如下图所示启动测试取数据(P251)开始A/D转换结束P3710809地址加1地址数小于8结束13表41键盘程序设计五、结论1、课题总
17、结本课题主要是实现对温度进行多点同时测量并准确显示。整个系统由单片机控制,要能够接受传感器的数据并显示出来,可以从键盘输入命令,系统根据命令选择对应的传感器,并由驱动电路驱动温度显示,对异常情况进行报警。2、心得体会本次设计过程中通过老师的引导和自己查阅部分专业书籍,我基本了解了单片机设计的流程和部分注意事项,并大致掌握了PROTEL的使用。但是也发现很多意想不到的问题,比如编程能力差,工程实践能力差,设计细节没有注意到,基础理论掌握不扎实,应用与理论严重脱节。但是通过这次课程的设计,将课本的知识实际应用,摆脱考试的局限,锻炼自己的解决问题的能力,独立思考能力。本课题使我熟悉了单片机设计原则,
18、对51系列单片机内部构造、与其它芯片的接口技术及其工作情况有了更进一步了解,虽然是很简单的运用,但比为了考试而瞬时记忆的知识牢固多了,工作需要独立解决问题的的能力,所以这种机会还是多多益善。六、考文献参1周慈航著单片机程序设计基础M北京北京航空航天大学出版社,20032方佩敏编著智能化集成温度传感器原理与应用M北京电子工业出版社,2002143张毅刚主编单片机原理及应用M北京高等教育出版社,20084李道玲,李玲,朱艳编著传感器电路分析与设计M武汉武汉大学出版社,20035刘笃人,韩保军编著。传感器及应用技术M西安西安电子科技大学出版社,20036陈小忠等,单片机接口技术实用子程序北京人民邮电
19、出版社,20057李群芳编著,单片机原理、接口及应用嵌入式系统计数基础北京清华大学出版社8方佩敏编著智能化集成温度传感器原理与应用M北京电子工业出版社,2002七、附录1系统源程序常数定义TMELEQU0E0H;20MS,定时器0时间常数TMEHEQU0B1HTMEPHEADEQU36H工作内存定义BITSTDATA20HTIMEISOKBITBITST1TEMPONEOKBITBITST2TEMPLDATA26HTEMPHDATA27HTEMPHCDATA28HTEMPLCDATA29H引脚定义15TEMPDINBITP37中断向量区ORG000HLJMPSTARTORG00BHLJMPT0
20、IT系统初始化ORG100HSTARTMOVSP,60HCLSMEMMOVR0,20HMOVR1,60HCLSMEM1MOVR0,00HINCR0DJNZR1,CLSMEM1MOVTMOD,00100001BMOVTH0,TIMELMOVTL0,TIMEHSJMPINITERRORNOPLJMPSTARTNOPINITNOPSETBET0SETBTR0SETBEAMOVPSW,00HCLRTEMPONEOKLJMPMAIN16定时器0中断服务程序T0ITPUSHPSWMOVPSW,10HMOVTH0,TIMEHMOVTL0,TIMELINCR7CJNER7,32H,T0ITIMOVR7,00H
21、SETBTIMEISOKTOIT1POPPSWRETI主程序MAINLCALLDISP1JNBTIME1SOK,MAINCLRTIME1SOKJNBTEMPONEOK,MAIN2LCALLREADTEMP1LCALLCONVTEMPLCALLDISPBCDLCALLDISP1MAIN2LCALLREADTEMPSETBTEMPONEOKLJMPMAIN子程序区RESETDS18B20INITDS1820SETBTEMPDINNOP17NOPCLRTEMPDINMOVR6,0A0HDJNZR6,MOVR6,0A0HDJNZR6,SETBTEMPDINMOVR6,32HDJNZR6,MOVR6,3
22、CHLOOP1820MOVC,TEMPDINJCINITDS1820OUTDJNZR6,LOOP1820MOVR6,064HDJNZR6,SJMPINITDS1820RETINITDS1820OUTSETBTEMPDINRET读DS18B20的程序,从DS18B20中读出一个字节的数据READDS1820MOVR7,08HSETBTEMPDINNOPNOPREADDS1820LOOPCLRTEMPDINNOPNOPNOPSETBTEMPDINMOVR6,07HDJNZR6,18MOVC,TEMPDINMOVR6,3CHDJNZR6,RRCASETBTEMPDINDJNZR7,READDS182
23、0LOOPMOVR6,3CHDJNZR6,RET写DS18B20的程序,从DS18B20中写一个字节的数据WRITEDS1820MOVR7,08HSETBTEMPDINNOPNOPWRITEDS1820LOPCLRTEMPDINMOVR6,07HDJNZR6,RRCAMOVTEMPDIN,CMOVR6,34HDJNZR6,SETBTENPDINDJNZR7,WRITEDS1820LOPRETREADTEMPREADTEMPLCALLINITEDS1820MOVA,0CCHLCALLWRITEDS1820MOVR6,34HDJNZR6,19MOVA,44HLCALLWRITEDS1820MOVR
24、6,34HDJNZR6,RETREADTEMP1LCALLINITDS1820MOVA,0CCHLCALLWRITEDS1820MOVR6,34HDJNZR6,MOVA,0BEHLCALLWRITEDS1820MOVR6,34HDJNZR6,MOVR5,09HMOVR0,TEMPHEADMOVB,00HREADTEMP2LCALLREADDS1820MOVR0,AINCR0READTEMP21LCALLCRC8CALDJNZR5,READTEMP2MOVA,BJNZREADTEMPOUTMOVA,TEMPHEAD0MOVTEMPL,AMOVA,TEMPHEAD1MOVTEMPH,AREADTE
25、MPOUTRET处理温度BCD码子程序CONVTEAMPMOVA,TEMPHANLA,80H20JZTEMPC1CLRCMOVA,TEMPLCPLAADDA,01HMOVTEMPL,AMOVA,TEMPHCPLAADDCA,00HMOVTEMPH,AMOVTEMPHC,0BHSJMPTEMPCHTEMPC1MOVTEMPHC,0AHTEMPC11MOVA,TEMPHCSWAPAMOVTEMPHC,AMOVA,TEMPLANLA,0FHMOVDPTR,TEMPDOTTABMOVCA,ADPTRMOVTEMPLC,AMOVA,TEMPLANLA,0F0HSWAPAMOVTEMPL,AMOVA,TE
26、MPHANLA,0FHSWAPAORLA,TEMPLLCALLHEX2BCD1MOVTEMPL,AANLA,0F0HSWAPAORLA,TEMPHC21MOVTEMPHC,AMOVA,TEMPLANLA,0FHSWAPAORLA,TEMPLCMOVTEMPLC,AMOVA,R7JZTEMPC12ANLA,0FHSWAPAMOVR7,AMOVA,TEMPHCANLA,0FHORLA,R7MOVTEMPHC,ATEMPC12RET小数部分码表TEMPDOTTABDB00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB06H,07H,08H,09H,09H显示区BCD码
27、温度值刷新子程序DISPBCDMOVA,TEMPLCANLA,0FHMOV70H,AMOVA,TEMPLCSWAPAANLA,0FHMOV71H,AMOVA,TEMPHCANLA,0FHMOV72H,A22MOVA,TEMPHCSWAPAANLA,0FHMOV73H,AMOVA,TEMPHCANLA,0F0HCJNZA,010H,DISPBCD0SJMPDISPBCD2DISPBCD0MOVA,TEMPHCANLA,0FHJNZDISPBCD2MOVA,TEMPHCSWAPAANLA,0FHMOV73H,0AHMOV72H,ADISPBCD2RET显示子程序显示数据在70H73H单元内,用4位
28、LED共阳数码管显示,DISP1MOVR1,70HMOVR5,0FEHPLAYMOVP1,0FFHMOVA,R5MOVP3,AMOVA,R1MOVDPTR,TABMOVCA,ADPTRMOVP1,AMOVA,R5JBACC1,LOOP5CLRP17LOOP5LCALLDLIMS23INCR1MOVA,R5JNBACC3,ENDOUTRLAMOVR5,AAJMPPLAYENDOUTMOVP1,0FEHMOVP3,0FEHRETTABDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH共阳段码表“0”“1”“2”“3”“4”“5”“6”“
29、7”“8”“9”“不亮”“”DL1MSMOVR6,14HDL1MOVR7,19HDL2DJNZR7,DL2DJNZR6,DL1RET单字节十六进制转BCDHEX2BCD1MOVB,064HDIVABMOVR7,AMOVA,0AHXCHA,BDIVABSWAPAORLA,BRETCALCULATECRC8VALUESUSESTHECCITT8POLYNOMIAL,EXPRESSEDASX8X5X41CRC8CALPUSHACC24MOVR7,08HCRC8LOOP1XRLA,BRRCAMOVA,BJNCCRC8LOOP2XRLA,18HCRC8LOOP2RRCAMOVB,APOPACCRRAPU
30、SHACCDJNZR7,CRC8LOOP1POPACCRETEND2、总电路图25ABFCGDEDPY1234567ABCDEFG8DPDPABFCGDEDPY1234567ABCDEFG8DPDPABFCGDEDPY1234567ABCDEFG8DPDPABFCGDEDPY1234567ABCDEFG8DPDP123456781615141312111096808123456781615141312111096808123456781615141312111096808123456781615141312111096808电压蜂鸣器12MHZS1D8C430PFC330PF51K9R2468
31、0410KS2S3S090129D1D2D3D5D7D6D45VC147UFR2240C210UFC322UFSTC12C5A32AD9V5VR11KD9D10IN4007A1B2QA3QB4QC5QD6QE7QF8QG9QH10CP8CLR9VCC14GND774LS164A1B2QA3QB4QC5QD6QE7QF8QG9QH10CP8CLR9VCC14GND774LS164A1B2QA3QB4QC5QD6QE7QF8QG9QH10CP8CLR9VCC14GND774LS164QA3QB4QC5QD6QE7QF8QG9QH10VCC14A1B2CP8CLR9GND774LS1645VIN40
32、07LM355VLM358R4100K10KR5R610KR710KLM3585V5VR810K5VLM355VLM358R9100KR1010KR1110KR1210KLM3585V5VR1310K5V共8路LM35温度传感器P10/ADC0/CLOKOUT21P11/ADC1/ECI/RXD22P12/ADC2/CCP0/TXD23P13/ADC3/CCP1/SS4P14/ADC4/MOSI5P15/ADC5/MISO6P16/ADC6/SCLK7P17/ADC78RST/P479P30/RXD10P31/TXD11P32/INT012P33/INT113P34/T0/CLKOUT014P35/T1/CLKOUT115P36/WR16P37/RD17XTAL119GND20XTAL218P2021P2122P2223P2324P2425P2526P2627P2728NA/P4429ALE/P4530EX_LVD/P46/RST231P0732P0633P0534P0435P0336P0237P0138P0039VCC40A1B2C3G16VCC16G2A4G2B5GND8Y015Y114Y213Y312Y411Y510Y69Y7774LS1385V5VS4复位按钮C510UF5VR32K88888LM117多路数字温度测量总电路图