最新温度巡检仪源程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*内存分配定义*/
TIME_CONT EQU 33H /*定时时间*/
TIME_COUNT EQU 34H /*100ms中断次数*/
KEY_CODE EQU 35H /*按键代码*/
KEY_VAL EQU 36H /*按键数值*/
CHAN_NUM EQU 37H /*当前采样通道号*/
SAMP_NUM EQU 38H /*采样次数*/
CHAN_NUM1 EQU 39H /*当前显示通道号*/
TEMP1 EQU 40H /*1通道温度*/
TEMP2 EQU 41H /*2通道温度*/
TEMP3 EQU 42H /*3通道温度*/
TEMP4 EQU 43H /*4通道温度*/
TEMP5 EQU 44H /*5通道温度*/
TEMP6 EQU 45H /*6通道温度*/
TEMP7 EQU 46H /*7通道温度*/
TEMP8 EQU 47H /*8通道温度*/
SAMP_MAX EQU 48H /*当前通道10次采样最大值*/
SAMP_MIN EQU 49H /*当前通道10次采样最小值*/
SAMP_SUMH EQU 4AH /*当前通道10次采样累加值高位*/
SAMP_SUML EQU 4BH /*当前通道10次采样累加值低位*/
SAMP_AVG EQU 4CH /*当前通道去掉最大值和最小值后8次采样平均值*/ SAMP_VAL EQU 4DH /*当前通道采样值*/
TEMP_VAL EQU 4EH /*当前通道温度值*/
DIS_BUF1 EQU 50H /*显示缓冲区1*/
DIS_BUF2 EQU 51H /*显示缓冲区2*/
DIS_BUF3 EQU 52H /*显示缓冲区3*/
DIS_BUF4 EQU 53H /*显示缓冲区4*/
DIS_BUF5 EQU 54H /*显示缓冲区5*/
DIS_BUF6 EQU 55H /*显示缓冲区6*/
DIS_NUM EQU 57H /*显示通道号寄存器*/
DIS_CONH EQU 58H /*CH451操作命令高位*/
DIS_CONL EQU 59H /*CH451操作命令低位*/
ST_FLAG BIT 20H.0 /*系统启动标志*/
XJ_FLAG BIT 20H.1 /*巡回检测标志*/
KEY_FLAG BIT 20H.2 /*有键按下标志*/
T_1S BIT 20H.3 /*1秒时间到*/
SAMP_1 BIT 20H.4
SAMP_END10 BIT 20H.5 /*10次采样结束标志*/
SAMP_NO1 BIT 20H.6 /*每通道采样开始标志*/
DD_FLAG BIT 20H.7 /*定点检测标志*/
CHAN_ADD0 EQU 0FF80H /*温度检测通道首地址*/
AD_ADD0 EQU 0FE00H /*AD通道首地址*/
AD_END BIT P3.2 /*AD转换结束标志*/
DIS_DOUT BIT P3.3 /*按键输入*/
DIS_LOAD BIT P1.0 /*命令输入有效*/
DIS_DIN BIT P1.1 /*显示命令输出*/
DIS_DCLK BIT P1.2 /*显示时钟输出*/
ORG 0000H
START: LJMP MAIN
ORG 0003H /*AD转换结束中断入口*/
NOP
NOP
NOP
NOP
LJMP ERR
ORG 000BH /*定时器0中断入口*/
LJMP TIME0
NOP
NOP
LJMP ERR
ORG 0013H /*键盘中断入口*/
LJMP KEY_IN
NOP
NOP
LJMP ERR
ORG 0040H
MAIN: MOV SP,#60H
MOV TMOD,#21H /*定时器0为方式1工作,定时器2为方式2工作*/ MOV TH0,#3CH /*定时器0定时值为500ms*/
MOV TL0,#0AFH
MOV TH1,#0FDH /*通信波特率为4800b/s*/
MOV TL1,#0FDH
MOV SCON,#01000000B /*串口方式为工作方式1*/
MOV A,30H
CJNE A,#0AAH,NRAM
MOV A,31H
CJNE A,#55H,NRAM /*判断是否上电复位*/
SJMP DISP_INIT
NRAM: MOV R0, #7FH /*RAM低128B清零*/
NRAM1: MOV @R0,#00H
DJNZ R0,NRAM1
MOV 30H,#0AAH /*置上电标志*/
MOV 31H,#55H
NOP
NOP
DISP_INIT:NOP
MOV 20H,#00H /*内部状态位清零*/
MOV DIS_BUF1,#0111001B
MOV DIS_BUF2,#1110011B
MOV DIS_BUF3,#0111110B
MOV DIS_BUF4,#1000000B
MOV DIS_BUF5,#1101101B
MOV DIS_BUF6,#0000110B /*cpu-51写入显示缓冲区*/
SETB DIS_DIN /*CH451串口方式设为四线制*/
NOP
NOP
CLR DIS_DIN
NOP
NOP
SETB DIS_DIN
MOV TIME_CONT,#1H
MOV SAMP_NUM,#00H
MOV CHAN_NUM,#00H
MOV CHAN_NUM1,#01H
MOV TIME_COUNT,TIME_CONT/*定时时间设为100毫秒*/
SETB IT1 /*键盘中断设为边沿触发方式*/
SETB PX1 /*键盘中断设为高优先级*/
SETB ET0 /*允许定时器0中断*/
SETB EA /*开中断*/
SETB TR0 /*启动定时器0*/
SETB SAMP_NO1
MOV SAMP_NUM,#00H
MAIN1: JNB T_1S,MAIN1 /*快速检测1通道温度值*/
CLR T_1S
LCALL SAMP /*采样一次*/
MAIN2: JNB SAMP_END10,MAIN1 /*采完10次*/
CLR SAMP_END10
MOV DIS_CONH,#5H /*设定显示参数,不译码,扫描6位*/ MOV DIS_CONL,#60H
LCALL DISP_WRITE
MOV DIS_CONH,#4H /*设定系统参数,启用显示及键盘功能*/ MOV DIS_CONL,#03H
LCALL DISP_WRITE