班 级 电科 081 班 姓 名 龚 浪 学 号 080712110073
实验名称 电脑时钟程序实验 指导教师 马 光 喜
理 学 院
时间:2011年 月 日
实验十一 A/D转换器接口实验
一.实验目的
⑴ 熟悉单片机与A/D转换芯片的接口方法。 ⑵ 了解A/D转换芯片的转换性能及编程方法。 ⑶ 通过实验了解单片机如何进行数据采集。 二.实验内容
利用电位器提供模拟量输入,输入到0809的IN3输入端,编制程序,将模拟量转换成数字量,并在数码管显示出来。 三.实验步骤
1.在Proteus中画出实验电路
ADC0808转换原理电路
3.进入Keil C51组合软件的操作环境,编辑源程序并进行编译; 4.设置Proteus 与Keil C51之间的连接; 5.程序设计
(1) 进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否
完毕,若完毕则把数据通过P1端口读入,经过数据处理之后经P0口从数码管上显示。
(2) 进行A/D转换之前,要启动转换的方法:
CBA=011选择第三通道
Start的正脉冲(start从0→1→0)起动AD转换,本程序中用P2^0
控制。
(3)本程序用C语言编写,代码如下: //EXP11
#include
sbit start=P2^0;//控制起动转换信号 sbit finish=P2^1;//转换结束标志 sbit ale=P2^2; //地址锁存信号 #define address P3 //地址口 #define date P1 //数据口 #define disp P0 //显示口 void transform(); //AD转换函数 void main() {
start=0; while(1)
transform();//循环调用AD转换函数 }
//********************** //AD转换函数
//**********************
void transform () {
start=1; //正脉冲起动AD转换 start=0;
address=0x3f;//送地址给AD转换 ale=1; //锁存地址 while(1)//等待转换结束 {
if(finish==1)//转换完成 {
disp=date;// 取走数据
ale=0; //撤消地址锁存信号
break;//跳出循环进行下一次AD转换 } } }
6.运行、调试程序和结果检查
⑴ 采用单步,设置断点等方法,态观察程序走向是否正确。
⑵ 连续运行程序,数码管上显示当前采集的电压转换的数字量,调节变位器RV1可看到数码管显示数据发生变化。数码管应显示的理论值为Vin *1/256。
①Vin=0V,Vo=Vin/5V*0xff=0,仿真值如下图所示:
② Vin=1V,Vo=Vin/5V*0xff=0x33,仿真值如下图所示:
③ Vin=2V,Vo=Vin/5V*0xff=0x66,仿真值如下图所示: