《毕业设计十字路口交通信号灯的控制系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计十字路口交通信号灯的控制系统设计.doc(36页珍藏版)》请在三一办公上搜索。
1、摘要本文综述了数字温度计的设计与制作过程,介绍了设计制作一个完整的数字温度计需要做的准备与制作过程,通过一段时间的努力制作,从刚开始透彻理解题目要求及所要设计的产品的各项性能功能,然后觉得利用单片机作为控制内核,其次主要的就是温度传感器DS18B20,及其他重要部分电路的配合下设计出一套完整的硬件系统,及它的灵魂软件系统。得到了一种基于单片机控制的数字温度计,本温度计属于数字温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机AT89C51,测温传感器使用D
2、S18B20,用液晶显示器(LCD)以串口传送数据,实现温度显示,能准确达到以上要求。 关键词:单片机,液晶显示器,温度计, DS18B20,AT89C51目 录引言3一、温度传感器DS18B2041、温度传感器DS18B20的简介41.1 DS18B20的引脚及功能41.2 DS18B20的内部结构51.3 DS18B20的测温原理71.4 DS18B20温度传感器与单片机的接口电路91.5 DS18B20控制方法91.6 DS18B20的复位时序101.7 DS18B20的读时序101.8 DS18B20的写时序11二、液晶显示器121、 液晶显示器LCD的介绍121.1 LCD1602液
3、晶显示模块内部结构121.2 LCD1602的控制命令131.3 接口电路及编程方法15三、单片机AT89C51151、AT89C51的特点及特性151.1 89C51引脚的介绍151.2 89C51的存储结构161.3 时钟电路的产生方式171.4主要功能特性172、程序设计182.1流程图182.2读出温度子程序192.3温度转换命令子程序192.4 计算温度子程序192.5 程序清单20四、总体设计方案301、电路原理及所需器件301.1电路原理图301.2 PCB图311.3 电路原理311.4电路原材料清单321.5使用工具及仪表清单331.6调试及性能分析33总结34致谢35参考文
4、献36引言数字温度计采用进口芯片组装精度高、高稳定性,误差0.5%, 内电源、微功耗、不锈钢外壳,防护坚固,美观精致。 数字温度计采用进口高精度、低温漂、超低功耗集成电路和宽温型液晶显示器,内置高能量电池连续工作5年无需敷设供电电缆,是一种精度高、稳定性好、适用性极强的新型现场温度显示仪。是传统现场指针双金属温度计的理想替代产品,广泛应用于各类工矿企业,大专院校,科研院所。 温度计是我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道
5、的温度到底是多少度。 数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED,LCD或者电脑屏幕等显示出来给人观察。这样就完成了数字温度计的基本测温功能。 数字温度计根据使用的传感器的不同,AD转换电路,及
6、处理单元的不同,它的精度,稳定性,测温范围等都有区别,这就要根据实际情况选择符合规格的数字温度计。 一、温度传感器DS18B201、温度传感器DS18B20的简介在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。测温范围为-55-125 ,最高分辨率可达0.0625。DS18B20采
7、用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。1.1 DS18B20的引脚及功能TO92封装的DS18B20的引脚排列见1.1.1图,其引脚功能描述见表1。(底视图) DS18B20表1DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围
8、为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。1.2 DS18B20的内部结构DS18B20采用脚PR35封装或脚SOIC封装,其内部结构框图如图1.1.2(a)所示。C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd I/O图1.1.2(a) DS18B20内部结构64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码
9、,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图1.1.2(b)所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,
10、用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。温度LSB温度MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC图1.1.2(b) DS18B20字节定义由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读
11、出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。表2 DS18B20温度转换时间表R1R0分辨率/位温度最大转换时间/ms00993.75011187.5101375111750DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节内容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报
12、警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。1.3 DS18B20的测温原理DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所
13、对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表3一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+85000
14、0 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
15、系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。 图1.1.3 DS18B20与单片机的接口电路1.4 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为1
16、0us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。1.5 DS18B20控制方法DS18B20有六条控制命令,指令约定代码操作说明 CCH:
17、跳过扫描温度传感芯片序列号44H: 启动DS18B20进行温度转换 BEH :读度温度值1.6 DS18B20的复位时序 (1) 先将数据线置高电平“1”。(2) 延时(该时间要求的不是很严格,但是尽可能的短一点)(3) 数据线拉到低电平“0”。(4) 延时750微秒(该时间的时间范围可以从480到960微秒)。(5) 数据线拉到高电平“1”。(6) 延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。(7) 若CPU读到了数据线上的低电平“0”后
18、,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。(8) 将数据线再次拉高到高电平“1”后结束。1.7 DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。(1)将数据线拉高“1”。(2)延时2微秒。(3)将数据线拉低“0”。(4)延时15微秒。(5)将数据线拉高“1”。(6)延时15微秒。(7)读数据线的状态得到1个状态位,并进行数据处理。(8)延时
19、30微秒。1.8 DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。(1) 数据线先置低电平“0”。(2) 延时确定的时间为15微秒。(3) 按从低位到高位的顺序发送字节(一次只发送一位)。(4) 延时时间为45微秒。(5) 将数据线拉到高电平。(6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。(7) 最后将数
20、据线拉高。二、液晶显示器1、 液晶显示器LCD的介绍液晶显示器(LCD)是一种利用液晶在电场作用下,其光学性质发生变化一显示图形的显示器,具有显示质量高、体积小、重量轻、功耗小等优点。它既可以显示字符,也可以显示点阵图形,在仪器仪表及办公设备中应用广泛。通常,液晶显示器是由液晶显示器件、连接器件、集成电路、PCB、背光源、结构件组合在一起而构成一个整体从显示形式上可以分为数显式。点阵字符式及点阵图形3种。,因此也称为液晶显示模块。液晶显示器模块1.1 LCD1602液晶显示模块内部结构字符型液晶显示模块是一类专门用于显示字母、数字、字符等的点阵式LCD。它是由若干个517或75等点阵字符位组成
21、,每个点阵字符位都可以显示一个字符。LCD1602是一种162字符的液晶显示模块,广泛用于数字式便携仪表中,其外形如图所示。1.2 LCD1602的控制命令LCD1602内部采用一片型号为HD44780的集成电路作为控制器。它具有驱动和控制两个功能。LCD1602内部包含了80B的显示缓冲区DDRAM及用户自定义的字符发生存储器CGROM,可以用于显示数字。英文字母。常用符号和日文假名等,每个字符都有一个固定的代码,如数字的代码为30H-39H,大写字母A的代码为41H等。将这些字符代码输入DDRAM中,就可以实现显示。还可以通过对HD44780编程实现字符的移动。闪烁等功能。显示缓冲区的地址
22、分配按162格式一一对应。如果是第一行第一列,则地址为00H;若为第二行第三列,则地址为42H。000102030405060708090A0B0C0D0E0F27404142434445464748494A4B4C4D4E4F67控制器内部设有一个数据地址指针,可用它访问内部缓冲区的所有地址,数据指针的设置必须在缓冲区地址基础那个加80H。例如:要访问左上方第一行第一列的数据,则指针为80H+00H=80H.LCD1602内部控制器有以下四种工作状态。1)当RS=0、R/W=1、E=1时,可从控制器中读出当前的工作状态;2)当RS=0、R/W=0、E=上升沿时,可向控制器写入控制命令;3)当
23、RS=1、R/W=1、E=1时,可从控制器度数据;4)当RS=、.R/W=0、E=上升沿时,可向控制器写数据;LCD1602内部的控制命令共有11条。1.清屏。RSR/WED7D6D5D4D3D2D1D0功能00100000001清屏该命令用于清除显示器,即将DDRAM中的内容全部写入“空格”的ASC2码“20H”。此时,光标回到显示器的左上方,同时将地址计数器AC的值设置为0。2.光标归位。RSR/WED7D6D5D4D3D2D1D0功能0010000001光标归位该命令用于将光标送回到显示器的左上方,同时,地址计数器AC值设置为“0”,DDRAM中的内容不变。3.模式设定。RSR/WED7
24、D6D5D4D3D2D1D0功能001000001I/DS模式设定用于设定每写入一个字节数据后,光标的移动方向和字符是否移动。若I/D=0、S=0,则光标左移一格且地址计数器AC减1;若I/D=1、S=0,则光标右移一格且地址计数器AC加1;若I/D=0、S=1,则显示器字符全部右移一格,但光标不动;若I/D=1、S=1,则显示器字符全部左移一格,但光标不动。4.显示器开关控制。RSR/WED7D6D5D4D3D2D1D0功能00100001DCB开关控制当D=1时,显示器显示;D=0时,显示器不显示。当C=1时,光标显示;C=0时,光标不显示。当B=1时,光标闪烁;B=0时,光标不闪烁。5.
25、功能设定。RSR/WED7D6D5D4D3D2D1D0功能00100111000功能设定表示设定当前显示器的显示方式为162,字符点阵57,8位数据接口。1.3 接口电路及编程方法对LCD1602编程分两步完成。首先进行初始化,即设置液晶控制模块的工作方式,如显示模式控制。光标位置控制。起始字符地址等;然后再将待显示的数据传送出去。三、单片机AT89C511、AT89C51的特点及特性1.1 89C51引脚的介绍89C51共40个引脚,大致可分为四类:1)电源引脚。Vcc:电源端,+5V。Vss:接地端,(GND)。2)时钟电路引脚。XTAL1:外接晶振输入端。XTAL2:外接晶振输出端。3)
26、I/O引脚。P0.0-P0.7/AD0-AD7:一组8位漏极开路型双向I/O口,也是地址/数据总线复用口。作输入/输出口用时,必须外接上拉电阻,它可驱动8个TTL门电路。P1.0-P1.7:一组内部带上拉电阻的8位准双向I/O口,可驱动4个TTL门电路。P2.0-P2.7/A8-A15:一组内部带上拉电阻的8位准双向I/O口,可驱动4个TTL门电路。当访问片外存储器时,用作高8位地址总线。P3.0-P3.7:一组内部带上拉电阻的8位准双向I/O口。P3端口每个引脚具有第二功能。4)控制线引脚。RESET/VPD:复位断/备用电源输入端。当RESET断出现持续两个以上机器周期以上的高电平时,可实
27、现复位操作。VPD端可外接备用电源,以便在Vcc掉电时间向RAM供电。非EA/Vpp:片外程序存储器选择端/Flash存储器变成电源。ALE/非PROG:地址锁存允许端/编程脉冲输入端。非PSEN:读片外程序存储器选通信号输出端。1.2 89C51的存储结构1)4KB Flash的程序存储器,用于存放编好的程序,表格和常数,地址为0000H-0FFFH,由于单片机的程序存储器采用片内,片外统一编址,所以它们的区分取决于引脚非EA的状态,如果非EA=1,表示0000H-0FFFH在片内程序存储器中,反之,则为片外。89C51的程序存储器中有五个特殊地址单元,用于中断程序的入口地址。 0003H:
28、外部中断0入口地址 000BH:定时/计数器0中断入口地址 0013H:外部中断1入口地址 001BH:定时/计数器1中断入口地址 0023H:串行口中断入口地址 2)数据存储器由128 B的随机存取数据存储器(RAM)和21个特殊功能寄存器(SFR)组成,其中片内数据存储区包含工作寄存器区、位寻址区、用户RAM区,用于存放运算中间结果,数据暂存和缓冲,待调试的程序。组号RS1 RS0R0H-R7H00 000H-07H10 108H-0FH21 010H-17H31 118H-1FH表5 单片机工作寄存器地址表 此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲
29、模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、PQFP和PLCC等三种封装形式,以适应不同产品的需求。1.3 时钟电路的产生方式根据89C51单片机产生时钟方式的不同,可将时钟电路分为内部时钟电路和外部时钟电路方式两种。在XTAL1和XTAL2引脚之间外接石英晶体振荡器及两个谐振电容,就可以构成内部时钟电路。内部时钟电路的石英晶体振荡器频率一般选择在4-12MHz之间,谐振电容采用20-30pF的瓷片电容。1.4主要功能特性 兼容MCS-51指令系统 4KB可反
30、复擦写(1000次) FlashROM 32根双向可按位寻址的I/O口线 4.5-5.5v工作电压 2个16位可编程定时/计数器 时钟频率0-33MHz 1个全双工UART串行中断口线 128x8bit内部RAM 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 1个片内时钟振荡器 软件设置空闲和省电功能 灵活的isp字节和分页编程 双数据寄存器指针2、程序设计Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子
31、程序等。开始初始化示化获取温度值与温度上下限比较报警转换并显示YES2.1流程图图3.2.1 主程序流程图 图3.2.2读温度流程图 2.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图4.2.2示发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束 图3.2.3 温度转换流程图2.3温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图4.2.3所示。2.4
32、 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4.2.4所示。 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY图3.2.4计算温度流程图 图3.2.5显示数据刷新流程图2.5 程序清单TIMEL EQU 0E0H TIMEN EQU 0B1H TEMPHEADEQU 36H BITST DATA 20H TIME1SOKBIT BITST.1 TEMPONEOK B
33、IT BITST.2 TEMPL DATA 26H TEMPH DATA 27H TEMPHC DATA 28H TEMPLC DATA 29H TEMPDIN DIT P3.7 ORG 0000H LJMP START ORG 00BH LJMP T0IT ORG 100HSTART: MOV SP , #60HCLSMEM: MOV R0 , #20H MOV R1 , #60HCLSMEM1: MOV R0 , #00H INC R0 DJNZ R1 , CLSMEM1 MOV TMOD , #00100001B MOV TH0 , #TIMEL MOV TL0 , #TIMEH SJM
34、P INITERROR: NOP LJMP START NOPINIT: NOP SETB ET0 SETB TR0 SETB EA MOV PSW , #00H CLR TEMPONEOK LJMP MAINT0IT: PUSH PSW MOV PSW , #10H MOV TH0 , #TIM EH MOV TL0,#TIMEL INC R7 CJNZR7, #32H,T0IT1 MOV R7, #00H SETBTIMEISOKT0IT1: POP PSW RETIMAIN: LCALL DISP1 JNB TINE1SOK, MAIN CLR TIME1SOK JNB TEMPONEO
35、K ,MAIN2 LCALL READTEMP1 LCALL CONVTEMP LCALL DISPBCD LCALL DISP1MAIN: LCALL READTEMP SETB TEMPONEOK LJMP MAININITDS1820: SETB TEMPDIN NOP NOP CLR TEMPDIN MOV R6 , #0A0H DJNZ R6 ,$ MOV R6 ,#0A0H DJNZR6 ,$ SETBTEMPIND MOV R6 ,#32H DJNZ R6 ,$ MOV R6,#3CHLOOP1820: MOV C , TEMPDIN JC INITDS1820OUT DJNZR
36、6, LOOP1820 MOV R6 , #064H DJNZR6 ,$ SJMPTNITDS1820 RETINITDS1820OUT: SETB TEMPDIN RET READDS1820: MOV R7 ,#08H SETB TEMPDIN NOP NOPREADDS1820LOOP: CLR TEMPDIN NOP NOP NOP SETB TEMPIND MOV R6 ,#07H DJNZ R6 ,$MOV C , TEMPDIN MOV R6 , #3CH DJNZ R6 , $ RRC A SETB TEMPDIN DJNZ R7 ,READDS1820LOOP MOV R6
37、, #3CH DJNZ R6 , $ RETWRITEDS1820: MOV R7 ,#08H SETB TEMPDIN NOP NOPWRITEDS1820LOP: CLR TEMPDIN MOV R6 ,#07H DJNZ R6, $ RRC A MOV TEMPDIN DJNZ R7 , WRITEDS1820LOP RETREADTEMP: LCALL INITDS1820 MOV A ,#0CCH LCALL WRITEDS1820 MOV R6 ,# 34H DJNZ R6 ,$ MOV A , #44H LCALL WRITEDS1820 MOV R6 ,# 34H DJNZ R6 ,$ RETREADTEMP1: LCALL INITDS1820 MOV A , #0CCH LCALL WRITEDS1820 MOV R6 , #34H DJNZ R6 , $ MOV A , #0BEH LCALL WRITEDS1820 MOV R6 , #34H DJNZR6 , $ MOV R5 , #09H MOV B , #00HREADTEMP2: LCALL READDS1820 MOV R0 , A INC R0READTEMP21: LCALL CRC8CAL DJNZ R5 , READTEM