3 软件设计
3.1 模数转换
图3-1 模数转换流程图
(1)AD0809 内部带有输出锁存器,可以与AT89C51 单片机直接相连。 (2)初始化时,使ST 和OE信号全为低电平。 (3)送要转换的哪一通道的地址到A,B,C 端口上。 (4)在ST 端给出一个至少有100ns 宽的正脉冲信号。 (5)是否转换完毕,我们根据EOC 信号来判断。
(6)当EOC变为高电平时,这时给OE 为高电平,转换的数据就输出给单片机了。
8
3.2数码显示
图3-2 数码显示流程图
LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。
数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。
透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。
9
4、仿真及计算
4.1 实验步骤
a.9号模块接入±15V、+5V电源(接到9号模块的+6V插孔),将PN结温度传感器接入对应接口。
b.PN结传感器输出端接至数显表的输入端。打开实验台电源开关,打开加热源电源开关,将PN结传感器的探头放入热源箱内,加热过程中记录电压值,填入下表。
表4-1 温度变化与电压的关系表
T(℃) 40 45 900 50 790 55 690 60 580 65 538 70 490 75 410 80 350 85 300 V(mV) 1056 4.2利用MATLAB对实验数据进行处理
我们把下面这组数据输入MATLAB中,按下回车键得到,图4-1温度变化与电压的关系曲线。
x=[40 45 50 55 60 65 70 75 80 85]; y=[1056 plot(x,y)
900 790 690 580 538 490 410 350 300];
图4-1 温度变化与电压的关系曲线
10
再在MATLAB中输入以下程序: >> xmean=mean(x);ymean=mean(y); sumx2=(x-xmean)*(x-xmean)'; sumxy=(y-ymean)*(x-xmean)'; a=sumxy/sumx2; %解出直线斜率a b=ymean-a*xmean;%解出直线截距b
m=((a*(x(1,10))+b-(y(1,10)))/(y(1,10)));%“10”是自变量的个数,z为非线性误差(即线性度)
figure %用红色绘制拟合出的直线
px=linspace(0,85,150);%(linspace语法(从横坐标负轴起点0画到横坐标正轴终点5,150等分精度)) py=a*px+b;
plot(px,py,'r'); hold on
plot(x,y,'b*') %hold on %plot(x,y,'k-')
title('热敏电阻及测温系统数据分析') xlabel('温度T(℃)'); ylabel(电压U(V)');
图4-2通过MATLAB修正后温度与电压的关系曲线
11
相关推荐: