ADC0808数模转换与显示--课程设计Word格式.doc
《ADC0808数模转换与显示--课程设计Word格式.doc》由会员分享,可在线阅读,更多相关《ADC0808数模转换与显示--课程设计Word格式.doc(4页珍藏版)》请在冰豆网上搜索。
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图3-3-2所示。
开始
初始化
调用A/D转换子程序
调用显示子程序
结束
图3-3-1主程序框图图3-3-2A/D转换流程图
3.4仿真结果与分析
1.当IN0口输入电压值为0V时,显示结果如图所示,测量误差为0V。
图3-4-1输入电压为0V时,LED的显示结果
4.00
3.984
0.40
附录
AT89C51单片机程序
#include<
REG51.H>
math.h>
#include"
timer.h"
#define_nop{}
unsignedcharshuma[]={0xC0,0xF9,0xA4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};
sbitN1=P0^0;
sbitN2=P0^1;
sbitN3=P0^2;
sbitN4=P0^3;
sbitN5=P0^4;
sbitN6=P0^5;
sbitPoint=P2^7;
intV=0;
voidDelay_nms(unsignedcharn)
{
unsignedchara;
for(;
n>
0;
n--)
{
for(a=0;
a<
100;
a++)
{_nop;
_nop;
_nop;
}}}
voiddisplay(intvolt)
{unsignedchardis[6];
inti,a,j=0,cn=0;
for(i=0;
i<
6;
i++)
{dis[i]=0;
}
a=volt;
if(a==0)
{dis[0]=0;
cn=1;
}
else{j=0;
while(a>
0){if(j>
=6)break;
dis[cn]=a%10;
j++;
cn++;
a=a/10;
}}
//dis[1]=9;
for(i=0;
{N1=0;
N2=0;
N3=0;
N4=0;
N5=0;
N6=0;
P2=shuma[dis[i]];
if(i==0)N6=1;
}
elseif(i==1){N5=1;
if(cn==2){Point=0;
elseif(i==2){N4=1;
if(cn==3)
{Point=0;
elseif(i==3)
{ N3=1;
if(cn==4){ Point=0;
} }
elseif(i==4)
{N2=1;
if(cn==5) {Point=0;
elseif(i==5){N1=1;
if(cn==6)
Delay_nms(5);
voidmain()
{
unsignedcharkey,i;
IniTimer(25000);
StartTimer();
V=48367;
while
(1)
{
display(V);
}
3