标题: 计算机控制技术ADC0808/ADC0809转换接口实验 [打印本页]
作者: happy33 时间: 2020-11-16 17:54
标题: 计算机控制技术ADC0808/ADC0809转换接口实验
实验内容及过程记录
利用电位器提供模拟量输入,送往 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
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |