基于AT89C51的DS18B20数字温度计汇编源程序与LED显示

版权申诉
0 下载量 83 浏览量 更新于2024-06-20 收藏 375KB PDF 举报
本文档是一份关于数字温度计设计的汇编源程序,主要应用于DS18B20温度传感器和AT89C51单片机平台。该设计利用了12MHz晶振,结合DS1302实时时钟芯片来显示精确到0.1℃的温度读数以及日期和时间。以下是关键知识点的详细解释: 1. **硬件组成**: - **温度传感器**:DS18B20是一种1-Wire数字温度传感器,能测量-55℃至+125℃的温度,并通过4位LED共阳显示器以0.1℃为单位显示温度值。 - **单片机**:选择的是AT89C51,它是一款广泛应用的8位微控制器,具备较强的处理能力和基本的I/O接口。 - **时钟芯片**:DS1302负责提供精确的时间信息,包括年、月、日、时、分、秒的显示。 2. **程序结构**: - **常数定义**:程序中定义了多个常数值,如定时器0的时间常数、秒、分钟、小时等单位,以及用于存储温度数据的变量地址。 - **工作内存**:定义了工作区,包括用于存放温度低四位和高四位的存储单元,以及定时器0的标志位。 - **引脚定义**:给出了温度传感器的输入(DIN)、中断(ALARM),以及与单片机连接的其他引脚,如复位(RST)和数据通信/时钟信号(CLK和IO)。 3. **程序流程**: - **程序开始**:在0000H地址处跳转到START标号,设置堆栈指针和清空内存。 - **系统初始化**:在0100H地址处,初始化单片机堆栈,设置TMOD寄存器为定时器0的工作模式,准备进行温度读取和时间显示。 4. **定时器和中断**: - **定时器0**:通过设置定时器0的时间常数,用于实现温度计的定时测量和刷新显示。 - **中断向量区**:程序的中断向量表位于000BH地址,分别定义了T0中断服务程序(T0IT)的入口地址,用于处理定时器0溢出事件。 5. **温度读取与显示**: - 单片机通过P3.7口连接DS18B20的DIN,通过串行通信获取温度数据。 - 温度值会被转换并存储在特定的内存地址中,然后根据高低位分别显示在LED上。 总结,这份汇编源程序提供了如何用AT89C51单片机配合DS18B20温度传感器以及DS1302时钟芯片设计一个可实时显示温度和时间的数字温度计的具体实现步骤。对于学习汇编编程和理解嵌入式系统设计的学生或工程师来说,这是一份非常实用的参考材料。