发布时间 : 星期二 文章基于51单片机的多路温度采集控制系统设计更新完毕开始阅读
MOV TMOD,#01H; T0定时、方式1、软启动
MOV TL0,#0B0H; T0赋初值
MOV TH0,#3CH;
MOV IE,#82H; 开放T0中断
SETB TR0; 启动T0 SJMP $;
定时/计数器0中断服务程序 ORG 0200H;
T0INT:DJNZ R1,NEXT; T0溢出10次,即1s进一次采样处理 LCALL ADCON; 调用温度采样及模数转换子程序 LCALL CALCU; 调用
- 25 -
温度计算子程序
LCALL DRVCON; 调用驱动控制子程序
LCALL METRICCON; 调用十进制转换子程序
LCALL DISP; 调用数码管显示子程序
MOV R1,#10; R1重赋值10
NEXT:MOV TL0,#0B0H; T0重装初值
MOV TH0,#3CH; RETI;
温度采样及模数转换子程序 ORG 0300H;
ADCON:MOV DPTR,#0F0FFH; 选通
- 26 -
ADC0809通道0 MOV A,#00H;
MOVX @DPTR,A; 启动A/D转换
HERE:JNB P3.3,HERE; 判断数据转换是否结束,没结束则等待 MOVX A,@DPTR; 读取转换后的数据
MOV 20H,A; 将从ADC0809中读取的当前温度下热敏电阻上的电压值存于20H单元 RET ; 温度计算子程序 ORG 0400H;
CALCU:MOV R2,#01H; R2为
- 27 -
数据表的索引值寄存器
MOV DPTR,#DATATAB; 温度数据表首地址送DPTR
NEXT1:MOV A,R2; 索引值送A
MOVC A,@A+DPTR; 查表取出某一温度的数字电压值
CJNE A,20H,K1; 与当前温度的数字电压值比较
DEC R2; 等于当前温度的数字电压值,则查表取出该温度值作为当前温度值 MOV A,R2;
MOVC A,@A+DPTR; LJMP K3;
K1:JNC K2; 大于当前温
- 28 -