单片机课程设计

上传人:仙*** 文档编号:28147043 上传时间:2021-08-23 格式:DOC 页数:40 大小:627.50KB
返回 下载 相关 举报
单片机课程设计_第1页
第1页 / 共40页
单片机课程设计_第2页
第2页 / 共40页
单片机课程设计_第3页
第3页 / 共40页
点击查看更多>>
资源描述
课程设计(论文)题 目 名 称 基于单片机温度测量系统设计 课 程 名 称 单片机原理及在电气测控学科中的应用 学 生 姓 名 学 号 系 、专 业 课程设计(论文)任务书年级专业学生姓名学 号题目名称基于单片机的温度测量系统设计设计时间课程名称单片机原理及在电气测控学科中的应用课程编号121200105设计地点一、 课程设计(论文)目的单片机原理课程是一门实践性、应用性很强的课程。通过课程设计使学生较系统的掌握有关单片机控制的设计思想和设计方法,为学生今后从事单片机控制系统开发工作打下坚实的基础。本课程设计的基本要求是使学生全面。单片机控制系统的基本理论,熟熟悉掌握MCS-51系列单片机的编程方法,让学生在接近实际工作环境下,完成一个简单的单片机控制系统设计。二、 已知技术参数和条件1、加热炉、温度控制范围:50100;2、开发环境:MCS-51系列单片机开发系统、Proteus单片机仿真系统3、硬件:实验室提供PC机、温度传感器、电风扇、设计控制系统所需的电子元器件、可调直流电源等。4、单片机设计相关书籍资料。三、 任务和要求设计任务:利用MCS-51系列单片机设计一个温度自动控制系统,利用数码管实时的显示当前温度,并能根据设定的温度值控制温度。加温设备利用加热炉实现,降温时利用电风扇进行降温。设计要求1、要求进行方案论证,说明控制系统的工作原理。2、要求设计测量系统的硬件电路,给出电路原理图和元器件清单。3、要求给出软件流程图并编写程序源代码。4、完成系统的调试,给出调试结果并分析。5、撰写符合要求的课程设计说明书。注:1此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效;2此表1式3份,学生、指导教师、教研室各1份。四、参考资料和现有基础条件(包括实验室、主要仪器设备等)1、THKSCM-1型单片机实验系统实验指导书、KEIL 软件,WAVE 软件2、数字控制与PLC实验室“THKSCM-1型单片机实验系统”。五、进度安排2011年6月7日-8日:收集和课程设计有关的资料,熟悉课题任务和要求2011年6月9日:总体方案设计2011年6月10日-12日:硬件电路设计2011年6月13日-15日:软件设计2011年6月15日-17日:系统调试改进2011年6月18日-21日:整理书写设计说明书2011年6月22日-23日:答辩并考核六、教研室审批意见教研室主任(签字): 年 月 日七|、主管教学主任意见 主管主任(签字): 年 月 日八、备注指导教师(签字): 学生(签字):学生姓名 学 号 系 专业班级 题目名称 基于单片机的温度测量系统设计 课程名称 单片机原理及在电气测控学科中的应用 一、学生自我总结经过此次的课程设计,我学会了很多,特别是独立思考能力和动手能力。这次的课程设计巩固了我的单片机知识,比如使用DS18B20传感器,怎样把220V的交流电压变成5V直流稳压电源,让我真正掌握了用protues绘画硬件图,并进行仿真和调试。但是在此次的课程设计中也发现了自己很多的不足,特别是硬件设计方面,不知道如何去设计硬件以及外部接线图。不过我会在以后的学习中好好努力,把自己没学好的方面学好。 学生签名: 年 月 日二、指导教师评定评分项目平时成绩论文答辩综合成绩权 重304030单项成绩指导教师评语: 指导教师(签名): 年 月 日注:1、本表是学生课程设计(论文)成绩评定的依据,装订在设计说明书(或论文)的“任务书”页后面;2、表中的“评分项目”及“权重”根据各系的考核细则和评分标准确定。 摘 要温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石 油等工业中,具有举足重轻的作用。随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。 采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。MSP430系列单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。本设计主要做了如下几方面的工作:一是确定系统的的总设计方案,给出系统框图。本设计以AT89S51单片机为核心的温度测量系统的工作原理和设计方法。温度信号由温度芯片DD18B20采集,并以数字信号的方式传送给单片机。单片机通过对信号进行相应处理,从而实现温度测量的目的。二是硬件设计,在这里采用模块设计方法,设计各单元电路原理图及元器件参数。主要模块有:单片机最下系统设计模块、传感器温度采集设计模块、A/D模数转换设计模块、液晶显示设计模块。三是软件设计,包括绘制软件主程序流程图、和编写程序源代码。四是进行调试及仿真实验,为了验证该温度测量系统设计的正确性,在protues进行硬件软件联合调试并完成该测量系统的仿真实验,仿真结果表明本设计是正确的。 关键词: AT89C51;单片机;DS18B20;温度测量目 录摘要 .1 总体方案论证 12 硬件电路设计 22.1 最小系统模块22.2 电源电路设计72.3 温度传感器DS18B20温度采集模块 72.4 A/D模数转换102.5 液晶显示器LM016L显示模块 112.6 系统总体硬件原理图 133 系统软件设计 153.1软件流程图153.2程序源代码164 系统仿真调试及实物 .215 设计总结及心得 .23参考文献24附录25附录33附录351 总体方案论证本设计以AT89S51单片机为核心的温度测量系统的工作原理和设计方法。温度信号由温度芯片DD18B20采集,并以数字信号的方式传送给单片机。单片机通过对信号进行相应处理,从而实现温度测量的目的。系统通过运用用复位按钮实现测量控制,按下按键复位按钮则刷新测量的温度值。系统的硬件设计,在这里采用模块设计方法,设计各单元电路原理图及元器件参数。主要模块有:单片机最下系统设计模块、传感器温度采集设计模块、A/D模数转换设计模块、液晶显示设计模块。对于软件设计部分,包括绘制软件主程序流程图、和编写程序源代码。最后可以通过对系统整体进行调试及仿真实来验证该系统设计的正确性。系统总体框图如图1.1所示。时钟数字显示LCDAT89C51复位 温度传感器DS18B20(信号的调理转换)5V稳压电源图1.1 系统总体框图2 硬件电路设计2.1 最小系统模块设计所谓单片机最小系统,是指在单片机外部增加尽可能少的原件电路,组成一个让单片机可独立工作的系统。图2.1最小系统电路图2.1.1 AT89C51芯片介绍AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2.2所示。图2.2 AT89C2051引脚图(1)主要特性 与MCS-51单片机产品兼容 4K字节在系统可编程Flash存储器 1000次擦写周期 全静态工作:0Hz24MHz 32个可编程I/O口线 2个16位定时器/计数器 5个中断源 全双工UART串行通道 低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 灵活的ISP编程(字或字节模式) 4.0-5.5V电压工作范围 数据保留时间:10年 三级程序存储器锁定 1288位内部RAM 可编程串行通道 片内振荡器和时钟电路(2)内部结构组成单片机AT89C51可以划分为CPU、存储器、并行口、串行口、定时/计数器和中断逻辑几个部分。 CPU由运算器和控制逻辑构成。其中包括若干特殊功能寄存器(SFR) AT89C51时钟有两种方式产生,即内部方式和外部方式。 AT89C51在物理上有四个存储空间:片内/片外程序存储大路、片内/片外数据存储器。片内有256B数据存储器RAM和4KB的程序存储器ROM。除此之外,还可以在片外扩展RAM和ROM,并且和有64KB的寻址范围。 AT89C51内部有一个可编程的、全双工的串行接口。它串行收发存储在特殊功能寄存器SFR的串行数据缓冲器SBUF中的数据。 AT89C51共有4个(P0、P1、P2、P3口)8位并行I/O端口,共32个引脚。P0口双向I/O口,用于分时传送低8位地址和8位数据信号;P1、P2、P3口均为准双向I/O口;其中P2口还用于传送高8位地址信号;P3口每一引脚还具有特殊功能,用于特殊信号的输入输出和控制信号。 AT89C51内部有两个16位可编程定时器/计数器T0、T1。最大计数值为216-1。工作方式和定时器或计数器的选择由指令来确定。中断系统允许接受5个独立的中断源,即两个外部中断,两个定时器/计数器中断以及一个串行口中断。(3)管脚说明:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。P3口也可作为AT89C51的一些特殊功能口,如下表2.1所示。 表2.1 P3端口引脚与复用功能表端口引脚复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 2.1.2时钟电路AT89C51芯片内部有一个高增益反向放大器用于构成振荡器。反向放大器的输入端为XATL1,输出端为XATL2。在XATL1 和XATL2两端跨接由石英晶体及两个电容构成的自激振荡器,电容C1和C2取20pF,选用不同的电容对震荡频率有微调作用,但石英晶体本身的标定频率才是单片机振荡频率的决定因数。时钟电路如图2.4所示。图2.4时钟电路 时钟电路中,两个电容都选择20 pF电容,电容一端接与晶振相连,另一端接地。选择的晶振是频率为12MHZ。此模块就是产生像时钟一样准确的震荡电路。2.1.3复位电路(1) 手动按钮复位 手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如图2.5所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。本系统采用的就是手动按钮复位,电路连接图如图2.5所示。图2.5 复位电路2.2 电源电路设计220V交流电经过变压器降压成 12V,经过桥式整流器整流、C1滤波,成为约 14V直流电,再经三端稳压集成电路7805稳压,形成5V稳定直流电,作为光电输入电路、脉冲形成电路(U1-U8 组成电压比较器) 和计数与显示电路的工作电源。电源设计电路图如图2.6所示,电源电路工作原理如图2.7所示。 图2.6 电源电路220V交流电桥式整流滤波5V直流电输出7805稳压模块图2.7电路工作原理图2.3 温度采集电路2.3.1 DS18B20芯片简介DS18B20是由美国DALLAS公司生产的单线数字温度传感器芯片。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化为串行数字信号。通过编程,DS18B20可以实现912位的温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。 2.3.2 DS18B20的主要特点(1)采用单线技术,与单片机通信只需一个引脚;(2)通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分布式温度检测的应用;(3)实际应用中不需要外部任何器件即可实现测温;(4)可通过数据线供电,电压的范围在35.5V;(5)不需要备份电源;(6)测量范围为-55+125,在-10+85范围内误差为0.5;(7)数字温度计的分辨率用户可以在9位到12位之间选择,可配置实现912位的温度读数;(8)将12位的温度值转换为数字量所需时间不超过750ms;(9)用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。2.3.3 DS18B20的引脚功能DS18B20的引脚如图2.8所示。图2.8 DS18B20引脚图DS18B20功能如表2.2所示。表2.2 DS18B20引脚功能表引脚PR35符号说明1GND地2DQ单线运用的数据输入/输出引脚3VCC可选VCC引脚2.3.4 温度采集电路图温度测量系统主要运用了DS18B20和AT89C51。如何使两者连接实现功能是温度测量电路的主要设计目的。在硬件上,DS18B20与单片机的连接有两种方式,一种是VCC接外部电源,GND接地,I/O与单片机I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O,内部寄生电源I/O口线要接5千欧左右的上拉电阻。这里采用的是第一种连接方式,如图2.10所示图2.10 温度采集电路2.4 模数转换2.4.1 A/D转换器的基本原理模数转换器即A/D转换器,或简称ADC,是用来把模拟电压量u1转换成为与它成比例的二进制数字量Dn的电路。A/D转换包括量化和编码两个过程。所谓量化就是把幅值可连续变化的电压转化成为所规定的单位量化电压的整数倍。编码就是把量化的结果用代码表示出来。既然输入电压的幅值是连续变化的,它的幅值不一定是其量化单位的整数倍,所以量化过程不可避免会引入误差,这种误差叫量化误差。为了把一个变化范围0-0.7V的模拟信号转换为3位二进制数码,首先把0.7V分成8个离散电平,这8个离散电平为0、0.1V、0.7V。没相邻离散电平的差值相等,都是一个量化单位,为0.1V。这个过程就叫量化。量化过程实际上就是用有限的量化值代替模拟量的过程。为了对量化候的信号进行处理,还应该把量化的结果用二进制代码获其他形式表示,这个过程就叫编码。模数转换器最重要的参数是转换的精度,通常用输出的数字信号的位数的多少表示。转换器能够准确输出的数字信号的位数越多,表示转换器能够分辨输入信号的能力越强,转换器的性能也就越好。A/D转换器的主要技术指标:(1)分辨率:用二进制表示,位数越高,转换精度越大。(2)相对精度:理想下是一条直线,各个转换点偏离理想特性的误差。(3)转换速度:指完成一次转换所需时间。2.4.2 ADC0809A/D转换器芯片ADC0809是CMOS工艺,采用逐次逼近法的8位、A/D转换芯片28引脚双列直插式封装,片内除A/D转换部分外还有多路模拟开关。多路开关有8路模拟量输入端,以及8路模拟量分时输入,共用一个A/D转换器进行转换。 (1)ADC0809的内部逻辑结构由图2.11可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。ADC0809的内部逻辑结构如图2.11所示。图2.11 ADC0809的内部逻辑结构图(2)ADC0809引脚结构ADC0809引脚结构图如图2.11所示。D7-D0:8位数字量输出引脚。 IN0-IN7:8位模拟量输入引脚。 VCC:+5V工作电压。 GND:地。 REF(+):参考电压正端。 REF(-):参考电压负端。 START:A/D转换启动信号输入端。ALE:地址锁存允许信号输入端。(以上两种信号用于启动A/D转换)A、B、C:地址输入线。 EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束为高电平。OE:输出允许控制端,用以打开三态数据输出锁存器。CLK:时钟信号输入端(一般为500KHz)。 ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4条 ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如表2.3所示。表2.3 8位模拟开关功能表ADDCADDBADDA输入通道号000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN72.5 液晶显示器LM016L显示模块2.5.1液晶显示器LM016L结构功能介绍液晶显示器是一种将液晶显示器件、连接器件、集成电路、PCB线路板、背光源,结构器件装配在一起的组件。LM016L液晶模块采用HD44780控制器。HD44780具有简单而功能较强的指令集,可以实现字符移动、闪烁等功能。HD44780控制器由两个8位寄存器、指令寄存器(IR)和数据寄存器(DR)、忙标志(BF)、显示数据RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC)构成。IR用于寄存指令码,只能写入不能读出;DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据。BF为1时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据。DDRAM用来存储显示的字符,能存储80个字符码。CGROM由8位字符码生成5 x 7点阵字符160种和510点阵字符32种,8位字符编码和字符的对应关系。CGRAM是为用户编写特殊字符留用的,它的容量仅64字节。可以自定义8个57点阵字符或者4个510点阵字符。AC可以存储DDRAM和CGRAM地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或者CGRAM单元。LMO16L液晶模块的引脚功能见下表2.4所示。表2.4:LM016L液晶模块的引脚功能引脚号名称电平功能描述1Vss地2VDD电源3VEE亮度调节4RS控制指令位H:数据线上为数据信号L:数据线上为指令信号5RW读写指令位H:读数据模式L:写数据模式6E使能信号使能信号端714DB0DB7数据线数据线2.5.2 LM016L液晶显示电路P2.0P2.7与D0D7相连,P3. 0P3.2分别于三个使能端RS、RW、E相连,来控制LMO16L的显示。如图2.12所示,为LCD显示连接电路图。其为开机显示的初始状态。 图2.12 LCD显示连接电路图2.6 系统总体硬件原理图电路原理图用Protues软件绘制而成。首先对硬件系统AT89C51,引脚TXAL1、TXAL2与晶振时钟电路相连,RST引脚接复位电路。一起构成了单片机的最小系统。P2.0P2.7与D0D7相连,P3. 0P3.2分别于三个使能端RS、RW、E相连,来控制LMO16L的显示。P1.7连接的是温度采集电路,采用传感器DS18B20来进行温度采集,将采集到的温度转换数字,由LMO16L液晶显示屏显示。系统原理图如图2.13所示:图2.13 系统硬件电路图3 系统软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序。3.1软件流程图3.1.1 主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,其程序流程见图3.1所示。3.1.2温度转换命令子程序流程图温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图3.2所示发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束开始初始化读度温度计算温度及数据处理LCD显示 图3.1 主程序流程图图3.2温度转换流程图3.2各子程序源代码3.2.1 LCD的C语言源代码void delayNOP() _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); bit lcd_busy() bit result; lcd_rs=0; lcd_rw=1; lcd_en=1; delayNOP(); result=(bit)(P2&0x80); lcd_en=0; return(result); void lcd_wdat(uchar date) while(lcd_busy(); lcd_rs=1; lcd_rw=0; lcd_en=0; P2=date; delayNOP(); lcd_en=1; delayNOP(); lcd_en=0; delayNOP(); void reset() uchar i; lcd_wcmd(0x38); lcd_wcmd(0x0c); lcd_wcmd(0x06); lcd_wcmd(0x01); lcd_wcmd(0x00|0x80); for(i=0;i16;i+) lcd_wdat(dis1i); delayNOP(); lcd_wcmd(0X40|0x80); for(i=0;i5;i+) lcd_wdat(dis2i); delayNOP(); 3.2.2 DS18B20 C语言源代码ds18b20_rst() dq=1; delay(8); dq=0; delay(90); dq=1; delay(14); x=dq; delay(20); return (x); ds18b20_rd() uchar dat=0; uchar i; for(i=0;i=1; dq=1; if(dq) dat=dat|0x80; delay(10); return(dat); void ds18b20_wr(uchar com) uchar i; for(i=0;i=1; delay(4); read_temp() int tt; bit c; ds18b20_rst(); ds18b20_wr(0xcc); ds18b20_wr(0x44); ds18b20_rst(); ds18b20_wr(0xcc); ds18b20_wr(0xbe); temp_data0=ds18b20_rd(); temp_data1=ds18b20_rd(); temp_data1=4; c=temp_data1&0x80; if(c=0) symbol=0; t=(temp_data0)+(temp_data1=4)*0.0625; if(c=1) symbol=1; tt=(temp_data0)+(temp_data1=4)+1; t=tt*0.0625; return(t); void ds18b20_disp() uchar flagdat; disdata0=t/100+0x30; disdata1=t%100/10+0x30; disdata2=t%10+0x30; disdata4=temp_data0&0x0f; disdata3=ditabdisdata4+0x30; if(symbol=0) flagdat=0x20; else flagdat=0x2d; if(disdata0=0x30&disdata1=0x30) disdata0=0x20; disdata1=0x20; if(disdata0=0x30&disdata1!=0x30) disdata0=0x20;4 系统仿真及调试4.1仿真及调试(1)安装keil 与 proteus。(2)软件调试,在Keil软件上输入程序,进行编译、连接。图4.1 keil软件下编写程序(3)在proteus进行硬件仿真。(4)仿真结果:运行程序,LCD首先显示的温度数据与温度传感器DS18B20的数据一致,如图4.2所示。按下复位键,显示当时测量的室内温度:“weather forecast tem:41.0”;重复按下复位键键,LCD刷新测量的温度值。 图4.2 仿真结果电路图4.2 实物过程与步骤(1)查找相关元器件的使用及连接方式。如DS18B20与AT89C51的连接方式。(2)对系统原理图进行调试与分析。(3)领取元器件和耗材。(4)按照元器件清单找出元器件,确认元器件质量和参数。(5)完成在通用电路板上元器件的布置和焊接。(6)将程序写入单片机并装到电路板上,接通5V电源在电路板上电调试。4.3 实物结果与分析(1)实物图结果分析:如实物图所示本次设计的基于单片机89C51的温度测量仪实物图,其显示端和测量端通过一系列的元件连接起来。为了验证数据转换的可靠性,设计时安装了LCD显示器,在测试中通过观察显示端与测量端是否显示相同的温度值来检验数据传送的可靠性。图中为实物图,测得现场的环境温度为29度,与实际情况相符,验证了测量端电路能够有效工作,同时显示端温度值与测量端温度值保持一致,证明了数据传送的可靠性,此外,当按下复位键时,显示端的温度值和测量端的温度值同时发生改变,DS18B20传感器则重新测量温度,重复上一次的系统信号转换,LCD显示器重新显示当前值。此设计在环境恶劣的情况下依然可以观察到环境温度的变化,尤其是需要测恶劣环境下温度时,避免了人员直接置身其中,保障了其安全性。(2)实验操作结果列表如下表4.1 实验操作项目表操作项目实验操作LCD温度显示操作项目一不做任何操作显示当前室温30摄氏度操作项目二用电风扇进行降温操作28摄氏度操作项目三用加热炉进行升温操作38摄氏度5 设计总结及心得在为期两周的单片机课程设计中,我们要设计一个温度测量系统。软件使用Keil软件进行仿真调试。硬件使用单片机仿真器、编程器、实验仪三合一综合开发平台上的DS18B20数字温度采集模块和LMO16L液晶显示模块。唐博士首先给我们详细讲解了芯片的功能和工作原理,并给了一份参考程序。在机房进行实验时,我们也遇到了很多困难,例如在做实物图时我们将温度传感器的引脚接反了,经过再三细心检查和查资料最终才更正过来。在对参考程序进行仿真时,结果也出了问题。然后,我思考设计要求对程序进行修改,初次修改没有成功,我询问了老师,老师给我讲解了思路。经过再三的请教、修改程序,反复调试,最后成功了,心里非常高兴,这次是我独自思考,独立完成的,也使我对整个程序有了更深的理解。通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵。参考文献:1楼然苗. 单片机课程设计指导M.北京:北京航空航天大学出版社,2007:3547.2张克农.数字电子技术基础M.北京:高等教育出版社,2003:255271.3胡宴如.模拟电子技术基础M.北京:高等教育出版社,2001:91111.4李朝青.单片机原理及接口技术M.北京:北京航空航天大学出版社,1999:17277.5谢自美.电子线路设计、实验、测试M.武汉:华中理工大学出版社,2003:2357.6康华光.电子技术基础M.北京:高等教育出版社,2002:1334.7李强.数字电子技术基础教程M.北京:电子工业出版社,2002:2545.8赵志杰.集成电路应用识图方法M.北京:机械工业出版社,2003:1031.附录:#include #include#include#define uchar unsigned char #define uint unsigned intsbit lcd_rs=P30; sbit lcd_rw=P31;sbit lcd_en=P32;sbit dq=P17;uchar code dis1=Weather forecast;uchar code dis2=temp:;temp_data=0x00,0x00;disdata=0x00,0x00,0x00,0x00,0x00;uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;bit x;uint t;uchar symbol;/*/ void delay(uint ms) while(ms-); void delayNOP() _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*/*检查LCD忙状态 */ /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */ /*/ bit lcd_busy() bit result; lcd_rs=0; lcd_rw=1; lcd_en=1; delayNOP(); result=(bit)(P2&0x80); lcd_en=0; return(result); /*写指令数据到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ /*/ void lcd_wcmd(uchar cmd) while(lcd_busy(); lcd_rs=0; lcd_rw=0; lcd_en=0; P2=cmd; delayNOP(); lcd_en=1; delayNOP(); lcd_en=0; delayNOP(); /*/ /*写显示数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */ /*/ void lcd_wdat(uchar date) while(lcd_busy(); lcd_rs=1; lcd_rw=0; lcd_en=0; P2=date; delayNOP(); lcd_en=1; delayNOP(); lcd_en=0; delayNOP(); /* LCD初始化设定 */ /*/ void reset() uchar i; lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据 lcd_wcmd(0x0c); /显示开,关光标 lcd_wcmd(0x06); /移动光标 lcd_wcmd(0x01); /清除LCD的显示内容/* 设定显示位置 */ /*/ lcd_wcmd(0x00|0x80); /数据指针=80+地址变量/*自定义字符写入CGRAM */ /*/ for(i=0;i<16;i+) lcd_wdat(dis1i); delayNOP(); /*us级延时函数 */ /*/ lcd_wcmd(0X40|0x80); for(i=0;i<5;i+) lcd_wdat(dis2i); delayNOP(); /*初始化ds1820 */ /*/ ds18b20_rst() dq=1; /拉高总线 delay(8); /稍做延时 dq=0; /DQ复位 delay(90); /精确延时 大于 480us dq=1; delay(14); x=dq; /X=0则初始化成功 X=1则初始化失败 delay(20); return (x); /返回信号,0=X,1= no X /* 读一个字节 */ /*/ ds18b20_rd() uchar dat=0; uchar i; for(i=0;i<8;i+) dq=0; / 给脉冲信号 dat>>=1; dq=1; / 给脉冲信号 if(dq) dat=dat|0x80; delay(10); return(dat); /* 写一个字节 */ /*/ void ds18b20_wr(uchar com) uchar i; for(i=0;i<8;i+) dq=0; dq=com&0x01; delay(10); dq=1; com>>=1; delay(4); /* 读取温度 */ /*/ read_temp() int tt; bit c; ds18b20_rst(); ds18b20_wr(0xcc); / 跳过读序号列号的操作 ds18b20_wr(0x44); / 启动温度转换 ds18b20_rst(); ds18b20_wr(0xcc); /跳过读序号列号的操作 ds18b20_wr(0xbe); /读取温度寄存器 temp_data0=d
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!