模数转换器ADC0809实验(2)
8位数模转换器ADC0809实验报告
8位数模转换器ADC0809实验报告实验目的:本实验旨在通过使用8位数模转换器ADC0809来将模拟信号转换为数字信号,并输出至LED灯中,以达到理解数字信号的目的。
实验原理:ADC0809是典型的8位数模转换器,它是一种具有8个模拟输入通道的典型ADC。
ADC0809是一种串行转换器,它可以实现单端和差分两种模式的转换。
ADC0809的转换精度为8比特,转换速率为100厘秒。
ADC0809通过8个输入通道将模拟信号转换为数字信号,并通过8个数据引脚输出数字信号。
实验器材:电脑、ADC0809、LED灯、电阻、电容、按键开关、电源、实验板。
实验步骤:1.将ADC0809插入实验板上。
2.将电阻连接至ADC0809的引脚,以使引脚与电阻的连接具有正确的阻值。
3.将电容插入ADC0809的引脚,并连接至电源。
4.将按键开关插入ADC0809的引脚,并连接至电源。
5.将LED灯连接至ADC0809的引脚,并连接至电源。
6.将实验板接入电源,启动电路。
7.按下按键开关,开始信号转换。
8.数字信号转换完成后,将数字信号输出至LED灯中。
实验结果:本实验成功地将模拟信号转换为数字信号,并将数字信号输出至LED灯中,达到了理解数字信号的目的。
结论:通过本实验,我们可以了解数字信号的基本原理和用途。
通过使用ADC0809将模拟信号转换为数字信号,并输出至LED灯中,我们可以更好地理解数字信号的应用和意义。
同时,该实验也为我们打下了更深入学习数字电路和信号处理技术的基础。
8位数模转换器ADC0809实验报告
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
单片机原理与接口技术
课程设计说明书
8位数模转换器ADC0809项目设计
专业
电气工程及其自动化
学生姓名
林雯雯
班级
D电气122
学号
1220601220
指导教师
周云龙
完成日期
2015年12月12日
一 理论部分
1
8位数模转换器ADC0809实验
(1)、设计一个0-5V可调的直流模拟电压信号
(2)、扩展2位静态显示的数码管
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
特性概述:
AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
AD0809转换实验
A/D转换实验1、实验目的:掌握A/D转换与单片机接口的方法;了解A/D芯片0809转换性能及编程方法;2、实验内容:利用综合实验仪上的0809做A/D转换器,综合实验仪上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,通过8155键显区数码管显示出来。
3、实验电路图4、实验器材:(1)超想-3000TB综合实验仪 1 台(2)超想3000仿真器 1 台(3)连线若干根(4)计算机 1 台5、实验连线:ADC0809的09IN0通道与模拟信号发生器的Vin0孔相连,ADC080片选信号CS09 孔与译码器的YC2孔相连,脉冲源的0.5M与ADC0809的CLOCK相连。
6、实验原理:A/D转换器的功能主要是将输入的模拟信号转换成数字信号,如电压、电流、温度测量等都属于这种转换。
本实验中采用的转换器为ADC0809,它是一个8位逐次逼近型A/D转换器,可以对8个模拟量进行转换,转换时间为100μS。
其工作过程如下:首先由地址锁存信号ALE的上升沿将引脚ADDA、ADDB和ADDC上的信号锁存到地址寄存器内,用以选择模拟量输入通道;START信号的下降沿启动A/D转换器开始工作;当转换结束时,AD0809使EOC引脚由低电平变成高电平,程序可以通过查询的方式读取转换结果,也可以通过中断方式读取结果。
CLOCK为转换时钟输入端,频率为100KHz-1.2MHz,推荐值为640KHz。
7、程序框图8、实验步骤:(1)设定仿真模式为程序空间在仿真器上,数据空间在用户板上(2)硬件诊断:调整综合实验仪上模拟信号发生器的电位器,使输入到此AD0809的IN0上电压为一定值。
(3)编写程序,并编译通过。
本程序使用查询的方式读取转换结果。
在读取转换结果的指令后设置断点,运行程序,在断点处检查并读出A/D转换结果,数据是否与Vin0相对应。
修改程序中错误,使显示值随Vin0变化而变化。
9、实验程序OUTBIT equ 0e101h ; 位控制口CLK164 equ 0e102h ; 段控制口(接164时钟位)DAT164 equ 0e102h ; 段控制口(接164数据位)IN equ 0e103h ; 键盘读入口LEDBuf equ 40h ; 显示缓冲org 0000hmov sp,#60hmov dptr,#0e100h ;8155初始化mov a,#03hmovx @dptr,amov 40h,#00h ;显示缓冲器初始化mov 41h,#08hmov 42h,#00hmov 43h,#09hmov 44h,#00h ;存放转换后数字的高位mov 45h,#00h ;存放转换后数字的低位LOOP1: MOV R7,#40VI: LCALL DISPLAYDJNZ R7,VImov a,#00hmov dptr,#0a000hmovx @dptr,a ;0809AD的通道开始转换mov r7,#0fhloop2: djnz r7,loop2movx a,@dptr ;读取转换结果mov r0,#45h ;拆字lcall ptdssjmp loop1ptds: mov r1,alcall ptds1mov a,r1swap aptds1: anl a,#0fhmov @r0,adec r0retDelay:mov r7, #0 ; 延时子程序DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDISPLAY:setb 0d3hmov r0, #LEDBufmov r1, #6 ; 共6个八段管mov r2, #00100000b ; 从左边开始显示Loop:mov dptr, #OUTBITmov a, #00hmovx @dptr, a ; 关所有八段管mov a, @r0mov dptr,#LEDmapmovc a,@a+dptrmov B, #8 ; 送164DLP:rlc amov r3, amov acc.0, canl a,#0fdhmov dptr, #DAT164movx @dptr, amov dptr, #CLK164orl a,#02hmovx @dptr, aanl a,#0fDhmovx @dptr, amov a, r3djnz B, DLPmov dptr, #OUTBITmov a, r2movx @dptr, a ; 显示一位八段管mov r6, #1call Delaymov a, r2 ; 显示下一位rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, aclr 0d3h ; 关所有八段管retLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07hdb 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hEND10、实验思考:1、试编写循环采集8路模拟量输入A/D转换程序。
实验六 ADC0809AD转换实验
实验六 ADC0809AD转换实验一、实验目的1、掌握ADC0809AD芯片的工作原理和使用方法。
2、掌握如何使用51单片机配合ADC0809AD芯片实现模拟量转换。
二、实验原理ADC0809AD是一种8位分辨率、并行输出、单通道,3MHz 工作速率的A/D转换器。
ADC 有两个输入电压端子,IN+和IN-,它们之间加入了一个内部参考电压源(RE),所以在输入模拟信号时常在IN+端连接信号输入,而IN-端接地。
当选用RE = +2.5 V时,IN+的输入范围约为0-VREF,在本实验中选用的是RE = +5 V,所以IN+的输入范围约为0-5V。
当外部触发信号TRIGGER开启后,ADC执行转换操作。
在转换时,电压采样保持时间通常为 100 ns,最长转换时间为 200 us,当转换结束时,ADC将数字输出置在低电平并发出一个中断请求(INTR)信号。
转换结果可以通过 8个输出线路(DB0-DB7)获得。
三、实验器材2、*1 9针座(1x9 Pin Socket)。
3、*1 51单片机学习板。
4、*1 电阻10KΩ。
5、*1 电压源。
6、*1 面包板。
7、*5 条杜邦线。
四、实验步骤1、根据下表将ADC0809AD芯片插入到面包板中。
ADC0809AD引脚码ADC0809AD引脚名称功能1 A0- A/D输入(低、多路)引脚17 AGND 模拟地18 VREF/2 参考电压输出19 VCC 数字电源2、将9脚座插入面包板的横向边缘上。
3、使用杜邦线将ADC0809AD转换器连接到学习板上,并根据原理部分对芯片引脚进行接线。
4、将一个10KΩ的电阻连接到ADC0809AD芯片的IN+引脚和GND之间。
6、使用杜邦线将ADC0809AD芯片的DB0-DB7引脚连接到学习板的P0.0-P0.7引脚上。
7、将学习板的P0.0-P0.7引脚转为输出模式。
五、实验代码#include <reg52.h>// SFR位定义sfr ADC_CONTR = 0xBC; // ADC控制寄存器sfr ADC_RES = 0xBD; // ADC结果寄存器sfr ADC_RESL = 0xBE; // ADC结果低字节寄存器sfr P0 = 0x80; // P0口// 公用函数void delay(int time) // 延时函数{int i, j;for (i = 0; i < time; i++) {for (j = 0; j < 125; j++);}}while (1) {ADC_CONTR |= 0x08; // 开始转换while (!(ADC_CONTR & 0x10)); // 等待转换结束P0 = ADC_RES; // 将结果输出到P0口delay(1000); // 延时1000ms}}根据程序分析,程序采用了循环语句控制ADC的转换、输出,程序中实现的是ADC的一次转换。
微机原理实验之模数转换器ADC0809的使用
微机原理实验之模数转换器ADC0809的使用2011年05月18日星期三 10:04实验器材:模数转换器0809,8255(作为显示结果用的),实验台线路。
实验目的:貌似比较简单,就是知道ADC0809可以进行模数转换,了解一下它的地址分配,以及如何实现片选的,不知到同学们是否达到了这个目的,貌似很多人接好线,看看可以运行就撤退了。
实验内容:用ADC0809把滑动变阻器限制的电压转化成某个范围内的数字量并通过8255显示在发光二极管上。
实验步骤:一、接线。
1.ADC0809的接线。
从左上角引过滑动变阻器限制的输入电压连接到ADC0809的输入端I0上。
系统0.5M时钟频率发生器连接到ADC0809的CLK上,作为其工作的时钟信号。
将三条地址选择线A,B,C分别接到系统的A0,A1,A2上。
74LS138的210h~217h接到ADC0809A 的CS端。
(这里其实是两个门电路的公共输入端,起到了片选的效果)。
2.8255的接线。
CS端接到74LS138的200h~207h上,把A口与8个发光二极管对应相连。
二、程序。
code segmentassume cs:codestart:;init 8255 A output at mode 0mov dx,203hmov al,80hout dx,allp:;activate ADC0809mov dx,210hout dx,al;if you connect A,B,C with A0,A1,A2,al内容无所谓,but if 连D0,D1,D2,here al must be 0;delay 100us to wait for 0809 conversionmov cx,100del:loop del;display the outcome with 8255in al,dxmov dx,200hout dx,aljmp lpcode endsend start三、操作及结果。
哈理工单片机实验2:ADC0809编程
哈尔滨理工大学实验报告实验名称:ADC0809编程班级:学号:姓名:一、实验目的:1.熟悉ADC0809芯片的读写操作,学会将模拟电压量通过芯片转换为数字量;2.熟悉DS18B20温度芯片的操作,学会芯片转换到的温度数字量通过MCU控制显示到数码管上。
二、实验内容:1.ADC0809:通过MCU控制AD,将一路模拟量转换为数字量,并且将读到的数字量显示到数码管。
2.DS18B20:通过MCU控制温度芯片,将读到的温度数字量通过7279显示到数码管。
三、实验用设备仪器及材料:1.单片机实验盒。
2. Keil软件3.计算机。
四、实验方法及步骤:1. 打开Keil uVision4软件建一个工程,工程名为:ADC0809;2.建好工程后再点击菜单中的File选择new…新建一个AD.C文件并保存,并添加到工程中;3.通过查取芯片资料,编写C程序,通过编译后,生成16进制文件;4.将程序烧写到实验板上,完成调试;5.对于温度芯片,同以上步骤,烧写到实验板上,完成调试。
五、实验结果分析:ADC0908源程序:#include<stc15f2k60s2.h>#include <math.h>void long_delay(void);//长时延void short_delay(void);//短延时void write7279(unsigned char,unsigned char);//写入到7279void send_byte(unsigned char);//发送一个字节unsigned char digital;typedef unsigned char BYTE;typedef unsigned int WORD;sbit key=P4^3;//按键有效输出端,平时为高电平,sbit dat=P4^5;//串行数据输入/输出端,当芯片接收指令时,sbit clk=P4^6;//同步时钟输入端,向芯片发送数据及读取键盘数据时,sbit cs=P4^7; //片选输入端,此引脚为低电平时,可向芯片发送指令及读sbit kg1=P2^7;sbit kg2=P4^2;#define ADC_POWER 0x80 //ADC电源控制位#define ADC_FLAG 0x10 //ADC完成标志#define ADC_START 0x08 //ADC起始控制位#define ADC_SPEEDLL 0x00 //540个时钟#define ADC_SPEEDL 0x20 //360个时钟#define ADC_SPEEDH 0x40 //180个时钟#define ADC_SPEEDHH 0x60//90个时钟void InitUart();void SendData(BYTE dat);void Delay(WORD n);void InitADC();BYTE ch = 7; //ADC通道号unsigned int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,y,x,w;void main(){InitADC();kg1=0;kg2=0;P0=0xff;//初始化ADCIE = 0xa0; //开始AD转换 while (1);}/*ADC中断服务程序*/void adc_isr() interrupt 5 using 1{ADC_CONTR &= !ADC_FLAG; //清除ADC中断标志 P0=ADC_RES;a=0x01;b=ADC_RES;k=a&b;c=b>>1;d=a&c;e=b>>2;f=a&e;g=b>>3;h=a&g;i=b>>4;j=a&i;l=b>>5;m=a&l;n=b>>6;o=a&n;p=b>>7;q=a&p;s=q*128+o*64+m*32+j*16+h*8+f*4+d*2+k*1;y=s*5;w=y/256;x=(y*10)/256;w=floor(w);x=x%10;write7279(0x81,w+0x80);write7279(0x80,x);ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;}/*初始化ADC*/void InitADC(){P1ASF = 0xff; //设置P1口为AD口ADC_RES = 0;ADC_RESL = 0; //清除结果寄存器ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch; Delay(2); //ADC上电并延时}/*软件延时*/void Delay(WORD n){WORD x;while (n--){x = 5000;while (x--);}}//7279写函数void write7279(unsigned char cmd,unsigned char dta){send_byte(cmd);send_byte(dta);}void send_byte(unsigned char out_byte){unsigned char i;cs=0;long_delay();for(i=0;i<8;i++){if(out_byte&0x80){dat=1;}else{dat=0;}clk=1;short_delay();clk=0;short_delay();out_byte=out_byte*2;}dat=0;}void long_delay(void){unsigned char i;for(i=0;i<0x30;i++);}void short_delay(void){unsigned char i;for(i=0;i<8;i++);}DS18B20源程序:#include<STC15F2K60S2.h>/*------DS18B20 PORT-----*/ sbit DB_B20=P5^5;//P4^4;/*------HD7279 PORT-------*/sbit cs = P4^7;sbit clk = P4^6;sbit key = P4^3;sbit dat = P4^5;/*--- HD7279 FUNCTION-----*/unsigned char bdata dat_out1;unsigned char bdata dat_out2;sbit t1 = dat_out1^7;sbit t2 = dat_out2^7;void HD7279_init(void); //hd7279初始化void HD7279_send_one(unsigned char cmd); //发送单字节指令void HD7279_send_two(unsigned char cmd,unsigned char dat2);//发送双字节指令,cmd为指令,dat2为数据void send(unsigned char cmd);void display_tem(void);/*-----COMMON FUNCTION----*/void delay_l(unsigned int time);//长延时void delay_s(unsigned int time);//短延时/*--- DS18B20 FUNCTION-----*/unsigned char tem_pnt;unsigned char tem_num;bit tem_sign;void reset_B20(void);unsigned char read_b20_byte(void);void write_b20_byte(unsigned char);void convert_cmd_b20(void);void read_cmd_b20(void);void tem_receive_b20(void);void set_11bit(void);void b20_init(void);/*--- TIME FUNCTION-----*/unsigned char times;void times_init(void);/*-----------------------*/void main(void){b20_init();times_init();HD7279_init();while(1){delay_l(10);}}/*-----COMMON FUNCTION----*/void delay_s(unsigned int us) {while(us--);}void delay_l(unsigned int time) {unsigned char temp=200;while(time--){while(temp--);temp=200;}}/*--- DS18B20 FUNCTION-----*/ void b20_init(void){//P4SW = 0XFF;P5M1=0X00;P5M0=0X00;set_11bit();}void reset_B20(void){DB_B20=1;DB_B20=0;delay_s(300);//>480us 29 80DB_B20=1;delay_s(3);//15---60us 3while(DB_B20);delay_s(300);//480us 25 70DB_B20=1;}void write_b20_byte(unsigned char cmd) {unsigned char i;for(i=0;i<8;i++){DB_B20=0;delay_s(3);// 0DB_B20=cmd&0x01;delay_s(20); //8DB_B20=1;delay_s(3);cmd>>=1;}delay_s(6); //5}unsigned char read_b20_byte(void){unsigned char rbyte=0;unsigned char i;for(i=0;i<8;i++){rbyte>>=1;DB_B20=0;delay_s(3); //0DB_B20=1;delay_s(3); //0if(DB_B20)rbyte |= 0x80;delay_s(20); //6}return rbyte;}void set_11bit(void){reset_B20();write_b20_byte(0xcc);write_b20_byte(0x4e);write_b20_byte(90);write_b20_byte(10);write_b20_byte(0x5f);//12bit---7f 10bit----3f }void convert_cmd_b20(void){reset_B20();write_b20_byte(0xcc);write_b20_byte(0x44);}void read_cmd_b20(void){reset_B20();write_b20_byte(0xcc);write_b20_byte(0xbe);}void tem_receive_b20(void){unsigned char a;unsigned char b;int point;a=read_b20_byte();b=read_b20_byte();point=(a & 0x0f)*625;tem_pnt=point/1000;tem_num=a>>4 | b<<4;if(tem_num & 0x80)tem_sign=1;elsetem_sign=0;}/*--- TIME FUNCTION-----*/void times_init(void){times=29;TMOD=0X01;TH0=0X3C;TL0=0XB0;ET0=1;EA=1;TR0=1;}void time0(void) interrupt 1{TR0 = 0;if(times==0){convert_cmd_b20();read_cmd_b20();tem_receive_b20();display_tem();times=29;}TH0=0X3C;TL0=0XB0;times--;TR0 = 1;}/*-----------HD7279-*/void HD7279_init(void){cs=1;clk=0;dat=0;key=1;delay_l(60); //25msHD7279_send_one(0xA4); //resetdelay_l(60);}void send(unsigned char cmd){unsigned char temp=8;dat_out1=cmd;clk=0;delay_s(20); //T1while(temp){dat=t1;clk=1;delay_s(4);//T2clk=0;dat_out1<<=1;delay_s(4); //T3temp--;}}void HD7279_send_one(unsigned char cmd){cs = 0;send(cmd);cs = 1;}void HD7279_send_two(unsigned char cmd,unsigned char dat2) {unsigned char temp=8;cs = 0;dat_out2=dat2;send(cmd);delay_s(6);//T4-T3while(temp){dat=t2;clk=1;delay_s(4);//T2clk=0;dat_out2<<=1;delay_s(4); //T3temp--;}cs = 1;}void display_tem(void){unsigned char n;unsigned char p;if(tem_sign==1){n=~(tem_num-1);p=~(tem_pnt-1);}else{n=tem_num;p=tem_pnt;}if(tem_sign == 1)HD7279_send_two(0x83,0x0a);else if(n >= 100)HD7279_send_two(0x83,0x01);elseHD7279_send_two(0x83,0x0f);n%=100;HD7279_send_two(0x82,n/10);n%=10;HD7279_send_two(0x81,n|0x80);HD7279_send_two(0x80,p);}。
ADC0809
ADC0809采样控制器设计二、实验原理ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。
ADC0809的分辨率为8位,转换时间约100us,含锁存控制的8路多路开关,输出有三态缓冲器控制,单5V电源供电。
主要控制信号说明:如图8-1所示,START是转换启动信号,高电平有效;ALE是3位通道选择地址(ADDC、ADDB、ADDA)信号的锁存信号。
当模拟量送至某一输入端(如IN1或IN2等),由3位地址信号选择,而地址信号由ALE锁存;EOC是转换情况状态信号(类似于AD574的STA TUS),当启动转换约100us后,EOC产生一个负脉冲,以示转换结束;在EOC的上升沿后,若使输出使能信号OE为高电平,则控制打开三态缓冲器,把转换好的8位数据结果输至数据总线。
至此ADC0809的一次转换结束了。
图8-1 ADC0809工作时序【例8-1】module exp8(d,clk,eoc,lock,ale,start,oe,adda,q,reset);input reset;input[7:0] d;input clk,eoc;output lock,ale,start,oe,adda;output[7:0] q;reg[7:0] q;reg ale,start,oe,adda;reg[2:0] current_state,next_state;reg lock;//定义状态parameter st0=3'b000;parameter st1=3'b001;parameter st2=3'b010;parameter st3=3'b011;parameter st4=3'b100;parameter st5=3'b101;parameter st6=3'b110;//组合逻辑always @(current_state or eoc)begincase(current_state)st0:beginale=0;start=0;oe=0;lock=0;next_state=st1;end st1:beginale=1;start=0;oe=0;lock=0;next_state=st2;end st2:beginale=0;start=1;oe=0;lock=0;next_state=st3;end st3:beginale=0;start=0;oe=0;lock=0;if(eoc==1) next_state=st3;else next_state=st4;endst4:beginale=0;start=0;oe=0;lock=0;if(eoc==0) next_state=st4;else next_state=st5;endst5:beginale=0;start=0;oe=1;lock=0;next_state=st6;end st6:beginale=0;start=0;oe=1;lock=1;next_state=st0;enddefault:beginale=0;start=0;oe=0;lock=0;next_state=st0;end endcaseend//时序逻辑always @(posedge clk or posedge reset)beginif(reset) begincurrent_state=st0;adda=1;endelse current_state=next_state;end//数据锁存always @(posedge lock)beginq=d;endendmodule三、实验内容1. 利用Quartus II对ADC0809的采样控制电路进行设计。
微机原理综合性实验报告-AD转换器ADC0809数字温度计设计
微机原理与汇编语言综合性实验报告实验项目名称:A/D转换器 ADC0809数字温度计设计实验目的:掌握A/D转换原理,掌握0809A/D转换芯片的硬件电路和软件编程。
实验要求:包括开发环境要求,技术文档要求两部分。
开发环境要求:软件环境:windows98/windowsXP/windows2000,QTH-8086B环境硬件环境:计算机(Pen4CPU, 256MRAM,60G以上硬盘,输入输出设备)技术文档要求:按照实验报告编写要求进行。
要求软、硬件功能描述清晰,实验总结深刻。
实验内容:1 、实验原理图1 电路原理图本实验采用 ADC0809 做 A/D 转换实验。
ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为±1/512,适用于多路数据采集系统。
ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。
图中ADC0809的CLK信号接CLK=2.385MHZ,基准电压Vref(+)接Vcc。
一般在实际应用系统中应该接精确+5V,以提高转换精度,ADC0809片选信号0809CS和/IOW、/IOR经逻辑组合后,去控制ADC0809的ALE、START、ENABLE信号。
ADC0809的转换结束信号EOC未接,如果以中断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源输入通道。
本实验以延时方式等待A/D转换结束,ADC0809的通道号选择线ADD-A、ADD-B、ADD-C 接系统A/D转换器ADC0809数字温度计设计数据线的低3位,因此ADC0809的8个通道值地址分别为00H、01H、02H、03H、04H、05H 、06H、07H。
启动本A/D转换只需如下三条命令:MOV DX,ADPORT ;ADPORT为ADC0809端口地址。
MOV AL,DATA ;DATA为通道值。
MOV DX, AL ;通道值送端口。
ADC0809模数转换
ADC0809模数转换1. 实验目的与成效:模数转换在信号搜集中占有很重要的地位。
本实验采纳经典8位AD ――ADC080做一个0~5V 的电压表,并用数码管显示出来。
(说明:本实验板上的读AD 值端口跟数码管位选端口是分时复用的,呵呵,能够学习一下单片机端口分时复用)ADC0809简介:ADC0809是带有8位A/D 转换器、8路多路开关和微处置机兼容的操纵逻辑的CMOS 组件。
它是逐次逼近式A/D 转换器,能够和单片机直接接口。
(1). (1). ADC0809的内部逻辑结构由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D 转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,许诺8路模拟量分时输入,共用A/D 转换器进行转换。
三态输出锁器用于锁存A/D 转换完的数字量,当OE 端为高电平常,才能够从三态输出锁存器取走转换完的数据。
(2). (2). 引脚结构IN0-IN7:8条模拟量输入通道ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V ,假设信号过小,必需进行放大;输入的模拟量在转换进程中应该维持不变,如假设模拟量转变太快,那么需在输入前增加采样维持电路。
地址输入和操纵线:4条ALE 为地址锁存许诺输入线,高电平有效。
当ALE 线为高电平常,地址锁存与译码器将A ,B ,C 三条地址线的地址信号进行锁存,经译码后被8路模拟量开关8路A/D 转换器三态输出锁存器地址锁存与译码器IN0 I N1 I N2 I N3 I N4 I N5 I N6 I N7 A B C A LEVREF(+)VREF(-)OEEOCD0 D 1 D 2 D 3 D 4 D 5 D 6 D 7CLKST选中的通道的模拟量进转换器进行转换。
A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
通道选择表如下表所示。
C B A 选择的通道0 0 0 IN00 0 1 IN10 1 0 IN20 1 1 IN31 0 0 IN41 0 1 IN51 1 0 IN61 1 1 IN7数字量输出及操纵线:11条START为转换启动信号。
adc0809实验报告
adc0809实验报告adc0809实验报告引言:在现代科技发展的今天,模拟信号与数字信号的转换已经成为了一个非常重要的领域。
而ADC(Analog-to-Digital Converter)芯片的应用则是实现这种转换的重要手段之一。
本实验旨在通过使用ADC0809芯片,对模拟信号进行采样和转换,进而实现模拟信号的数字化处理。
一、实验目的本实验的主要目的是通过使用ADC0809芯片,掌握模拟信号的数字化转换原理和方法,并能够进行模拟信号的采样和转换。
二、实验器材1. ADC0809芯片2. 电压源3. 示波器4. 电阻、电容等元器件5. 电路板等实验设备三、实验原理ADC0809芯片是一种8位的逐次逼近型模数转换器。
它通过对模拟信号进行采样,再经过一系列的比较和逼近,最终将模拟信号转换为相应的8位数字信号。
四、实验步骤1. 搭建实验电路:根据实验要求,将ADC0809芯片与其他元器件连接起来,形成完整的电路。
2. 设置电压源:根据实验需要,设置适当的电压源,以提供模拟信号的输入。
3. 连接示波器:将示波器与ADC0809芯片的输出端连接,以便观察数字信号的波形。
4. 运行实验:通过控制电路中的时钟信号,使ADC0809芯片开始对模拟信号进行采样和转换。
5. 观察结果:通过示波器观察数字信号的波形,并记录下相应的数据。
五、实验结果与分析通过实验观察和记录,我们可以得到一系列的数字信号数据。
通过对这些数据的分析和处理,我们可以得到模拟信号的数字化表示。
同时,我们还可以通过对数字信号的波形进行分析,了解模拟信号在转换过程中可能出现的误差和失真情况。
六、实验总结通过本次实验,我们深入了解了ADC0809芯片的工作原理和应用方法。
通过实际操作和观察,我们掌握了模拟信号的数字化转换技术。
同时,通过对实验结果的分析和总结,我们对模拟信号的数字化处理有了更为深入的理解。
七、实验心得本次实验对于我们来说是一次非常有意义的实践活动。
使用ADC0809的AD转换实验
实验二 使用ADC0809的A/D 转换实验一、实验目的加深理解逐次逼近法模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D 输入程序的设计和调试方法。
二、预备知识逐次逼近法A/D 也称逐次比较法A/D 。
它由结果寄存器、D/A 、比较器和置位控制逻辑等部件组成,如图5-1所示。
图5-1三、实验内容1 、实验原理本实验采用 ADC0809 做 A/D 转换实验。
ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D 器件,转换时间约100us ,转换精度为±1/512,适用于多路数据采集系统。
ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。
IN-026msb2-1212-220IN-1272-3192-418IN-2282-582-615IN-312-714lsb2-817IN-42E OC7IN-53ADD-A 25IN-64ADD-B 24ADD-C 23IN-75ALE22ref(-)16E NABL E 9ST ART 6ref(+)12CLOCK 10UB43ADC0809123UB42A 74L S02456UB42B 74L S02E B4122U/16VCB41103RB41510IORIOWVCCADD0ADD1ADD2GNDGNDGNDVre f+5VIN6IN7IN1IN2IN3IN4IN5D7D0D1D2D3D4D5D6E OC/EOCIN0CS_0809CLK_080912UA32A 74L S04WA5110K VCCGNDRA51100V1Y61MHZ图中ADC0809的CLK 信号接CLK=,基准电压Vref(+)接Vcc 。
一般在实际应用系统中应该接精确+5V ,以提高转换精度,ADC0809片选信号0809CS 和/IOW 、/IOR 经逻辑组合后,去控制ADC0809的ALE 、START 、ENABLE 信号。
ADC0809模数转换实验
ADC0809模数转换实验ADC0809是一种八位串行型CMOS模数转换器,它将模拟信号转换为数字信号。
在本次实验中,我们将探究ADC0809的工作原理,并使用其进行模数转换。
一、实验材料1. ADC0809芯片2. Arduino开发板3. 可变电阻4. 电容5. 杜邦线二、实验原理1.模数转换原理模数转换是将模拟信号转换为数字信号的过程。
模拟信号是指在连续的时间内,信号的所有可能取值都有可能发生的信号。
数字信号是模拟信号经过一定的采样和量化处理后得到的离散信号。
模数转换的基本原理是将模拟信号转化为数字信号。
数字信号的特点是离散的,可以方便的进行计算和存储。
模数转换一般包括两个步骤:采样和量化。
采样是指将连续时间内的模拟信号转换为离散的时间点上的信号,采用的采样定理是:“采样频率必须大于等于原信号中最高频率成分的两倍”。
量化是指将连续幅度的信号转换为一组离散的数值。
采用比较法,对模拟信号的幅度进行比较,将其与参考电平进行比较,将其转换为数字信号。
ADC0809是一种CMOS串行型八位模数转换器,由时序控制逻辑、数据寄存器、比较器、参考电压源和采样保持电路等部分组成。
ADC0809的详细结构如下图所示:ADC0809的基本原理是将模拟信号通过采样、保持和比较等操作,将其转换为等效的数字信号输出,输出的数据位数为8位。
3. 实验任务本次实验的任务是使用ADC0809将可变电阻的模拟信号转换为数字信号,并通过Arduino开发板来输出这个转换结果。
具体实验步骤如下:三、实验步骤1.搭建实验电路在Arduino开发环境中,编写以下代码: int cs=8;int rd=9;int wr=10;int intr=11;int clock=13;int data=12;int value=0;void setup(){pinMode(cs,OUTPUT);pinMode(rd,OUTPUT);pinMode(wr,OUTPUT);pinMode(intr,INPUT);pinMode(clock,OUTPUT);pinMode(data,INPUT);Serial.begin(9600);}void loop(){digitalWrite(cs,LOW);digitalWrite(rd,HIGH);digitalWrite(wr,HIGH);while(digitalRead(intr));for(int i=0;i<8;i++){digitalWrite(clock,HIGH);value=value<<1|digitalRead(data);digitalWrite(clock,LOW);}Serial.println(value);}将Arduino板上的程序烧录到开发板上,然后调节可变电阻,观察串口输出的数值变化。
一提高实验ADC0809转换器实验
待计数器计满之后,自动回到全零来自态,产生下一个锯 齿波。(2)设计一个单路信号采样的显示电路 用ADC0809转 换器一片、七段译码器和七段显示器各两片,实现单路 模拟量采样的显示电路,模拟量为变化比较缓慢的信号, 显示器用十六进制数进行显示。
实验六 A/D和D/A转换器实验
(一)提高性实验—— ADC0809 转换器实验 1.实验目的 通过实验了解 ADC0809 集成 A/D 转换器的 性能及转换过程,熟悉ADC0809 的使用方法。
2.实验元件
3.实验电路
ADC0809 实验电路图
4.实验内容及要求
( 1 )分析 ADC0809 实验电路的接线原理,确定该电 路中的电组值,并按此电路图接线,将信号发生器的 500 kHz 脉冲信号输入电路。
(3)用A/D和D/A转换器构成乘法器和除法器 用DAC0832转
换器构成乘法器,实现数字量D与模拟量ui的相乘 。用
ADC0809转换器构成除法器.
3.实验内容及要求 (1)对实验题目(1) 按实验电路,安装调试该电路加 入脉冲信号,用示波器观察输出波形。 (2)对实验题目(2) 根据要求设计电路,按所设计好 的电路接线,加入100kHz的时钟信号对直流0~5V电压进 行采样,通过数码管进行显示,记录转换后的十六进制数 ,并作输入输出关系曲线。 (3)对实验题(3) 根据题目要求设计电路,按此电 路安装调试,分别改变各输入量,观测输出结果。
模数转换ADC0809实验
微机原理与接口实验报告实验名称:模数转换ADC0809实验班级:学号:姓名:指导老师:实验报告要求一.实验目的1.掌握ADC0809接口电路与微机的硬件电路连接方法。
2.掌握A/DADC0809接口电路的程序设计和调试方法。
二.实验仪器1.微型计算机一台。
DVCC-5286JH型微机原理与接口实验系统,排线、导线若干。
三.实验原理1、实验要求本实验采用 ADC0809做A/D 转换实验。
ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为±1/512,适用于多路数据采集系统。
ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。
ADC0809的CLK信号接CLK=2.385MHZ,基准电压Vref(+)接Vcc。
一般在实际应用系统中应该精确+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。
调节电位器W1,以改变模拟电压值,显示器上会不断显示新的A/D转换结果。
用ADC0809做A/D转换,其模拟量与数字量对应关系的典型值为+5V-FFH,2.5V-80H,0V-00H。
2、实验电路原理及连接3、实验程序流程图三.实验源程序CODE SEGMENTASSUME CS:CODE ADPORT E QU 0010hORG 1000HSTART: JMP ADCONTORL ADCONTORL:CALL FORMAT ADCON: MOV AX,00MOV DX,ADPORTOUT DX,ALMOV CX,0500H DELAY: LOOP DELAYMOV DX,ADPORTIN AL,DXCALL CONVERSCALL DISPJMP ADCON CONVERS:MOV AH,ALAND AL,0FHMOV BX,077AHMOV DS:[BX],ALINC BXMOV AL,AHAND AL,0F0HMOV CL,04HSHR AL,CLMOV DS:[BX],ALRETdisp: mov dx,077Fhmov ah,20hdisp0: mov cx,00ffhmov bx,dxmov bl,ds:[bx]mov bh,0hpush dxmov dx,0ff22hmov al,cs:[bx+1060h]OUT DX,ALmov dx,0ff21hmov al,ahOUT DX,ALdisp1: loop disp1pop dxdec dxshr ah,01hjnz disp0mov dx,0ff22hmov al,0ffhOUT DX,ALretdata1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0ah db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfhFORMAT: MOV BX,0MOV WORD PTR DS:[BX+077AH],0000HADD BX,2MOV WORD PTR DS:[BX+077AH],0009HADD BX,2MOV WORD PTR DS:[BX+077AH],0008HRETCODE ENDSEND START四.实验结果分析取一个中间结果:58五.心得体会通过本次实验掌握了ADC0809接口电路与微机的硬件电路连接方法、A/DADC0809接口电路的程序设计和调试方法、加深理解逐次逼近法模数转换器的特征和工作原理以及掌握ADC0809的接口方法,以及A/D输入程序的设计和调试方法。
AD转换器ADC0809数字温度计设综合性实验报告
微机原理与汇编语言综合性实验报告实验项目名称:A/D转换器 ADC0809数字温度计设计专业班级:数学与应用数学姓名:何荣航学号: 9实验起止日期: 2013 年 12月14日起 2013 年12月20日止实验目的:掌握A/D转换原理,掌握0809A/D转换芯片的硬件电路和软件编程。
实验要求:包括开发环境要求,技术文档要求两部分。
开发环境要求:软件环境:Windows98/WindowsXP/Windows2000,QTH-8086B环境硬件环境:计算机(Pen4CPU, 256MRAM,60G以上硬盘,输入输出设备)技术文档要求:按照实验报告编写要求进行。
要求流程图绘制规范,软、硬件功能描述清晰,实验总结深刻。
实验内容:一、实验原理1、ADC0809电路连接简图:图1-1 ADC0809电路连接图本实验采用 ADC0809 做 A/D 转换实验。
ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为±1/512,适用于多路数据采集系统。
ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。
如图1-1所示,ADC0809的CLK信号接CLK=2.385MHZ,基准电压Vref(+)接Vcc。
一般在实际应用系统中应该接精确+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。
ADC0809模拟量采集实验报告
ADC0809模拟量采集一.实验目的(1)了解将模拟量转换成数字量的基本原理。
(2)学会利用ADC0809芯片进行摸/数转换的编程方法。
二.实验内容将电位器产生的模拟电压信号转换成数字信号,转换结果送入主机内存中,并在屏幕上显示。
取256个采样点。
三.线路连接ADC0809有8个模拟输入端IN7~IN0,输入模拟量电压范围为0V ~+5V ,旋转电位器SW1产生不同的模拟电压,作为模拟输入量。
实验电路中只开通了IN0一路模拟量输入,其它输入端未使用。
ADC0809的D7~D0引脚与主机数据总线相连接。
ADC0809的START 端为A/D 转换启动信号,ALE 端为通道地址的锁存信号。
线路中将START 端与ALE 端连接,以便锁存通道地址,同时启动A/D 采样并进行转换。
ADC0809的CLOCK 端的时钟频率范围为10~1280KHz ,本实验中采用1MHz 。
ADC0809的结束信号EOC 用来产生中断请求信号,请求CPU 读入转换后的结果。
实验接线如图4.9所示。
四.编程提示(1)发出启动A/D 转换信号由于START 与ALE 相连,所以在通道地址锁存的同时,发出A/D 转换信号。
通道IN0地址为PCI 外扩设备基地址+外扩设备译码器输出地址。
(2)将转换结果读入内存当A/D 转换结束后,CPU 从ADC0809输出端接收数据。
五.流程图程序流程如图4.10所示。
图4.9 ADC0809模/数转换实验线路图18 19 20 21D 3 D 4 D 5 D 6 D 72-5 2-4 2-3 2-22-1(MSB)&六.参考程序DA TA SEGMENT;数据段 IOPORT EQU 0D880H-280H;端口基地址 IO0809A EQU IOPORT+298H;0809通道0地址CRT DB 'SPIN “SW1”SWITCH ,VIEW ON THE DISPLA Y ',0DH ,0AHDB 'ENTER ANY KEY CAN EXIT TO DOS ',0DH ,0AH , '$' ;提示信息DA TA ENDS CODE SEGMENT;代码段ASSUME CS :CODE ,DS :DA T AST ART : MOVAX ,DA T A;初始化,取段基址MOV DS ,AXMOV DX ,OFFSET CRT ;AX←CRT 段基址 MOV AH ,09H;DOS 9号调用,显示提示信息INT21HLAB : MOV DX ,IO0809A ;DX ←IN 0端口地址 OUT DX ,AL ;启动A/D 转换 MOV CX ,0FFFFH ;CX=FFFFH DELA Y : LOOPDELA Y ;调延时子程序 IN AL ,DX;AL ←IN 0端口数据MOV BL ,AL ;BL ←AL ,暂存IN 0端口数据 MOV CL ,4 ;CL=4SHR AL ,CL ;AL 内容右移4位, CALL DISP ;调显示子程序,显示高四位 MOV AL ,BL ;AL ←BL ,IN 0端口数据 AND AL ,0FH;“与”操作,屏蔽高4位CALLDISP;调显示子程序,显示低四位MOV AH,02 ;DOS 2号调用MOV DL,20H ;DL=20H,“空格”的ASCII码INT 21H ;显示空格INT 21H ;显示空格PUSH DX ;DX进栈保护MOV AH,06H ;DOS 6号调用,有键按下退出MOV DL,0FFH ;DL=FFHINT 21H ;执行键盘输入操作POP DX ;DX出栈JE LAB ;ZF=1,没有键按下,转到标号LAB继续从IN0端口输入数据MOV AX,4C00H ;返回DOSINT 21HDISP PROC NEAR ;显示字符子程序MOV DL,AL ;DL←ALCMP DL,9 ;DL内容与9比较JLE DDD ;D L≤9,转到标号DDDADD DL,7 ;D L>9,DL←DL+7DDD:ADD DL,30H ;DL←DL+30H,转换成ASCII码MOV AH,02 ;DOS 2号调用INT 21H ;显示字符RETDISP ENDPCODE ENDSEND ST ART ;结束七.编译过程DAC0832控制直流电机转速一.实验目的(1)学习并掌握DAC0832的性能及编程方法。
ADC0809模数转换技术
附页:实验线路图:编译程序:源程序代码:1 汇编语言程序清单CS8279C EQU 0FFFFHCS8279D EQU 0FFFEHCS0809 EQU 0A007HADRESULT EQU 3AHADBAK EQU 3BH; DISPLAY BUFF 30H(low) ~ 35H (high)ORG 0000HMAIN:MOV SP, #60HACALL INI8279MOV ADRESULT, #00HMOV ADBAK, #0FFHMAINLP:ACALL DISPLAYACALL EXINT1SJMP MAINLPEXINT1:MOV DPTR,#CS0809MOVX @DPTR,A ;START CONVERTMOV R6,#30DLY: NOPNOPNOPDJNZ R6,DLYMOVX A,@DPTR ; READ CONVERT RESULTMOV ADRESULT,ARET; subprogram name :INI8279; function: initial 8279 as 8 digtal left in ALE/10; input parameter : none; output parameter: none; others 8279 command port address 0FFE9H;8279 data port address 0FFE8H; the subprogram affect A、 DPTRINI8279:MOV DPTR,#CS8279CMOV A,#0DDH ; First set all display RAM as 0FFHMOVX @DPTR,AIL0:MOVX A,@DPTR ;wait clearJB ACC.7,IL0LCALL DLT ; WAIT 400MSLCALL DLTMOV A,#0D1H ; clear all display RAM as 00HMOVX @DPTR,AIL1:MOVX A,@DPTRJB ACC.7,IL1LCALL DLTLCALL DLTMOV A,#00H ;key/display mode command word 000DDKKK MOVX @DPTR,A ;8 char left inMOV A,#2AH ; ALE/10MOVX @DPTR,ARETDLT: MOV R7,#200 ; Delay 400 ms(6M)DLT1: MOV R6,#250 ; 12TDLT2: DJNZ R6,DLT2 ; 24TDJNZ R7,DLT1RET; NAME:DISPLAY 显示子程序DISPLAY:MOV A,ADRESULTCJNE A,ADBAK,REDISPSJMP DSPEXITREDISP:MOV ADBAK, ADRESULTACALL CONVBCDMOV DPTR,#CS8279CMOV A,#90H ;write display RAM commandMOVX @DPTR,AMOV R7,#6MOV DPTR,#CS8279DMOV R0,#30HDISPL1:PUSH DPLPUSH DPHMOV A,@R0MOV DPTR,#TABMOVC A,@A+DPTRPOP DPHPOP DPLMOVX @DPTR,AINC R0DJNZ R7,DISPL1DSPEXIT:RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB 0FFH,00H,73H ; 全亮;全灭;PConvert ADRESULT to BCD; send to 30H ~ 35H locationCONVBCD:MOV A,ADRESULTMOV B,#100DIV ABMOV 32H,AMOV A,BMOV B,#10DIV ABMOV 31H,AMOV A,BMOV 30H,AMOV A,32HCJNE A,#00,CONB1MOV A,31HCJNE A,#00,CONB2MOV R7,#5SJMP CONB3CONB2:MOV R7,#4SJMP CONB3CONB1:MOV R7,#3CONB3:MOV R0,#35HMOV A,#0BHCONBLP:MOV @R0,ADEC R0DJNZ R7,CONBLPRETEND ; program end2 C 语言程序清单#include <AT89X51.H>#include <absacc.h>#define uchar unsigned char#define COM XBYTE[0xffff] // 8279命令端口#define DAT XBYTE[0xfffe] // 8279数据端口#define CS0809 XBYTE[0xA007] // 通道7#define adresult DBYTE[0x3A] // 用于存放A/D转换结果#define adbak DBYTE[0x3B] // 备份A/D转换结果#define hun DBYTE[0x3C] // A/D转换结果的百位#define ten DBYTE[0x3D] // A/D转换结果的十位#define one DBYTE[0x3E] // A/D转换结果的个位//共阴数码管段码:0~9,全亮,全灭,Puchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xFF,0x00,0x73};void ini8279(){ COM=0xD1; //8279显示RAM和键盘RAM清零do{ACC=COM;}while(CY); //等待清除完毕//显示方式设为8个字符左边输入COM=0; //键盘工作方式设为编码扫描键盘方式,双键互锁COM=0x2A; // 外部信号的频率是1MHz,需要进行10分频}void exint1(void){uchar i;CS0809=0; //启动A/D转换for(i=19;i>0;i--); //延时100usadresult=CS0809; //读取A/D转换结果值}void convbcd(void){hun=adresult/100; //求得百位ten=adresult%100/10; //求得十位one=adresult%10; //求得个位if(hun==0) //如果百位为0,则该位对应的数码管灭 { hun=11;if(ten==0) //如果十位为0,则该位对应的数码管灭 ten=11;}}void display(void){if(adresult!=adbak){adbak=adresult;convbcd();COM=0x90; //写显示RAM命令DAT=tab[one]; //送个位的段码到显示RAM DAT=tab[ten]; //送十位的段码到显示RAM DAT=tab[hun]; //送百位的段码到显示RAM DAT=tab[11]; //送全灭的段码到显示RAM DAT=tab[11];DAT=tab[11];}}void main(void){SP=0x60;ini8279(); //初始化8279adresult=0;adbak=0xff;do{display(); //显示A/D转换结果值exint1(); //执行一次A/D转换}while(1);}。
实验三数模转换器(0809)
实验三数/模转换器(0809)一.实验目的了解模/数转换的基本原理。
掌握ADC0809的使用方法二.实验内容1.通过实验台左下角电位器RW1输出0—5V直流电压送入ADC0809通道0(INT0),利用DEBUG 的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。
启动IN0开始转换:O 0298,0读取转换结果:I 02982.编程采集IN0输入的电压,在屏幕上显示出转换结果。
三.实验提示1.ADC0809的IN0口地址为298H,IN1口地址为299H。
微机分配的ADC0809的IN0口地址为0C418H,IN1口地址为0C419H。
2.IN0单极性输入电压与转换后数字的关系为:N=Ui/(Uref/256)其中Ui为输入电压,Uref为参考电压,这里参考电压为PC机的+5V电压。
3.一次A/D转换的程序可以为MOV DX ,口地址;启动结果OUT DX,AL; 延时IN AL, DX ;读取转换结果放在AL中四.参考流程图五.输入源程序CODE SEGMENT ASSUME CS:CODE START:MOV DX,0C418H OUT DX,ALDELAY:IN AL,DXMOV BL,ALMOV CL,4SHR BL,CLMOV DL,BLCMP DL,09HJBE SHOW1ADD DL,07HSHOW1:ADD DL,30HMOV AH,02HINT 21HMOV BL,ALAND BL,0FHMOV DL,BLCMP DL,09HJBE SHOW2ADD DL,07HSHOW2:ADD DL,30HMOV AH,02HINT 21HMOV AH,02HINT 21HMOV DL,0FFHMOV AH,O6HINT 21HJZ STARTMOV AH,4CHINT 21HCODE ENDSEND START源程序分析本程序结构比较简单。
在程序开头设置了IN0口地址0C418H,设为连接口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编程提示:(1)发出启动A/D转换新号;(2)将转换信号读入内存。
程序:
DA TA SEGMENT
IOPORT EQU 0D880H-280H
IO0809A EQU IOPORT+298H ;0809通道0地址
CRT DB 'SPIN"SW1"SWITCH,VIEW ON THE DISPLAY',0DH,0AH DB 'ENTER ANY KEY CAN EXIT TO DOS',0DH,0AH,'$'
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET CRT
MOV AH,09H
INT 21H
LAB: MOV DX,IO0809A ;IN0端口
OUT DX,AL
MOV CX,0FFFFH
DELAY: LOOP DELAY ;延时
IN AL,DX ;读数据
MOV BL,AL
MOV CL,4
SHR AL,CL
CALL DISP ;显示高四位
MOV AL,BL
AND AL,0FH
CALL DISP ;显示低四位
MOV AH,02
MOV DL,20H ;显示空格
INT 21H
INT 21H
PUSH DX
MOV AH,06H ;有键按下退出
MOV DL,0FFH
INT 21H
POP DX
JE LAB ;没键按下继续
MOV AX,4C00H
INT 21H
DISP PROC NEAR ;显示字符子程序
MOV DL,AL
CMP DL,9
JLE DDD
ADD DL,7
DDD: ADD DL,30H
MOV AH,02
INT 21H
RET
DISP ENDP
CODE ENDS
END START
2.实验原理
ADC0809是CMOS型的8位逐次逼近式单片A/D转换器,模拟开关通过位地址输入组合选择模拟输入通道,转换结束信号的处理方式有查询方式、冲断方式、延时方式
三、主要仪器设备
1.TPC-2003A实验系统
2.计算机
四、实验方法及实验步骤
1.连接试验电路
ADC0809有8个模拟输入端IN7~IN0,输入模拟量电压范围为0V~+5V,旋转电位器SW1产生不同的模拟电压,作为模拟输入量。
实验电路中只开通了IN0一路模拟量输入,其它端未使用。
ADC0809的D7~D0引脚与主机数据总线相连接。
ADC0809的START端为A/D转换启动信号,ALE端为通道地址的锁存信号。
线路中将START端与ALE端连接,以便锁存通道地址,同时启动A/D采样并进行转换。
ADC0809的CLOCK端的时钟频率范围为10~1280KHz,本实验中采用1MHz。
ADC0809的结束信号EOC用来产生中断请求信号,请求CPU读入转换后的结果。
2.打开主机进入DOS环境:开始—运行—cmd确定
3.编辑、汇编、链接汇编语言程序
E:
CD MASM
(1)编辑汇编语言源程序:
EDIT adc.ASM
编辑源程序。
(2)汇编链接源程序:
ML adc.ASM
没有语法错误,继续下一步,有错,则返回上一部编辑状态,改错。
4.打开扩展卡I/O端口地址
(1)进入DOS全屏模式:
Alt+Enter
(2)打开I/O端口地址:
RUN
5.运行和调试汇编程序
试验箱通电
(1)直接运行汇编、链接所产生的可执行的文件
adc
(2)调试器运行汇编语言可执行文件。
五、实验数据记录及处理
六、实验结果与分析
实验中,发出启动A/D转换信号,由于START端与ALE端连接,所以在通道地址锁存的同时,发出A/D转换信号,通过INo地址为PCI外设备基地址+外扩设备备基地址+外扩设备译码器输出地址,将转换信号读入内存,当A/D转换结束后,CPU从ADC0809输出端接收数据,显示在屏幕上,SW1控制着采样信号。
七、讨论、心得
通过本次试验,了解将模拟量转换成数字量的基本原理并学会利用ADC0809芯片进行
模/数转换的编程方法。