温度巡检仪源程序_第1页
温度巡检仪源程序_第2页
温度巡检仪源程序_第3页
温度巡检仪源程序_第4页
温度巡检仪源程序_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内存分配定义 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 LCALL DISP OUT 显示 CPU 51 CLR EA SETB EX1 SETB EA WAIT JNB KEY FLAG WAIT CLR KEY FLAG MOV A KEY VAL CJNE A 8 WAIT1 SETB ST FLAG WAIT1 JNB ST FLAG WAIT 系统是否启动 巡检仪主程序 CLR EX1 关键盘中断 MOV DIS CONH 04H 关显示器 MOV DIS CONL 02H LCALL DISP WRITE MOV DIS CONH 5H 译码方式转为 BCD 方式 MOV DIS CONL 0E0H LCALL DISP WRITE MOV CHAN NUM 00H LCALL DISP OUT 输出显示数据 MOV DIS CONH 4H 开显示器 MOV DIS CONL 03H LCALL DISP WRITE CLR EA SETB EX1 开键盘中断 SETB EA MOV TIME CONT 0AH 定时时间设为 1 秒 MOV TIME COUNT TIME CONT MOV CHAN NUM 01H 初始化检测通道 从第 2 通道开始 SETB XJ FLAG 设为巡回检测状态 SETB SAMP NO1 CLR SAMP END10 SETB TR1 启动定时器 1 主循环程序 MAIN LOOP JNB KEY FLAG MAIN LOOP3 是否有键按下 CLR KEY FLAG 处理键盘命令 MOV A KEY VAL SETB EX1 开键盘中断 CJNE A 8 MAIN LOOP2 是启动键 JNB DD FLAG MAIN LOOP1 当前状态是定点检测方式 SETB XJ FLAG 改为巡检方式 CLR DD FLAG 清除定点标志 MOV CHAN NUM 00H 从 1 通道开始工作 MOV SAMP NUM 00H SETB SAMP NO1 LCALL DISP OUT 显示输出 MAIN LOOP1 SJMP MAIN LOOP3 MAIN LOOP2 CLR XJ FLAG 如为 1 8 键值则清除巡检标志 SETB DD FLAG 改为定点检测方式 MOV SAMP NUM 00H SETB SAMP NO1 MOV CHAN NUM KEY VAL 将按键值写入当前通道寄存器 LCALL DISP OUT 显示该通道温度值 MAIN LOOP3 JNB T 1S MAIN LOOP7 1 秒时间到 LCALL SAMP 启动 AD 转换 CLR T 1S JNB SAMP END10 MAIN LOOP7 采完 10 次 MOV SAMP NUM 00H CLR SAMP END10 SETB SAMP NO1 LCALL DISP OUT 显示温度值 JNB XJ FLAG MAIN LOOP7 巡检标志置位 MOV A CHAN NUM 当前通道号加 1 ADD A 1 MOV CHAN NUM A CJNE A 8H MAIN LOOP7 当前通道号为 8 MOV A 00H 当前通道号复归为 1 号 MOV CHAN NUM A MAIN LOOP7 LCALL SEND 调用串口发送程序 LJMP MAIN LOOP 数据采样子程序 SAMP PUSH ACC PUSH PSW SETB RS0 MOV A CHAN NUM MOV DPTR CHAN ADD0 输出温度检测通道 发采样脉冲 ADD A DPL MOV DPL A MOVX DPTR A NOP NOP MOV A CHAN NUM MOV DPTR AD ADD0 根据通道号计算出对应的 AD 地址 ADD A DPL MOV DPL A MOVX DPTR A 启动 AD 转换器 NOP NOP NOP SAMP1 JB AD END SAMP1 等待 AD 转换结束 MOVX A DPTR 读 AD 转换值 INC SAMP NUM 采样次数加 1 JNB SAMP NO1 SAMP2 是否首次采样 MOV SAMP SUMH 00H 10 次累加和赋初值 MOV SAMP SUML A MOV SAMP MAX A 最大值赋初值 MOV SAMP MIN A 最小值赋初值 CLR SAMP NO1 SJMP SAMP4 SAMP2 MOV SAMP VAL A 每次采样值累加 ADD A SAMP SUML MOV SAMP SUML A CLR A ADDC A SAMP SUMH MOV SAMP SUMH A MOV A SAMP VAL 当前采样值是否为最大值 CLR C SUBB A SAMP MAX JC SAMP3 MOV A SAMP VAL 更新最大值 MOV SAMP MAX A SJMP SAMP4 SAMP3 MOV A SAMP VAL 当前采样值是否为最小值 CLR C SUBB A SAMP MIN JNC SAMP4 MOV A SAMP VAL 更新最小值 MOV SAMP MIN A SAMP4 MOV A SAMP NUM CJNE A 0AH SAMP5 是否采样完 10 次 去极值平均算术数字滤波 CLR C 从累加和中减去最大值 MOV A SAMP SUML SUBB A SAMP MAX XCH A SAMP SUMH SUBB A 00H XCH A SAMP SUMH 再从累加和中减去最小值 SUBB A SAMP MIN MOV SAMP SUML A MOV A SAMP SUMH SUBB A 00H SWAP A 剩余数值除以 8 RL A XCH A SAMP SUML SWAP A RL A ADD A 80H 结果四舍五入 ANL A 1FH ADDC A SAMP SUML MOV SAMP AVG A 保存去极值平均滤波后的最终采样值 SETB SAMP END10 SJMP SAMP6 SAMP5 AJMP SAMP8 采样值转为温度值 SAMP6 MOV R2 00H MOV R3 SAMP AVG MOV R6 0C7H r6r7 为定点小数 0 779 MOV R7 6CH MOV A R3 r3 r6r7 小数部分四舍五入取整 MOV B R7 MUL AB MOV R4 B MOV R5 A MOV A R3 MOV B R6 MUL AB ADD A R4 MOV R4 A CLR A ADDC A B MOV R3 A MOV A R2 MOV B R7 MUL AB ADD A R4 MOV R4 A MOV A R3 ADDC A B MOV R3 A CLR A RLC A XCH A R2 MOV B R6 MUL AB ADD A R3 MOV R3 A MOV A R2 ADDC A B MOV R2 A MOV A R4 JNB ACC 7 SAMP7 INC R3 CJNE R3 0 SAMP7 INC R2 SAMP7 MOV TEMP VAL R3 将温度值存入 TEMP VAL MOV A CHAN NUM MOV R0 TEMP1 ADD A R0 MOV R0 A MOV R0 TEMP VAL SAMP8 CLR RS0 POP PSW POP ACC RET 温度值显示子程序 DISP OUT PUSH ACC PUSH PSW PUSH B PUSH 00H JNB ST FLAG DISP OUT0 系统在工作状态 将温度值写入显示缓冲区 MOV A CHAN NUM ADD A 1H MOV CHAN NUM1 A MOV A CHAN NUM MOV R1 TEMP1 ADD A R1 MOV R1 A 将温度值转为三位 BCD 码 存入 R3 A B MOV A R1 MOV B 100 DIV AB MOV R3 A MOV A 10 XCH A B DIV AB MOV DIS BUF1 CHAN NUM1 显示通道号 MOV DIS BUF2 10010B 显示 MOV DIS BUF3 00H 显示温度千位 MOV DIS BUF4 R3 显示温度百位 MOV DIS BUF5 A 显示温度十位 MOV DIS BUF6 B 显示温度个位 数据显示输出 DISP OUT0 MOV R1 7H 显示位数为 6 位 MOV R2 0DH 从左至右开始描扫 MOV R0 50H 显示区首址 DISP OUT1 MOV DIS CONL R0 MOV A R2 ORL A 8H MOV DIS CONH A ACALL DISP WRITE 将数据写入显示芯片 INC R0 DEC R2 DJNZ R1 DISP OUT1 共写 6 位数据 POP 00H POP B POP PSW POP ACC RET 显示芯片命令写入子程序 DISP WRITE PUSH ACC PUSH B PUSH 07H PUSH 00H CLR EX1 CLR DIS LOAD MOV R7 08H MOV A DIS CONL MOV B DIS CONH DISP WRITE8 RRC A CLR DIS DCLK NOP NOP MOV DIS DIN C NOP NOP SETB DIS DCLK DJNZ R7 DISP WRITE8 MOV A B MOV R7 04H DISP WRITE4 RRC A CLR DIS DCLK NOP NOP MOV DIS DIN C NOP NOP SETB DIS DCLK DJNZ R7 DISP WRITE4 NOP NOP SETB DIS LOAD SETB EX1 POP 00H POP 07H POP B POP ACC RET 键盘中断程序 KEY IN PUSH PSW PUSH ACC PUSH DPH PUSH DPL PUSH 06H CLR EX1 MOV SAMP NUM 00H CLR DIS LOAD MOV A 07H MOV R7 04H DIS READ4 RRC A 发送读键码命令 CLR DIS DCLK NOP NOP MOV DIS DIN C NOP NOP SETB DIS DCLK DJNZ R7 DIS READ4 SETB DIS LOAD CLR A MOV R7 07H DIS READ7 MOV C DIS DOUT 读出键码 CLR DIS DCLK RLC A SETB DIS DCLK DJNZ R7 DIS READ7 CLR IE1 MOV KEY CODE A SUBB A 40H MOV KEY VAL A SETB KEY FLAG SETB EX1 POP 06H POP DPL POP DPH POP ACC POP PSW RETI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论