《基于单片机的温度采集系统设计(共25页).docx》由会员分享,可在线阅读,更多相关《基于单片机的温度采集系统设计(共25页).docx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上摘要单片机已在各行业得到广泛应用,为适应更多的应用领域,厂家采取了在一块单片机芯片上集成多种功能部件和大容量存储器的方法。因而,整个应用系统不需要扩展,而体积变小、可靠性增高,使单片机成为真正意义上的单片机系统。第一章 单片机概述单片机是单片微型计算机的简称,有时称为微控制器,是将计算机的主要功能单元集成在一个芯片中而构成的器件。由于单片机在一个芯片上集成诸多功能,因此就单项功能而言,通常都没有普通计算机强大,如计算机速度不够快、字长较短、外部可扩展接口的数量少且规模小等。但是,单片机具有体积小、价格便宜和技术成熟等优点,是各种电子产品的重要组成部分,在国民经济的各个
2、领域发挥着重要作用。 早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机已经超过30
3、0MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端1的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和。 单片机比专用处理器更适合应用于,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、家用电器、电子玩具、以及鼠标等电脑配件中都配有1-2部单片机。而中也会有为数不少的单片机在工作。上一般配备40多部单片机,复杂的工业控制系统上甚至可能有
4、数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。 单片机又称,它不是完成某一个逻辑功能的芯片,而是把一个到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可.用它来做一些控制电器一类不是很复杂的
5、工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!.它主要是作为控制部分的核心部件。 它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。 单片机的组成通常和普通计算机一样,通常具有以下几个部分:(1)、CPU。CPU是中央处理器的简称,有时也称为“核”,它是进行运算和控制的重要单元,其性能决定单片机的主要性能。(2)、存储器。单片机的存储器通常由ROM和RAM组成,ROM常用于存放单片机的程序,而RAM用于存放数据。(3)、输入/输出接口。计算机的输入/输出接口用于
6、连接外围设备,例如键盘、显示器、打印机、A/D或D/A转换器等,实现与外围设备的数据交换。在普通计算机上,这些功能是由主板上的若干芯片实现的;对于单片机,这些对应的功能单元集成在其内部。随着技术的发展,单片机的功能日益增多,有些单片机除了上述功能以外,还集成有其他部件,如各种异步和同步串行接口、CAN通信控制器等。通常,称单片机内部除CPU外的功能单元为片内外设,也称为内部资源。单片机具有以下主要特点:(1)、价格便宜。单片机尽管集成了众多资源,但其结构简单,生产批量大,因此价格十分便宜,通常在几元到几十元人民币。(2)、体积小。目前最小的单片机只有6个引脚,十几到二十几个引脚的单片机也很多,
7、还有表面贴片封装的,体积很小,便于设计成嵌入式系统安装在电子设备中,以实现智能控制。当然,功能强大的单片机引脚也相应较多,例如有40、52、68,甚至更多引脚的单片机,但在采用表面贴片封装后,其体积并不大。(3)、技术成熟、应用广泛。相对于大型计算机和PC机,单片机的技术难度小,复杂度低,因此其技术相当成熟。单片机的稳定可靠,为在单片机的广泛应用创造了技术条件。在现代社会,电子产品在日常生活中不可或缺,而电子产品往往离不开单片机,可见单片机的应用之广。单片机在计算机家族中占据着重要地位,是电子工程师应该掌握的最基本工具之一。当然,就功能的完备性和强大性而言,单片机不能和高级计算机相比,但这不影
8、响它的应用范围。实际工作中,并非所有场合都要求计算机有很高的性能,例如电冰箱温度控制并不需要使用主频达1.8GHz的奔腾机。应用单片机的关键是看其功能是否够用,性价比是否合适。单片机不会因其简单而被淘汰,例如MCS-51单片机退出来二十多年了,仍然是一款应用最广的单片机,而且在不断发展。可以说,只有在单片机出现后,计算机才能真正地从科学的神圣殿堂走入了寻常百姓家,成为广大工程技术人员进行技术革命和技术革新的有力武器。单片机的应用 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据
9、处理,广泛使用的各种智能,民用豪华轿车的安全保障系统,、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: 1.在仪表上的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的,可实现诸如电压、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压
10、力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或更加强大。例如精密的测量设备(,各种分析仪)。 2.在工业控制中的应用 用单片机可以构成形式多样的控制系统、。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。 3.在家用电器中的应用 可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他视频器材、再到量设备,五花八门,无所不在。 4.在计算机网络和通信领域中的应用 现代的单片机普遍具备,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,
11、现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,对讲机等。 5.单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。 6.在各种大型电器中的模块化应用 某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制
12、器读出,转化为模拟音乐电信号(类似于声卡)。 在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。 7.单片机在汽车设备领域中的应用 单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能,GPS导航系统,制动系统等等。 此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。单片机学习应用的六大重要部分 一、总线:我们知道,一个电路总是由通过电线连接而成的,在中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以为核心,各器件都要与微处理器相
13、连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为,器件所有的控制线被称为。在单片机内部或者及其它器件中有,这些存储单元要被分配,才能使用,分配地址
14、当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为。 二、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的数字,或者说都是一串0和1组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象,在各种不同的应用电路中各
15、不相同,一般而言,被处理的数据可能有这么几种情况: 1.地址(如MOV DPTR,1000H),即地址1000H送入。 2.方式字或控制字(如MOV TMOD,#3),3即是控制字。 3.常数(如MOV TH0,#10H)10H即定时常数。 4.实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实际输出的值。 理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。 三、P0口、P2口和P3的第二功能用法:初学时往往对P0口、P
16、2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号,当微处理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要-微处理机-执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。事实上不能作为通用I/O口使用也并不是不能而是(使用者)不会将其作为通用I/O口使用。你完全可以在指令中按排一条SETB P3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做
17、,因为这通常会导致系统的崩溃。 四、程序的执行过程:单片机在通电复位后8051内的(PC)中的值为0000,所以程序总是从0000单元开始执行,也就是说:在系统的ROM中一定要存在0000这个单元,并且在0000单元中存放的一定是一条指令。 五、堆栈:堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的先进后出,后进先出,并且堆栈有特殊的数据传输指令,即PUSH和POP,有一个特殊的专为其服务的单元,即SP,每当执一次时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。由
18、于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就是把堆栈设置在从内存单元60H开始的单元中。的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。 第
19、二章 总体方案设计2.1 课题的意义课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不可少的,是非常必要的。在设计中我们可以消化与巩固单片机及接口技术课程所学知识;理论联系实际,学会用理论知识解决实际问题;培养设计能力,初步掌握设计的一般步骤与方法2.2 系统整体硬件电路2.2.1 芯片简介Max232串口芯片MAX232芯片是专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。内部结构基本可分三个
20、部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/C
21、MOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚DNG、16脚VCC(+5v)。RS232 (DB9)引脚定义:1 :DCD :载波检测。主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音,处于在线状态。 2 :RXD:此引脚用于接收外部设备送来的数据;在你使用Modem时,你会发现RXD指示灯在闪烁,说明RXD引脚上有数据进入。 3 :TXD:此引脚将计算机的数据发送给外部设备;在你使用Modem时,你会发现TXD指示灯在闪烁,说明计算机正在通过TXD引脚发送数据。 4 :DTR:数据终端就绪;当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备
22、好。 5 :GND:信号地;此位不做过多解释。 6 :DSR:数据设备就绪;此引脚高电平时,通知计算机Modem已经准备好,可以进行数据通讯了。 7 :RTS:请求发送;此脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中。 8 :CTS: 清除发送;此脚由Modem控制,用以通知计算机将欲传的数据送至Modem。 9 :RI : Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定DS18b20DS1820是Dallas半导体公司生产的数字化温度传感器,是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而经济的特点,使用户可以
23、轻松的组件传感器网络,为测量引入全新的概念。新一代的“DS18B20”体积更小、更经济、更灵活,使用户可以充分发挥一线总线的长处5。同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55+125,在-10+85范围内,精度为0.5。现场温度范围以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如设备控制、设备或过程控制、测温类消费电子产品等。DS18B20的特性(1) 独特的单接口仅需一个端口引脚进行通讯;(2) 简单的多点分布应用;(3) 无需外部器件;(4) 可通过数据线供电,无需外部电源;(5) 零待机功耗;(6) 测温范围为-
24、55+125,以0.5递增;(7) 温度以9位数字量读出;(8) 温度数字量转换时间200ms(典型值);(9) 用户可定义的非易失性温度报警设置;(10) 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(11) 应用包括温度控制、工业系统、消费品、温度计或任何热感测系统。DS18B20的结构如图4.1所示:图4.1 DS18B20的结构图DS18B20有三个主要的数据部件:(1) 64位激光(lasered) ROM;(2) 温度灵敏元件;(3) 非易失性温度告警触发器TH和TL。器件从单线的通信线取得其电源,在信号线为高电平的时间周期内,把能量贮存在内部的电容器中;在单信号
25、线为低电平的时间期内,断开此电源,直到信号线变为高电平重新接上寄生(电容)电源为止。作为另一种可供选择的方法,DS18B20也可用外部+5V电源供电。max232芯片:MAX232芯片是专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。Mcs-51芯片 80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。采用40引脚双列直插式DIP(Dual In Line Package),内有
26、128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心单片机的40个引脚大致可分为类:电源、时钟、控制和I/O引脚。 电源: VCC - 芯片电源,接+5V; VSS - 接地端; 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 控制线:控制线共有4根, ALE/PROG:地址锁存允许/片
27、内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 PSEN:外ROM读选通信号。 RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。 EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外ROM选择端。 Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。 I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出
28、和控制信号(属控制总线)。2.2.2 硬件电路设计及描述硬件电路由:Ds18b20,max232芯片,晶振,复位电路,声光报警电路,8051单片机等组成。DS18b20详细引脚功能描述:外观图:GND地信号。DQ数据输入/输出引脚,开漏单总线接口引脚。当被用着在寄生电源下时,也可以向器件提供电源。VDD外接供电电源输入端。当工作于寄生电源时,此引脚必须接地。 DS18B20读出的温度结果的数据为两字节,用16位符号扩展的二进制补码读数形式提供。因此在系统中要将得到的温度值数据进行格式转换才能用于显示。这两个数据格式如图所示:MSB LSBSSSSS262524MSB LSB232221202-
29、12-22-32-4高8位中的高5位是符号位,表示是零下还是零上。高8位中的低3位D6,D5,D4 和低8位中的高4位D,D,构成温度的整数部分。低位中的,D,位温度的小数部分。max232芯片,MAX232芯片是专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错。下图就是MAX232的基本接线图。图为MAX232声光报警电路,可实现简易的发音功能,如图
30、所示,复位电路:复位是使CPU和系统中的其他功能部件都处于一个确定的初始状态,复位后计算机就从这个状态开始工作。在复位期间, CPU并没有开始执行程序是在做准备工作。无论是在在计算机刚上电时,断电后,还是系统出现故障时都需要复位。 MCS-51单片机的复位靠外部电路来实现,为了确保复位,RST引脚上的高电平一般要维持大约10秒以上。 MCS-51单片机的复位原理也可分成上电复位和按键手动复位两种,如图:A上电复位电,路 B按键复位电路。上电复位电路是利用电容充电来实现的。在接通电源瞬间,RST端的电位与VCC相同,都是+5v。随着着RC电路的充电的点位逐渐下降,只要保证位高电平的时间大于秒就能
31、正常恢复。按键复位电路,在单片机已经通电的情况下,只需要按下图所示的键也可以复位,此时电源经过电阻分压,在端产生一个复位高电平。如取欧姆,取欧姆左右,这样当按下键时,端的电压为.,满足高电平要求。 8051单片机:单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。 电源: VCC - 芯片电源,接+5V; VSS - 接地端; 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 控制线:控制线共有4根, ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此
32、引脚输入 编程脉冲。 PSEN:外ROM读选通信号。 RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。 EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外ROM选择端。 Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。 I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号。第三章 系统软件算法设计3.1 主程序ORG 0000HLJMP MAINORG 001BHLJMP PINT1M
33、AIN: MOV P1,#0FFH ACALL CSH ;调用初始化程序 MOV A,P1 XRL A,#03H ;判断是否有键按下 JNZ MAIN ;没有就返回 ACALL DL20MS ;调用延时20MS程序MOV A,P1XRL A,#03H ;再次判断是否有键按下JNZ MAIN MOV A,P1MOV TMOD,#20H ;T1方式2、定时模式MOV PCON,#00H ;SMOD=0MOV TH1,#0F4HMOV TL1,#0F4HSETB TR1MOV IE,#90H ;开中断,允许串行口中断MOV SCON,#50H ;串行口方式1,可以接收和发送CLR TRN_STA ;
34、设置本机为发送命令字状态CLR RCV_STA ;设置本机为接收命令字状态RET3.2 键盘扫描子程序NEXT1: CJNE A,#01H,NEXT2 LCALL K1 ;调用K1键的处理程序 CJNE A,#02H,NEXT1 LCALL K2 ; 调用K2键的处理程序NEXT2: CJNE A,#02H,MAIN ACALL K2 END ;延时20MS的程序DL20MS: MOV R2,#10 DL20MS1: MOV R3,#250DL20MS2: NOP NOP DJNZ R3,DL20MS2 DJNZ R3,DL20MS2 RET ;以下初始化程序CHS: MOV R2,#03H
35、DH: MOV P0,#3FH MOV P2,#00H MOV R3,#250DELAY: NOP NOP DJNZ R3,DELAY MOV A,P1 INC A DJNZ R2,DH RET3.3检测温度子程序ORG 0100HCheck_Temperature:data_ACQURACALLreset_pulse;发送复位脉冲MOVA,#0CCHACALLwrite_byte;send skip ROM commandMOVA,#44HACALLwrite_byte;初始化温度模块JNBP1.4,$;读DS18B20状态ACALLreset_pulseMOVA,#0CCHACALLwri
36、te_byte MOVA,#0BEHACALLwrite_byte;send scratchpad commandACALL read_byte;read eeprom byte 0MOVR7,A;存储LSB在R7中ACALLread_byteMOV R6,A;存储MSB在R6中ACALLreset_pulseRET芯片初始化的脉冲reset_pulse: SETB P1.4NOPNOPCLR EACLRP1.4MOVR2,#250;delay500usDJNZR2,$SETBP1.4MOVR2,#20;delay40usDJNZR2,$CLR C ORL C,P1.4 JC reset_pu
37、lse MOV R2,#80 ;注意这两条指令是否真的需要 DJNZ R2,$RET3.4读数据子程序READ_BYTE:MOVR3,#8SETB P1.4NOPNOPREAD1:CLRP1.4NOP NOPSETBP1.4NOPNOP NOPMOVR5,AMOVC,P1.4MOVA,R5MOVR2,#30DJNZ R2,$RRCADJNZR3,READ1RET3.5写数据子程序WRITE_BYTE:MOVR3,#8WRITE:RRCAJC WRITE1SETB P1.4 NOP NOPCLRP1.4MOVR2,#30DJNZR2,$SETBP1.4NOPNOPNOPNOPDJNZ R3,WR
38、ITERETWRITE1:SETB P1.4NOP NOP CLRP1.4 NOP NOPNOPNOP SETBP1.4 MOVR2,#30 DJNZR2,$ DJNZR3,WRITE RET3.6串口中断子程序SEND_COM:MOV A,R2MOV SBUF,ARETSRT-INT: POP ACC JNB RI,SENT ;非接收中断,转去发送处理CLR RI ;清除接收标志JB RCV_STA,RCV_DAT ;转去接收数据处理MOV A,SBUF ;以下为接收命令CJNE A,#ASK_RCV,CYM01 ;非“请求接收”命令MOV R6,#LEN_RCV ;是“请求接收”命令,准备
39、接收数据MOV R0,#RCV_BUF ;本机接收数据区首地址SETB RCV_STA ;置本机为接收数据状态MOV A,#RCV_RDY ;本机“接收准备就绪”MOV SBUF,A ;回送“接收准备就绪”命令AJMP RETURNCOM01:CJNE A,#ASK_TRN,COM02 ;非“请求发送”命令MOV R7,#LEN_TRN ;是“请求发送”命令,准备发送MOV R0,#TRN_BUF ;本机发送数据区首地址SETB TRN_STA ;置本机为发送数据状态MOV A,#TRN_RDY ;本机“发送准备就绪”MOV SBUF,A ;回送“发送准备就绪”命令AJMP RETURNCJN
40、E A,#RCV_RDY,COM03 ;非“接收准备就绪”命令MOV R7,#LEN_TRN ;是对方的“接收准备就绪”命令,本机发送MOV R0,#TRN_BUF ;本机发送数据区首地址SETB TRN_STA ; 置本机为发送数据状态MOV A,R0 ;请发送的数据MOV SBUF,A ;发送数据INC R0 ;修改发送单元地址AJMP RETURNCOM03:CJNE A,#TRN_RDY,NON_COM ;非“发送准备好”命令MOV R6,#LEN_RCV ;是对方的“发送准备就绪”命令,接收数据MOV R0,#RCV_BUF SETB RCV_STA ;置本机为接收数据状态NON_C
41、OM:AJMP RETURNRCV_DAT:MOV A,SBUF ;接收数据MOV R0,A ;存储INC R0 ;修改地址DJNZ R6,CONT1 ;数据块接受完否?CLR RCV_STA ;数据块接收完毕,置本机为接受命令状态CONT1:AJMP RETURN SENT:CLR TI ;清除发送标注JB TRN_STA,ST_DAT ;本机为发送数据状态AJMP RETURN ;本机不是发送数据状态ST_DAT:MOV A,R0 ;取发送的数据MOV SBUF,A ;发送INC R0 ;修改发送单元地址DJNZ R7 RETURN ;数据块发送完否CLR TRN_STA ;置本机为发送命令状态RETURN:POP ACC RETI3.7程序流程图主程序图 开 始初 始 化检测是否有键按下 N Y延时30秒消抖检测是否有键按下 N按 键 YS0处理程序K0按下 Y结束K1按下NN子程序图开 始保护现场采集数据上传数据报警 Y 恢复现场N返回