实验内容及过程记录 利用电位器提供模拟量输入,送往 ADC0808/ADC0809 的 IN3 输入 端,编制程序,将模拟量转换成数字量,并在数码管上显示出来。 1.ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可宣统8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁存器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。 2.ADC0809引脚结构: D7~D0:8位数字量输出引脚。 IN0~IN7:8位模拟量输入引脚。 VCC:+5V工作电压。 GND:地 REF(+):参考电压正端。 REF(-):参考电压负端。 START:A/D转换启动信号输入端。 ALE:地址锁存允许信号输入端。 EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。 OE:输出允许控制端,用以打开三态数据输出锁存器。 CLK:时钟信号输入端。 A、B、C:地址输入线。 1.在 Proteus 中画出 ADC0809 与单片机 AT89C52 的连线接口电路原 理图,选择数码管用于输出数字量的显示 2.进入 Keil C51 软件的操作环境,根据步骤 1 的接线电路编制 A/D 转换程序,编辑源程序并进行编译,生成 .hex 文件 3.设置 Protes 与 Keil C51 之间的连接 4.改变输入电压值并记录,电压范围为 0~5V,记录对应的数字量输出 四、实验结果及分析 1.A/D转换程序如下图4-1和4-2所示: 图4-1 图4-2 2.五组数字量输出数据如下图所示: (1)当滑动变阻器滑到11%时,为第一组模拟量输入,经过AD转换器送入AT89C51中,在数码管中输出0.5 图4-3 (2)当滑动变阻器滑到21%时,为第一组模拟量输入,经过AD转换器送入AT89C51中,在数码管中输出1.0 图4-4 (3) 当滑动变阻器滑到31%时,为第一组模拟量输入,经过AD转换器送入AT89C51中,在数码管中输出1.5 图4-5 (4) 当滑动变阻器滑到41%时,为第一组模拟量输入,经过AD转换器送入AT89C51中,在数码管中输出2.0 图4-6 (5) 当滑动变阻器滑到51%时,为第一组模拟量输入,经过AD转换器送入AT89C51中,在数码管中输出1.5 图4-7 程序如下: - #include <reg51.h> //头文件
- #define uchar unsigned char //定义无符号字符
- #define uint unsigned int //定义无符号整型
- uchar DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,ox6f}; //数码管的数字段码(共阴极数码管)
- sbit CLK=P1^3; //定义CLK为P1口的第四位
- sbit ST=P1^2; //定义ST为P1口的第三位
- sbit EOC=P1^1; //定义EOC为P1口的第二位
- sbit OE=P1^0; //定义OE为P1口的第一位
- void DelayMS(uint ms) //延时程序
- {
- uchar i;
- while(ms--)
- for(i=0;i<120;i++);
- }
- void Display_Result(uchar d) //数码管显示程序
- {
- int i,j;
- P2=0xfb; //第三位数码管显示
- i=d*5/256;
- P0=DSY_CODE[i]; //数码管显示
- DelayMS(5); //延时
- P0=0x80 ;//数码管显示“.”
- DelayMS(5);
- P2=0xf7; //第四位数码管显示
- j=(d-i*51)*10/51;
- P0=DSY_CODE[j];
- DelayMS(5);
- }
- void main() //主程序
- {
- TMOD=0x02; //选择T0定时计数器工作在方式2
- TH0=0x14; //设置加1计数器TL0的初值为0x14
- TL0=0x00;
- IE=0x82; //设定中断允许控制寄存器IE:开放所有中断,开放T0的溢出中断
- TR0=1; //启动T0工作
- P1=0x3f; //选通IN3通道
- while(1)
- {
- ST=0;
- ST=1;
- ST=0;
- while(EOC==0);
- OE=1;
- Display_Result(P3);
- OE=0;
- }
- }
- void Timer0_INT()interrupt 1
- {
- CLK=~CLK;
- }
复制代码
3.实验结果及分析 由实验结果可得,将滑动变阻器的阻值变化设定为模拟量输入,经过AD转换器的IN3口输入,并进行转换,送入51单片机中。单片机P0口连接着共阴极数码管,将模拟量变化进行输出。当滑动变阻器滑动时,数码管显示也随之变化,若输入成一定线性关系,输出也呈一定的线性关系。由此实现了数字量到模拟量的转换。
实验总结与体会
通过本次实验,我学习了如何将模拟量转换为数字量的操作。掌握了ADC0809的接口以及运用,以及与单片机的连接和数码管的输出。在实验过程中,虽然使用了仿真器件,但是在操作滑动变阻器可能依然存在误差。因此还需要不断优化。由于在计算机控制过程中,将外界模拟量转换为数字量输入到计算机是非常重要的一步。因此我们要牢牢掌握AD转换的原理。
word格式的文档下载:http://www.51hei.com/bbs/dpj-198095-1.html
|