ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:259.51KB ,
资源ID:6697257      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6697257.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计带原理图.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计带原理图.docx

1、单片机课程设计带原理图单片机接口原理及应用课程设计报告学 院: 工学院 题 目: 数字式温度计设计 专 业: 机械设计制造及其自动化 班 级: 07机电2班 姓 名: 学 号: 070105085 指导教师: 冯振伟 起止日期:2010年12月1日2010年12月20日目录一、前言(2)二、课程设计目的和要求(2)三、总体设计方案(2)1. 整体功能说明 (2)2. 硬件功能模块组成 (2)3. 软件功能模块组成 (3)4. 硬件总体框图 (3)5. 测试计划 (3)四、系统硬件设计(4)1. 整体功能说明 (4)2. 硬件功能模块组成 (4)2.1 主控制器(4)2.2 温度测量模块(4)2

2、.3 显示电路(5)2.4 温度传感器工作原理(5)五、系统的软件设计(7)1. 主程序 (7)2. 读出温度子程序 (8)3. 温度转换命令子程序 (9)4. 计算温度子程序 (9)5. 显示数据刷新子程序 (9)六、程序清单(10)七、结束语(17)八、参考文献(18)附录:系统原理图前言当今社会,温度检测系统被广泛的社会生产、生活的各个领域。在工业、环境检测、医疗、家庭等多方面都有应用。同时单片机在电子产品中的应用已经越来越广泛。随着温度检测理论与技术的不断更新,温度传感器的种类也越来越多,在微机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传

3、感器和单导体传感器等,每种传感器根据其自身特性,都有它自己的应用领域。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温准确、其输出温度采用数字显示等优点,主要用于对温度比较准确的场所,或科研实验室使用。该设计控制器使用单片机AT89C51,温度传感器使用DS18B20,用4位共阳极LED数码管以串口显示数据,实现温度显示。2、课程设计目的和要求1 设计目的1.学会A/D转换芯片的用法;2.学会掌握8051单片机用法;3.学会单片机的程序设计;4.培养查阅资料的能力。 2.设计要求 本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模

4、块做了详细介绍,其主要功能和指标如下:1.利用温度传感器(DS18B20)测量某一点环境温度;2.测量范围为-5599,精度为0.5;3.用数码管进行实际温度值显示;4.能够根据需要方便设定上下限报警温度。三、总体设计方案 整体功能说明:以51单片机为主控制器,以数字式温度传感器DS18B20为传感元件,以LED数码管作为显示器件实时显示测量温度(十进制数)。数字式温度计测温范围在55125,误差在0.5以内。温度测量间隔时间选择1 s 。 通过键盘扩展,实现温度上下限值的设定及温度报警功能。对温度采样值实现数字滤波。通过硬件或软件方法实现时间显示。2. 硬件功能模块组成:温度计的控制器使用单

5、片机AT89C2051,温度传感器使用DS18B20,用4位共阳LED数码管以动态扫描法实现温度显示。主控制器: 单片机AT89C2051具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要。显示电路:显示电路采用4位共阳LED数码管,从P1口输出段码,列扫描用P3.0P3.3口来实现,列驱动用9012三极管。3. 软件功能组成模块:系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等。主程序:主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。温度测量每1 s 进行一次。读出温度子程序:主要功能是读出RAM中的9字节。在

6、读出时须进行CRC校验,校验有错时不进行温度数据的改写。温度转换命令子程序:主要是发温度转换开始命令。计算温度子程序:将RAM中读取值进行BCD码的转换运行,并进行温度值正负的判定。显示数据刷新子程序:主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。4. 硬件总体框图:5. 测试计划: (1)硬件测试:主要测试各部分硬件是否能正常工作,每部分通过简单程序来检测。 (2)软件测试:测试软件是否符合设计要求、是否存在BUG。四、系统的硬件设计1. 整体功能说明:以51单片机为主控制器,以数字式温度传感器DS18B20为传感元件,以LED数码管作为显示器件

7、实时显示测量温度(十进制数)。数字式温度计测温范围在55125,误差在0.5以内。温度测量间隔时间选择1 s 。 通过键盘扩展,实现温度上下限值的设定及温度报警功能。对温度采样值实现数字滤波。通过硬件或软件方法实现时间显示。2硬件功能模块组成:温度计电路设计原理图见A3图纸,温度计的控制器使用单片机AT89C51,温度传感器使用DS18B20,用4位共阳极LED数码管以动态扫描法实现温度显示。图中有3个独立式按键可以分别调整温度的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度显示,这时可以调整上下限,从而测出被测的温度值。2.1主控

8、制器单片机AT89C51具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要。2.2温度测量模块主要用到的是DS18B20温度传感器,将采集到的温度模拟量(-55度到125度)转换成数字量,并接上一个上拉电阻后再送给单片机P3.4口。2.3显示电路显示电路采用4位共阳极LED数码管,从P0口输出段码,列扫描用P2.0P2.3口来实现,列驱动用9012三极管。2.4温度传感器工作原理1. DS18B20的性能特点DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器。与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程

9、实现9-12位的数字值读数方式。DS18B20的性能特点如下:.独特的单线接口仅需要一个端口引脚进行通信;.多个DS18B20可以并联在唯一的三线上,实现多点组网功能;.不需要外部器件;.可通过数据线供电,电压范围为3.0-5.5 V;.零待机功耗;.温度以912位数字量读出;.用户可定义的非易失性温度报警设置;.报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;. 负电压特性,电源极性接反时,温度计不会因发热而烧毁,只是不能正常工作。2. DS18B20的内部结构DS18B20采用3脚PR一35封装或8脚SOIL封装,其内部结构框图如图4.2所示。图4.2 DS18B20内部结构

10、框图64位ROM的位结构如图4.3所示。开始8位是产品类型的编号;接着是每个器件的唯一的序号,共有48位;最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用单线进行通信的原因。非易失性温度报警触发器TH和TL,可通过软件写人用户报警上下限数据。图4.3 64位ROM结构框图3.DS18B20测温原理图4.4所示,图中低温度系数振荡器的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输人。图4.4 DS18B20的测温原理图图中还隐含着计数门,当计数门打开时,DS18B20就对

11、低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55所对应的一个基数值。减 法 计 数器1对低温度系数振荡器产生的脉冲信号进行减法计数,当减法计数器1的预置值减到。时,温度寄存器的值将加1,减法计数器1的预置值将重新被装人,并重新开始对低温度系数振荡器产生的脉冲信号进行计数。如此循环,直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值。图4.8中的斜率累加器用于补偿和修正测温过程中的非线形性,其输

12、出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。另外 ,由 于DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读/写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。4.DS18B20与单片机的接口电路DS 18 B 20可以采用两种方式供电:一种是采用电源供电方式,此时DS18B20的第1脚接单片机课程设计指导地,第2脚作为信号线,第3脚接电源;另一种是寄生电源供电方式,如图4.5所示。单片机端口接单线总线,为保证在有效的DS18B20

13、时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当 DS 18 B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最长为500 ms。采用寄生电源供电方式时,VDD和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。图4.5 DS18B20采用寄生电源的电路图4.测温系统的硬件工作原理 对DS18B20初始化后,主机发出SKIP ROM命令,此命令执行后的存储器操作命令将对所在线的DS18B20,在发出温度转换启动码(44H),等待750ms后,先发出匹配ROM命令(55H)紧接着主机提供一片DS18B20的64位序列号,读取其温

14、度存储器值,存入数据缓存。五、系统的软件设计系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等。1.主程序主程序需要调用4个子程序,分别为数码管显示程序,温度测试及处理子程序,报警子程序,中断设定子程序。各模块程序功能如下:数码管显示程序:向数码的显示送数,控制系统的显示部分。温度测试及处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。报警子程序:进行温度上下限判断及报警输出。中断设定程序:实现设定上下限报警功能。主程序流程见图5.1:图5.1 主程序流程图2. 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行C

15、RC校验,校验有错时不进行温度数据的改写。其流程如图5.2所示。图5.2读DS18B20流程图3. 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。其流程如图5.3所示。图5.3温度转换命令子程序流程图4. 计算温度子程序计算温度子程序的主要功能是将RAM中读取值进行BCD码的转换运行,并进行温度值正负的判定。其流程如图5.4所示。图5.4计算温度子程序流程5. 显示数据刷新子程序显示数据刷新子程序的主要功能是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。其流程如图5.5所示。图5.5 显示数据刷新子程序流程六、程序清单 ;常数定义TIME

16、L EQU 0E0HTIMEH EQU 0B1H ; 20ms,定时器0时间常数TEMPHEAD EQU 36H ;工作内存定义BITST DATA 20HTIME1SOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H ;引脚定义TEMPDIN BIT P3.4 ;中断向量区 ORG 0000H LJMP START ORG 000BH LJMP TOIT ;系统初始化 ORG 0030H START: MOV SP,#60H CLSMEM: MOV R0,#

17、20H MOV R1,#60HCLSMEM1: MOV R0,#00H INC R0 DJNZ R1,CLSMEM1 MOV TMOD,#00100001B ;定时器0工作方式(16位) MOV TH0,#TIMEL MOV TL0,#TIMEH ;20ms SJMP INIT ERROR: NOP LJMP START NOP INIT: NOP SETB ET0 SETB TR0 SETB EA MOV PSW,#00H CLR TEMPONEOK LJMP MAIN ;定时器0中断服务程序 TOIT: PUSH PSW MOV PSW,#10H MOV TH0,#TIMEH MOV TL

18、0,#TIMEL INC R7 CJNE R7, #32H,TOIT1 MOV R7, #00H SETB TIME1SOK ;1s定时标志 TOIT1: POP PSW RETI ;主程序 MAIN: LCALL DISP1 ;调用显示子程序 JNB TIME1SOK,MAIN CLR TIME1SOK ;测温每1s一次 JNB TEMPONEOK,MAIN2 ;上电时先温度转换一次 LCALL READTEMP1 ;读出温度子程序 LCALL CONVTEMP ;温度BCD码计算处理子程序 LCALL DISPBCD ;显示区BCD码 温度值刷新子程序 LCALL DISP1 ;消闪烁,显

19、示一次 MAIN2: LCALL READTEMP ;温度转换开始 SETB TEMPONEOK LJMP MAIN ;子程序区 ;复位DS18B20INITDS1820: SETB TEMPDIN NOP NOP CLR TEMPDIN MOV R6,#0A0H ;延时480us DJNZ R6,$ MOV R6,#0A0H DJNZ R6,$ SETB TEMPDIN MOV R6,#32H ;延时70us DJNZ R6,$ MOV R6,#3CH LOOP1820: MOV C, TEMPDIN JC INITDS1820OUT DJNZ R6, LOOP1820 MOV R6,#06

20、4H ;延时200us DJNZ R6,$ SJMP INITDS1820 RETINITDS1820OUT:SETB TEMPDIN RET ;读DS18B20的程序,从读出DS18B20一字节的数据READDS1820: MOV R7, #08H SETB TEMPDIN NOP NOPREADDS1820LOOP: CLR TEMPDIN NOP NOP NOP SETB TEMPDIN MOV R6,#07H ;延时15us DJNZ R6,$ MOV C, TEMPDIN MOV R6,#3CH ;延时120us DJNZ R6,$ RRC A SETB TEMPDIN DJNZ R

21、7, READDS1820LOOP MOV R6,#3CH ;延时120us DJNZ R6,$ RET ;写DS18B20的程序,从读出DS18B20一字节的数据 WRITEDS1820: MOV R7, #08H SETB TEMPDIN NOP NOP WRITEDS1820LOP: CLR TEMPDIN MOV R6,#07H ;延时15us DJNZ R6,$ RRC A MOV TEMPDIN,C MOV R6,#34H ;延时104us DJNZ R6,$ SETB TEMPDIN DJNZ R7, WRITEDS1820LOP RET;*读温度TEMP* READTEMP:L

22、CALL INITDS1820 MOV A,#0CCH LCALL WRITEDS1820 ;SKIP ROM MOV R6,#34H ;延时104us DJNZ R6,$ MOV A,#44H LCALL WRITEDS1820 ;开始转换 MOV R6,#34H ;延时104us DJNZ R6,$ RETREADTEMP1:LCALL INITDS1820 MOV A,#0CCH LCALL WRITEDS1820 ;SKIP ROM MOV R6,#34H ;延时104us DJNZ R6,$MOV A,#0BEHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,

23、$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READDS1820 MOV R0,A INC R0READTEMP21: LCALL CRC8CAL DJNZ R5,READTEMP2 MOV A,B JNZ READTEMPOUT MOV A,TEMPHEAD+0 MOV TEMPL,A MOV A,TEMPHEAD+1 MOV TEMPH,A READTEMPOUT:RET;*处理温度BCD码子程序* CONVTEMP: MOV A,TEMPH ANL A ,#80H JZ TEMPC1 CLR C MOV A,TEMPL C

24、PL A ADD A,#01H MOV TEMPL,A MOV A,TEMPH ;- CPL A ADDC A,#00H MOV TEMPH,A ;TEMPHC HI=符号位 MOV TEMPHC,#0BH SJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;+TEMPC11:MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH ;乘以0.625 MOV DPTR,#TEMPDOTTAB MOVC A,A+DPTR MOV TEMPLC,A ;TEMPLC LOW=小数部分BCD MOV A,TEMPL ;整数部分

25、 ANL A,#0F0H SWAP A MOV TEMPL,A MOV A,TEMPH ANL A,#0FH SWAP A ORL A,TEMPL LCALL HEX2BCD1 MOV TEMPL,A ANL A,#0F0H SWAP A ;TEMPHC LOW=十位 ORL A,TEMPHC MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH SWAP A ; TEMPHC HI=个位 ORL A,TEMPLC MOV TEMPLC,A MOV A,R7 JZ TEMPC12 ANL A,#0FH SWAP A MOV R7,A MOV A,TEMPHC ;TEMPHC

26、HI=百位BCD ANL A,#0FH ORL A,r7 MOV TEMPHC,ATEMPC12:RET;*小数码表* TEMPDOTTAB: DB 00H 01H 01H 02H 03H 03H 04H 05H 05H DB 06H 07H 07H 08H 09H 09H;*显示BCD码子程序*DISPBCD: MOV A,TEMPLC ANL A,#0FH MOV 70H,A MOV A,TEMPLC SWAP A ANL A,#0FH MOV 71H,A MOV A,TEMPHC ANL A,#0FH MOV 72H,A MOV A,TEMPHC SWAP A ANL A,#0FH MO

27、V 73H,A MOV A,TEMPHC ANL A,#0F0H CJNE A,#010H,DISPBCD0 SJMP DISPBCD2DISPBCD0: MOV A,TEMPHC ANL A,#0FH JNZ DISPBCD2 ;十位是0 MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,#0AH ;符号位不显示 MOV 72H,A ;十位显示符号DISPBCD2: RET ;显示子程序;显示数据在70h73h单元,用4位LED数码管显示,P1口输出段码数据;P3口作扫描控制,每个LED数码管亮1MS时间再逐位循环DISP1:MOV R1,#70H ;指向显示数据

28、首址 MOV R5,#0FEH ;扫描控制字初值 PLAY:MOV P0,#0FFH MOV A,R5 ;扫描字放入A MOV P2,A ;从P2口输出 MOV A,R1 ;取显示数据到A MOV DPTR,#TAB ;取段码表地址 MOVC A,A+DPTR ;查显示数据对应段码 MOV P0,A ;段码放入P2口 MOV A,R5 JB ACC.1,LOOP5 ;小数点处理 CLR P0.7 LOOP5:LCALL DL1MS ;显示1MS INC R1 ;指向下一地址 MOV A,R5 ;扫描控制字放入A JNB ACC.3,ENDOUT ;ACC.3=0时显示结束 RL A ;A中数据循环左移 MOV R5,A ;放回R5内 AJMP PLAY ;跳回PLAY循环ENDOUT:MOV P0,#0FEH ;一次显示结束,P0口复位 MOV P2,#0FFH ;P2口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1