文档库 最新最全的文档下载
当前位置:文档库 › 【精品】基于18B20的温度测量仪毕业论文报告

【精品】基于18B20的温度测量仪毕业论文报告

(此文档为word格式,下载后您可任意编辑修改!)

目录

第一章单片机原理及应用技术课程设计的目的意义 (2)

1.1 设计目的 (2)

1.2课程在教学计划中的地位和作用 (2)

第二章基于18B20的温度测量仪设计任务 (2)

2.1 设计内容及要求 (2)

2.2 课程设计的要求 (2)

2.2.1 控制要求 (2)

2.2.2 设计要求 (2)

第三章系统的硬件设计与选型 (3)

3.1 总体设计思想与选型 (3)

3.2 硬件设计方案 (3)

3.3 硬件设计系统原理图 (3)

3.4 选型芯片及其各自功能说明 (5)

3.4.1 89C51的引脚与功能简介 (5)

3.4.2 DS18B20的引脚与功能简介 (8)

3.4.3 74LS138的引脚与功能简介 (13)

3.4.4 74LC573的引脚与功能简介 (15)

3.4.5 数码管简介 (15)

第四章软件设计 (17)

4.1 源程序说明 (17)

第五章系统调试及使用说明 (20)

5.1 系统使用说明 (20)

5.2 系统调试 (25)

收获、体会 (26)

附录系统源程序及实物图 (27)

第一章单片机原理与技术应用课程设计的目的意义

1.1 课程设计目的

《单片机原理及技术应用》主要内容包括MCS-51单片机的内部结构、指令系统、汇编语言和C语言程序设计、并行接口和并行设备的扩展、中断系统结构与应用、定时器计数器原理与应用、串行接口与串行通信、模拟量接口以及单片机应用系统设计技术。

本课程设计目的在于培养学生综合运用理论知识来分析和解决实际问题的能力,是通过设计单片机检测系统,加深学生对单片机技术的了解,进一步掌握其程序设计与硬件接口技术。

本课程的主要任务是运用所学单片机技术、单片机原理等方面的知识,设计出一台以89C51MCU为核心的单片机数据采集、通讯或测控系统,完成信息的采集、处理、输出及人机接口电路等部分的软、硬件设计。

1.2 课程设计在教学计划中的地位和作用

本课程是生物医学工程的一门主要专业课之一。以MCS-51系列的8位单片机为教学对象,介绍单片机的发展概况、原理及应用。

主要内容:单片机的基本概念,MCS-51系列单片机的结构,MCS-51系列单片机指令系统,程序设计基础,中断系统,MCS-51系列单片机内部定时器计数器及其应用,串行接口,单片机应用系统扩展设计基础,模拟量输入输出接口技术,人机接口技术,功率接口技术,单片机应用系统设计技术,单片机应用系统举例,新型单片机介绍等。

学生获得的知识和能力:单片机的基本结构和原理、指令系统、汇编语言程序设计、C51开发技术,简单的单片机应用系统的设计等。

《单片机原理及应用》课程设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。使学生增进对单片机的感性认识,加深对单片机理论方面的理解,为以后设计和实现单片机应用系统打下良好基础。

第二章基于18B20的温度测量仪设计任务

2.1 设计内容

基于18B20的温度测量仪是以温度传感器DS18B20为关键的测温系统,测得的温度由三位数码管显示,精确到一度。

2.2 课程设计要求

掌握18B20温度传感器原理;

三位数码管显示温度值。

2.2.1 控制要求

设计技术参数,温度测量精确到一度。

2.2.2 设计要求

设计出硬件电路,说明工作原理,编写程序,调试、得到要求现象。

第三章系统硬件设计与选型

3.1 总体设计思想与选型

本次课程设计会用到的主要器件是51单片机和DS18B20温度传感器以及数码管,主要就是通过温度传感器的检测,把实际测得的温度值转换成二进制,再传回单片机处理,然后通过数码管显示出温度值。

其次是74LS138和74LCX573芯片,用来控制数码管显示。

3.2硬件设计方案

系统的硬件部分主要包括:电源、晶振、复位、单片机、数码管、DS18B20、74LS138和74LCX573。

3.3 硬件设计系统原理图

硬件电路原理图反映了所用到的芯片的连接情况,也可以清楚看到各硬件是如何连接的,具体请看图

3.4 选型芯片及其各自功能说明

3.4.1 芯片列表

依照设计思路,本次设计使用了如下芯片:

1.微处理器89C51

2.温度传感器 DS18B20

3.译码器 74LS138

4.集成芯片74LC573

3.4.2 89C51的引脚与功能简介

MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片机,它包含51和52两个子系列。单片机由于体积小、功耗低、易于产品化,面向控制,抗干扰能力强,适用温度范围宽,可以方便地实现和分布式控制等优点,因而被广泛地应用于各种控制系统和分布式系统中。

89C51和MCS-51是完全兼容的,是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器。其主要特点如下:

? 8位CPU。

?工作频率最高为24M。

? 128B数据存储器。

? 4KB程序存储器。

?程序存储器的寻址空间为64KB。

?片外数据存储器的寻址空间为64KB。

? 128个用户位寻址空间。

? 21个字节特殊功能寄存器。

? 4个8位的并行IO接口:P0、P1、P2、P3。

?两个16位定时计数器。

?两个优先级别的5个中断源。

? 1个全双工的串行IO接口,可多机通信。

? 111条指令,喊乘法指令和除法指令。

?较强的位处理能力。

?采用单一+5V电源。

对于89C52而言,不同之处在于:有256B的数据存储器、8K的程序存储器、全双工串行IO接口、6个中断源、3个16位定时计数器,工作频率可升直33Mhz。比51拥有更高的性能。

图1-1是51单片机的接口硬件分布图

我们此次采用的是AM-51H学习板(如图1-2),板载的芯片是89C52芯片,拥有丰富功能模块及外接电路,如图的标注。

I. 89C51单片机两种封装形式:

(1) 双列直插(PDIP): 40引脚。

(2) 方形(PLCC)封装形式: 44引脚,有4条引脚是空脚(标为NC)。

图3-2(a)为引脚排列图。

图3-2(b)为逻辑符号图。

II. 89C51引脚功能:

1. 电源引脚Vcc和Vss

(1) Vcc :电源端,接+5V电源。

(2) Vss :接地端。

2. 外接晶体引脚XTALl和XTAL2

(1) XTAL1:片内振荡电路的输入端;

(2) XTAL2:片内振荡电路的输出端。

3. 控制信号引脚

(1) RST VPD:

RST是复位信号输入端,高电平有效。出现两个机器周期以上的高电平时复位;

图3-4 89C51单片机引脚排列及逻辑符号图

?RST引脚的第二功能:备用电源VPD的输入端;

?当主电源VCC发生故障,降低到规定值时,此引脚可接备用供电,由VPD向内部RAM提供备用供电,以保持片内RAM中的数据。

(2) ALEPROG:地址锁存允许信号

?访问外部存储器时,ALE信号的输出用于锁存低8位地址的控制信号。

?信号频率为振荡器的16;

?ALE端可以驱动8个TTL负载;

?对Flash存储器编程时,用于输入编程脉冲信号。

(3) PSEN:片外程序存储器读选通信号

?低电平有效,可驱动8个TTL负载。

(4) EA(VPP):片内、外程序存储器选择端

?编程电压输入端;

?当EA端为高电平时,先访问片内EPROM;

?当EA端接地时,只访问片外EPROM;

?在Flash存储器编程时,提供编程电压。

4. I O引脚

(1) P0口(P0.0~P0.7):

?第一功能:通用IO口,用来输入输出数据

?第二功能:当CPU访问片外存储器时,分时提供低8位地址和高8位数据的复用总线。

(2) P2口(P2.0~P2.7):

?第一功能:不扩展片外存储器时,作为通用IO口。

?第二功能:扩展片外存储器时,输出片外存储器的高8位地址。

(3) P1口(P1.0~P1.7):

?第一功能:通用IO口。

?第二功能:片内ROM编程或校验时,输入片内ROM的低8位地址。

(4) P3口(P3.0~P3.7):

?第一功能:通用的IO口。

?第二功能:控制功能。

III. 89C51的外部总线

外部总线结构图如图3-5所示。

图3-5 外部总线结构图

(1) 地址总线(AB)。16位,寻址范围64KB。高8位(A15~A8)由P2口输出,低8位(A7 ~A0)由P0口输出。

(2) 数据总线(DB)。8位,由P0口提供。

(3) 控制总线(CB)。由4条控制线和P3口的第二功能状态组成。

IV. 89C51的内部结构

89C51单片机在一块芯片中集成了CPU、RAM、 ROM、定时器计数器和IO口等基本功能部件。各功能部件由内部总线连接在一起。89C51基本结构见图3-6所示。

图3-6 89C51单片机基本结构图

CPU是单片机的核心部件,由运算器和控制器等部件组成。运算器的功能主要是进行算术运算和逻辑运算。由8位ALU单元,两个8位的暂存器,8位的累加器ACC、B寄存器,程序状态寄存器PSW等组成。控制器用于控制单片机各部分的运行,由程序计数器PC,指令寄存器、译码器及定时控制逻辑和数据指针DPTR组成。

3.4.3 DS18B20温度传感器简介

DS18B20是DALLAS公司生产的单总线数字温度传感器芯片,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9-12为AD转换精度,测量分辨率可达0.0625℃,被测温度用16位补码方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少。可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。

(一)DS18B20的主要特性如下:

1、适应电压范围宽:3.0V-5.5V,在寄生电源方式可有数据线共电。

2、在使用中不需要任何外围元件。

3、独特的单线接口方式:DS18B20与微处理器连接时仅需要一条信号线既可实现微处理器与DS18B20的双向通信。

4、温度范围:-55℃~+125℃,在-10℃-+85℃时精度为±0.5℃。

5、编程可实现分辨率为9-12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃

0.0625℃,可实现高精度测温。

6、在9位分辨率时最多在93.75ms内把温度值转换为数字,12位分辨率时最多在750ms内把温度值转换为数字。

7、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。

8、用户可自设定非易失性的报警上下限值。

9、负压特性:电源极性接反时,温度计不会因发热而烧坏,但不能正常工作。

(二)DS18B20内部结构主要由四部分组成:

64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。该装置信号线高的时候,内部电容器储存能量通由1线通信线路给片子供电,而且在低电平期间为片子供电直至下一个高电平的到来重新充电。 DS18B20的电源也可以从外部3V-5 .5V的电压得到。

DS18B20的外部机构图和内部结构图(如图1-3、1-4)

图1-4 DS1820内部结构

图1-3 TQ-92封装及8脚SOIC封装

(三)DS18B20温度值格式

默认的12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

图1-5 DS18B20温度值格式表

(四)DS18B20采用一线通信接口。因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。主要首先提供以下功能命令之一: 1 )读ROM, 2 )ROM 匹配, 3 )搜索ROM, 4 )跳过ROM, 5 )报警检查。这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。

若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH和TL都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH,TL指令以及配置字节利用一个记忆功能的指令完成。通过缓存器读寄存器。所有数据的读,写都是从最低位开始。

DS18B20有4个主要的数据部件:

(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个

DS18B20的目的。

(2) DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃LSB形式表达,其中S为符号位。

DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,温度报警触发器TH和TL,配置寄存器。

存储器

DS18B20的存储器包括高速暂存器RAM和可电擦除RAM,可电擦除RAM又包括温度触发器TH和TL,以及一个配置寄存器。存储器能完整的确定一线端口的通讯,数字开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来确认这些数字。当确认以后就可以用复制寄存器的命令来将这些数字转移到可电擦除RAM中。当修改过寄存器中的数时,这个过程能确保数字的完整性。

高速暂存器RAM是由8个字节的存储器组成;第一和第二个字节是温度的显示位。第三和第四个字节是复制TH和TL,同时第三和第四个字节的数字可以更新;第五个字节是复制配置寄存器,同时第五个字节的数字可以更新;六、七、八三个字节是计算机自身使用。用读寄存器的命令能读出第九个字节,这个字节是对前面的八个字节进行校验。存储器的结构图如图4.6所示。

64位光刻ROM的前8位是DS18B20的自身代码,接下来的48位为连续的数字代码,最后的8位是对前56位的CRC校验。64-位的光刻ROM又包括5个ROM的功能命令:读ROM,匹配ROM,跳跃ROM,查找ROM和报警查找。64-位光刻ROM的结构图如图4.7所示。

DS18B20外部电源的连接方式

DS18B20可以使用外部电源VDD,也可以使用内部的寄生电源。当VDD端口接

3.0V—5.5V的电压时是使用外部电源;当VDD端口接地时使用了内部的寄生电源。无论是内部寄生电源还是外部供电,IO口线要接5KΩ左右的上拉电阻。连接图如图

4.8、图4.9所示。

配置寄存器

配置寄存器是配置不同的位数来确定温度和数字的转化。R1,R0是温度的决定位,由R1,R0的不同组合可以配置为9位,10位,11位,12位的温度显示。这样就可以知道不同的温度转化位所对应的转化时间,四种配置的分辨率分别为0.5℃,0.25℃,0.125℃和0.0625℃,出厂时以配置为12位。4.3.4.2 温度的读取

DS18B20在出厂时以配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后在乘以0.0625便为所测的温度,还需要判断正负。前5个数字为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。16位数字摆放是从低位到高位

DS18B20常用ROM、RAM指令(如表1、表2)

表2 RAM指令表

(四)DS18B20操作时序

DS18B20的时序有着严格的要求,每个操作之间的电平时间必须按照资料上面的进行,不然就不能对温度传感器正确的操作,一般有芯片初始化操作、读操作和写操作。

DS18B20控制方法

指令约定代码操作说明

温度转换 44H 启动DS18B20进行温度转换

读暂存器 BEH 读暂存器9个字节内容

写暂存器 4EH 将数据写入暂存器的TH、TL字节

复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中

重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节

读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU

1.DS18B20的初始化

(1)先将数据线置高电平“1”。

(2)延时(该时间要求的不是很严格,但是尽可能的短一点)

(3)数据线拉到低电平“0”。

(4)延时750微秒(该时间的时间范围可以从480到960微秒)。

(5)数据线拉到高电平“1”。

(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。

(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。

(8)将数据线再次拉高到高电平“1”后结束。

2. DS18B20的写操作

(1)数据线先置低电平“0”。

(2)延时确定的时间为15微秒。

(3)按从低位到高位的顺序发送字节(一次只发送一位)。

(4)延时时间为45微秒。

(5)将数据线拉到高电平。

(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。

(7)最后将数据线拉高。

3. DS18B20的读操作

(1)将数据线拉高“1”。

(2)延时2微秒。

(3)将数据线拉低“0”。

(4)延时15微秒。

(5)将数据线拉高“1”。

(6)延时15微秒。

(7)读数据线的状态得到1个状态位,并进行数据处理。

(8)延时30微秒。

3.4.3 74LS138的引脚与功能简介

74ls138引脚图

74HC138管脚图:

74LS138 为3 线-8 线译码器,共有 5474S138和 5474LS138 两种线路结构型式,其工作原理如下:

当一个选通端(G1)为高电平,另两个选通端((G2A)和(G2B))为

低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低

电平译出。

利用 G1、(G2A)和(G2B)可级联扩展成 24 线译码器;若外接一个反

相器还可级联扩展成 32 线译码器。

若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器用与非门组成的3线-8线译码器74LS138

3线-8线译码器74LS138的功能表

无论从逻辑图还是功能表我们都可以看到74LS138的八个输出引脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出引脚全为高电平1。如果出现两个输出引脚同时为0的情况,说明该芯片已经损坏。

当附加控制门的输出为高电平(S=1)时,可由逻辑图写出

由上式可以看出,同时又是这三个变量的全部最小项的译码输出,所以也把这种译码器叫做最小项译码器。

71LS138有三个附加的控制端、和。当、时,输出为高电平(S=1),译码器处于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平,如表3.3.5所示。这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。

带控制输入端的译码器又是一个完整的数据分配器。在图3.3.8电路中如果把作为“数据”输入端(同时),而将作为“地址”输入端,那么从送来的数据只能通过所指定的一根输出线送出去。这就不难理解为什么把叫做地址输入了。例如当=101时,门的输入端除了接至输出端的一个以外全是高电平,因此的数据以反码的形式从输出,而不会被送到其他任何一个输出端上。

3.4.4 74HC573的引脚与功能简介

74HC573包含八进制3态非反转透明锁存器,是一种高性能硅门CMOS器件。

74HC573跟LSAL573的管脚一样。器件的输入是和标准CMOS输出兼容的,加上拉电阻他们能和LSALSTTL输出兼容。

锁存器

输入是和标准 CMOS 输出兼容的;加上拉电阻,他们能和 LSALSTTL 输出兼容。

当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。

·三态总线驱动输出

·置数全并行存取

·缓冲控制输入

·使能输入有改善抗扰度的滞后作用

原理说明:

74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出

将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,IO 通道,双向总线驱动器和工作寄存器。

3.4.5数码管简介

此系统采用的是共阴极性的LED数码管,高电平点亮。如图1-6

图1-6 数码管极性及端口分布

不过,我们此次是采用的四合一的数码管。如图1-7

图四合一数码管

图数码管的硬件连接图

第四章软件设计

4.1 源程序说明

#include "reg52. P2 扫描口

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P1^3; 温度输入口

uint _con[4]={0xfb,0xfa,0xf9,0xf8}; 列扫描控制字

uchar data temp_data[2]={0x00,0x00}; 读出温度暂放

uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; 显示单元数据,共4个数据和一个运算暂用

*****************11us延时函数*************************

void delay(uint t)

{

for (;t>0;t--);

}

****************显示扫描函数***************************

scan()

{

char k;

for(k=1;k<4;k++) 4位LED扫描控制

{

Disdata=dis_7[display[k]]; 数据显示

discan=scan_con[k]; 位选

delay(200);

}

}

****************DS18B20复位函数************************

ow_reset(void)

{

char presence=1;

while(presence)

{

while(presence)

{

DQ=1;_nop_();_nop_(); 从高拉倒低

DQ=0;

delay(50); 550 us

DQ=1;

delay(6); 66 us

presence=DQ; presence=0 复位成功,继续下一步 }

delay(45); 延时500 us

presence=~DQ;

}

DQ=1; 拉高电平

}

****************DS18B20写命令函数************************

向1-WIRE 总线上写1个字节

void write_byte(uchar val)

{

uchar i;

for(i=8;i>0;i--)

{

DQ=1;_nop_();_nop_(); 从高拉倒低

DQ=0;_nop_();_nop_();_nop_();_nop_(); 5 us

DQ=val&0x01; 最低位移出

delay(6); 66 us

val=val2; 右移1位

}

DQ=1;

delay(1);

}

****************DS18B20读1字节函数************************ 从总线上取1个字节

uchar read_byte(void)

{

uchar i;

uchar value=0;

for(i=8;i>0;i--)

{

DQ=1;_nop_();_nop_();

value>>=1;

DQ=0;_nop_();_nop_();_nop_();_nop_(); 4 us

DQ=1;_nop_();_nop_();_nop_();_nop_(); 4 us

if(DQ)value|=0x80;

delay(6); 66 us

}

DQ=1;

return(value);

}

****************读出温度函数************************

read_temp()

{

ow_reset(); 总线复位

delay(200);

write_byte(0xcc); 发命令

write_byte(0x44); 发转换命令

ow_reset();

delay(1);

write_byte(0xcc); 发命令

write_byte(0xbe);

temp_data[0]=read_byte(); 读温度值的低字节

temp_data[1]=read_byte(); 读温度值的高字节

temp=temp_data[1];

temp<<=8; temp=temp|temp_data[0]; 两字节合成一个整型变量。

return temp; 返回温度值

}

****************温度数据处理函数************************

二进制高字节的低半字节和低字节的高半字节组成一字节,这个

字节的二进制转换为十进制后,就是温度值的百、十、个位值,而剩

下的低字节的低半字节转化成十进制后,就是温度值的小数部分

********************************************************

work_temp(uint tem)

{

uchar n=0;

if(tem>6348) 温度值正负判断

{tem=65536-tem;n=1;} 负温度求补码,标志位置1

display[4]=tem>>4; 取中间八位,即整数部分的值

display[3]=display[4]100; 取百位数据暂存

display[1]=display[4]%100; 取后两位数据暂存

display[2]=display[1]10; 取十位数据暂存

display[1]=display[1]%10;

******************符号位显示判断**************************

if(!display[3])

{

display[3]=0x0a; 最高位为0时不显示

if(!display[2])

{

display[2]=0x0a; 次高位为0时不显示

}

}

if(n){display[3]=0x0b;} 负温度时最高位显示"-"

}

****************主函数************************

void main()

{

Disdata=0xff; 初始化端口

discan=0xff;

for(();}

while(1)

{

work_temp(read_temp()); 处理温度数据

scan(); 显示温度值

***********************结束**************************

第五章系统的调试与使用

5.1 系统使用说明

一、KEIL C51

㈠、KEIL C51编程软件简介

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,包括C编译器、

宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。可以完成编辑、编译、连接、调试、仿真等整个开发流程。

㈡、KEIL C51的使用方法

1、项目文件的建立

KEIL C51软件是第二版本的(KEIL Uv2),所以打开的界面如图2-1。

图 KEIL Uv3 主界面

选择Project菜单下的New Project命令,弹出如图2-2对话框。

图 Create New Project 对话框

在键入“测温系统”过后弹出图2-3芯片选择对话框,在这里选择使用的Atmel 公司的AT89C52芯片如图2-4。此时会提醒用户是不是添加启动代码,这里选“是”。

图选择AT89C52

2、给工程添加源文件

单击右图所标的,在弹出的对话框中添加一个源文件后缀名为“*.C”的文件,我们这里添加“测温系统.C”文件,如图所示。

图添加工程源文件

不过,在刚开始建立的工程中一般没有源文件的,所以我们要新建一个源文件。我们可以点击右面标注所以的图标,再保存、命名。如2-7所示,这里我们命名为“18B20温度测量.C”

图保存对话框

3、编译、连接项目,形成目标文件

把保存了的工程源文件添加到工程当中过后,我们就可以编程、连接、调试了。在编译之前我们设置一下,在通过过后会生成“*.HEX文件”,这就是单片机所需的程序文件。设置如图.

图工程设置

编译、连接时,如果程序有错,则编译不成功,并在下面的信息窗口给出相应的提示信息,以便用户修改。如图,这个是编译成功的情况。

相关文档