找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4040|回复: 0
打印 上一主题 下一主题
收起左侧

计算机控制技术ADC0808/ADC0809转换接口实验

[复制链接]
跳转到指定楼层
楼主
ID:22266 发表于 2020-11-16 17:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验内容及过程记录
  • 实验内容
利用电位器提供模拟量输入,送往 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
程序如下:
  1. #include <reg51.h>                      //头文件
  2. #define uchar unsigned char      //定义无符号字符
  3. #define uint unsigned int           //定义无符号整型
  4. uchar DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,ox6f}; //数码管的数字段码(共阴极数码管)
  5. sbit CLK=P1^3;  //定义CLK为P1口的第四位
  6. sbit ST=P1^2;    //定义ST为P1口的第三位
  7. sbit EOC=P1^1; //定义EOC为P1口的第二位
  8. sbit OE=P1^0;   //定义OE为P1口的第一位
  9. void DelayMS(uint ms)   //延时程序
  10. {
  11. uchar i;
  12. while(ms--)
  13.     for(i=0;i<120;i++);
  14. }
  15. void Display_Result(uchar d)  //数码管显示程序
  16. {
  17. int i,j;
  18. P2=0xfb;  //第三位数码管显示
  19. i=d*5/256;
  20. P0=DSY_CODE[i];  //数码管显示
  21. DelayMS(5);   //延时
  22. P0=0x80 ;//数码管显示“.”
  23. DelayMS(5);
  24. P2=0xf7; //第四位数码管显示
  25. j=(d-i*51)*10/51;
  26. P0=DSY_CODE[j];
  27. DelayMS(5);
  28. }
  29. void main()  //主程序
  30. {
  31. TMOD=0x02;  //选择T0定时计数器工作在方式2
  32. TH0=0x14;        //设置加1计数器TL0的初值为0x14
  33. TL0=0x00;
  34. IE=0x82;   //设定中断允许控制寄存器IE:开放所有中断,开放T0的溢出中断
  35. TR0=1;   //启动T0工作
  36. P1=0x3f;  //选通IN3通道
  37. while(1)
  38. {
  39. ST=0;
  40. ST=1;
  41. ST=0;
  42. while(EOC==0);
  43. OE=1;
  44. Display_Result(P3);
  45. OE=0;
  46. }
  47. }
  48. void Timer0_INT()interrupt 1
  49. {
  50. CLK=~CLK;
  51. }
复制代码

3.实验结果及分析
  由实验结果可得,将滑动变阻器的阻值变化设定为模拟量输入,经过AD转换器的IN3口输入,并进行转换,送入51单片机中。单片机P0口连接着共阴极数码管,将模拟量变化进行输出。当滑动变阻器滑动时,数码管显示也随之变化,若输入成一定线性关系,输出也呈一定的线性关系。由此实现了数字量到模拟量的转换。

实验总结与体会

通过本次实验,我学习了如何将模拟量转换为数字量的操作。掌握了ADC0809的接口以及运用,以及与单片机的连接和数码管的输出。在实验过程中,虽然使用了仿真器件,但是在操作滑动变阻器可能依然存在误差。因此还需要不断优化。由于在计算机控制过程中,将外界模拟量转换为数字量输入到计算机是非常重要的一步。因此我们要牢牢掌握AD转换的原理。

word格式的文档下载:http://www.51hei.com/bbs/dpj-198095-1.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表