基于AD转换的单片机实验和C语言开发
AD转换实验报告
A/D转换实验报告摘要本设计是利用AT89C51、ADC0809、CD4027芯片为核心,加以其他辅助电路实现对信号的A/D转换,其中以单片机AT89C51为核心控制A/D转换器。
先是对信号进行采集,然后用ADC0809对信号实现从模拟量到数字量的转换。
改变采样数据,调整电路,使其达到精确转换。
目录1.方案设计与论证 (1)1.1理论分析 (1)1.2输出、输入方案选择 (1)1.3显示方案 (2)1.4时钟脉冲选择 (2)2.硬件设计 (2)2.1A/D转换器模块 (2)2.2单片机模块 (3)2.3JK触发器模块 (4)3软件设计 (4)4.仿真验证与调试 (5)4.1测试方法 (5)4.2性能测试仪器 (7)4.4误差分析 (7)5.设计总结及体会 (5)附录(一)实物图 (6)附录(二)软件程序 (6)1.方案设计与论证1.1理论分析8位A/D转换由芯片内部的控制逻辑电路、时序产生器、移位寄存器、D/A转换器及电压比较器组成,它具有将模拟量转换成数字量的特性,其原理图如下:AD转换原理图(1)1.2输出、输入方案选择A/D转换器有多路选择器,可选择八路模拟信号IN0~IN7中的一路进入A/D转换。
现在选择IN0通道作为输入,则对应的地址码位ADD C=0、ADD B=0、ADD A=0。
当转换完成后,OE=1,打开三态输出锁存缓冲器,将转换数据从D7~D0口输出到单片机的P0端口。
IN口输入D端口输出A/D转换器图(2)1.3显示方案单片机控制数码管显示有两种动态和静态两种方法,由于静态控制数码管每次只能显示一位,造成资源浪费,所以选择动态扫描,并增加变换频率。
1.4时钟脉冲选择方案一:可以直接用矩形波来控制方案二:ALE通过JK触发器完成二分频,然后 Q端接CLK。
因为晶振的频率是12MHz,ALE的频率为12NHz×1/6=2MHz,经过JK 触发器二分频后就是1MHz.2.硬件设计2.1 A/D转换器模块A/D转换电路图(3)模拟量从IN0端口输入,经电压比较器后输入到控制电路,转换后从D0~D7口输出,地址码位ADD C=0、ADD B=0、ADD A=0。
AD转换实验报告
8292924809基于单片机的AD转换电路专业:班级:学号:组员:指导老师:年月日目录键入章标题(第 1 级) (1)键入章标题(第2 级) (2)键入章标题(第3 级) (3)键入章标题(第 1 级) (4)键入章标题(第2 级) (5)键入章标题(第3 级) (6)引言A/D转换是指将模拟信号转换为数字信号,这在信号处理、信号传输等领域具有重要的意义。
常用的A/D转换电路有专用A/D集成电路、单片机ADC模块,前者精度高、电路复杂,后者成本低、设计简单。
基于单片机的A/D转换电路在实际电路中获得了广泛的应用。
一般的A/D转换过程是通过采样、保持、量化和编码4个步骤完成的,这些步骤往往是合并进行的.当A/D转换结束时,ADC输出一个转换结束信号数据。
CPU可由多种方法读取转换结果:a查询方式;b中断方式;c DMA方式。
通道8为A/D转换器,ADC0809是带有8为A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成.多路开关可选通8个模拟通道,允许8路模拟量分时输出,共用A/D转换器进行转换。
三台输出锁存器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据.一个实际系统中需用传感器把各种物理参数测量出来,并转换为电信号,在经过A/D转换器,传送给计算机;微型计算机加工后,通过D/A转换器去控制各种参数量。
一、实验方案的选择与分析1.1复位电路方案单片机在开机时都需要复位,以便中央处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。
51的RST引脚是复位信号的输入端.复位电平是高电平有效持续时间要有24个时钟周期以上。
本系统中单片机时钟频率为6MHz则复位脉冲至少应为4us.方案一:上电复位电路上电瞬间,RST端的的电位与Vcc相同,随着电容的逐步充电,充电电流减小,RST电位逐渐下降。
单片机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转换实验
一、实验目的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转换实验
重庆交通大学学生实验报告实验课程名称单片机原理与应用实验名称A/D转换实验实验类型验证性实验开课实验室语音楼单片机原理实验室学院信息科学与工程学院学生姓名学号开课时间2012至2013学年第 2 学期实验评佑等级很好好一般差实验操作能力实验结果实验分析实验思考总结实验成绩教师签名一、实验目的:1.了解ADC0809/ADC0808的工作原理;2.掌握单片机与ADC0809/ADC0808接口原理;3.熟悉CPU中断方式和查询方式读取A/D转换结果的程序设计方法。
二、实验内容:以查询工作方式应用程序,分别启动8路模拟输入通道进行A/D转换,8路转换结果存储在内部数据存储器首地址为30H开始的单元内,并将第0路转换结果送到P1口显示。
按照以上原理完成以下要求:1.用中断方式编写并调试出一个程序;2.用查询方式编写并调试出一个程序;3.用调用显示子程序方法,将转换结果在显示块上显示出来;4.将采样结果以8个LED显示进行编码,以得到将0V—5V区间分为256级显示效果;5.用C51重新编写程序实现上述要求的C程序。
用Proteus仿真软件运行硬件电路仿真设计。
三、实验步骤:1.硬件设计。
参考指导书中所列数码管显示的元器件以及实验程序参考框图,利用Proteus仿真软件,作出其电路图。
2.利用Keil仿真软件编写程序,将其编写好的程序进行调试。
四、实验调试及结果:<一>实验调试方法:1、打开Keil程序,执行菜单命令“ Project”—>“New Project”创建“ 0808AD 转换”项目,并选择单片机型号为AT89C51。
2、执行菜单命令“file”—>“New”创建文件,输入源程序,保存为“0808AD 转换.c”。
在“Project”栏的File项目管理窗口中右击文件组,选择“Add Filesto Group Source Group1”,将源程序“0808AD转换.c”添加到项目中。
51单片机ad转换程序解析
51单片机ad转换程序解析1.引言1.1 概述概述部分旨在介绍本篇文章的主题——51单片机AD转换程序,并对文章的结构和目的进行简要说明。
51单片机是指Intel公司推出的一种单片机芯片,它广泛应用于嵌入式系统中。
而AD转换则是模拟信号转换为数字信号的过程,是嵌入式系统中的重要功能之一。
本文将详细解析51单片机中的AD转换程序。
文章结构分为引言、正文和结论三个部分。
引言部分将给读者介绍本篇文章的内容和结构安排,正文部分将详细讲解51单片机AD转换程序的相关要点,而结论部分将总结正文中各个要点的内容,以便读者能够更好地理解和掌握51单片机AD转换程序的实现原理。
本文的目的在于向读者提供一份对51单片机AD转换程序的详细解析,使读者能够了解51单片机的AD转换功能以及如何在程序中进行相应的设置和操作。
通过本文的学习,读者将掌握如何使用51单片机进行模拟信号的采集和处理,为后续的嵌入式系统设计和开发提供基础。
在下一节中,我们将开始介绍文章的第一个要点,详细讲解51单片机AD转换程序中的相关知识和技巧。
敬请期待!1.2 文章结构文章结构部分主要是对整篇文章的框架和内容进行介绍和归纳,以帮助读者更好地理解文章的组织和内容安排。
本文以"51单片机AD转换程序解析"为主题,结构分为引言、正文和结论三个部分。
引言部分主要包括概述、文章结构和目的三个方面。
首先,通过对单片机AD转换程序的解析,来讲解其实现原理和功能。
其次,介绍文章的结构,帮助读者明确整篇文章的主要内容和组织方式。
再次,阐明文章的目的,即为读者提供关于51单片机AD转换程序的详尽解析和指导,帮助读者深入了解该技术并进行实际应用。
正文部分则分为两个要点,即第一个要点和第二个要点。
第一个要点可以从AD转换的基本概念入手,介绍51单片机AD转换的原理和流程。
包括输入电压的采样、AD转换器的工作原理、ADC的配置和控制等方面的内容。
在此基础上,深入解析51单片机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转换电路与程序设计
基于单片机的AD转换电路与程序设计单片机(MCU)是一种集成了处理器核心、内存、输入输出接口和各种外围设备控制器等功能的集成电路。
MCU通常用于嵌入式系统,广泛应用于各个领域,例如家电、工业控制、汽车电子等。
其中,AD转换是MCU中的一个重要模块,用于将模拟信号转换成数字信号。
在应用中,常常需要将外部的温度、湿度、压力或光照等模拟信号进行转换和处理。
AD转换电路一般由模拟输入端、引脚连接、采样保持电路、比较器、取样调节电路、数字输出端等部分组成。
模拟输入端负责接收外部的模拟量信号;引脚连接将模拟输入信号引到芯片的模拟输入端;采样保持电路负责将引脚输入的模拟信号进行采样和保持,保证AD转换的准确性;比较器用于将模拟信号与参考电压进行比较,判断信号的大小;取样调节电路用于调整模拟信号的边界;数字输出端将模拟信号转换成数字信号输出给MCU。
在程序设计方面,MCU通常使用C语言进行编程。
程序设计分为初始化和数据处理两个步骤。
初始化阶段主要包括设置IO口、初始化外设、设置模拟输入通道等工作。
数据处理阶段主要包括数据采样、数值转换、数据处理和输出等工作。
下面以一个简单的温度采集系统为例进行说明。
首先,在初始化阶段,需要设置IO口和外设,以及设置模拟输入通道。
具体步骤如下:1.设置IO口:根据具体需要配置MCU的引脚功能和工作模式。
2.初始化外设:根据需要初始化ADC模块,包括设置采样频率、参考电压等参数。
3.设置模拟输入通道:选择需要转换的模拟输入通道。
接下来,在数据处理阶段,需要进行数据采样、数值转换和数据处理。
具体步骤如下:1.数据采样:使用ADC模块进行模拟信号的采样,将采样结果保存到寄存器中。
2.数值转换:将采样结果转换成数字信号,可以使用如下公式进行转换:数字信号=(ADC采样结果/采样最大值)*参考电压3.数据处理:根据具体需求进行数据处理,例如计算平均值、最大值或最小值,也可以进行滤波或校正。
实验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。
AT89C51单片机AD转换器接口实验
班级电科 081 班姓名龚浪学号 ************ 实验名称电脑时钟程序实验指导教师马光喜理学院时间: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 <reg51.h>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.运行、调试程序和结果检查⑴采用单步,设置断点等方法,态观察程序走向是否正确。
实验二 AD转换实验
实验二 AD转换实验实验预习要求1、学习 MSP430F6638 单片机中ADC12的配置方法。
2、了解ADC转换原理。
一、实验目的1、了解AD转换原理及LED灯的控制方法。
2、掌握MSP430F6638 中ADC12的配置使用方法。
3、结合电位器与ADC12模块实现对LED灯的控制。
二、实验器材PC 机,MSP430F6638 EVM,USB数据线,万用表,信号发生器。
三、实验内容1、验证性实验:利用MSP430F6638开发板上的拨盘电位器,控制改变AD转换的输入电压值,转换后的数字量显示在段式液晶上面。
使用万用表测得当前输入电压,通过计算得到转换后的理想的数字量与液晶显示的数字量进行比较。
2、设计性实验:AD转换结束会产生中断,编写AD中断服务程序。
利用信号发生器输出信号(例如正弦波、三角波信号)作为AD转换的输入,根据输入电压的大小控制LED灯的亮灭(例如随着输入电压值的增大,LED1到LED5按顺序点亮;随着输入电压值减小,LED灯按顺序熄灭),LED和单片机IO口连接如下图所示。
图2.1 LED灯电路原理图四、实验原理模数转换器(ADC)是指将连续的模拟信号转换为离散的数字信号的器件。
真实世界 的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数 字形式。
在A/D 转换中,因为输入的模拟信号在时间上是连续的,而输出的数字信号是离 散量,所以进行转换时只能按一定的时间间隔对输入的模拟信号进行采样,然后再把采样值 转换为输出的数字量。
通常A/D 转换需要经过采样、保持量化、编码几个步骤。
ADC12 电 路如下图所示。
图2.2 ADC12 模块结构框图ADC12 模块中由以下部分组成:输入的16 路模拟开关,ADC 内部电压参考源,ADC12 内核,ADC 时钟源部分,采集与保持/触发源部分,ADC 数据输出部分,ADC 控制寄存器等组成。
ADC12 的模块内核是共用的,通过前端的模拟开关来分别完成采集输入。
实验三 A_D转换实验
//start由P2.3控制,用高位地址作为通道选择和AD片选
#define IN0 XBYTE[0xF0FF]
sbit AD_BUSY=P3^2; //转换结束引脚--EOC
unsigned char LED_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码
D7~D0:数据线,三态输出,由OE(输出允许信号)控制输出与否。
OE:输出允许,该引线上的高电平,打开三态缓冲器,将转换结果放到D0~D7上。
ALE:地址允许锁存,其上升沿将ADDA,ADDB,ADDC三条引线的信号锁存,经译码选择对应的模拟通道。ADDA,ADDB,ADDC可接单片机的地址线,也可接数据线。ADDA接低位线,ADDC接高位线。
本实验用的ADC0809属第二类,是八位A/D转换器。每采集一次一般需100μS,A/D转换结束后会自动产生EOC信号。
1)ADC0809引脚含义
IN0~IN7:8路模拟通道输入,由ADDA,ADDB,ADDC三条线选择。
ADDA、ADDB、ADDC:模拟通道选择线,比如000时选择0通道,111时选择7通道。
P1=LED_bit[i];
delay(100);
}
}
void main(void) //主函数
{
unsigned int a=0; 图8-4 AD变换流程图
convert(a);
display();
n=n/10;i++;
}
}
void display(void) //显示函数
单片机实现5v电压ad数模转换
Stc12c5a60s2系列单片机的A/d数模转换模块实验摘要:与时间成连续函数的物理量,一般都称之为模拟量。
人们在工业生产及科研过程中遇到的被测量绝大部分是模拟量。
例如:电压,电流,温度,压力,位移,速度等。
计算机技术是测量与控制自动化与智能化的关键,是现代测控技术的核心技术之一。
现代计算机是数字计算机,它无法直接处理模拟信号,因此欲实现基于计算机的测量与控制,必须具备将连续变化的模拟信号转变成计算机能够识别及处理的数字信号的手段。
为此模/数转换技术应运而成,并成为现代测控技术中的重要组成部分。
将模拟量转换为一定码制的数字量称为模/数转换。
Stc12c5a60s2系列单片机作为微型控制芯片的一种,其自身自带a/d装换口:P1(p1.0-p1.7),可实现数模转换功能。
实验目的:以Stc12c5a60s2单片机以及1602液晶显示屏做一个简易的”电压测量器“,测量线性稳压电源提供的直流电压,精度0.01v,通过调节电位器,将输入的电压转换为数字量实时显示在1602lcd上。
实现过程:1.理论学习:(1)在掌握1602lcd工作原理及使用方法的基础上,查阅Stc12c5a60s2单片机数模转换模块应用介绍,弄清楚a/d转换器的结构,了解a/d转换器是如何工作的。
(2)理解与a/d转换器相关的寄存器的设置,会根据实际需要设置相关的寄存器。
(3)了解如何配置a/d转换口,如何取出转换结果。
以十位结果为例,计算公式如下:Vcc即单片机实际工作电压,我们用单片机工作电压做模拟参考电压,则输出的实际电压vin=result(结果寄存器中的值)×vcc(单片机工作电压5v)/1024。
2.需注意的问题:(1)Stc12c5a60s2单片机的参考电压源是输入的工作电压vcc,所以一般不用外接参考电压源,如果单片机是采用电池供电,电池电压会在一定范围内漂移,所以vcc就不固定,这时候就需要在8路a/d转换的一个通道外接一个稳定的参考电压源,来计算此时的工作电压vcc,再计算出其他几路a/d转换通道的电压。
AD转换器CS5550与单片机的接口程序设计
A/D转换器CS5550与单片机的接口程序设计辛晓宁,吴子旭(沈阳工业大学信息科学与工程学院,辽宁沈阳110178)摘要:分析双通道低成本A/D转换器CS5550的接口特点,以ATmega16单片机为例设计CS5550与单片机的接口电路。
经过对ATmega16单片机SPI口的分析,详细讨论使用硬件SPI接口和软件模拟SPI两种方式的程序设计,并给出相应的软件流程图。
最后对CS5550的两种接口方式进行比较。
关键词:模数转换器;CS5550;单片机;接口程序现代智能化仪器仪表中A/D转换器和单片机是重要组成部分。
串行A/D转换器的串口信号线数目较少,在数据采样速率较低的系统中有利于降低硬件间连线的复杂度,节省单片机的接口资源。
在CS5550的性能特点及其片上串行接口的基础上,给出CS5550与单片机的接口程序设计方案。
1 CS5550的主要性能及接口特点[1]CS5550是Cirrus Logic公司推出的一款双通道低成本Δ-Σ型A/D转换器,内部集成有2个Δ-ΣA/D转换器、2个放大器、1个串行接口以及1个温漂为25 ppm/℃的2.5 V参考电压源。
CS5550在两个通道上都具有24位寄存器,其中通道1具有13位有效位,通道2具有10位有效位[2]。
CS5550片上集成有1个双向数字串行接口,包括CS(片选信号)、SDI(数据输入)、SDO(数据输出)和SCLK(串行时钟)4条控制线。
该串口与标准SPI 接口协议兼容,可与带有SPI接口的单片机传输数据。
另外,CS5550还有一个中断输出引脚INT,可通过配置其屏蔽寄存器(Mask Register)来设定中断,并可通过软件修改配置寄存器中的“IMODE IINV”位来决定中断的产生方式(高/低电平或上升/下降沿有效)。
2单片机的SPI接口与CS5550连接SPI接口是由Motorola公司最先推出的,目前很多型号的单片机都集成有SPI接口,如ATMEL公司的ATmega8[3]、PIC公司的PIC16F877[4]、Analog Devices 公司的ADuC812[5]等。
单片机及其应用开发-AD转换实验
实验五模数转换应用实验1 实验目的通过实验,了解A VR单片机模数转换器的初始化、工作原理,以及AD按键的检测方法和工作原理。
2 实验内容1、通过AD转换采集PA7(ADC7)引脚上的模拟电压,并将转换值在数码管上显示。
参照教材315页的ADC应用实例;2、将转换结果通过串口发送到PC机,熟悉串口的使用。
3 实验预习要求仔细阅读ATmega16单片机的数据手册,了解模数转换寄存器的设置P191;参考教材第6章节。
4实验步骤1、启动ICCA VR,新建工程文件“ADkey.PRJ”,新建Adkey.c文件,并将Adkey文件添加到Adkey工程中,并设置project->option->target 下的device configuration 选择ATMega16;2、本实验的ADC初始化代码请独立完成,Application Builder直接生成的ADC初始化代码不正确, 本实验板ADC的参考电源请选择A VCC,Prescale请选择64,AD键盘所用的AD输入为ADC7通道;参考Mega16 数据手册中203页的ADC相关寄存器介绍和教材315页的范例关于ADC的启动方式一般可选:用定时器触发启动,也可以使用软件启动的方法。
(1)如果采用定时器触发AD转换,一般选择定时器比较匹配时触发AD转换的方法。
例如选用Timer0比较匹配来触发启动AD转化,即当Timer0比较匹配发生时,自动启动AD转换,不需要程序干预,如果Timer0的比较匹配时间为5ms,那么ADC将5ms 自动启动一次。
此时SFIOR寄存器的ADTS[2:0]需要设为011(2)采用软件启动AD转换的方式:又称单次转换模式,即每次AD转换的启动都需要程序触发.方法是:程序中置位ADCSRA寄存器中的第六位(ADSC位),便会立即启动一次AD转化;例如:ADCSRA |= (1 << ADSC); //开始AD转换(3)关于转换结果的读取,可以用查询方式读取也可以用AD转换完成中断方式读取;(4)查询方式读取实例:(注:AD转换结果为左对齐方式)unsigned int AD_GetData(){ADCSRA |= (1 << ADSC); //开始AD转换while(!(ADCSRA & (1 << ADIF))); //等待转换完成ADCSRA |= (1 << ADIF); //清零ADC中断标志位return ADCH; //返回ADCH值,只取高8位}然后通过以下方法将ADC转换结果换算为电压值;adc_v=(unsigned long)ADC*3300/1024;通过以下方法将电压值刷新到display buffer中adc_to_disbuffer(adc_v);数码管显示方法采用前几次实验的现实方法,Display函数会自动将display buffer中的内容显示在数码管上。
AD转换程序设计实验报告
实验六 AD转换程序设计一、实验目的:1.掌握转换器ADC0809的使用。
2.用PROTEUS 设计,仿真基于AT89C51单片机的A/D转换实验。
3.通过改变电位器的值改变模拟量的输入,经转换为数字量在LED上显示,比对模拟量和数字量的关系。
二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:1.程序#include<reg51.h>sbit STA=P2^5;sbit EOC=P2^6;sbit OE=P2^7;sbit CLK=P2^4;sbit led4=P2^3;sbit led3=P2^2;sbit led2=P2^1;sbit led1=P2^0;sbit point=P0^7;int ad_result;float result;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(unsigned int time){unsigned int j=0;for(;time>0;time--)for(j=0;j<125;j++);}void ad_init(){OE=1;STA=0;CLK=0;}void time_init(){TMOD=0X02;TH0=0X94;TL0=0;EA=1;ET0=1;TR0=1;}void T0_time()interrupt 1{CLK=!CLK;}void ad_start(){ad_init();delay(10);STA=1;delay(10);STA=0;}void disp( int a){led1=0;P0=table[a/1000];point=1;delay(2);led1=1;led2=0;P0=table[a%1000/100];delay(2);led2=1;led3=0;P0=table[(a%100)/10];delay(2);led3=1;led4=0;P0=table[a%10];delay(2);led4=1;}void main(void){ad_init();time_init();while(1){ad_start();while(EOC==0);result=(P1*(5.0/255.0))*1000;ad_result=(int)(result+0.5);disp(ad_result);}}。
单片机AD转换实验报告
实验八A/D实验报告㈠实验目的1.掌握单片机与A/D的接口及编程方法;2.进一步了解A/D的工作原理;3.通过实验了解单片机如何进行数据采集;4.进一步了解单片机系统地址分配概念。
㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.信号发生器一台㈢实验内容及要求首先利用8051单片机的高位地址进行线译码,以分别给实验板中的各有关芯片提供CS信号,实现单片机系统地址分配。
ADC0809是输入为8通道、可与8051单片机直接接口的8位逐次逼近型CMOSA/D。
在8模拟输入通道中的每个通道上接至不同的信号源,改变通道号,并把A/D转换结果显示出来,即可检查A/D转换过程是否正确。
根据实验板的硬件线路可知,当8051向0809写入通道数时,即启动A/D转换,约经过100μs后,A/D转换完成,并向8051发出中断申请。
要求在ADC0809的输入端加上不同的模拟信号,通过键盘输入ADC0809的通道号并启动A/D转换,采集N个(如N=256)数据存入外部RAM中,打开XDATA窗口,检查实验结果。
注意:①在进行A/D采样前,应先检查ADC0809的参考电压是否正确。
(要求ADC0809的参考电压值Vref = +5V,用万用表观察ADC0809芯片的12脚电压值。
若不对,可调节实验板上的电位器W1来改变A/D的参考电压值。
)②实验板上电位器W2可调节校准信号的值。
㈣实验框图(见下页)㈤思考题1.本实验中,对采样信号的频率有没有限制?若有,其频率应在什么范围内?根据采样定理,采样频率必须大于最高频率的两倍。
2.如果要采集具有正负值的输入模拟信号,则应对实验板中的A/D线路接法作哪些修正?关于这一点,记得实验前夏兰老师好像提过,但是由于专注于硬件电路的连接,忘记了该怎么修正,希望老师给点提示。
ORG 0000HLJMP STARTORG 0003HLJMP INT_0ORG 0040HSTART:MOV SP, #60HMOV R7,#0FFH ;读取数据个数初始化MOV R1,#0B0H ;片外储存数据首地址MOV R0, #00HMOV DPTR,#7FFFH ;选中6116芯片MOV A,#02H ;根据硬件连接选择通道号MOVX @DPTR,A ;启动A_DSETB IT0 ;开中断SETB EASETB EX0CJNZ R7,#0H,T ;判断256个数据是否转换完毕,是则停止,否则原地等待中断INT_0:MOVX A,@DPTR ;读A_D 数据MOV DPH,R1MOV DPL,R0MOVX @DPTR,A ;将数据放到片外存储地址INC R0 ;指向下一个单元DEC R7 ;数据个数减一MOV DPTR,#7FFFHMOV A,#02HMOVX @DPTR,A ;再次启动A_DRETI ;返回中断T:SJMP $ ;数据转换完毕则程序停止实验过程中犯了一些很低级的错误,比如说中断地址和所用中断不匹配,中断返回的位置自己不确定,对于怎样写地址才能选中芯片不确定,这些看似不起眼的细微的东西往往决定了整个实验的成败。
单片机AD转换实验报告(word文档良心出品)
单片机实验报告(五)实验名称: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模数转换的原理,掌握AD转换器的使用方法。
实验设备:1.STC89C52RC单片机开发板2.电位器3.电阻4.电容5.连接线实验原理:AD模数转换是将连续的模拟信号转换为离散的数字信号的过程。
在单片机中,通过ADC模块将模拟电压转换为数字量。
STC89C52RC单片机具有内置的10位ADC模块,可以将模拟电压转换为0-1023之间的数字量。
实验步骤:1.连接电位器、电阻和电容的引脚到单片机上。
2.在单片机的引脚配置中,将ADC0的引脚配置为模拟输入。
3.在主函数中初始化ADC模块。
4.使用AD转换函数来获取模拟电压的数字量。
5.将数字量通过串口输出。
实验结果:经过以上步骤,我们成功地将连续的模拟信号转换为了数字信号,并通过串口输出。
通过电位器、电阻和电容的调整,我们可以观察到不同的输入信号对应的数字量。
实验总结:通过本次实验,我们深入了解了AD模数转换的原理,并学会了使用单片机的ADC模块来完成模数转换。
在实验过程中,我们还发现了一些问题和注意事项。
首先,在连接电路时,需要将模拟输入连接到ADC0引脚,并在引脚配置中正确设置。
其次,在初始化ADC模块时,需要根据实际情况设置参考电压和转换速率等参数。
最后,在使用AD转换函数时,需要根据需要进行适当的调整和计算,以获取正确的数字量。
总体来说,本次实验帮助我们更好地理解了AD模数转换的原理和单片机的ADC模块的使用方法。
通过实际操作,我们掌握了实验步骤和注意事项,提高了实际操作的能力和理论知识的运用。
这对我们的电子技术学习和应用都起到了积极的促进作用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要 (1)1 设计软件基础知识 (2)1.1 C编译器Keil介绍 (2)1.2 Proteus软件简介 (2)2 总体设计 (4)2.2系统框图 (4)2.3 51单片机简介 (4)2.4 ADC0809简介 (5)2.4.1 ADC0809内部结构 (5)2.3.2 ADC0809的工作过程 (6)3.1 功能简介 (8)3.2 总原理图 (8)3.2.1 单片机电路 (8)3.2.2 ADC采样电路 (9)3.2.3显示模块 (10)3.3 系统流程图 (11)4 程序代码 (12)5 仿真结果与分析 (18)6 心得体会 (19)武汉理工大学《能力拓展训练》设计说明书摘要A/D转换是将连续的模拟量通过取样转换成离散的数字量。
A/D转换包括采样、保持、量化和编码四个过程。
在某些特定的时刻对这种模拟信号进行测量叫做采样,量化噪声及接收机噪声等因素的影响,采样速率一般取fs=2.5fmax。
通常采样脉冲的宽度tw很短,故采样输出是断续的窄脉冲。
要把一个采样输出信号数字化,需要将采样输出所得的瞬时模拟信号保持一段时间,这就是保持过程。
量化是将连续幅度的抽样信号转换成离散时间、离散幅度的数字信号,量化的主要问题是量化误差。
假设噪声信号在量化电平中是均匀分布的,则量化噪声均方值与量化间隔和模数转换器的输入阻抗值有关。
编码是将量化后的信号编码成二进制代码输出。
这些过程有些是合并进行的。
本次课程设计的要求是:基于A/D转换模块的单片机实验和C语言开发,设计一种多路模拟信号采集模块,从多个通道轮流采集数据一次,并将采集的结果存放在数组中。
要求进行电路实验或仿真,并使用C语言进行程序的开发。
1 设计软件基础知识1.1 C编译器Keil介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
KeilSoftware公司推出的uVision4是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。
除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。
此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。
uVision3提供逻辑分析器,可监控基于MCUI/O引脚和外设状态变化下的程序变量。
uVision4提供对多种最新的8051类微处理器的支持,包括AnalogDevices的ADuC83x和ADuC84x,以及Infineon的XC866等。
1.2 Proteus软件简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
其功能特点如下: Proteus软件具有其它EDA工具软件(例:multisim)的功能。
其功能模块:—个易用而又功能强大的ISIS 原理布图工具;PROSPICE 混合模型SPICE 仿真; ARESPCB 设计。
PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。
此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LED 甚至LCD 显示CPU 模型。
Protues 主要特征:1)支持许多通用的微控制器,如 ARM,PIC,AVR,以及8051.2)交互的装置模型包括:LED 和LCD 显示,RS232 终端,通用键盘3)强大的调试工具,包括寄存器和存储器,断点和单步模式4) IAR C-SPY 和 Keil uVision4 等开发工具的源层调试革命性的特点:1)互动的电路仿真用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
2)仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
2 总体设计2.2系统框图此次设计的多通道数据采集系统设置了4路模拟电压输入通道。
仿真中为了便于调节输入的模拟电压,在输入模拟信号时采用电阻分压,最终的采样输入电压便可根据测试需要调节。
系统框图如图2.1所示图2.1 系统框图2.3 51单片机简介单片微型计算机(Single-Chip Microcomputer ),简称单片机。
就是将微处理器(CPU )、存储器(存放程序或数据的ROM和RAM )、总线、定时器/计数器、输入/输出接口(I/O 口)和其他多种功能器件集成在一块芯片上的微型计算机。
本次课程设计选用的是MCS-51系列单片机中的89C51。
MCS-51单片机包含中央处理器(CPU )、程序存储器(ROM)、数据存储器(RAM )、定时器/计数器、并行I/O 接口、串行I/O 接口和中断系统等几大单元。
其内部结构框图如图2.2所示。
模拟信号 AD 转换芯片采集数据单片机处理数据,输出数字量数码管 显示图2.2 51内部系统结构2.4 ADC0809简介ADC0809是8位逐次逼近式A/D转换器。
其内部有一个8通道多路模拟开关,片内带有三态输出缓冲器,可直接与单片机的数据总线相连接。
它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
2.4.1 ADC0809内部结构ADC0809的内部结构如图2.3所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
图2.3 ADC0809内部结构各部分功能及作用:IN0~IN7:8路模拟通道信号输入,通过模拟开关实现8路模拟输入信号分时选通。
ADDC,ADDB和ADDA:模拟通道选择,编码000~111分别选中IN0~IN7。
ALE:地址锁存信号,其上升沿锁存ADDC,ADDB,ADDA信号,译码后控制模拟开关,接通8路模拟信号中相应的一路。
CLK:输入时钟,为A/D转换器提供转换的时钟信号,典型工作频率640HZ。
START:A/D转换启动信号,正脉冲启动ADDC~ADDA选中的一路模拟信号开始转换。
OE:输出允许信号,高电平时打开三态输出缓存器,使转换后的数字量从D0~D7脚输出。
EOC:转换结束信号,启动转换后,EOC变为低电平,转换完成后变为高电平。
根据读入转换结果的方式,此信号可有三种方式和单片机相连。
1)延时方式:EOC悬空,启动转换后,延时100us后读入转换结果。
2)查询方式:EOC接单片机端口线,查得EOC变高,读入转换结果,作为查询信号。
3)中断方式:EOC经非门接单片机的中断请求端,转换结果作为中断请求信号向单片机提出中断申请,在中断服务中读入转换结果。
Vref(+)和Vref(-):基准电压输入,用于决定模拟电压的范围。
允许Vref(+)和Vref(-)是差动的或不共地的电压信号,多数情况下,Vref(+)接+5V,Vref(-)接GND,此时输入量程为0~5V。
当转换精度要求不高或电源电压Vcc较稳定和准确时,Vref(+)可以接Vcc,否则应单独提供基准电源。
2.3.2 ADC0809的工作过程首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。
数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。
为此可采用下述三种方式。
1)定时传送方式对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。
例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。
可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
2)查询方式A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。
因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
3)中断方式把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。
首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
3 多路模拟信号采集模块设计3.1 功能简介使用ADC0809型号的A/D 转换器对多路模拟信号进行数据采集,同时与单片机进行通信,将测量的模拟信号量传递给89C51单片机,由单片机进行运算,输出对应的数字量,然后在数码管上显示出来。
设计中采用开关来选择输入不同通道的模拟信号。
3.2 总原理图图 3.1 多通道数据采集总原理图3.2.1 单片机电路单片机最小系统如下图所示,各个引脚都已经标出。
D7D6D5D4D3D2D1D0D0D1D2D3D4D5D6D7C2OEST ST C3EOC C1C3C2C1STEOC CLK OE CLK I N 0I N 1I N 2I N 3IN0IN1IN2IN3XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51OUT121ADD B 24ADD A 25ADD C 23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START 6OUT58EOC 7OE9CLOCK 10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE 22U3ADC0809SEVEN-MPX4-CC-BLUEC122pFC222pFC310uFX112MR110k234567891RP144%RV21k 51%RV31k80%RV41k20%RV51k图3.2 单片机最小系统其中,振荡电路以及复位电路均由单片机系统自带。