浊度传感器简单程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电气原理图
程序:
ORG 0050H
MAIN:
MOV P1, 00H; //为数码管赋初值
LOOP:
LCALL KEY1; //调用键盘程序1,判断开始键是否按下,测量是否开始
LCALL KEY2; //调用键盘程序2,判断采样键是否按下,采样是否结束
LCALL ADC; //调用A/D转换程序,采样
LCALL NTU; //调用浊度标定程序,实现电压浊度的转化
LCALL LED; //调用显示程序,LED显示浊度数据
KEY1:
MOV P2,#0FFH; //先将P2口置为高电平
MOV A, P2; //读取当前P2口的状态
CPL A; //对PO的状态取反
JZ KEY1; //判断A值,为零则重新扫描,不为零则执行下一步JNB ACC.3,KEY1; //判断开始键(W3)是否按下,否则重新扫描
RET;
KEY2:
MOV P2,#0FFH;
MOV P2,A;
CPL A;
JZ KEY2;
JNB ACC.4,KEY2; //判断采样键(W2)是否按下,否则重新扫描
RET;
ADC:
CLR A;
MOVX @DPTR, A; //启动转换
JNB P2.4, ADC;
CLR A;
MOVX A,@FPTR; //转换采样数据输入A中
MOV R0,A;//将累加器A中数据存入工作寄存器R0中
RET;
NTU:
MOV A, R0;
MOV R1,#0.3AH;//输入斜率值
MOV B, R1,;
MUL A B;//相乘
MOV R2,A; //存放积的低8位
MOV R3,B; //存放积的高8位
CLR A; //清零
CLR C; //清零
MOV C, #14H;//赋值被减数
MOV A, R3;
SUBB A, C;//执行减法
MOV R4,A; //将结果存入R4中
RET;
LED:
MOV R0,#7EH;
MOV R1,#04H;//位控制信号,开始显示最低位MOV A, R1;
MOV DPTR, #TAB;//将字形表首地址赋给DPTR LOOP1:
MOV P0,A;
MOV A, @R0;//取数据
MOVC A, @A+DPTR;//取字形码
MOV P1,A;
ACALL DIMS;//延时
INC R0;//数据位加1
MOV A, R1;
JB ACC.0,LOOP2;//判断结束否
RL A;//没有结束则左移一位
MOV R1,A;
LOOP2:
CLR A;
MOV R0,1004H;
MOV A, @R0;//取数据
MOVC A, @A+DPTR;//取字形码
MOV P1,A;
ACALL DIMS;//延时
INC R0;//数据位加1
MOV A, R1;
JB ACC.0,LOOP3;//判断整数位结束否
RL A;//没有结束则左移一位
MOV R1,A;
LOOP3:
RET;
TAB:
DB 3FH, 06H, 5BH, 4FH, 66H, 6DH,
DB 7DH, 07H, 7FH, 6FH, 77H, 7CH,
DB 39H, 5EH, 79H, 71H, 40H, 00H,
DIMS:
MOV R7,#02H;//延时1ms
END