曲格情感
您的当前位置:首页计算机控制技术实验报告

计算机控制技术实验报告

来源:曲格情感

计算机控制技术

实验报告

题目:专业:姓名:学号:指导老师:

一.实验目的实验一A/D转换实验

1.学习掌握模/数信号转换的基本原理;

2.掌握ADC0809芯片的使用方法。

二.实验设备

PC机一台。

三.实验内容及步骤

(一)ADC0809在8086计算机系统中的应用

XXX芯片介绍略

2.接口实验单元中的ADC0809芯片线路

图1-2系统中的ADC0809线路

3.实验接线和实验要求

(1).实验按下图1-3实验线路连线

图1-3ADC0809应用实验线路

(2).一般在实际应用系统中应该接精确+5V,以提高转换精度,ADC0809片选信号0809CS和/IOW、/IOR经逻辑组合后,去控制ADC0809的ALE、START、ENABLE信号。ADC0809的转换结束信号EOC未接,如果以中断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源输入通道。本实验以延时方式等待A/D转换结束,ADC0809的通道号选择线ADD-A、ADD-B、ADD-C接系统数据线的低3位,因此ADC0809的8个通道值地址分别为00H、01H、02H、03H、04H、05H、06H、07H。

(3).启动本A/D转换只需如下三条命令:

MOVD_,ADPORT;ADPORT为ADC0809端口地址。

MOVAL,DATA;DATA为通道值。

MOVD_,AL;通道值送端口。

读取A/D转换结果用下面二条指令:

MOVD_,ADPORT

INAL,D_

(4).实验软件原理框图

(5).试验程序如下:

CODESEGMENT

ASSUMECS:CODE

ADPORTEQU0010h

ORG1000H

START:JMPADCONTORLADCONTORL:CALLFORMATADCON:MOVA_,00

MOVD_,ADPORT

OUTD_,AL

MOVC_,0500H

DELAY:LOOPDELAYMOVD_,ADPORTINAL,D_

CALLCONVERS

CALLDISP

JMPADCON

CONVERS:MOVAH,AL

ANDAL,0FHMOVB_,077AHMOVDS:[B_],ALINCB_

MOVAL,AHANDAL,0F0HMOVCL,04HSHRAL,CLMOVDS:[B_],AL

disp:movd_,077Fh

movah,20hdisp0:movc_,00ffh

movb_,d_movbl,ds:[b_]movbh,0hpushd_

movd_,0ff22h

moval,cs:[b_+1060h]OUTD_,ALmovd_,0ff21hmoval,ahOUTD_,ALdisp1:loopdisp1

popd_

decd_

shrah,01hjnzdisp0

movd_,0ff22h

moval,0ffh

OUTD_,AL

data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0ah

db86h,8eh,0ffh,0ch,h,0deh,0c7h,8ch,0f3h,0bfh

FORMAT:MOVB_,0

MOVWORDPTRDS:[B_+077AH],0000H

ADDB_,2

MOVWORDPTRDS:[B_+077AH],0009H

ADDB_,2

MOVWORDPTRDS:[B_+077AH],0008H

CODEENDS

ENDSTART

(二)掌握ADC0809在51系列单片机中的使用方法

1.系统内部ADC0809的线路同图1-2。实验线路如下图1-4所示,图中采用部分译码法,地址为7FF8H~7FFFH,分别对应着8个模拟输入通道。

图1-451单片机实验ADC0809应用实验线路

2.实验接线和实验要求

(1).实验按图1-4实验线路连线

(2).由图1-4实现连线电路可知,主要由AD转换器AD0809,频率发生器SUN7474,单片机ATS51及显示用数码管组成。

AD0809的启动方式为脉冲启动方式,启动信号START启动后开始转换,EOC信号在START的下降沿10us后才变为无效的低电平。这要求查询程序待EOC无效后再开始查询,转换完成后,EOC输出高电平,再由OE变为高电平来输出转换数据。我们在设计程序时可以利用EOC信号来通知单片机(查询法或中断法)读入已转换的数据,也可以在启动AD0809后经适当的延时再读入已转换的数据。ATS51的输出频为晶振频的1/6(2MHZ),ATS1与SUN7474连接经与7474的ST脚提供AD0809的工作时钟。AD0809的工作频范围为

10KHZ-1280KHZ,当频率范围为500KHZ时,其转换速度为128us。AD0809的数据输出公式为:Dout=Vin255/5=Vin51,其中Vin为输入模拟电压,Vout为输出数据。

当输入电压为5V时,读得的数据为255再乘以2,得510。我们用51098%得499,再将百位数码管的小数点点亮,显示为4.99V,显示值与输入值基本吻合。

(3).软件设计思路及程序流程:

编程思路:

①向AD0809写入通道号并启动转换

②延时1ms后等待EOC出现高电平(JNBEOC,$)

③给OE置高并读入转换数据存入数据地址或数组中。

(3).程序流程图如下所示:

(4)、由流程图可编写程序如下:

include

defineucharunsignedchar

defineuintunsignedint

sbitst=P3^2;

sbitoe=P3^1;

sbiteoc=P3^0;

ucharcodetab[]={0_03,0_9f,0_25,0_0d,0_99,0_49,0_41,0_1f,0_01,0_09};/数码管显示段码ucharcodetd[]={0_00,0_10,0_20,0_30,0_40,0_50,0_60,0_70};/通道先择数组

uintad_0809,ad_data1,ad_data2,ad_data3,ad_data0;

ucharm,number;

uchar_[8];/八通道数据待存数组

voiddelaynms(uint_);/nms延时程序

voiddisplay();/显示程序

voidad0809();/芯片启动程序

voidkey();/键扫描程序

main()

number=1;

P1=0_00;

while(1)

ad0809();/调AD0809启动子程序

key();/调按键子程序

ad_0809=_[number];/把相关通道数据给ad_0809

display();/调显示

/nms延时程序

voiddelaynms(uint_)

uchari;

while(_-->0)

for(i=0;i<125;i++)

{;}}}

voiddisplay()

uchara;

ad_data1=(ad_080949/25)/100;/读得的数据乘以2再乘以98%除以100得百位ad_data2=((ad_080949/25)%100)/10;/读得的数据乘以2再乘以98%再分出十位ad_data3=(((ad_080949/25)%100)%10);/读得的数据乘以2再乘以98%再分出个位for(a=0;a<10;a++)

P0=tab[ad_data3];/送小数点后第二位显示

P2=0_07;/选通第一个数码管

delaynms(3);

P0=tab[ad_data2];/送小数点后第一位显示

P2=0_0b;/选通第二个数码管

delaynms(3);

P0=tab[ad_data1];/送整数显示

P0_7=0;/点亮第三个数码管小数点

P2=0_0d;/选通第三个数码管

delaynms(3);

P0=tab[number];/送通道号显示

P2=0_0e;

delaynms(3);

voidad0809()

uchari,m=1;

for(i=0;i<8;i++)

P0=td[i];/选通通道

oe=0;/以下三条指令为起动AD0809

st=0;

st=1;

st=0;

delaynms(1);

while(!eoc);/等待转换结束

oe=1;/取出读得的数据

_[m]=P2;/送相关通道数组

oe=0;

m++;

voidkey()

if(!P3_5)/P3.5是否按下

delaynms(20);/延时判误

if(!P3_5)/再一次判断P3。5是否按下

while(!P3_5);/等待P3。5为高电平

number++;/通道号显示加一

if(number>8)number=1;/八通道

四、心得体会

通过本次实验学习和掌握A/D信号转换的基本原理,并熟悉和掌握ADC0809芯片的使用方法,进一步熟悉和掌握了Proteus软件的适用以及利用其画仿真图,并熟悉和掌握了ADC0809芯片在8086上的编程以及使用,以及ADC0809芯片在51系列单片机上的编程以及使用。通过本次试验了解到了自己在模拟仿真软件使用上的不熟练,应多进行联系巩固。

因篇幅问题不能全部显示,请点此查看更多更全内容