模数转换器ADC0808的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实训报告十
实训目的:
通过实现由ADC0808作为A/D转换器对RV1进行电压测量,并在数码管上显示;了解ADC0808的工作方式,进行模拟数据的采样,从而利用c语言编程实现单片机控制处理信息。
实训原理图:
实训步骤:
1.在ptoteus平台找出所需的元器件
2.理解该实验的原理,按照原理图画出仿真图;
3.根据实验要求写出如下程序:
#include
unsigned char code dispcode[4]={0x10,0x20,0x40,0x00}; unsigned char temp;
unsigned char dispbuf[4];
unsigned char count=0;
unsigned char getdata;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^7;
void delay(unsigned int i)
{
unsigned int j;
for (j=0;j
}
void init()
{
EA=1;
ET0=1;
ET1=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
TR1=1;
TR0=1;
}
void conversion()
{
ST=0;
ST=1;
ST=0;
while(EOC==0)
{;}
OE=1;
getdata=P0;
OE=0;
temp=getdata;
dispbuf[0]=getdata/100;
temp=temp-dispbuf[0]*100;
dispbuf[1]=temp/10;
temp=temp-dispbuf[1]*10;
dispbuf[2]=temp;
}
void T0X()interrupt 1
{
CLK=~CLK;
}
void T1X() interrupt 3
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
for(count=0;count<=3;count++)
{
P1=dispbuf[count]|dispcode[count];//输出显示控制代码
delay(50);
}
}
void main(void)
{
init();
while(1)
{
conversion();
}
}
总结:
经过此次的实验,通过实现由ADC0808作为A/D转换器对RV1进行电压测量,并在数码管上显示,深刻地理解了ADC0808的结构以及工作方式,ADC0808是典型的8通道模拟输入8位并行数字输出地逐次逼近式A/D转换器。在C语言的设计上进一步理解了ADC的工作时钟模式从而进行模拟数据采样。