单片机实验(AD转换)

合集下载

单片机AD转换实验报告

单片机AD转换实验报告

单片机实验报告(五)实验名称:A/D转换姓名:张昊学号:110404247班级:通信2班时间:2013.12南京理工大学紫金学院电光系一、实验目的1、理解A/D转换的工作原理;2、理解掌握ADC0809的A/D转换原理和并行A/D转换器接口的编程方法;3、学习使用并行模/数转换芯片ADC0809进行电压信号的采集和数据处理。

二、 实验原理在设计A/D 转换器与单片机接口之前,往往要根据A/D 转换器的技术指标选择A/D 转换器。

A/D 转换器的主要技术指标-----量化间隔和量化误差是A/D 转换器的主要技术指标之一。

量化间隔可用下式表示,其中n 为A/D 转换器的位数:A/D 转换器芯片种类很多,按其转换原理可分为逐次比较式、双重积分式、量化反馈式和并行式A/D 转换器;按其分辨率可分为8~16位的A/D 转换器芯片。

目前最常用的是逐次逼近式和双重积分式。

A/D 转换器与单片机接口具有硬、软件相依性。

一般来说,A/D 转换器与单片机的接口主要考虑的是数字量输出线的连接、ADC 启动方式、转换结束信号处理方法以及时钟的连接等。

一个ADC 开始转换时,必须加一个启动转换信号,这一启动信号要由单片机提供。

不同型号的ADC ,对于启动转换信号的要求也不同,一般分为脉冲启动和电平启动两种:对于脉冲启动型ADC ,只要给其启动控制端上加一个符合要求的脉冲信号即可,如ADC0809、ADC574等。

通常用WR 和地址译码器的输出经一定的逻辑电路进行控制;对于电平启动型ADC ,当把符合要求的电平加到启动控制端上时,立即开始转换。

在转换过程中,必须保持这一电平,否则会终止转换的进行。

因此,在这种启动方式下,单片机的控制信号必须经过锁存器保持一段时间,一般采用D 触发器、锁存器或并行I/O 接口等来实现。

AD570、AD571等都属于电平启动型ADC 。

当ADC 转换结束时,ADC 输出一个转换结束标志信号,通知单片机读取转换结果。

单片机AD模数转换实验报告

单片机AD模数转换实验报告

单片机AD模数转换实验报告一、实验目的和要求1、掌握单片机与ADC0809的接口设计方法。

2、掌握Proteus软件与Keil软件的使用方法。

二、设计要求。

1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与0809接口。

2、在0809的某一模拟量输入通道上接外部模拟量。

3、在单片机的外部扩展数码管显示器。

4、分别采用延时和查询的方法编写A/D 转换程序。

5、启动A/D转换,将输入模拟量的转换结果在显示器上显示。

三、电路原理图。

图1、电路仿真图四、实验程序流程框图和程序清单。

1、查询法:ORG 0000HSTART: LJMP MAINORG 0100HMAIN: MOV SP, #2FH NT: MOV DPTR, #0FF78H MOVX @DPTR, A LOOP: JB P3.3, LOOP MOVX A, @DPTR MOV B, #51 DIV AB MOV R0, A MOV A, B MOV B, #5 DIV AB MOV R1, A MOV R2, B LCALL DIR SJMP NT DIR: MOV R7, #0 SJMP LOOP1 BH: MOV A, R1 MOV R2, A LOOP1: MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R2 MOVC A, @A+DPTR MOV P1, A LCALL DELAY INC R7 CJNE R7, #2, BH MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R0 MOVC A, @A+DPTR ANL A, #7FH MOV P1, A LCALL DELAY RET DELAY: M OV R5, #01H DL1: MOV R4, #8EH DL0: MOV R3, #02H DJNZ R3, $ DJNZ R4, DL0 DJNZ R5, DL1 RET WK: DB 10H DB 20H DB 40H DK: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ENDdisplay 送百分位字符代码送位选信号延时1ms 送十分位字符代码送位选信号延时1ms 送个位及小数点字符代码送位选信号延时1ms 熄灭第四位数码管延时1ms 返回display 送百分位字符代码送位选信号延时1ms 送十分位字符代码送位选信号延时1ms 送个位及小数点字符代码送位选信号延时1ms 熄灭第四位数码管延时1ms 返回2、延时法:ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH LOOP: MOV DPTR, #0FF78H MOVX @DPTR, A LCALL DELAY MOVX A, @DPTR MOV B, #51 DIV AB MOV R0, A MOV A, B MOV B, #5 DIV AB MOV R1, A MOV R2, B LCALL DIR SJMP LOOP DIR: MOV R7, #0 SJMP LOOP1 BH: MOV A, R1 MOV R2, A LOOP1: MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R2 MOVC A, @A+DPTR MOV P1, A LCALL DELAY INC R7 CJNE R7, #2, BH MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R0 MOVC A, @A+DPTR ANL A, #7FH MOV P1, A LCALL DELAY RET DELAY: M OV R5, #01H DL1: MOV R4, #8EH DL0: MOV R3, #02H DJNZ R3, $ DJNZ R4, DL0 DJNZ R5, DL1 RET WK: DB 10H DB 20H DB 40H DK: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H开始启动AD 延时从AD中取数据数据处理结束调显示子函数END五、实验结果。

单片机AD转换实验

单片机AD转换实验

一、实验目的1、掌握单片机与ADC0809的接口设计方法。

2、掌握Proteus软件与Keil软件的使用方法。

二、实验要求1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与0809接口。

2、在0809的某一模拟量输入通道上接外部模拟量。

3、在单片机的外部扩展数码管显示器。

4、分别采用延时和查询的方法编写A/D转换程序。

5、启动A/D转换,将输入模拟量的转换结果在显示器上显示。

三、实验电路图四、实验程序流程框图和程序清单1、查询ORG 0000H START:LJMP MAINORG 0100HMAIN: MOV SP, #6FHCLR EALOOP: MOV DPTR, #0fef8H MOVX @DPTR, ALOOP1:JNB P3.2, LOOP1MOVX A, @DPTRMOV B, #51DIV ABMOV 23H, AMOV A, #10MOV 22H, AMOV A, BLCALL CHULIMOV 21H, AMOV A, BLCALL CHULIMOV 20H, A LCALL DIRLJMP LOOPDIR: PUSH ACCPUSH DPHPUSH DPLPUSH PSWSETB RS1SETB RS0MOV R0, #20HMOV R3, #0FEH LOOP2:MOV P2, R3 MOV DPTR, #TAB1MOV A, @R0MOVC A, @A+DPTRMOV P1, ALCALL DELAYINC R0MOV A, R3JNB ACC.3, LOOP3RL AMOV R3, ALJMP LOOP2LOOP3:POP PSWPOP DPLPOP DPHPOP ACCRETTAB1:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,07FH DELAY:MOV R7, #01HDL1: MOV R6, #8EHDL0: MOV R5, #02HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1RETCHULI:CJNE A, #25, LPLJMP LP2LP: JNC LP1LP2: MOV B, #10MUL ABMOV B, #51DIV ABLJMP LP3LP1: CLR CSUBB A, #25MOV B, #10MUL ABCLR CSUBB A, #5MOV B, #51DIV ABADD A, #5LP3: RETEND2、延时ORG 0000HSTART:LJMP MAINORG 0100HMAIN: MOV SP, #6FHCLR EALOOP: MOV DPTR, #0fef8HMOVX @DPTR, ALCALL DELAY100MOVX A, @DPTRMOV B, #51DIV ABMOV 23H, AMOV A, #10MOV 22H, AMOV A, BLCALL CHULIMOV 21H, AMOV A, BLCALL CHULIMOV 20H, ALCALL DIRLJMP LOOPDIR: PUSH ACCPUSH DPHPUSH DPLPUSH PSWSETB RS1SETB RS0MOV R0, #20HMOV R3, #0FEHLOOP2:MOV P2, R3MOV DPTR, #TAB1MOV A, @R0MOVC A, @A+DPTRMOV P1, ALCALL DELAYINC R0MOV A, R3JNB ACC.3, LOOP3RL AMOV R3, ALJMP LOOP2LOOP3:POP PSWPOP DPLPOP DPHPOP ACCRETTAB1:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,07FH DELAY:MOV R7, #01HDL1: MOV R6, #8EHDL0: MOV R5, #02HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1RETCHULI:CJNE A, #25, LPLJMP LP2LP: JNC LP1LP2: MOV B, #10MUL ABMOV B, #51DIV ABLJMP LP3LP1: CLR CSUBB A, #25MOV B, #10MUL ABCLR CSUBB A, #5MOV B, #51DIV ABADD A, #5LP3: RETDELAY100: MOV R6,#01H;误差 0usDL0:MOV R5,#2FHDJNZ R5,$DJNZ R6,DL0RETEND3、中断ORG 0000HSTART:LJMP MAINORG 0003HLJMP INTT0ORG 0100HMAIN: MOV SP, #6FHSETB EASETB EX0MOV DPTR, #0000HMOVX @DPTR, AHERE: LJMP HEREINTT0:MOVX A, @DPTRMOV B, #51DIV ABMOV 23H, A //整数部分放22H中MOV A, #10MOV 22H, A //小数点放22H中MOV A, BLCALL CHULIMOV 21H, A //小数点后第一位放21H中 MOV A, BLCALL CHULIMOV 20H, A //小数点后第一位放21H中 LCALL DIRMOV DPTR, #0000HMOVX @DPTR, ARETIDIR: PUSH ACCPUSH DPHPUSH DPLPUSH PSWSETB RS1SETB RS0MOV R0, #20HMOV R3, #01HLOOP2:MOV P2, R3 //位控码初始值MOV DPTR, #TAB1MOV A, @R0MOVC A, @A+DPTRMOV P1, ALCALL DELAYINC R0MOV A, R3JB ACC.3 LOOP3RL AMOV R3, ALJMP LOOP2LOOP3:POP PSWPOP DPLPOP DPHPOP ACCRETTAB1:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,07FH DELAY:MOV R7, #01HDL1: MOV R6, #8EHDL0: MOV R5, #02HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1RETCHULI:CJNE A, #25, LPLJMP LP2LP: JNC LP1MOV B, #10MUL ABMOV B, #51DIV ABLJMP LP3LP1: CLR CSUBB A, #25MOV B, #10MUL ABCLR CSUBB A, #5MOV B, #51DIV ABADD A, #5LJMP LP3LP2: MOV A, #5MOV B, #0LP3: RETEND五、实验结果六、实验总结通过本次试验掌握了A/D转换的电路设计,掌握了AD0808的使用以及编址技术,熟悉了A/D转换的方法和A/D转换的程序设计方法。

单片机实验数据采集_AD转换

单片机实验数据采集_AD转换

单片机实验报告姓名: XX班级: XXXXX学号: XXXXXXX专业:电气工程与自动化实验1 名称:数据采集_A/D转换一、实验目的⑴掌握A/D转换与单片机接口的方法;⑵了解A/D芯片0809 转换性能及编程方法;⑶通过实验了解单片机如何进行数据采集。

二、实验设备装有proteus和keil软件的电脑一台三、实验说明及实验原理:A/D 转换器大致分有三类:一是双积分A/D 转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并联比较型A/D转换器,速度快,价格也昂贵。

实验用ADC0809属第二类,是8位A/D转换器。

每采集一次一般需100μs。

由于ADC0809A/D 转换器转换结束后会自动产生EOC 信号(高电平有效),取反后将其与8031 的INT0 相连,可以用中断方式读取A/D转换结果。

ADC0809 是带有8 位A/D转换器、8 路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

(1) ADC0809 的内部逻辑结构由图1.1 可知,ADC0809 由一个8 路模拟开关、一个地址锁存与译码器、一个A/D 转换器和一个三态输出锁存器组成。

多路开关可选通8 个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。

三态输出锁器用于锁A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。

(2) ADC0809 引脚结构ADC0809各脚功能如下:D7 ~ D0:8 位数字量输出引脚。

IN0 ~ IN7:8位模拟量输入引脚。

VCC:+5V工作电压。

GND:地。

REF(+):参考电压正端。

REF(-):参考电压负端。

START:A/D转换启动信号输入端。

ALE:地址锁存允许信号输入端。

(以上两种信号用于启动A/D转换).EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。

AD DA实验

AD DA实验

A/D D/A转换实验一、实验目的1. 学习理解模/数信号转换的基本原理,数/模转换的基本原理;;2. 掌握模/数转换芯片ADC0809 的使用方法。

3. 掌握DAC0832 的使用方法。

二、实验环境1、软件环境要求Windows XP操作系统以及Keil C51 单片机集成开发环境。

2、硬件环境要求电脑一台,TD-51单片机系统,A/D单元,D/A单元。

三、实验内容编写实验程序,将ADC 单元中提供的0V~5V 信号源作为ADC0809 的模拟输入量,进行A/D 转换,转换结果通过变量进行显示。

设计实验电路图实验线路并编写程序,实现D/A 转换,要求产生锯齿波、脉冲波,并用示波器观察电压波形。

四、实验原理分析1.A/D转换实验原理ADC0809 包括一个8 位的逐次逼近型的ADC 部分,并提供一个8 通道的模拟多路开关和联合寻址逻辑。

用它可直接输入8 个单端的模拟信号,分时进行A/D 转换,在多点巡回检测、过程控制等应用领域中使用非常广泛。

ADC0809 的主要技术指标为:·分辨率:8 位·单电源:+5V·总的不可调误差:±1LSB·转换时间:取决于时钟频率·模拟输入范围:单极性0~5V·时钟频率范围:10KHz~1280KHzADC0809 的外部管脚如图1所示,地址信号与选中通道的关系如表1所示。

图1 ADC0809 外部引脚图表1 地址信号与选中通道的关系2.D/A转换实验原理D/A转换器是一种将数字量转换成模拟量的器件,其特点是:接收、保持和转换的数字信息,不存在随温度、时间漂移的问题,其电路抗干扰性较好。

大多数的D/A 转换器接口设计主要围绕D/A 集成芯片的使用及配置响应的外围电路。

DAC0832是8位芯片,采用CMOS 工艺和R-2RT 形电阻解码网络,转换WR1结果为一对差动电流Iout1 和Iout2 输出,其主要性能参数如表2示,引脚如图2所示。

单片机实验程序AD转换

单片机实验程序AD转换

程序分析5-中断服务-显示部分
j=dis_buffer[Disp_cnt];//显示内容:2 5 5 P2_tmp=array[j]; //查表,数据端口 if(!ADC_CS) { if(F_ADC_CLK)//P2.1 is clk_adc P2_tmp |=0x02; else P2_tmp &=0xfd; } P2 = P2_tmp; P0=display_con[Disp_cnt];//位控制 Disp_cnt++; if(Disp_cnt>=3) Disp_cnt=0;
}
程序分析3-AD转换器时序
ADI: 1 1 0(启动 单端 通道0 的AD转换)
程序分析3-生成脉冲
void Pulse(void) { unsigned char i; F_ADC_CLK=1; ADC_CLK=1; i=2; while(i-->0); F_ADC_CLK=0; ADC_CLK=0; i=2; while(i-->0); } F_ADC_CLK的作用?
实验19 AD转换
功能&演示
• 0.4s启动一次AD转换 • 将AD转换的结果(0~255)显示在数码管 DS1~DS3上 • 调整电位器,可观察到数码管显示数字的 变化
程序分析1-程序结构
• • • • AD转换模块(对通道0 CH0) 显示模块(定时器中断中完成) 初始化部分 主循环部分
void ADConvert() { unsigned char temp; unsigned char i; temp=0; ADC_CS=0; i=5; ADC_CS=1; while(i-->0); ADC_CS=0; ADC_DI=1; //1:启动AD转换器 Pulse(); ADC_DI=1; //SGL = 1 : 单端模式 Pulse(); ADC_DI=0; //ODD=0 : 对通道0进行 AD转换(单端模式) Pulse(); for(i=0;i<8;i++) { temp=temp<<1; Pulse(); if(ADC_DO) temp=temp|0x01; }

单片机AD转换实验报告

单片机AD转换实验报告

单⽚机AD转换实验报告三、实验电路五、实验结果将程序产⽣的⼗六进制代码加载到proteus中,运⾏仿真,调节滑动变阻器改变AD 输⼊的电压,可以到如图7.1—7.4所⽰的实验结果。

图7.1输⼊电压0.76V 图7.2输⼊电压1.31V图7.3输⼊电压2.50V 图7.4输⼊电压4.99V四、程序清单及流程图程序⼀(查询):ORG 0000HLJMP MAINORG 0010HMAIN: MOV SP, #2FH CLR EAMOV DPTR, #0EFF8H MOVX @DPTR, AJB P3.3, $MOVX A, @DPTRMOV B, #51DIV ABMOV 7AH, AMOV A, BLCALL CL1MOV 79H, AMOV A, BLCALL CL1MOV 78H, AMOV 7BH, #0AHLCALL DISPLJMP MAINDISP: PUSH ACCPUSH DPHSETB RS1SETB RS0MOV R0, #78HMOV R7, #04HMOV R2, #01HDISP1: MOV A, @R0MOV DPTR, #DKMOVC A, @A+DPTRMOV P2, R2MOV P0, AJNB P2.2, DISP2CLR P0.7DISP2: LCALL DELAYMOV A, R2RL AMOV R2, AINC R0 INC R1DJNZ R7, DISP1POP PSWPOP DPLPOP DPHPOP ACCRETDK: DB 0C0H,0F9H,0A4H,0B0H, 99H,92H,82H,0F8H,80H,90H,0FFH DELAY: MOV R3, #02HLOP: MOV R4, #250DJNZ R4, $DJNZ R3, LOPRETCL1: CJNE A, #25, L00PLJMP L00P2L00P: JNC L00P1L00P2: MOV B, #10DIV ABLJMP L00P3L00P1: CLR CSUBB A, #25MOV B, #10MUL ABCLR CSUBB A, #6MOV B, #51DIV ABADD A, #5L00P3: RETEND开始初始化调⽤延时,等待转换读取数据,并转换调⽤显⽰程序启动下⼀次A/D转换程序⼆(延时):延时⽅式只需将查询指令改为⼀个调⽤延时指令,在主程序后加⼊100us延时程序即可。

实验AD转换

实验AD转换

实验AD转换实验AD转换⼀、实验⽬的了解STC单⽚机ADC的结构;掌握STC单⽚机ADC的使⽤。

⼆、实验原理STC15F2K60S2单⽚机内含8路10位⾼速AD转换器,速度可达30万次/秒。

单⽚机P1⼝既可作为普通I/O⼝,也可作为AD转换器模拟电压输⼊⼝。

AD转换器相关的寄存器如表1所⽰。

表1 ADC转换相关寄存器P1ASF某⼀位为“1”,P1⼝对应的引脚设为模拟功能。

某⼀位为“0”,对应的引脚设为普通I/O。

②ADC控制寄存器ADC_CONTRADC_POWER=1,打开AD转换器电源(关闭电源可降低功耗,ADC初次上电需适当延时,再启动AD转换)。

SPEED1、SPEED0选择AD转换速度。

ADC_FLAG:ADADC_START:AD转换启动控制。

CHS2、CHS1、CHS0:选择模拟输⼊通道P1.0~P1.7。

转换结果存放在ADC_RES和ADC_RESL寄存器中,当CLK_DIV.5/ADRJ=0时,ADC_RES为结果的⾼8位,ADC_RESL为结果的低2位(如表2所⽰)。

当CLK_DIV.5/ADRJ=1时,ADC_RES为结果的⾼2位,ADC_RESL为结果的低8位(如表3所⽰)。

STC15F2K60S2的AD 转换器以Vcc 为参考电压,当ADRJ=0时,10位转换结果与输⼊模拟电压的关系由式(1)计算:VccVin 10240]:ADC_RESL[10],:ADC_RES[7= (1)如果只取⾼8位,则由式(2)计算: VccVin 2560]:ADC_RES[7=……………………………………...…………………(2)当ADRJ=1时,10位转换结果与输⼊模拟电压的关系由式(3)计算:VccVin10240]:ADC_RESL[70],:ADC_RES[1=…………………………………(3)如果单⽚机Vcc 电压不稳,会引起AD 转换误差,在实际应⽤中,可⽤⼀路AD 采样外部的基准电压(如⽤TL431基准电源),另⼀路AD 采样被测电压,按式(4)计算:转换结果基准电转换结果被测VrefVin 源电压= (4)三、实验环境Windows XP ; Keil µ V ision 4; STC-ISP-6.28。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void CollectADmodule(uint *ad_result)
{
uchar i;
AD_EOC=1;
read2543(0); //启动0通道转换,第一次转换结果不准确,丢弃
while(!AD_EOC){}//等待转换完成
time(3);
read2543(0);
TLC2543是TI公司的TLC2543 12位串行A/D转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省80C51系列单片机的I/O资源,而且价格适中。
2. TLC2543的工作过程
TLC2543的工作过程分为两个周期:I/O周期和实际转换周期。
1)I/O周期
I/O周期由外部提供的I/O CLOCK定义,延续8、12或16个时钟周期,决定于选定的输出数据长度。器件进入I/O周期后同时进行两种操作。
{
unsigned char i;
for(i=0;i<4;i++)
{
delay_5us();
}
}
/********延时100us ******************/
void delay_100us(void)//延时100us
{
delay_50us();
delay_50us();
}
/***********延时单位:ms *******************/
U(0∽-5V)=Uref/256×N
U(-5V∽+5V)=2·Uref/256×N-5V (这里Uref为+5V)
4、DAC0832与89C52的接口电路
四、实验内容
1.按照上图设计仿真电路原理图。
2.编写程序实现采集AI0~AI11十二个输入通道模拟输入,并转换结果从串口送到模拟终端显示。
3.编写程序实现产生方波、三角波和梯形波的程序,并在虚拟示波器上显示波形。
do{
CollectADmodule(TLC2543);//调用11通道AD转换
for(i=0;i<11;i++){
printf("TLC2543[%bd]=%u\n",i,TLC2543[i]);//打印输出结果
}
printf("\n\n");//回车2次
time(1000);
}while(TRUE);
#define ulong unsigned long
#define BYTEunsigned char
#define WORDunsigned int
#define TRUE 1
#define FALSE 0
extern void initUart(void);/*初始化串口*/
extern void time(unsigned int ucMs);//延时单位:ms
输入参数:port通道号
输出参数:ad转换值
*************************************/
uint read2543(uchar port)
{
uint ad=0;
uchar i;
P1=0xeb;
CLOCK = 0;
AD_CS = 0;
port<<=4;
for(i=0;i<8;i++)//读高8位
/**************************************
TLC2543驱动程序
*************************************/
/**************************************
名称:read2543
功能:TLC2543驱动模块
总线型AT89C52单片机
U2
TLC2543
串行接口A/D转换器
U3
OP1P
通用理想运算放大器
R1
POT-HG
中间抽头电位器
VIRTUAL TERMINAL
串口虚拟终端
DC VOLTMETER
直流电压表
DC Generators
直流信号发生器
2.并行D/A转换器DA0832
元件编号
元器件名称
说明
U1
}
common.h程序
#include <REG52.H> /* special function register declarations */
#include <stdio.h> /* prototype declarations for I/O functions */
#include <intrins.h>
TLC2543的工作时序如图7.41所示。
3. TLC2543与89C52的接口电路
下图是89C52与TLC2543的接口电路,TLC2543的5条接口线可接到单片机的任何通用双向I/O口上。
(二)并行D/A转换器DAC0832
1.D/A转换是把数字量转换成模拟量的变换,实验台上D/A电路输出的是模拟电压信号。要实现实验要求,比较简单的方法是产生三个波形的表格,然后通过查表来实现波形显示。
80C51.BUS
总线型AT89C52单片机
U2
74LS373
锁存器
U3
74LS04
反相器
U4 U5
74LS08
二输入与门
U6
DAC0832
并行接OSCILLOSCOPE
虚拟示波器
三、相关知识
(一)串行A/D转换器TLC2543
1. TLC2543的特性与引脚
(2)在DATAOUT端串行输出8、12或16位数据。当 保持为低时,第一个数据出现在EOC的上升沿;若转换由 控制,则第一个输出数据发生在 的下降沿。这个数据串是前一次转换的结果,在第一个输出数据位之后的每个后续位均由后续的I/O CLOCK脉冲下降沿输出。
2)转换周期
在I/O周期的最后一个I/O CLOCK脉冲下降沿之后,EOC变低,采样值保持不变,转换周期开始,片内转换器对采样值进行逐次逼近式A/D转换,其工作由与I/O CLOCK同步的内部时钟控制。转换完成后EOC变高,转换结果锁存在输出数据寄存器中,待下一个I/O周期输出。I/O周期和转换周期交替进行,从而可以减小外部的数字噪声对转换精度的影响。
2、产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要分段来产生。要产生正弦波,较简单的方法是造一张正弦数字量表。即查函数表得到的值转换成十六进制数填表。D/A转换取值范围为一个周期,采样点越多,精度越高些。本例采用的采样点为256点/周期。
3、8位D/A转换器的输入数据与输出电压的关系为
(1)在I/O CLOCK的前8个脉冲的上升沿,以MSB前导方式从DATA INPUT端输入8位数据流到输入寄存器。其中前4位为模拟通道地址,控制14通道模拟多路器从11个模拟输入和3个内部自测电压中,选通一路送到采样保持电路,该电路从第4个I/O CLOCK脉冲的下降沿开始,对所选信号进行采样,直到最后一个I/O CLOCK脉冲的下降沿。I/O周期的时钟脉冲个数与输出数据长度(位数)有关,输出数据长度由输入数据的D3、D2选择为8、12或16位。当工作于12或16位时,在前8个时钟脉冲之后,DATA INPUT无效。
#define word unsigned int
#define uint unsigned int
#define ulong unsigned long
#define BYTEunsigned char
#define WORDunsigned int
uint read2543(uchar port);
void CollectADmodule(uint *ad_result);
extern void time(unsigned int ucMs);//延时单位:ms
/**************************************
2543控制引脚宏定义
*************************************/
}
Tlc2543.c程序
#include <reg52.h>
#include <intrins.h>
#include <Absacc.h>
#include <string.h>
#include <ctype.h>
#define byte unsigned char
#define uchar unsigned char
Main.c程序
#include "common.h"
extern void CollectADmodule(uint *ad_result);
/******** main函数*********/
void main (void) {
uint idata TLC2543[11];
uchar i;
initUart(); /*初始化串口*/
实验三 A/D、D/A转换实验
一、实验目的
1.熟悉DAC0832并行接口数模转换器和TLC2543串行接口模数转换器的基本原理和编程方法。
2.进一步熟悉单片机应用系统开发步骤和方法。
二、实验电路
实验所用元件清单如下表所示:
1.串行A/D转换器TLC2543
元件编号
元器件名称
说明
U1
AT89C52.BUS
void time(unsigned int ucMs)//延时单位:ms
{
unsigned char j;
while(ucMs>0){
相关文档
最新文档