单片机STC89C52温度传感器.docx

上传人:1513****116 文档编号:96079687 上传时间:2023-09-07 格式:DOCX 页数:23 大小:526.45KB
返回 下载 相关 举报
单片机STC89C52温度传感器.docx_第1页
第1页 / 共23页
单片机STC89C52温度传感器.docx_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《单片机STC89C52温度传感器.docx》由会员分享,可在线阅读,更多相关《单片机STC89C52温度传感器.docx(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、单片机数字温度计摘要:本设计单片机承受 AT89C52 芯片,数字温度传感器承受美国 DALASS 公司的 1Wire 器件 DS18B20,即单总线器件 DS18B20,与单片机组成一个测温系统,当系统上电时,温度传感器就会读出当前环境的温度,并在三位LED 数模显示管上显示出当前的温度,该测温仪的测温范围为 0110,按此要求设计硬件和软件以实现这一功能。关键词:单片机 STC89C52 温度传感器; 温度 测量电子线路 单片机 汇编语言 温度1 引言:单片机又称单片微操纵器,它不是完成某一个规律功能的芯片,而是把一个运算机系统 集成到一个芯片上。归纳的讲:一块芯片就成了一台运算机。它的体

2、积小、质量轻、价钱廉价、为学习、应用和开发供给了便利条件。同时,学习利用单片机是了解运算机原理与构造 的最正确选择。目前单片机渗透到咱们生活的各个领域,几乎很难找到哪个领域没有单片机 的踪迹。单片机在检测和操纵系统中取得普遍的应用, 温度那么是系统常需要测量、操纵和维持的一个量。本设计所介绍的数字温度计与传统的温度计相较,具有读数便利,测温范围广, 测温准确,其输出温度承受数字显示,该设计操纵器利用单片机STC89C52,测温传感器利 用 DS18B20,用 4 位共阳极 LED 数码管以串口传送数据,实现温度显示,能准确到达以上要求。2 整体设计方案:设计思路:(1) 本设计是测温电路,能够

3、利用热敏电阻之类的器件利用其感温效应,在将随被 测温度转变的电压或电流搜集过来,进展A/D 转换后,就能够够用单片机进展数据的处置, 在显示电路上,就能够够将被测温度显示出来,这种设计需要用到 A/D 转换电路,感温电路比较麻烦。(2) 从中考虑到用温度传感器,在单片机电路设计中,大多都是利用传感器,因此这是超级简洁想到的,因此能够承受一只温度传感器DS18B20,此传感器,能够很简洁直接读取被测温度值,进展转换,就能够够知足设计要求。单片机复位LED显主示控制器时钟振荡温度传感器从以上两种方案,很简洁看出,承受方案2,电路比较简洁,软件设计也比较简洁,故承受了方案2。图 1整体设计方框图设计

4、方框图依照设计的所需要求分析单片机的工作原理,可得出来温度计电路设计整体设计方框图如图 1 所示,操纵器承受单片机STC89S52,温度传感器承受DS18B20,用 4 位 LED 数码管以串口传送数据实现温度显示。设计主元件电气性能:1. STC89C52的要紧性能:l 与MCS-51单片机产品兼容l 8KFlash字节闪速存储器l 1000次擦写周期l 全静态操作:0Hz88Hzl 32个可编程I/O口线l 三个16位按时器/计数器l 八个中断源l 全双工UART串行通道l 低功耗空闲和掉电模式l 掉电后中断可唤醒l 看门狗按时器l 双数据指针VCC : 电源GND: 地P0 口:P0口是

5、一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL规律电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口: 是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 规律电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,现在能够作为输入口利用。作为输入利历时,被外部拉低的引脚由于内部电阻的原因,将输出电流IIL。另外,和别离作按时器/计数器2的

6、外部计数输入T2和时器/计数器2的触发输入T2EX,具体如下表1所示。在flash编程和校验时,P1口接收低8位地址字节。P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 规律电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,现在能够作为输入口利用。作为输入利历时,被外部拉低的引脚由于内部电阻的原因,将输出电流IIL。在访问外 部程序存储器或用16位地址读取外部数据存储器例如执行MOVX DPTR时,P2 口送出高八位地址。在这种应用中,P2 口利用很强的内部上拉发送1。在利用8位地址如MOVX RI访问外部数据存储器时,P2口输出P2锁存

7、器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些操纵信号。表1 P1口功能表 2 P3 口功能P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 规律电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,现在能够作为输入口利用。作为输入利历时,被外部拉低的引脚由于内部电阻的原因,将输出电流IIL。P3口亦作为AT89S52特别功能其次功能利用,如上表2所示。在flash编程和校验时,P3口也接收一些操纵信号。RST: 复位输入。晶振工作时,RST脚持续2 个机械周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个

8、晶振周期的高电平。特别寄放器AUXR(地址8EH)上的DISRTO 位能够使此功能无效。DISRTO默许状态下,复位高电平有效。 ALE/PROG:地址锁存操纵信号ALE是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚PROG也用作编程输入脉冲。在一样情形下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部按时器或时钟利用。但是,特地强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。假设是需要,通过将地址为8EH的SFR的第0位置 “1”,ALE操作将无效。这一名置 “1”,ALE 仅在执行MOVX 或MOVC指令时有效。不然,ALE 将被微弱拉高。那

9、个ALE 使能标志位地址为8EH的SFR的第0位的设置对微操纵器处于外部执行模式下无效。PSEN:外部程序存储器选通信号PSEN是外部程序存储器选通信号。当STC89C52从外部程序存储器执行外部代码时,PSEN在每一个机械周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器操纵信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必需接GND。为了执行内部程序指令,EA应当接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。存储器构造M

10、CS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都能够64K寻址。程序存储器:假设是EA引脚接地,程序读取只从外部存储器开头。关于89S52,假设是EA 接VCC,程序读写先从内部存储器地址为0000H1FFFH开头,接着从外部寻址,寻址地址为: 2023HFFFFH。数据存储器:STC89C52 有256 字节片内数据存储器。高128 字节与特别功能寄放重视叠。也确实是说高128字节与特别功能寄放器有一样的地址,而物理上是分开的。当一条指令访 问高于7FH 的地址时,寻址方式打算CPU 访问高128 字节RAM 仍是特别功能寄放器空间。直接寻址方式访问特别功能寄放器S

11、FR晶振特性如图2所示,STC89C52 单片机有一个用于组成内部振荡器的反相放大器,XTAL1 和XTAL2别离是放大器的输入、输出端。石英晶体和陶瓷谐振器都能够用来一路组成自激振荡器按时器0 和按时器1图2 自激振荡器原理图在STC89C52 中,按时器0 和按时器1 的操作与89C51 一样。按时器2按时器2是一个16位按时/计数器,它既能够做按时器,又能够做大事计数器。其工作 方式由特别寄放器T2CON中的C/T2位选择如表2所示。按时器2有三种工作模式:捕获 方式、自动重载向下或向上计数和波特率发生器。工作模式由T2CON中的相关位选择。 按时器2 有2 个8位寄放器:TH2和TL2

12、。在按时工作方式中,每一个机械周期,TL2 寄放器都会加1。由于一个机械周期由12 个晶振周期组成,因此,计数频率确实是晶振频率的1/12。中断STC89C52 有6个中断源:两个外部中断INT0 和INT1,三个按时中断按时器0、1、2和一个串行中断每一个中断源都能够通过置位或去除特别寄放器IE 中的相关中断许诺操纵位别离使得中断源有效或无效。IE还包括一个中断许诺总操纵位EA,它能一次制止 全部中断。按时器2能够被寄放器T2CON中的TF2和EXF2的或规律触发。程序进入中断效劳后,这些标志位都能够由硬件清0。事实上,中断效劳程序必需判定是不是是TF2 或EXF2激活中断,标志位也必需由软

13、件清0。下表2为中断许诺操纵寄放器功能。表 3 中断许诺操纵寄放器2. DS18B20 的要紧性能本次设计利用到了由dallas 半导体公司生产的ds18b20 型单线智能温度传感器,属于一代适配微处置器的智能温度传感器,可普遍用于工业、民用、军事等领域的温度测量及操纵仪器、测控系统和大型设备中。它具有体积小,接口便利,因此设计中承受了此元器件。DS1820 数字温度计供给 9 位温度读数,指示器件的温度特性:独特的单线接口只需1 个接口引脚即可通信多点multidrop 力量使散布式温度检测应用得以简化不需要外部元件可用数据线供电不需备份电源测量范围从-55 至+125 增量值为 等效的华氏

14、温度范围是-67 F 至257 F增量值为 F以9 位数字值方式读出温度在1 秒典型值内把温度变换为数字用户可概念的非易失性的温度告警设置告警搜寻命令识别和寻址温度在编定的极限之外的器件温度告警情形应用范围包括恒温操纵工业系统消费类产品温度计或任何热敏系统存储器与掌握规律64温度传感器位ROMC和单线接口高温触发器 TH高速缓存低温触发器 TL配置存放器Vdd8 位 CRC 发生器图3的方框图表示DS1820 的要紧部件DS1820 有三个要紧的数据部件1 64 位激光lasered ROM;2 温度灵敏元件和3 非易失性温度告警触发器TH 和TL图 3DS18B20 内部构造64 位 ROM

15、 的构造开头位是产品类型的编号,接着是每一个器件的惟一的序号,共有 48 位,最终位是前面 56 位的CRC 查验码,这也是多个 DS18B20 能够承受一线进展通信的原因。温度报警触发器和,可通过软件写入户报警上下限。在单线接口情形下在ROM 操作未定成立之前不能利用存贮器和操纵操作主机必需第一供给五种ROM 操作命令之一1 Read ROM(读ROM) 2 Match ROM(符合ROM),3)Search ROM(搜寻ROM),4)Skip ROM(跳过ROM),或5 Alarm Search(告警搜寻) 这些命令对每一器件的64 位激光ROM 部份进展操作假设是在单线上有很多器件那么能

16、够选择出一个特定的器件并给总线上的主机指示存在多少器件及其类型在成功地执行了ROM 操作序列以后可利用存贮器和操纵操作然后主性能够供给六种存贮器和操纵操作命令之一.一个操纵操作命令指示DS1820 完成温度测量该测量的结果将放入DS1820 的高速暂存便笺式存贮器Scratchpad memory 通过发出读暂存存储器内容的存储器操作命令能够读出此结果每一温度告警触发器TH 和TL 组成一个字节的EEPROM 假设是不对DS1820 施加告警搜寻命令这些寄放器可用作通用用户存储器利用存储器操作命令能够写TH 和TL 对这些寄放器的读访问通过便笺存储器全部数据均以最低有效位在前的方式被读写.DS

17、18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式供给,以0.0625/LSB形式表达,其中S为符号位。表4 DS18B2023位温度数据表 4 是 12 位转化后取得的 12 位数据,存储在 18B20 的两个 8 比特的RAM 中,二进制中的前面 5 位是符号位,假设是测得的温度大于0,这 5 位为 0,只要将测到的数值乘于即可取得实际温度;假设是温度小于 0,这 5 位为 1,测到的数值需要取反加 1 再乘于即可取得实际温度。如下表为 18B20 的温度/数据关系表 5 DS18B20 的温度/数据关系每一 DS1820 包括一个唯一的 6

18、4 位长的ROM 编码开绐的 8 位是单线产品系列编码DS1820 编码是 10h 接着的 48 位是唯一的系列号最终的 8 位是开头 56 位CRC 见表 6, 64 位 ROM 和 ROM 操作操纵部份许诺DS1820 作为一个单线器件工作并遵循单线总线系统一节中所详述的单线协议直到ROM 操作协议被知足DS1820 操纵部份的功能是不行访问的此协议在 ROM 操作协议流程图中表达单线总线主机必需第一操作五种ROM 操作命令之一 1 Read ROM(读 ROM),2)Match ROM(匹配ROM),3)Search ROM(搜寻ROM),4)Skip ROM(跳过 ROM),或5)Al

19、arm Search 告警搜寻在成功地执行了ROM 操作序列以后DS1820 特定的功能即可访问然后总线上主机可供给六个存贮器和操纵功能命令之一.表 6 64 位激光ROM暂存存储器包括了 8 个持续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,其次个字节是温度的高八位。第三个和第四个字节是 TH、TL 的易失性拷贝, 第五个字节是构造寄放器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷。第 六、七、八个字节用于内部计算。第九个字节是冗余查验字节。表7 DS18B20暂存寄放器散布该字节列位的意义如下:TM R1 R0 1 1 1 1 1区分温度最大转换时R1R0率间

20、009 位0110 位1011 位375ms1112 位750ms表 8 区分率设置表低五位始终都是 1 ,TM 是测试模式位,用于设置 DS18B20 在工作模式仍是在测试模式。在 DS18B20 出厂时该位被设置为 0,用户不要去改动。R1 和 R0 用来设置区分率,如上表 8 所示:DS18B20 出厂时被设置为 12 位由表 9 可见,DS18B20 温度转换的时刻比较长,而且区分率越高,所需要的温度数据转换时刻越长。因此,在实际应用中要将区分率和转换时刻衡量考虑。高速暂存的第 、字节保存未用,表现为全规律。第字节读出前面全部字节的CRC 码,可用来查验数据,从而保证通信数据的正确性。

21、当DS18B20 接收到温度转换命令后,开头启动转换。转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片性能够通过单线接口读出该数据,读数据时低位在先,高位在后, 数据格式以LSB 形式表示。当符号位时,表示测得的温度值为正值,能够直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码. ,再计算十进制数值。.009011010111112R1 R0 区分率/位 温度最大转向时间/ms93.75187.5375.750.表 9 DS18B20 温度转换时刻表DS18B20 完成温度转换后,就把测得的温度值与RAM 中的 T

22、H、T字节内容作比较。假设TH 或 TTL,那么将该器件内的报警标志位置位,并对主机发出的报警搜寻命令作出响应。因此,可用多只DS18B20 同时测量温度并进展报警搜寻。在64 位 ROM 的最高有效字节中存储有循环冗余查验码CRC。主机 ROM 的前 56 位来计算 CRC 值,并和存入 DS18B20的 CRC 值作比较,以判定主机收到的ROM 数据是不是正确。ROM 操作命令一旦总线主机检测到附属器件的存在它即能够发出器件ROM 操作命令之一全部ROM 操作命令均为8 位长这些命令列表如下参见图6 的流程图Read ROM(读ROM) 33h此命令许诺总线主机读DS1820 的8 位产品

23、系列编码唯一的48 位序列号和8 位的CRC此命令只能在总线上仅有一个DS1820 的情形下能够利用假设是总线上存在多于一个的附属器件那么当全部从片企图同时发送时将发生数据冲突的现象漏极开路会产生线与的结果Match ROM( 符合 ROM) 55h符合ROM 命令后继以64 位的ROM 数据序列许诺总线主机对多点总线上特定的DS1820寻址只有与64 位ROM 序列严格相符的DS1820 才能对后继的存贮器操作命令作出响应全部与64位ROM 序列不符的从片将等待复位脉冲此命令在总线上有单个或多个器件的情形下都可利用Skip ROM( 跳过ROM ) CCh在单点总线系统中此命令通过许诺总线主

24、机不供给64 位ROM 编码而访问存储器操作来节约时刻假设是在总线上存在多于一个的附属器件而且在Skip ROM 命令以后发出读命令那么由于多个从片同时发送数据会在总线上发生数据冲突漏极开路下拉会产生线与的成效earch ROM( 搜寻ROM) F0h当系统开头工作时总线主机可能不明白单线总线上的器件个数或不明白其64 位ROM 编码搜寻ROM 命令许诺总线主机利用一种消去elimination 处置来识别总线上全部从片的64 位表10DS1820 命令集Alarm Search(告警搜寻) ECh此命令的流程与搜寻ROM 命令一样可是仅在最近一次温度测量显现告警的情形下DS1820才对此命令

25、作出响应告警的条件概念为温度高于TH 或低于TL 只要DS1820 一上电告警条件DS1820就维持在设置状态直到另一次温度测量显示出非告警值或转变TH 或TL 的设置使得测量值再一次位于许诺的范围之内贮存在EEPROM 内的触发器值用于告警表10为DS1820 命令集:3 系统整体硬件电路系统整体硬件电路包括,传感器数据搜集电路,温度显示电路,单片机主板电路等,通过利用电路CAD 工具pretel DXP 可画出如图 4 所示的电路图。图4 电路原理图由于这次制作的电路为自制的PCB板,再通过电路CAD工具Protel DXP的电路板PCB绘出电路所需PCB幅员制作出自制的PCB板.3 设计

26、原理分析: 时钟电路的设计:通过设置T2CON见表2中的TCLK或RCLK可选择按时器2 作为波特率发生器。假设是按时器2作为发送或接收波特率发生器,按时器1可用作它用,发送和接收的波特率能够不同。设 置RCLK 和或TCLK 能够使按时器2 工作于波特率产生模式。波特率产生工作模式与自动重载模式相像,因此,TH2 的翻转使得按时器2 寄放重视载被软件预置16位值的RCAP2H和RCAP2L中的值。模式1和模式3的波特率由按时器2溢出速度打算,按时器可设 置成按时器,也可为计数器。在多数应用情形下,一样配置成按时方式CP/T2=0。按时器2 用于按时器操作与波特率发生器有所不同,它在每一机械周

27、期1/12晶振周期都会增加;但是,作为波特率发生器,它在每一机械状态1/2晶振周期都会增加。波特率计算公式如下:模式1和模式3的波特率晶振频率/3265536 - (RCAP2H,RCAP2L)操纵电路的设计:初始化调用显示子程序N1S 到?YY初次上电N读出温度值温度计算处理显示数据刷发温度转换开头命令发 DS18B20 复位命令发跳过 ROM 命令发读取温度命令读取操作,CRC 校验YN9 字节完?YNCRC 校验正?移入温度暂存器完毕主程序的要紧功能是负责温度的实时显示、读出并处置 DS18B20 的测量的当前温度值, 温度测量每 1s 进展一次。如此能够在一秒之内测量一次被测温度,其程

28、序流程见图 5 所示。图5 主程序流程图图 6 读温度流程图发DS18B20 复位命发跳过 ROM 命发温度转换开头命完毕读出温度子程序的要紧功能是读出RAM 中的 9 字节,在读出时需进展 CRC 校验,校验有错时不进展温度数据的改写。图 7 温度转换流程图计算温度子程序计算温度子程序将 RAM 中读取值进展 BCD 码的转换运算,并进展温度值正负的判定, 其程序流程图如图 8 所示。开头N温度零下?Y温度值取补码置“”标志置“+”标志计算小数位温度BCD 值计算整数位温度BCD 值完毕温度数据移入显示存放器十位数 0?YN百位数 0?Y十位数显示符号百位数不显示百位数显示数据不显示符号完毕

29、N图 8计算温度流程图图 9显示数据刷流程图所编写的程序如下:;*;说明:程序预概念;*LED7A_CTRLEQU;数码管第一位掌握引脚(0 为有效,1 为无效LED7B_CTRLEQU;数码管其次位掌握引脚LED7C_CTRLEQU;数码管第三位掌握引脚LED7D_CTRLEQU;数码管第四位掌握引脚LED7_STATUSEQUP0;数码管状态引脚(0 为有效,1 为无效LED7A_DATAEQU70H;数码管第一位显示值(千位)LED7B_DATAEQU71H;数码管其次位显示值(百位)LED7C_DATAEQU72H;数码管第三位显示值(十位)LED7D_DATAEQU73H;数码管第四

30、位显示值(个位)LED7_NUMEQU74H;数码管动态扫描值(值为从 0 到 3DQEQUTEMLEQU76H;温度芯片数据端;温度数据低位TEMHEQU77H;温度数据高位;*;说明:程序开头;* ORG0000H;程序首地址 PC=0000HJMPSTART;程序跳转到START PC=0030HORG000BH;T0 中断程序入口JMPLED7SCAN;跳到数码管动态扫描处理程序START:ORG0030H;程序开头MOVDPTR, #LED7TAB;数码管显示码表地址送DPTR MOVLED7_NUM, #0;数码管动态扫描值至 0,扫描第一位;T0 中断设定MOVTMOD, #00

31、000001B; 使 用 T0:GATE=0,C/T=0( 定 时 ),M1M0=01(工作方式 1)MOVTH0, #0ECH;中断时间为 5 毫秒MOVTL0, #078HSETBET0;允许T0 中断SETBTR0;使 T0 工作SETBEA;总中断开启L1:L2:MOVLED7A_DATA, #16;数码管第一位初始值MOVLED7B_DATA, #16;数码管其次位初始值MOVLED7C_DATA, #0;数码管第三位初始值MOVLED7D_DATA, #0;数码管第四位初始值CLR TR0SETBDQCALLINIT;初始化MOVA,#0CCH;跳过 ROM 匹配CALLWRITE

32、MOVA,#44H;发出温度转换命令CALLWRITESETBTR0MOVR7, #50H;延时 750ms 转换时间CALLDELAYCLRTR0CALLINIT;预备读温度前先复位MOVA,#0CCH;跳过 ROM 匹配CALLWRITEMOVA,#0BEH;发出读温度命令CALLWRITECALLREAD;读出温度MOVTEML,ACALLREADMOVTEMH,ASETBTR0MOVA,TEML;温度转换ANLA,#0F0HSWAPAMOVTEML,AMOVA,TEMHANLA,#0FHSWAPAORLA,TEMLMOVR3, ACLRACLRCADDA,#01HDAADJNZR3,

33、L3MOVTEML,AL3:ANLA,#0FH;显示数据MOVLED7D_DATA,AMOV SWAPANLAA,TEMLA,#0FHMOVLED7C_DATA,AMOVR7,#0FFH;延时CALLDELAYMOVR7,#0FFH;延时CALLDELAYMOVR7,#0FFH;延时CALLDELAYMOVR7,#0FFH;延时CALLDELAYMOVR7,#0FFH;延时CALLDELAYMOVR7,#0FFH;延时CALLDELAYJMPL2;循环;*;函数:INIT;说明: 初始化子程序;* INIT:SETB DQ NOP CLR DQMOV R7,#34;延时 510msCALL D

34、ELAY SETB DQMOV R7,#04;延时 60msCALL DELAYMOV R7,#28;延时 420msCALL DELAYSETB DQ;然后拉高数据线BACK:RET;*;函数:WRITE;说明: DS18B20 写字节操作;* WRITE:WR1:CLR CMOV R2,#8;一共 8 位数据CLR DQ MOV R7,#1CALL DELAYRRC A MOV DQ,C MOV R7,#1CALL DELAYSETB DQ NOPDJNZ R2,WR1 SETB DQ RET;*;函数:READ;说明: DS18B20 读字节操作;* READ:MOV R2,#8;数据一

35、共有 8 位WIN01:CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQMOV R7,#01CALL DELAYMOV C,DQMOV R7,#03 CALL DELAYRRC ADJNZ R2,WIN01 RET;*;函数:LEDSCAN;说明: 数码管动态扫描处置程序;* LED7SCAN:PUSHACC;ACC 入栈PUSHPSW;PSW 入栈MOVA, LED7_NUM;数码管动态扫描值送ACJNEA, #0, LED7SCAN_1;假设数码管动态扫描值为 0,则处理数码管的第一位,否则跳转到LED7SCAN_1SETBLED7D_CTR

36、L;设置数码管第四位无效MOVA, LED7A_DATA;将千位值送AMOVCA, A+DPTR;将显示码送ACLRLED7A_CTRL;设置数码管第一位有效JMPLED7SCAN_4;跳转到 LED7SCAN_4LED7SCAN_1:CJNEA, #1, LED7SCAN_2;假设数码管动态扫描值为 1,则处理数码管的其次位,否则跳转到LED7SCAN_2SETBLED7A_CTRL;设置数码管第一位无效MOVA, LED7B_DATA;将百位值送AMOVCA, A+DPTR;将显示码送ACLRLED7B_CTRL;设置数码管其次位有效JMPLED7SCAN_4;跳转到 LED7SCAN_4

37、LED7SCAN_2:CJNEA, #2, LED7SCAN_3;假设数码管动态扫描值为 2,则处理数码管的第三位,否则跳转到LED7SCAN_3SETBLED7B_CTRL;设置数码管其次位无效MOVA, LED7C_DATA;将十位值送AMOVCA, A+DPTR;将显示码送ACLRLED7C_CTRL;设置数码管第三位有效JMPLED7SCAN_4;跳转到 LED7SCAN_4LED7SCAN_3:SETBLED7C_CTRL;设置数码管第三位无效MOVA, LED7D_DATA;将个位值送AMOVCA, A+DPTR;将显示码送ACLRLED7D_CTRL;设置数码管第四位有效MOVLED7_NUM, #0;数码管动态扫描值置 0JMPLED7SCAN_5;跳转到 LED7SCAN_5LED7SCAN_4:INCLED7_NUM;数码管动态扫描值加 1 LED7SCAN_5:MOVLED7_STATUS, A;显示码送数码管状态引脚MOVTH0, #0ECH;重设置T0 定时值MOVTL0, #078HPOPPSW;PSW 出栈POPACC;ACC 出栈RETI;中断返回;*;函数:DELAY;说明:程序延时;* DELAY:DELAY_1:MOVR6, #04HDJNZR6, $DJNZR7, DELAYRET;*;说明:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com