第一范文网 - 专业文章范例文档资料分享平台

单片机温度采集系统

来源:用户分享 时间:2025/5/21 9:41:44 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

位错,亦无停止位错的接收才算正确的。1个字符接收完毕后,接收设备又继续检测传输线,监视“0”信号的到来和下一个字符传输的开始,如此反复。

3.5.3流程图

串口通信过程采用中断方式,SBUF是串行口数据缓冲器,是一个可以直接寻址的专用寄存器。在物理上,一个作为发送缓冲器,一个作为接收缓冲器。两个缓冲器共用一个口地址99H,由读写信号区分,CPU写SBUF时为发送缓冲器,读SBUF时为接收缓冲器。单片机响应串口中断申请,根据控制字执行相应的读写操作。串口中断过程如图3-6所示:

串口中断 关中断

控制字转移 读SBUF

调读函数 调写函数 控制“读” 控制“写”

结 束 开中断 图3-6 串口中断流程图

3.6 系统源程序

=======================各存储器地址定义=================================

ADPORT EQU 0FEFBH;AD转换口地址

- 33 -

LEDBUF EQU 30H; 将送显示的八段码存储器 TEMP EQU 40H; 置缓冲区首地址 LOWLIMIT EQU 30; 最低设定温度 HIGHLIMIT EQU 70; 最高设定温度 LOWTEMP EQU 0; 温度下限 HIGHTEMP EQU 100;温度上限

SETTEMP EQU 50H;设定温度值存储器 CURTEMP EQU 51H;当前实际温度存储器 ADRAM EQU 60H;AD转换后数字量存储器 DIN BIT 0B0H;串行通信口 CLK BIT 0BIH;触发源

=======================程序开始部分====================================

ORG 0000H;程序首地址 LJMP START ;跳到主程序

LEDLAB: DB 3FH,06H,5BH,4FH,66H,6DH;要显示温度值对应的八段码表 DB 7DH,07H,7FH,6FH

===========================显示子程序================================== DISPLAYLED:

PUSH ACC;保护现场 PUSH DPH PUSH DPL

MOV R0,#LEDBUF;

MOV R1,#TEMP;送缓冲区首址

MOV R2,#2;显示位数计数

DL0:

MOV DPTR,#LEDLAB;指向字形段码表首址 MOV A, @R0;取要显示的数据 MOVC A,@A+DPTR;查表取字形段码 MOV @R1,A

MOV P1,A;由P1口送LED显示 DP1:

JNB TI,DL1;等待发送完一帧 CLR TI;清发送中断标志

DEC R0;指向下一个显示单元 DJNZ R2,DL0;2位未显示重复 POP DPL;恢复现场 POP DPH POP ACC

======================延时子程序======================================= DELAY: MOV R6,#100 DELAYLOOP:

MOV R5,#248

- 34 -

DJNZ R5,$

DJNZ R6,DELAYLOOP RET

===================温度计算与处理子程序================================= READTEMP:

ACALL READAD

MOV ADRAM,A;存由READAD子程序得来的A/D转换数字量 MOV B,#(HIGHTEMP-LOWTEMP);执行相关计算 MUL AB

MOV A,B;取高八位相当于除以256 ADD A,#LOWTEMP

MOV CURTEMP,A;保存求得的温度 RET DISPLAYRESULT:

CALL READTEMP

MOV A,ADRAM;A/D转换的数字量送A PDC:

MOV A,CURTEMP;取当前温度 LJMP GOON GOON:

MOV B,#10;转换为相应的十进制的八段码的偏移量 DIV AB

MOV LEDBUF+1,A MOV A,B

MOV LEDBUF+2,A RET

=====================读A/D口子程序==================================== READAD:

MOV DPTR,#ADPORT CLR A

MOVX @DPTR,A; 使P0为高阻抗,并使ADC0804开始转换,

WR=0

WAIT: JB P3.2,WAIT; 检测ADC0804的INTR=0?,是则转换完

MOVX A,@DPTR; 将转换好的数据载入累加器 CPL A ; 将累加器的值反相 MOV P1,A ; 输出至P1显示 CALL DELAY ; 延时50毫秒 RET

==========================主程序======================================

- 35 -

START:

MOV SETTEMP,#50;设定恒温值为50℃ MLOOP1: ACALL DISPLAYRESULT ACALL DISPLAYLED ACALL READTEMP

MOV A,CURTEMP;以下是加热程序 JB ACC.7,LEO CLR C

MOV B,SETTEMP DEC B DEC B SUBB A,B JNC GN2 LEO:

SETB P3.4 SJMP GN4 GN2:

MOV A,CURTEMP SETB C

MOV B,SETTEMP INC B INC B SUBB A,B JC GN4 CLR P3.4 SJMP GN4 GN4:

ACALL DELAY1 LJMP MLOOP END

结论

本设计中,是以温度采集和过程控制,配合远距离串口通讯为总目标,采用AT89C51单片机最小应用系统为总控制中心,辅助设计有温度采样电路、A/D转

- 36 -

搜索更多关于: 单片机温度采集系统 的文档
单片机温度采集系统.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5q7x11q7w39gaib4888i_9.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top