基于51单片机的模数转换(AD)实验设计 联系客服

发布时间 : 星期三 文章基于51单片机的模数转换(AD)实验设计更新完毕开始阅读

5000)

num=P1; //读取采样值

num=5000*num/255; //将0~#FFH采样值转化为0~5V数值(0~

HexToDec(num); //将16进制数据,转换为10进制数据,以

便于数码管显示

ClearLed(4);

DisplaySerial(num_4); DisplaySerial(num_3); DisplaySerial(num_2); DisplaySerial(num_1); Delay(30000);

//采样延时间隔,决定采样频率

//依次从高位到低为显示采样电压值

} }

//********************延时子程序********************// void Delay(unsigned int x) { }

//********************************//

功能:串行模拟时钟

注意事项:用到delay.h中的延时子程序 形参:无 unsigned int j; for(j=0;j

//********************************// void DispClk(void) { }

dis_clk=1;Delay(1); dis_clk=0;Delay(1);

7

//********************************//

功能:发送一个数字到串行LED上 形参:unsigned char x:0-20

//********************************// void DisplaySerial(unsigned char x) { }

//********************************//

功能:清串行LED显示

形参:unsigned char x = 需要清显示的LED数 unsigned char i;

unsigned char num_serial=LedTab[x]; for(i=0;i<8;i++) { }

dis_ab=(bit)(num_serial&0x80); num_serial<<=1; DispClk();

//********************************// void ClearLed(unsigned char x) { }

void HexToDec(unsigned int x) //十六进制转十进制

unsigned char i; for(i=0;i<(x<<3);i++) { }

DispClk(); dis_ab=0;

8

{ num_1=x;

//个位

x=x/10; num_2=x;

//十位 x=x/10; num_3=x; x=x/10; num_4=x;

}

9

5.实验结果分析

通过改变POT-LIN原件滑片的位置即可调整输入的物理模拟量,可以发现输出的数字信号即观察LED的显示效果的不同。

通过实验,会发现:

(1)当POT-LIN原件上的滑片位置位于参考图的上方时,LED会全亮; (2)当POT-LIN原件上的滑片位于最下方时,LED全暗;

(3)当POT-LIN原件上的滑片位于上下之间的位置时,则会有其对应的LED显示效果。

LED显示效果如下图示:

图6 LED效果图

6.总结

通过此次实验,让我学习了A/D 转换与单片机的接口方法。对A/D 芯片ADC0809 转换性能及编程方法有了深入的了解,通过实验了解单片机如何进行数据采集,锻炼了编程能力。总的来说,经过这几个星期的单片机课程的学习,使我们对单片机有了一定的了解,老师只是引导我们入门,要想深入学习还得课下花时间自己钻研。

10