在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴
解出对应的位。
10cD 20000D 580D 2
D 0.078,而D 0.078 D ,因1000256 100064100025
为测量范围为0~2000ppm,而实际输出的范围为0~1000ppm,所以D应该小于80H,故D 2用一个寄存器就可以存储,再除以25,得到的商为实际值的百位,余数再除以100得到的商为实际值的十位,得到的余数再除以10,商为实际值的个位,余数为小数点后的一位。
四.程序流程图
图8.程序流程图
在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴
五. 程序
ORG 0000H
LJMP MAIN ORG 0003H LJMP OPT ORG 0030H
MIAN:MOV R0,#50H;数据存放地址 SETB IT0 SETB EA SETB EX0
;**********************读键 KEY:MOV P2,#0FFH;把P2口做输入口 MOV A,P2;读P2口状态
CPL A;取正逻辑,高电平表示按下 ANL A,#80H;取第7位状态 JZ KEY
LACLL DIMS;延时去抖 MOV A,P2;再读P2口 CPL A ANL A,#80H JZ KEY;
;***********************等键释放 KEY1:MOV A,P2 CPL A ANL A,#80H
JNZ KEY1;为低电平则释放 ;**********************启动A/D转换 MOV DPTR,#7FF8H;地址 MOVX @DPTR,A;启动A/D转换 HERE:SJMP HERE