利用AT24C02设计整点温度记录器.docx

上传人:小飞机 文档编号:5044160 上传时间:2023-05-31 格式:DOCX 页数:32 大小:374.41KB
返回 下载 相关 举报
利用AT24C02设计整点温度记录器.docx_第1页
第1页 / 共32页
利用AT24C02设计整点温度记录器.docx_第2页
第2页 / 共32页
利用AT24C02设计整点温度记录器.docx_第3页
第3页 / 共32页
利用AT24C02设计整点温度记录器.docx_第4页
第4页 / 共32页
利用AT24C02设计整点温度记录器.docx_第5页
第5页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《利用AT24C02设计整点温度记录器.docx》由会员分享,可在线阅读,更多相关《利用AT24C02设计整点温度记录器.docx(32页珍藏版)》请在三一办公上搜索。

1、目录第一章 设计任务及要求1第二章设计思路22.1设计思路2第三章芯片介绍33.1 AT89C5133.1.1管教描述43.2温度传感器DS18B2043.2.1 DS18B20 简介53.2.2 DS18B20的测温原理53.2.3温度转换计算方法举例63.2.4 DS18B20温度传感器与单片机的接口电路63.3 MAX721973.3.1功能特点73.3.2管脚描述83.4拓展存储AT24C0293.4.1功能特点93.4.2管脚配置93.4.3存储结构及寻址103.5 扩展时钟 DS12C887 103.5.1基本参数11第四章软件设计124.1利用MAX7219驱动LG3641AH数

2、码管124.2设计外扩DS18B20数字温度传感器144.3扩展存储器24第五章仿真29第六章心得体会错误!未定义书签。参考文献错误!未定义书签。第一章设计任务及要求一. 课程设计的目的1. 进一步熟悉和掌握单片机的结构及工作原理。2. 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。3. 通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。4. 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。5. 通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过 程,为今后从事相应开发打下基础。二. 课程设计的基本要求1. 认真认识设计的意义,掌握设计工

3、作程序,学会使用工具书和技术参考资料,并培养科学 的设计思想和良好的设计作风。2. 提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。3. 提高独立分析、解决问题的能力,逐步增强实际应用训练。4. 课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。5. 课程设计说明书封面格式要求见天津城市建设学院课程设计教学工作规范附表1。三. 课程设计具体要求a)要求每位同学独立完成设计任务。b)原理图设计1. 原理图设计要符合项目的工作原理,连线要正确。2. 图中所使用的元器件要合理选用,电阻、电容等器件的参数要正确标明。3. 原理图要完整,CPU、外围器件、外扩接口、

4、输入/输出装置要一应俱全。c)程序调计1. 根据要求,将总体功能分解成若干个子功能模块,每个功能模块完成一个特定的功能。2. 根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计出完整的程序流 程图。d)程序调试1. 编写相关程序,并进行仿真。2. 将程序下载到单片机,进行运行调试。e)设计说明书1. 原理图设计说明简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。2. 程序设计说明对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较 详细的描述。3. 画出工作原理图,程序流程图并给出相应的程序清单。四. 设计任务STC12C5

5、A60S2 (引脚排序及基本功能同AT89S51)作为主控芯片,设计利用AT24C02存 储整点温度信息。一是利用MAX7219驱动LG3641AH (或同型号共阴极)数码管,显示温度, 并可查询记录的整点温度信息;二是设计外扩DS18B20数字温度传感器;三是扩展存储器 AT24C02存储整点温度信息(存储年、月、日、时、温度,至少3天);四是扩展时钟DS12C887 提供整点时间信息。第二章设计思路2.1设计思路图2.1总体设计方框图温度计电路设计总体设计方框图如图2-1所示,控制器采用单片机AT89C51,温度传感器采 用DS18B20,利用MAX7219驱动LED数码管以串口传送数据实

6、现温度显示。扩展存储器 AT24C02存储整点温度信息,扩展时钟DS12C887提供整点时间信息。第三章芯片介绍3.1 AT89C51AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密 度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了 通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌 入式控制应用系统提供高性价比的解决方案。AT89C51具有如下特点

7、:40个引脚如图2-2, 4k Bytes Flash片内程序存储器,128 bytes 的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中 断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片 内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式 下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振 荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有 PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的

8、需求。P1. 0 匚 Pl. 1 匚 P1. 2 匚 P1. 3 匚 P1.4 匚 M0SI/P1. 5 匚 MISO/P1.6 匚 SCK/P1. 7 匚 RST匚 KKL/P3. 0 匚 TXD/P3.1 匚 IWT0/P3. 2 匚 IBT1/P3. 3 匚T0/P3. 4 匚 T1/P3. 5 匚 座任3. 6匚 RB/P3. 7 匚 XTAL2 匚 KTAL1 匚 PDIP CKD 匚1=402393334375363534333231302313281427152616251724102319222021 Vcc P0. 0 /ADO PO.1/AD1 PO. 2/AD2 PO.

9、3/AD3 PO.4/AD4 PO. 5/AD5 PO.6/AD6 PO. 7/AD7 EA/VPF ALE/POT PESN P2. 7/A15 P2.6/A14 P2. 5/A13 P2. 4/Al 2 P2. 3/AU P2. 2/A10 P2. 1/A9 P2. O/AS图3.1 AT89C51管脚图3.1.1管教描述表31脚端口引兼用功 能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数

10、据存储器读选通)3.2温度传感器DS18B20DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感 器,如图2-3。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过 简单的编程实现912位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和 12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线 接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而 无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转 换时间、传输

11、距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用 和更令人满意的效果,其引脚功能如图2-4。3.2.1 DS18B20 简介(1) 独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处 理器与DS18B20的双向通讯。(2) 在使用中不需要任何外围元件。(3) 可用数据线供电,电压范围:+3.0+5.5 V。(4) 测温范围:-55 +125 C。固有测温分辨率为0.5 C。(5) 通过编程可实现912位的数字读数方式。(6) 用户可自设定非易失性的报警上下限值。(7) 支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。(

12、8) 负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。龄=图3.2 DS18B20的引脚排列表3-2引脚描述序名 称引脚功能描述1GND地信号2DQ数据输入.,输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选的UD引脚。当工作于寄生电源时,此引脚必须接 地。3.2.2 DS18B20的测温原理低温度系数晶振的振荡频率受温度的影响很小1,用于产生固定频率的脉冲信号送给 减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计 数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡 器产

13、生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器 来决定,每次测量前,首先将-55 C所对应的基数分别置入减法计数器1和温度寄存器中, 减法计数器1和温度寄存器被预置在-55 C所对应的一个基数值。减法计数器1对低温度 系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值 将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生 的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加, 此时温度寄存器中的数值即为所测温度。图2中的斜率累加器用于补偿和修正测温过程中的 非线性,其输出用于修正减

14、法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至 温度寄存器值达到被测温度值,这就是DS18B20的测温原理。表3-3典型温度温度尸C二迪制去示1六进制表示00。011 11U10000(J7D01I1 %0000010101U100000时0H+戋一 062500000001100100000I9IH| W. 125。0000W10U001U0A21I+0. 50000000000000010OOOSH()0000000()00001000OOOOH-o. n1111111111110000FFFBHTO. 12511111 L 1 101011 1 10FF沌H-25.062511

15、11111U01。1111FE6FII-551 H11 10010010000FC90H3.2.3温度转换计算方法举例例如当DS18B20采集到+125C的实际温度后,输出为07D0H,则:实际温度=07D0HX0.0625=2000X0.0625=125Co例如当DS18B20采集到-55C的实际温度后,输出为FC90H,则应先将11位数据位取反 加1得370H (符号位不变,也不作为计算),则:实际温度=370HX0.0625=880X0.0625=55CDS18B20工作过程一般遵循以下协议:初始化ROM操作命令存储器操作命令 处理数据3.2.4 DS18B20温度传感器与单片机的接口电

16、路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的一脚接地, 2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3.3所示单片机端口接单 线总线,为保证有效的DS18B20始终周期内提供足够的电流,可以用一个MOSFET管来完成 对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开 启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此 发送接口必须是三态的。VCC图3.4 DS18B20与单片机接口3.3 MAX7219MAX7219/MAX7221是一种集成化的串行输入/输出

17、共阴极显示驱动器,它连接微处理器与 8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包 括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态 RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。MAX7221 与SPI、 QSPI以及MICROWIRE相兼容,同时它有限制回转电流的段驱动来减少 EMI (电磁干扰)。一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据 选择编码或者不编码。整个设备包含一个150p A的

18、低功耗关闭模式,模拟和数字亮度 控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测 模式。3.3.1功能特点1 10MHz连续串行口2独立的LED段控制3数字的译码与非译码选择4 150 p A的低功耗关闭模式5亮度的数字和模拟控制6高电压中断显示7共阴极LED显示驱动8限制回转电流的段驱动来减少 EMI (MAX7221 )9 SPI, QSPI, MICROWIRE 串行接口( MAX7221 )10 24脚的DIP和SO封装3.3.2管脚描述1 DIN串行数据输入端口。在时钟上升沿时数据被载入内部的16位寄存器。2,3,5-8,10,11 DIG 0 - D

19、IG7八个数据驱动线路置显示器共阴极为低电平。关闭时 7219此管脚输出高电平,7221呈现高阻抗。4,9 GND地线 (4脚和9脚必须同时接地)12 LOAD (MAX7219)载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。CS (MAX7221)片选端。该端为低电平时串行数据被载入移位寄存器。连续数据的后16位在cs端的上升沿时被锁定。13 CLK时钟序列输入端。最大速率为10MHz.在时钟的上升沿,数据移入内部移位寄存器。下降沿时,数据从DOUT端输出。对MAX7221来说,只有当cs端为低电平时时钟输入才有效。14-17,20-23 SEG 7段和小数点驱动,为显示器提供电

20、流。当一个段驱A- SEG G,动关闭时,7219的此端呈低电平,7221呈现高阻抗。DP18 SET通过一个电阻连接到VDD来提高段电流。19 V+正极电压输入,+5V24 DOUT串行数据输出端口,从DIN输入的数据在16.5个时钟周期后在此端有 效。当使用多个MAX7219/MAX7221时用此端方便扩展。BIN 1DIGO 1帅4巨DIGSOIG2 恒OIG3 |7OIG7 r&GNDDIG 5 匝DIG1 叵LOAD同叵3.4拓展存储AT24C021 OHLY楠沽9X7221图 3.5 MAX712920 SKC 逗I V+ 卫ISET 77 SEGG 正I沮E J? SEGF 回

21、5EGA 词CLKDIP/SO24 DOUT23 SEGD221 SEG DPAT24C02是一个2K位串行CMOS E2PROM , 内部含有256个8位字节,CATALYST公司 的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个16字节页写缓冲器。该 器件通过总线接口进行操作,有一个专门的写保护功能。3.4.1功能特点1. 数据线上的看门狗定时器2. 可编程复位门栏电平3. 高数据传送速率为400KHz和1C总线兼容4.2.7V至7V的工作电压5.低功耗CMOS工艺6.16字节页写缓冲区7. 片内防误擦除写保护8. 高低电平复位信号输出9.100万次擦写周期10. 数据保存可

22、达100年11. 商业级、工业级和汽车温度范围3.4.2管脚配置引脚图如图3.6所示。管脚封装如图3.7所示。VCCWP SCL SDAA0AGKDAT24C02图3.6引脚图表3-4图管脚描述管脚名称功能前、削、A2器件地址迭择SDA串行数据、地址SCL串行时钟WP写保护VCCh-1.8V6.0VT 作电压VSS地3.4.3存储结构及寻址AT24C02的存储容量为2Kb,内容分成32页,每页8B,共256B,操作时 有两种寻址方式:芯片寻址和片内子地址寻址。(1)芯片寻址:AT24C02的芯片地址为1010,其地址控制字格式为 1010A2A1A0R/W。其中A2,A1,A0可编程地址选择位

23、。A2,A1,A0引脚接 高、低电平后得到确定的三位编码,与 1010形成7位编码,即为该器件的 地址码。R/W为芯片读写控制位,该位为0,表示芯片进行写操作。(2)片内子地址寻址:芯片寻址可对内部 256B中的任一个进行读/写 操作,其寻址范围为00FF,共256个寻址单位。3.5扩展时钟DS12C887DS12C887实时时钟芯片功能丰富,可以用来直接代替IBM PC上的时钟日历芯片DS12887,同时,它的管脚也和 MC146818B、DS12887相兼容。由于DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题

24、;DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。在12小时制模式中,用AM和PM区分 上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示; DS12C887中带有128字节RAM,其中有11字节RAM用来存储时间信息,4字节RAM 用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM使用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽3.5.1基本参数功能: Clock,Calendar,Alarm 封装

25、/箱体:eDIP时间格式:HH: MM: SS,Binary 日期格式:DW: DM: M: Y,Binary RTC存储容量:113B电源电压(最大值):5.5V电源电压(最小值):4.5V最大工作温度:+70C最小工作温度:0C安装风格:ThroughHoleRTC 总线接口: Multiplexed第四章软件设计4.1利用MAX7219驱动LG3641AH数码管图4.1驱动数码管显示READ2_18B20:MOV R4,#2; 低位存在29 H,高位存在28HMOV R1,#29HRE00: MOV R2,#8RE01: CLR CSETB CNOPNOPCLR DQNOPNOPNOPS

26、ETB DQMOVR3,#7DJNZR3,$MOVC,DQMOVR3,#23DJNZR3,$RRCADJNZR2,RE01MOVR1,ADECR1DJNZR4,RE00RET;*读出的温度进行数据转换 *CHANGE:MOV A,29HMOV C,28H.0; 将28H中的最低位移入CRRC AMOV C,28H.1 RRC AMOV C,28H.2 RRC AMOV C,28H.3 RRC A MOV 29H,A ;setb p2.0 LCALL DISPLAY ; 调用数码管显示子程序 ;setb P2.0LJMP MAIN ;*display* DISPLAY:mov a,29H;将29

27、H中的十六进制数转换成10进制mov b,#10 ;10 进制 /10=10 进制 div ab mov b_bit,a ;十位在 amov a_bit,b ;个位在 bmov dptr,#TAB ;指定查表启始地址mov r0,#4 dpl1: mov r1,#250 ; 显示 1000 次 dplop: mov a,a_bit ;取个位数MOVC A,A+DPTR ;查个位数的7段代码mov p0,a ; 送出个位的7段代码 clr p2.5; 开个位显示 acall d1ms ; 显示 1ms setb p2.5mov a,b_bit ;取十位数MOVC A,A+DPTR ; 查十位数的

28、7段代码mov p0,a ; 送出十位的7段代码clr p2.4; 开十位显示acall dims ; 显示 1mssetb p2.4djnz r1,dplop ;100 次没完循环djnz r0,dpl1 ;4 个100次没完循环ret *1*1*+4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*4*1*1*& ;个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个D1MS: MOV R7,#80 ;1MS 延时(按 12MHZ 算) DJNZ R7,$ RETTAB:DB 0C0H,0F9H,0A4H,0B0

29、H,99H,92H,82H,0F8H,80H,90H4.2设计外扩DS18B20数字温度传感器图4.3温度传感器, 泗如1捌假品蛙踽对T 济g或11 B四刃暨位荷除r-!忻 11=-fl r- 湛度寄存55汽制度系数希科研数# R停止s U 1 图4.4测温原理开始;=二常数定义=TIMEL EQU 0E0H;20ms,定时器0时间常数TIMEH EQU 0B1HTEMPHEAD EQU 36H;=工作内存定义=BITST DATA 20HTIME1SOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPLDATA 26HTEMPHDATA 27HTEMPHCDATA

30、28HTEMPLCDATA 29H;=弓 |脚定义=TEMPDIN BIT P3.7CLK EQU P1.2DIN EQU P1.0LOAD EQU P1.1;= 中断向量区=ORG0000HLJMPSTARTORG 00BHLJMPT0IT;=系 统初始化=ORG 100HSTART: MOV SP,#60HCLSMEM: MOV R0,#20HMOV R1,#60HCLSMEM1: MOV R0,#00HINC R0DJNZ R1,CLSMEM1MOV TMOD,#00100001B;定时器 0 工作方式 1 (16BIT)MOV TH0,#TIMELMOV TL0,#TIMEH;20ms

31、SJMP INITERROR: NOPLJMP STARTNOPINIT: NOPSETB ET0SETB TR0SETB EAMOV PSW,#00HCLR TEMPONEOKLJMP MAIN;=定时器 0 中断服务程序=T0IT: PUSH PSWMOV PSW,#10HMOV TH0,#TIMEHMOV TL0,#TIMELINC R7CJNE R7,#32H,T0IT1MOV R7,#00HSETB TIME1SOK ;1s定时到标志T0IT1: POP PSWRETI;=主程序=MAIN: LCALL DISP1 ;调用显示子程序JNB TIME1SOK,MAINCLR TIME1

32、SOK ;测温每 1s 一次JNB TEMPONEOK,MAIN2 ;上电时先温度转换一次LCALL READTEMP1 ;读出温度值子程序LCALL CONVTEMP ;温度BCD码计算处理子程序LCALL DISPBCD ;显示区BCD码温度值刷新子程序LCALL WR_DATEMAIN2: LCALL READTEMP ;温度转换开始SETB TEMPONEOKLJMP MAIN;=子程序区=;RESET DS18B20JINITDS1820:SETB TEMPDINNOPNOPCLR TEMPDINMOV R6,#0A0H ;DELAY 480usDJNZ R6,$MOV R6,#0A

33、0HDJNZ R6,$SETB TEMPDINMOV R6,#32H ;DELAY 70usDJNZ R6,$MOV R6,#3CHLOOP1820: MOV C,TEMPDINJC INITDS1820OUTDJNZ R6,LOOP1820MOV R6,#064HDJNZ R6,$SJMP INITDS1820RETINITDS1820OUT: SETB TEMPDINRET;=读DS18B20的程序,从DS18B20中读出一个字节的数据=READDS1820: MOV R7,#08HSETB TEMPDINNOPNOPREADDS1820LOOP: CLR TEMPDINNOPNOPNOP

34、SETB TEMPDINMOV R6,#07H ;DELAY 15usDJNZ R6,$MOV C,TEMPDINMOV R6,#3CH ;DELAY 120usDJNZ R6,$RRC ASETB TEMPDINDJNZ R7,READDS1820LOOPMOV R6,#3CH ;DELAY 120 usDJNZ R6,$RET;=写DS18B20的程序,从DS18B20中写一个字节的数据=WRITEDS1820: MOV R7,#08HSETB TEMPDINNOPNOPWRITEDS1820LOP: CLR TEMPDINMOV R6,#07H ;DELAY 15usDJNZ R6,$R

35、RC AMOV TEMPDIN,CMOV R6,#34H ;DELAY 104usDJNZ R6,$SETB TEMPDINDJNZ R7,WRITEDS1820LOPRET= READ TEMP =READTEMP: LCALL INITDS1820MOV A,#0CCH;SKIP ROM;DELAY 104us;START CONVERSION;DELAY 104LCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV A,#44HLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$RETREADTEMP1: LCALL INITDS1820M

36、OV A,#0CCHLCALL WRITEDS1820 ;SKIP ROMMOV R6,#34H ;DELAY 104usDJNZ R6,$MOV A,#0BEHLCALL WRITEDS1820 ;SCRATCHPADMOV R6,#34H;DELAY 104usDJNZ R6,$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READDS1820MOV R0,AINC R0READTEMP21: LCALL CRC8CALDJNZ R5,READTEMP2MOV A,BJNZ READTEMPOUTMOV A,TEMPHEAD+0

37、MOV TEMPL,AMOV A,TEMPHEAD+1MOV TEMPH,AREADTEMPOUT: RET;=处理温度 BCD 码子程序=CONVTEMP: MOV A,TEMPHANL A,#80HJZ TEMPC1CLR CMOV A,TEMPLCPL AADD A,#01HMOV TEMPL,AMOV A,TEMPH ;-CPL AADDC A,#00HMOV TEMPH,A ;TEMPHC HI=# 号位MOV TEMPHC,#0BHSJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;+TEMPC11: MOV A,TEMPHCSWAPAMOVTEMPHC,AM

38、OVA,TEMPLANLA,#0FH;乘 0.0625MOVDPTR,#TEMPDOTTABMOVCA,A+DPTRMOVTEMPLC,A ;TEMPLC LOW=/J、数部分 BCDMOVA,TEMPL;整数部分ANL A,#0F0HSWAP AMOV TEMPL,AMOV A,TEMPHANL A,#0FHSWAP AORL A,TEMPLLCALL HEX2BCD1MOVTEMPL,AANLA,#0F0HSWAPAORLA,TEMPHC ;TEMPHC LOW=十位数 BCDMOVTEMPHC,AMOVA,TEMPLANL A,#0FHSWAP A;TEMPLC 皿=个位数 BCDORL

39、 A,TEMPLCMOV TEMPLC,AMOV A,R7JZ TEMPC12ANL A,#0FHSWAP AMOV R7,AMOV A,TEMPHC ;TEMPLC HI=W位数 BCDANL A,#0FHORL A,R7MOV TEMPHC,ATEMPC12: RET;=小数部分码表=TEMPDOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H,05H,05H,06HDB 06H,07H,08H,08H,09H;=显示区 BCD 码温度值刷新子程序=DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,AMOV A,TEMPLCSWA

40、P AANL A,#0FHMOV 71H,AMOV A,TEMPHCANL A,#0FHMOV 72H,AMOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,AMOV A,TEMPHCANL A,#0F0HCJNE A,#010H,DISPBCD0SJMP DISPBCD2DISPBCD0: MOV A,TEMPHCANL A,#0FHJNZ DISPBCD2 ;十位数是 0MOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,#0AH ;符号位不显示MOV 72H,A ;十位数显示符号DISPBCD2: RET;=显示子程序=;显示数据在70旷73H单元

41、内,用4位LED共阳数码管显示,P1 口输出段码数据,;P3 口做扫描控制,每个LED数码管亮1ms时间再逐位循环。DISP1: MOV R1,#70H ;指向显示数据首址MOV R5,#0FEH ;扫描控制字初值PLAY: MOV P0,#0FFHMOV A,R5 ;扫描字放入AMOV P3,A ;从 P3 口输出MOV A,R1 ;取显示数据到AMOV DPTR,#TAB ;取段码表地址MOVC A,A+DPTR ;查显示数据对应段码MOV P1,A ;段码放入P0 口MOV A,R5JB ACC.1,LOOP5 ;小数点处理CLR P1.7LOOP5: LCALL DL1MS ;显示 1msINC R1 ;指向下一地址MOV A,R5 ;扫描控制字放入AJNB ACC.3,ENDOUT ;ACC.3=0 时一次显示结束RL A ;A中数据循环左移MOV R5,A ;放回 R5 内AJMP PLAY ;跳回 PLAY 循环ENDOUT: MOV P1,#0FFH ;一次显示结束,P0 口复位MOV P3,#0FFH ;P3 口复位RET ;子程序返回TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号