基于多功能数字钟单片机毕业论文.doc_第1页
基于多功能数字钟单片机毕业论文.doc_第2页
基于多功能数字钟单片机毕业论文.doc_第3页
基于多功能数字钟单片机毕业论文.doc_第4页
基于多功能数字钟单片机毕业论文.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于多功能数字钟单片机毕业论文2.1 MCS-51系列单片机介绍MCS-51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器(SFR)的集中控制方式。2.1.1 控制器控制器是单片机的指挥控制部件,控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。单片机执行指令是在控制器的控制下进行的。首先从程序存储器中读出指令,送指令寄存器保存,然后送至指令译码器进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑产生各种定时信号和控制信号,再送到单片机的各个部件去进行相应的操作。这就是执行一条指令的全过程,执行程序就是不断重复这一过程。控制器主要包括程序计数器、程序地址寄存器、指令寄存器IR、指令译码器、条件转移逻辑电路及时序控制逻辑电路。2.1.2 存储器的结构MCS-51单片机存储器采用的是哈佛结构,即程序存储器空间和数据存储器空间截然分开,程序存储器和数据存储器各有自己的寻址方式,寻址空间和控制系统。这种结构对于单片机面向控制的实际应用极为方便,有利.在8051/8751弹片击中,不仅在片内集成了一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有极强的外存储器的扩展能力,寻址能力分别可达64KB,寻 址和操作简单方便.MCS-51的存储器空间可划分为如下几类:1. 程序存储器单片机系统之所以能够按照一定的次序进行工作,主要是程序存储器中存放了经调试正确的应用程序和表格之类的固定常数。程序实际上是一串二进制码,程序存储器可以分为片内和片外两部分。8031由于无内部存储器,所以只能外扩程序存储器来存放程序。MCS-51单片机复位后,程序存储器PC的内容为0000H,故系统必须从0000H单元开始取指令,执行程序.程序存储器中的0000H地址是系统程序的启动地址.一般在该单元存放一条绝对跳转指令,跳向用户设计的主程序的起始地址。2. 内部数据存储器MCS-51单片机内部有128个字节的随机存取存储器RAM,作为用户的数据寄存器,它能满足大多数控制型应用场合的需要,用作处理问题的数据缓冲器。MCS-51单片机的片内存储器的字节地址为00H-7FH.MCS-51单片机对其内部RAM的存储器有很丰富的操作指令,从而使得用户在设计程序时非常方便。地址为00H-1FH的32个单元是4组通用工作寄存器区,每个区含8个8位寄存器,编号为R7-R0。用户可以通过指令改变PSW中的RS1,RS0这二位来切换当前的工作寄存器区,这种功能给软件设计带来极大的方便,特别是在中断嵌套时,为实现工作寄存器现场内容保护提供了极大的方便。3. 特殊功能寄存器(SFR-Special Function Register)特殊功能寄存器反映了MCS-51单片机的状态,实际上是MCS-51单片机各功能部件的状态及控制寄存器.SFR综合的,实际的反应了整个单片机基本系统内部的工作状态及工作方式.SFR实质上是一些具有特殊功能的片内RAM单元,字节地址范围为80H-FFH.特殊功能寄存器的总数为21个,离散的分布在该区域中,其中有些SFR还可以进行位寻址.128个字节的SFR块中仅有21个字节是由定义的.对于尚未定义的字节地址单元,用户不能作寄存器使用,若访问没有定义的单元,则将得到一个不确定的随机数.2.1.3 并行I/O口MCS-51单片机共有4个双向的8位并行I/O端口(Port),分别记作P0-P3,共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。实际上P0-P3已被归入特殊功能寄存器之列。这四个口除了按字节寻址以外,还可以按位寻址。由于它们在结构上有一些差异,故各口的性质和功能有一些差异。P0口是双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。P1口是8位准双向I/O口,可驱动4个LS 型负载。P2口是8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。P3口是8位准双向I/O口,是双功能复用口,可驱动4个LS型TTL负载。P1口、P2口、P3口各I/O口线片内均有固定的上拉电阻,当这3个准双向I/O口做输入口使用时,要向该口先写“1”,另外准双向I/O口无高阻的“浮空”状态,故称为双向三态I/O 口。2.1.4 时钟电路与时序时钟电路用于产生MCS-51单片机工作时所必需的时钟信号。MCS-51单片机本身就是一个复杂的同步时序电路,为保证同步工作方式的实现,MCS-51单片机应在唯一的时钟信号控制下,严格地按时序执行进行工作,而时序所研究的是指令执行中各个信号的关系。在执行指令时,CPU首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定的操作。CPU发出的时序信号有两类,一类用于片内对各个功能部件的控制,这列信号很多。另一类用于片外存储器或I/O端口的控制,这部分时序对于分析、设计硬件接口电路至关重要。这也是单片机应用系统设计者普遍关心的问题。2.1.5 单片机的应用领域单片机应用领域可以归纳为以下几个方面。1智能仪表用单片机系统取代老式的测量、控制仪表,实现从模拟仪表向数字化、智能化仪表的转化,如各种温度仪表、压力仪表、流量仪表、电能计量仪表等。 2. 测控系统 用单片机取代原有的复杂的模拟数字电路,完成各种工业控制、数据采集系统等工作。 3电能变换 应用单片机设计变频调速控制电路。 4通信 用单片机开发通信模块、通信器材等。 5机电产品 应用单片机检测、控制传统的机械产品,使传统的机械产品结构简化,控制智能化,提高了机电产品的可靠性,增强了产品的功能。 6智能接口在数据传输中,用单片机实现外部设备与微机通信。2.2 LCD1602概述 LCD液晶显示器种类。LCD可以分为两种类型,一种是字符模式LCD,另外一种为图形模式LCD。这里我们介绍的LCD为字符型点矩阵式LCD模式组(Liquid Crystal Dislay Module,简称LCM ),或称为字符型LCD(如图2-1)。图2-1字符型液晶显示模块是一类专门用于显示字幕、数字、符号等点阵型液晶显示模块。在显示器件的电极图形设计上,它是由若干个5X7或5X11等点阵字符组成的。每一个点阵字符位都可以显示一个字符。点阵字符位之间有一个点距地间隔,起到字符间距和行距的作用。目前,常用的有16字X1行、16字X2行、20字X2行和40字X2行等的字符模组。这些LCM虽然显示的字数各不相同,但是都具有相同的输入/输出界面。这里我们以16字X2行字符型液晶显示模块为例,详细介绍字符液晶显示模块的应用技术。(1)LCD1602液晶引脚功能见表2-1字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样定义如表2-1所示: 表2-1 (2)LCD1602内置了DDRAM、CGROM和CGRAM。DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 表2-2也就是说想要在LCD1602屏幕的第一行第一列显示一个A字,就要向DDRAM的00H地址写入“A”字的代码就行了。但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下:DDRAM地址与显示位置的对应关系我们知道文本文件中每一个字符都是用一个字节的代码记录的。一个汉字是用两个字节的代码记录。在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。什么是字模?就代表了是在点阵屏幕上点亮和熄灭的信息数据。例如“A”字的字模: 01110 10001 10001 10001 11111 10001 10001上图左边的数据就是字模数据,右边就是将左边数据用“”代表0,用“”代表1。看出是个“A”字了吗?在文本文件中“A”字的代码是41H,PC收到41H的代码后就去字模文件中将代表A字的这一组数据送到显卡去点亮屏幕上相应的点,你就看到“A”这个字了。 刚才我说了想要在LCD1602屏幕的第一行第一列显示一个A字,就要向DDRAM的00H地址写入“A”字的代码41H就行了,可41H这一个字节的代码如何才能让LCD模块在屏幕的阵点上显示“A”字呢?同样,在LCD模块上也固化了字模存储器,这就是CGROM和CGRAM。HD44780内置了192个常用字符的字模,存于字符产生器CGROM(Character Generator ROM)中,另外还有8个允许用户自定义的字符产生RAM,称为CGRAM(Character Generator RAM)。下图说明了CGROM和CGRAM与字符的对应关系。 表2-3从上图可以看出,“A”字的对应上面高位代码为0100,对应左边低位代码为0001,合起来就是01000001,也就是41H。可见它的代码与我们PC中的字符代码是基本一致的。因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1A这样的方法。PC在编译时就把“A”先转为41H代码了。字符代码0x000x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。0x200x7F为标准的ASCII码,0xA00xFF为日文字符和希腊文字符,其余字符码(0x100x1F及0x800x9F)没有定义。2.3 DS18B20概述2.3.1 DS18B20封装图及实物图 图2-1 DS18B20引脚定义: (1)DQ为数字信号输入/输出端; (2)GND为电源地; (3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。2.3.2 DS18B20的主要特性 1.1、适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数 据线供电 1.2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 1.3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 1.4、DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内 1.5、温范围55125,在-10+85时精度为0.5 1.6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温 1.7、在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 1.8、测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 1.9、负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。2.3.3 应用范围 2.1 该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域 2.2 轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。 2.3 汽车空调、冰箱、冷柜、以及中低温干燥箱等。 2.3.4 DS18B20内部结构图2-22.3.5 DS1820使用中注意事项 DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: 6.1、较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此 ,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对 DS1820操作部分最好采用汇编语言实现。 6.2、在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个 DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时 要加以注意。 6.3、连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的 测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正 常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考 虑总线分布电容和阻抗匹配问题。 6.4、在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦 某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予 一定的重视。 测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地 2.4单片机最小系统与复位电路设计 .4.1 单片机最小系统 最小系统就是单片机在发挥具体测控功能时所必须的组成部分。如图2-1所示为最小系统方框图: 图2-1.4.复位电路 复位电路产生复位信号,复位信号送入RST后还要送至片内的施密特触发器,由片内复位电路在每个机器周器的S5P2时刻对触发器输出采样信号,然后由内部复位电路产生复位操作所要的信号。一般的复位电路可分为上电自动复位和按键复位,我们在此选用的是上电复位。上电自动复位原理:RST引脚是复位信号的输入端,只要高电平的复位信号持续两个机器周期以上的有效时间,就可以使单片机上电复位。上电自动复位是通过电容充电实现的,上电瞬间,RST端电位与Vcc相同,随充电电流的减少,RST的电位逐渐下降,直到复位信号无效。按键复位在此不在作过多的介绍,其原理和上电复位是相同的。但其采用的是脉冲复位电路和电平复位电路两种。 复位电路和单片机最小系统如图2-2所示: 图2-22.5 LCD显示电路图2-32.6 报警电路的设计2.6.1.灯报警GREENREDVCC330GREEG330REDP3.4P3.5 图2-4注:(1)正常的时候绿灯常亮,红灯常灭。一旦出现高温超过设定温度时绿灯熄灭,红灯闪烁。当温度降低到设定温度时,红灯熄灭绿灯正常亮。 (2)正常的时候绿灯常亮,红灯常灭。设定闹铃时间后,一旦时间过点时绿灯将闪烁不停直到复位键按下。2.6.2蜂鸣器报警(下图)图2-5注:当温度过高或者时间过点时蜂鸣器将会响个不停直到复位键按下后才停止响。2.7 键盘控制电路(下图)K1K2K3P3.0P3.1P3.2 图2-62.8多功能数字钟总体电路图(下图)图2-7第三章 软件设计3.1 系统软件设计总流程图N开始P3.2是否按下温度比较+时间比较+报警子程序显示子程序温度检测子程序初始化Y闹铃时间和时间设置和温度上下限设定子程序返 回 由于定时方式2定时较精确所以选择方式2;方式2定时最大时间为256us较小,所以需要另外用计数的方式达到定时1S的目的。本设计中用的为12MHZ的晶振,一个机器周期为1us开始及初始化程序如下:START: MOV 40H,#55H ;秒MOV 41H,#59H ;分MOV 42H,#23H ;时MOV 43H,#10H ;日MOV 44H,#08H ;月MOV 45H,#10H ;年低位MOV 46H,#20H ;年高位 MOV 47H,#02H ;星期位MOV 48H,#40 ;秒计数器1MOV 49H,#100 ;秒计数器2MOV 50H,#00H ;闹铃秒位MOV 51H,#00H ;闹铃分位MOV 52H,#00H ;闹铃时位MOV TMOD,#02H ;定时方式选择MOV TH0,#06HMOV TL0,#06HMOV SP,#50H LCALL CSH ;液晶初始化SETB P3.2 SETB EA ;开总中断SETB ET0 ;开定时器中断0SETB TR0;开始计时;=MAIN: LCALL DISPLAY ;调用显示程序 LCALL T_CONVERSION ;调用读温度子程序 LCALL T_FORMAT ;温度格式化子程序LCALL COMPARE ;温度比较子程序 JNB P3.2,OUT ;检测按键是否按下 AJMP MAINOUT:LCALL ADJUST ;调用调时子程序 SETB P3.2AJMP MAIN3.2定时器中断子程序由于定时方式2定时较精确所以选择方式2;方式2定时最大时间为256us较小,所以需要另外用计数的方式达到定时1S的目的。本设计中用的为12MHZ的晶振,一个机器周期为1us(256-X)=250所以TL0=6 TH0=6相应子程序如下:INTRUPT: PUSH ACC ;保护现场 PUSH PSW CLR ET0 ;关中断DJNZ 49H,RETOUT1MOV 49H,#100DJNZ 48H,RETOUT1 ;是否等于1秒MOV 48H,#40MOV A,40HADD A,#01HDA AMOV 40H,A ;数据反送;-CJNE A,#60H,RETOUT1 ;是否等于60秒MOV 40H,#00HMOV A,41HADD A,#01HDA AMOV 41H,A ;数据反送;-CJNE A,#60H,RETOUT1 ;是否等于60分MOV 41H,#00HMOV A,42HADD A,#01HDA AMOV 42H,A ;数据反送;- -CJNE A,#24H,RETOUT1 ;是否等于24小时MOV 42H,#00HMOV A,43HADD A,#01HDA AMOV 43H,A ; 数据反送;- MOV A,47H ADD A,#01H DA A CJNE A,#08H,TY ;星期是否等于“8” MOV A,#01HTY: MOV 47H,A MOV A,43HCJNE A,#32H,RETOUT1 ;是否等于“32”号MOV 43H,#01HMOV A,44HADD A,#01HDA AMOV 44H,A ;数据反送;-CJNE A,#12H,RETOUT1 ;是否等于12月MOV 44H,#01HMOV A,45HADD A,#01HDA AMOV 45H,A ;数据反送;-CJNE A,#99H,RETOUT1 ;年低位是否等于100MOV 45H,#00HMOV A,46HADD A,#01HDA AMOV 46H,A ;数据反送;-CJNE A,#99H,RETOUT1 ;年高位是否等于99MOV 46H,#00H;-RETOUT1:POP PSW ;恢复现场POP ACCSETB ET0 ;开始定时RETI ;中断返回 3.3 时钟设置及温度上下限设定流程图及其子程序时钟设置及温度上下限设定流程图如下:YNYN时钟调整是干扰退出退出设置闹铃时间及温度上下限P3.2还按下?延时875MSP3.2还按下?延时125MSP3.2按下图(1)时钟设置的关键在于对按键的处理比如按键防抖部分调整时间及温度上下限的流程图如下:键防抖P3.1按下P3.0按下P3.2按下下一位设置加一减一YYNNYN图(2)相应程序如下:ADJUST:LCALL DELAY125MS JB SETB1, $+2 ;这是一次干扰 AJMP AJT1 LJMP RETOUT2 AJT1: LCALL DELAY875MS ;再调用一次延时确定按键功能 JB SETB1,AJT2 ;是调整时间 LCALL ADJUST_RING_TEMPERATURE ;是调整闹铃时间及温度上下限AJT2: CLR ET0 ;关中断 CLR TR0 ;关计时由于调整年、月、日和闹铃的时、分、秒及温度上下限设定的程序比较类似所以下面就只介绍年位的调整。相应程序如下:;-年高位调节YEAR1:LCALL DISPLAY LCALL DELAY500MS MOV A,#10000001B ;闪烁位置的设置 LCALL WRITE_INSTRUCTION ;向液晶写入命令(后述) MOV A,#00100000B ;显示空白 LCALL WRITE_LCDDATA ;向液晶写入显示数据 MOV A,#00100000B ;显示空白 LCALL WRITE_LCDDATA ;向液晶写入显示数据 LCALL DELAY500MS ;空白显示时间 JNB SETB1, YEAR2 ;p3.2按下就跳到年低位设置INCRESS1:JB UP,DECRESS1 ;P3.1按下就加 MOV R5,46H LCALL JIAYEAR ;调用对年高位加的子程序 MOV 46H,R5DECRESS1:JB DOWN,YEAR1_1 ;p3.0按下就减 MOV R4,46H LCALL JIANYEAR ;调用对年高位减的子程序 MOV 46H,R4YEAR1_1:AJMP YEAR1 ;反复闪烁;- -年低位调节YEAR2:LCALL DISPLAY LCALL DELAY500ms MOV A,#10000011B ;闪烁位置的设置 LCALL WRITE_INSTRUCTION ;向液晶写入命令(后述) MOV A,#00100000B ;显示空白 LCALL WRITE_LCDDATA ;向液晶写入显示数据 MOV A,#00100000B ;显示空白 LCALL WRITE_LCDDATA LCALL DELAY500MS ;空白显示时间 JNB SETB1,MONTH ;p3.2按下后跳到调月位INCRESS2:JB UP,DECRESS2 ;P3.1按下就加 MOV R5,45H LCALL JIAYEAR ;调用对年低位加的子程序 MOV 45H,R5DECRESS2:JB DOWN,YEAR2_1 ;P3.0按下就加 MOV R4,45H LCALL JIANYEAR ;调用对年低位减的子程序 MOV 45H,R4YEAR2_1:AJMP YEAR2;-下面分别是年加、年减的子程序;= 年加一JIAYEAR:LCALL DELAY125MS ;调用延时防抖 JNB P3.1,$ ;等待键松开 MOV A,R5ADD A,#01H DA A ;十进制调整 CJNE A,#0A0H,JIAYEAR1 CLR AJIAYEAR1:MOV R5,A ;数据回送 RET;-年减一JIANYEAR:LCALL DELAY125MS ;调用延时防抖 JNB P3.0,$ ;等待键松开 MOV A,R4 CLR CY SUBB A,#01H MOV 50H,A CJNE A,#0FFH,$+1 JC JIANYEAR_1 MOV A,#99H AJMP JIANYEAR_2JIANYEAR_1: ANL A,#0FH ;数据处理 CJNE A,#0FH,$+1 JC JIANYEAR_3 MOV A,50H CLR CY SUBB A,#06H AJMP JIANYEAR_2JIANYEAR_3:MOV A,50HJIANYEAR_2:MOV R4,A ;数据回送RET3.4温度检测子程序这是关于单个DS18B20的测温程序,数据脚为P1.1,晶振是12MHZ,温度传感器18B20采用器件默认的12位转化,最大转化时间要750毫秒,用1602液晶屏显示,显示温度从-55.0到125.0度,分辨率0.1度,精度0.5度。相应程序如下:TEMPER_L EQU 29H ;用于保存读出温度的低字节TEMPER_H EQU 28H ;用于保存读出温度的高字节T_DF EQU 27H ;FORMAT后的小数部分(decimal fraction),半字节的温度小数(存在低四位)FLAG1 EQUT 50H ;用作是否检测到DS18B20的标志位A_BIT EQU 20H ;液晶十位数存放内存位置B_BIT EQU 21H ;液晶个位数存放内存位置C_BIT EQU 22H ;个位小数D_BIT EQU 23H ;十位小数S_BIT EQU 24H ;正负符号注:以上定义都在程序开头初始化的。T_CONVERSION: LCALL INIT_1820 ;DS18B20的温度转换子程序 JB FLAG1,T_C0 RET ;判断DS1820是否存在?若DS18B20不存在则返回T_C0: MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ; 发出温度转换命令 LCALLWRITE_1820 LCALL D1S ;这里等待AD转换结束 LCALL INIT_1820;准备读温度前先复位 MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_1820 LCALL READ_1820;将读出的温度数据保存到28H(TEMPER_H)和29H(TEMPER_L)处 RETINIT_1820:SETB P1.0 ;这是DS18B20复位初始化子程序 NOP CLR P1.0 MOV R1,#3TSR1: MOV R0,#107 DJNZ R0,$ DJNZ R1,TSR1 SETB P1.1 ;然后拉高数据线 NOP NOP NOP MOV R0,#25HTSR2: JNB P1.1,TSR3 ;等待DS18B20回应 DJNZ R0,TSR2 ;延时 LJMP TSR4TSR3: SETB FLAG1 ;置标志位,表示DS1820存在 LJMP TSR5TSR4: CLR FLAG1 ;清标志位,表示DS1820不存在 LJMP TSR7TSR5: MOV R0,#117TSR6: DJNZ R0,TSR6 ;时序要求延时一段时间TSR7: SETB P1.1 RET;-WRITE_1820:MOV R2,#8 ; 写DS18B20的子程序WR0: CLR P1.1 MOV R3,#6 DJNZ R3,$ RRC A MOV P1.1,C MOV R3,#20;#40 DJNZ R3,$ SETB P1.1 NOP NOP DJNZ R2,WR0 SETB P1.1 RET;-READ_1820:MOV R4,#2 ; 读DS18B20的程序 MOV R1,#TEMPER_L ; 低位存入29H(TEMPER_L)RE0: MOV R2,#8RE1: SETB P1.1 NOP NOP CLR P1.1 NOP NOP SETB P1.1 MOV R3,#5 DJNZ R3, $ MOV C,P1.1 MOV R3,#20 ;#40 DJNZ R3, $ RRC A DJNZ R2,RE1 MOV R1,A DEC R1 ; 高位存入28H(TEMPER_H) DJNZ R4,RE0 RET;整合读出的两字节温度T_FORMAT:MOVA,29HMOVT_DF,A ;温度低字节暂存,待作小数处理MOVA,#0FH ;取小数值 ANLA,T_DFMOVD_BIT,AMOVA,28H JNBACC.7,POSI CLRC ;为负,求其绝对值MOVA,29H SUBBA,#01H CPLAMOV T_DF,A ;温度低字节暂存 MOVA,#0FH ;取小数值ANLA,T_DFMOVD_BIT,AMOVA,28H SUBBA,#00H CPLA MOV28H,A AJMPNEGPROD: MOVA,T_DF MOV C,40H ;将28H中的最低位移入C RRC A MOV C,41H RRC A MOV C,42H RRC A MOV C,43H RRC A MOV 29H,A RETPOSI:MOVS_BIT,#20H ACALLPRODAJMPOUTNEG:MOVS_BIT,#2DH ACALLPRODOUT: RET3.5 LCD显示子程序相应程序如下:DISPLAY:LCALL DIV1 ;拆分数据 MOV DPTR,#TAB0MOV R0,#30HMOV A,#0C7H ;从第二行第八列开始显示LCALL WRITE_INSTRUCTION ;向LCD写入命令(以下同)DISPLAY1:MOV A,R0 ;显示时分秒MOVC A,A+DPTRLCALL WRITE_LCDDATA ;向LCD写入显示数据(以下同)INC R0CJNE R0,#36H,ABC1AJMP ABC4ABC1:CJNE R0,#32H,ABC2MOV A,#3AH ;显示“:”LCALL WRITE_LCDDATAAJMP DISPLAY1ABC2:CJNE R0,#34H,ABC3MOV A,#3AH ;显示“:”LCALL WRITE_LCDDATAABC3: AJMP DISPLAY1ABC4:MOV A,#89H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论