发布时间 : 星期三 文章基于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