模数转换实验报告
微机实验报告 模数转换器

实验报告——模/数转换器专业:材料物理;姓名:曾瑞;学号:2011301230019一、实验目的了解模/数转换的基本原理,掌握ADC0809的使用方法。
二、实验内容1、实验电路原理图如图11.1。
通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。
启动IN0开始转换: Out 0298 0读取转换结果: In 0298图11.1 模数转换电路2、编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。
三、程序的流程图有键按下吗?开 始开 始N延 时Y N启动A/D转换读入转换后数据所读数据赋给BL 将数据右移四位调显示子程序显示其高四位从BL中取出数据和0FH相与调显示子程序显示其低四位将AL赋给DL DL大于9吗?DL加7DL加30H显示ASC码为DL的字符结 束Y 结 束(A) 主程序 (B ) 显示子程序四、源程序;FILENAME ZDR.ASM STACK SEGMENT DW 100 DUP(?) STACK ENDS CODE SEGMENTASSUME CS:CODE,SS:STACK MAIN PROCSTART : MOV DX,0C818H MOV AL,56HOUT DX,AL ;启动A/D 转换 MOV CX,0FFFFHDELAY: LOOP DELAY ;延时IN AL,DX ;读取转换结果存放于AL 中 MOV BL,ALMOV CL,4SHR AL,CL ;右移四位 CALL DISP ;显示高四位MOV AL,BL AND AL,0FHCALL DISP ;显示低四位MOV AH,2MOV DL,48HINT 21H ;输出’H’MOV AH,2MOV DL,0DHINT 21H ;回车MOV AH,2MOV DL,0AHINT 21H ;换行MOV DL,0FFHMOV AH,6INT 21H ;检测键盘是否有输入JZ START ;无输入则跳转MOV AH,4CHINT 21H ;返回到DOSMAIN ENDPDISP PROCMOV DL,ALCMP DL,9JLE NEXT ;小于等于9则跳转ADD DL,7 ;DL加7NEXT: ADD DL,30H ;字符的ASCII码MOV AH,2INT 21H ;显示字符RETDISP ENDPCODE ENDSEND START五、实验结果及分析(1)实验结果如下:00H 00H 00H···43H 43H 43H···50H 50H 50H···FFH FFH FFH···发现,随着滑动变阻器的滑动,显示的数值不断增大,最终增大到FFH,产生的原因是阻值的变化使得输入电压变大,因而显示数增大;(2)从上结果可以看出,其结果是一长串的数字,有很多的是重复的,很不简洁,其原因在于没有对相邻的数字进行比较。
北航微机原理5 模数转换

微机原理实验报告模数转换一、实验名称模/数转换二、实验目的了解模/数转换的原理,掌握ADC0809的使用方法。
三、实验内容将温度传感器输出端连至ADC0809IN0端;编写程序对IN0通道的模拟量进行模/数转换;将模/数转换得到的数字量换算成温度值显示在微机屏幕上。
四、程序流程图及波形图:(见末页)五、实验结论:符合预期,屏幕上显示经换算后的温度值。
六、实验心得模/数转换实验相对先前作的数/模转换实验在程序编写上要复杂一点,但在编写程序的过程中,感觉思路更为清晰,而且接线更为容易,因而总体来说难度并不大。
这次上机实验虽然非常简单,但很显然这种实验性质的模/数转换是非常肤浅和基本的。
模/数转换这一过程在生产实践中被广泛使用,作为工科学生的我们也不能仅仅满足于能调通这样的小程序,而是应该在这次实验的基础上,看一些深入介绍模/数转换的书籍,尝试去编写一些更复杂的程序,实现一些更复杂的功能。
我想通过这些额外的学习,我一定能从中得到更多的锻炼、提高自己的能力和素养。
七、实验程序:inadress equ0EF00H-280H+298HSTACK SEGMENT STACKDB 100 DUP (?)STACK ENDSDATA S EGMENTSTR DB 100 DUP(?)DATA E NDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKDELAY PROCMOV BX, 100MOV CX, 0AGN: LOOP AGNDEC BXJNZ AGNRETDELAY ENDPMAIN PROCMOV AX, DATAMOV DS, AXMOV DX, inadressMOV AL,0OUT DX, ALCALL DELAYAGN1: IN AL, DXMOV BL, ALMOV CX, 8 AGN2: MOV DL, BLMOV CL, 4SHR DL, CLCMP DL, 9JBE NEXT1ADD DL, 7NEXT1: ADD DL, 30HMOV AH, 2INT 21HMOV DL, BLAND DL, 0FHCMP DL, 9JBE NEXT2ADD DL, 7 NEXT2: ADD DL, 30MOV AH, 2INT 21HNEXT3: MOV DL, 0FFHMOV AH, 6INT 21HJZ NEXT3JMP AGN2MOV AH, 4CHINT 21H MAIN ENDP CODEENDS END MAIN流程图:启动IN0 A/D 转换延迟(100微秒以上)读入数字量以16进制显示数字量是否有按键按下退出否是显示高4位显示低4位显示‘H ’显示‘ ’。
模数转换实验报告

单片机控制ADC0809的模数转换与显示一、实验内容和要求本题目对单片机控制ADC0809(Proteus的元件库中没有ADC0809,用ADC0808来代替)的通道3的电压模拟量进行模数转换,转换为数字量后,显示在3位数码管上。
调节图中的电位器,可观察到数码管显示的电压值在变化。
二、实验主要仪器设备和材料计算机一台三、实验方法、步骤及结果测试所有操作都在ISIS中进行,步骤如下。
(一)、Proteus电路设计1.从Proteus库中选取元器件(1)AT89C51:单片机;(2)RES:电阻;(3)7SEG-MAPX4-CC-BLUE(4)CAP、CAP-ELEC:电容、电解电容(5)CRYSTAL:晶振;(6)BUTTON:开关(7)BUTTON(8)ADC0808(9)POT-HG(10)LED-YELLOW(11)MAX7219(12)RESONATOR2.放置元器件、放置电源和地、连线、元器件属性设置、电气检测所有操作都在ISIS中进行完成的电路图设计如图(二)、源程序设计1、流程图2、通过Keil u Vision4建立工程,再建立源程序文件源程序如下主机程序:LED_0 EQU 30HLED_1 EQU 31HLED_2 EQU 32HADC EQU 35HCLOCK BIT P2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.7ORG 00HSJMP STARTORG 0BHLJMP INT_T0START:MOV LED_0, #00HMOV P2,#0FFHMOV LED_1,#00HMOV LED_2,#00HMOV DPTR,#TABLEMOV TMOD,#02H ;设置定时器工作方式2 MOV TH0,#245MOV TL0,#00HMOV IE,#82H ;开总中断和定时器0中断SETB TR0 ;启动定时器0WAIT:CLR STSETB STCLR STJNB EOC,$ ;判断A/D转换结束否SETB OE ;允许数据量输出MOV ADC,P3CLR OEMOV A,ADCMOV B,#51DIV ABMOV LED_2, AMOV A,BMOV B,#5DIV ABMOV LED_1, AMOV LED_0, BLCALL DISP ;跳至显示子程序SJMP WAITINT_T0: ;定时器T0中断子程序CPL CLOCKRETIDISP: ;显示子程序MOV A, LED_0MOVC A,@A+DPTRCLR P2.3 ;显示数码管右边第一位数字MOV P0,ALCALL DELAYSETB P2.3MOV A, LED_1MOVC A,@A+DPTRCLR P2.2 ;显示数码管右边第二位数字MOV P0,ALCALL DELAYSETB P2.2MOV A,LED_2MOVC A,@A+DPTRCLR P2.1 ;显示数码管右边第三位数字ORL A,#80H ;显示小数点MOV P0,ALCALL DELAYSETB P2.1RETDELAY: ;延时子程序MOV R6, #10D1:MOV R7,#250DJNZ R7,$DJNZ R6, D1RETTABLE:DB 3FH, 06H, 5BH, 4FH, 66HDB 6DH, 7DH, 07H, 7FH, 6FHEND通过按钮“Build target”编译源程序,生成目标代码文件*.hex文件。
DSP实验报告 之 CODEC(模数数模转换)

DSP实验报告之 CODEC(模数数模转换)DSP技术及应用实验报告学院:班级:姓名:学号:指导老师:完成日期:CODEC(模数/数模转换)一、实验目的1. 熟悉DSK板的结构和设置(DSK板注意事项在第2页);2. 掌握利用CODEC进行AD/DA转换;3. 熟悉McBSP, DMA的使用;4. 掌握C和汇编混合编程封装具体实现。
二、实验设备1.集成开发环境CCS 2.5402DSK实验板 3. 实验代码:a). 混合编程:codec_c.h(.h、.h54均由程序自动加载,可不加,后同),dsp_cnst.h54, codec.s54, codec_c.c, rts.lib和codec_c.cmd,c5402_dsk.gel(同上用来做gel初始设置, c5402_dsk.gel与 c5402.gel稍有区别,注意比较其中的异同)。
b). 汇编(时间多的同学做):codec_cnst.h54, dsp_cnst.h54, macro.h54,codec_init.s54, dsp_init.s54, main.s54和codec.cmd,c5402_dsk.gel(说明同前)。
三、实验内容及步骤1. 阅读理解McBSP, CODEC和DMA的相关文档2. 阅读和理解相关实验代码3. 本实验由于用到DSK板,环境设置与前不同,要特别注意。
打开CCS前,用并口电缆将TMS320VC5402DSK与PC机相连,出现发现硬件提示,安装驱动(驱动程序在D:\\DSP\\driver5000。
一般会要求装3次,2次装USB,driver5000\\USBDevice目录,如无则可跳过;1次装driver,即 driver5000中setup.exe,注意driver驱动的安装路径要求与CCS的安装路径一致,故要先找出CCS的安装目录)。
4. 接通DSK板电源,配置工作环境: 双击打开Code Composer (Studio)配置程序,如图:点击“Clear”按钮,清除原有配置。
模数转换adc实验报告

模数转换adc实验报告1. 引言模数转换(ADC)是将模拟信号转换为数字信号的过程,广泛应用于各种电子设备中。
本实验旨在通过搭建一个简单的ADC电路,了解和掌握模数转换的基本原理和方法。
2. 实验设备和工具- 一块Arduino开发板- 一根面包板- 一块电位器- 若干杜邦线- 一台笔记本电脑- Arduino开发环境3. 实验步骤3.1 搭建电路首先在面包板上连接电位器和Arduino开发板。
将电位器的两个引脚与Arduino 的3.3V电源和GND(地)相连,电位器的中间引脚与Arduino的A0引脚相连。
3.2 编写代码打开Arduino开发环境,在新建的代码文件中输入以下代码:C++int potentiometerPin = A0;int adcValue;void setup() {Serial.begin(9600); 设置串口波特率为9600}void loop() {adcValue = analogRead(potentiometerPin); 读取A0引脚的模拟值Serial.println(adcValue); 打印模拟值delay(500); 延时500毫秒}3.3 上传并观察结果将Arduino开发板通过USB连接到电脑上,在Arduino开发环境中点击“上传”按钮将代码上传到开发板上。
上传完成后,点击Arduino开发环境的“串口监视器”按钮,设置波特率为9600,并观察串口监视器上显示的数据。
4. 实验结果与分析通过实验,我们可以得到电位器产生的模拟信号在进行模数转换后得到的数字信号。
数字信号表示了模拟信号的离散程度,数值越高表示模拟信号越接近最大量程。
在实验过程中,我们可以通过旋转电位器来改变模拟信号的大小,从而观察到模数转换的效果。
通过串口监视器显示的数据,我们可以清晰地看到转换后的数字信号随着模拟信号的变化而变化。
模数转换的精度取决于ADC的分辨率,即能够将模拟信号转换为多少个离散的数字信号。
模数转换实验报告册

模数转换实验报告册1. 引言模数转换是指把数字由一种模数表示方式转换为另外一种模数表示方式的过程,常见的模数包括二进制、十进制、十六进制等。
在计算机科学和电子工程领域中,模数转换是一项重要的技术,广泛应用于数据存储、通信传输等方面。
本实验旨在通过编程实现模数转换的功能,并通过实验验证其正确性和效果。
2. 实验原理在计算机中,数字的模数转换可以通过数学运算来实现。
以下以将十进制数转换为二进制数为例进行说明。
2.1 十进制转二进制原理十进制数转换为二进制数的步骤如下:1. 将十进制数不断除以2,直到商为0为止。
2. 每次除法运算的余数即为二进制数的最低位,从低位到高位依次排列。
3. 将排列好的二进制数作为转换结果。
例如,将十进制数13转换为二进制数的过程如下:13 / 2 = 6 余16 / 2 = 3 余03 / 2 = 1 余11 /2 = 0 余1将余数从低位到高位排列得到二进制数1101,即十进制数13的二进制表示。
2.2 实验目标本实验的目标是设计一个程序,能够将用户输入的十进制数转换为二进制数,并且能够正确处理负数的模数转换。
3. 实验步骤3.1 环境搭建1. 在计算机上安装编程环境,如在Windows系统上安装Visual Studio。
2. 创建一个新的控制台应用程序项目。
3.2 实现模数转换功能1. 在程序中添加一个函数,用于将十进制数转换为二进制数。
2. 在函数中实现十进制转二进制的转换算法,可以使用循环语句来实现。
3. 处理负数的模数转换,可以通过将负数取绝对值后再进行转换,并在结果中添加负号。
3.3 运行和测试1. 编译和运行程序。
2. 输入一个十进制数,并验证转换结果是否正确。
3. 测试负数的模数转换,确保程序能够正确处理负数。
4. 结果与讨论经过测试,本实验中设计的模数转换程序能够正确将十进制数转换为二进制数,并且能够处理负数的模数转换。
该程序在输入一个十进制数后可以立即给出转换结果,且结果准确无误。
四川大学微机借口模数转换实验报告

四川大学微机接口模数转换实验报告实验步骤:1.单极性输入信号的A/D转换:⑴接线:按实验电路图接线(可用IN1---IN5任一个口输入,端口地址00A1---00A5)⑵编程:(见程序清单1)程序结构设计---程序框图设计---代码编辑----编译---链接⑶调试:加载---调试⑷运行:①.运行程序②.改变输入信号的电平值,记录转换结果(数据)⑸测量十组数据,并将实验结果记录于数据记录表中:序号转换数据转换(计算)值实测值误差2.双极性输入信号的A/D转换:⑴接线:按实验电路图接线(可用IN6或IN7口输入,端口地址00A6,00A7)注意:如果双极性信号连在ADC的单极性输入端(IN0~IN5)很可能烧毁芯片。
⑵编程:(见程序清单2)程序结构设计---程序框图设计---代码编辑----编译---链接⑶调试:加载---调试⑷运行:①.运行程序②.改变输入信号的电平值,记录转换结果(数据)⑸测量十组数据,并将实验结果记录于数据记录表中:3.数据的D/A转换:⑴接线:不用接线。
⑵编程:(见程序清单3)程序结构设计---程序框图设计---代码编辑----编译---链接⑶调试:加载---调试⑷运行:①.运行程序②.改变输入的数据,记录转换后OUT1口和OUT2口的输出电平值。
⑸单极性和双极性各对称均匀的测量十六组数据(注:单极性输出口:OUT1,为0~+5V;双极性输出口:OUT2,为-5~+5V)记录实验结果:序号输入数据转换(计算)值实测值误差OUT1口OUT2口OUT1口OUT2口OUT1口OUT2口程序清单:清单1:CODE SEGMENTASSUME CS:CODESTART: MOV DX,00A1HMOV AL,01HOUT DX,AL ;用端口00A1作为输出口CALL DELAYIN AL,DX ;读取数据JMP STARTDELAY PROC ;延时1SMOV CX,1LOOP $RETDELAY ENDPCODE ENDSEND START清单2:CODE SEGMENTASSUME CS:CODESTART: MOV DX,00A6HMOV AL,06HOUT DX,AL ;用00A6口作为输出口CALL DELAYIN AL,DXJMP STARTDELAY PROC ;延时1SMOV CX,1LOOP $RETDELAY ENDPCODE ENDSEND START清单3:CODE SEGMENTASSUME CS:CODEMOV AL,00HSTART: MOV DX,0000HOUT DX,ALCALL DELAYADD AL,11HJMP STARTDELAY PROC ;延时1SMOV CX,1LOOP $RETDELAY ENDPCODE ENDSEND START数据、曲线以及误差分析:单极性ad转换:数据:序号转换数据转换(计算)值实测值误差(%) 修正值修正值误差(%)1 1CH 0.549 0.561 2.190 0.56102 37H 1.078 1.079 0.093 1.0870.7883 4AH 1.451 1.451 0 1.4580.48284 69H 2.059 2.067 0.388 2.062-0.2185 7FH 2.490 2.494 0.161 2.491-0.1006 9BH 3.039 3.030 -0.296 3.0370.2487 B3H 3.510 3.511 -0.028 3.505-0.1578 CBH 3.980 3.983 -0.075 3.973-0.2389 E6H 4.510 4.493 -0.377 4.50.15610 EEH 4.667 4.656 -0.236 4.6560用matlab做其未修正曲线:局部放大:修正曲线:修正曲线局部放大:单极性ad 转换误差分析:由转换值与实测值对比可知:其两者之间相差不大,误差水平几乎都在0.5%以下,在实验允许的范围内。
南昌大学计算机控制实验报告数/模转换实验

南昌大学实验报告学生姓名:学号:专业班级:实验类型:■验证□综合□设计□创新实验日期:实验成绩:实验一数/模转换实验一.实验要求掌握DAC0832芯片的性能、使用方法及对应的硬件电路。
编写程序控制D/A输出的波形,使其输出周期性的三角波。
二.实验说明电路实现见主板模块B1,具体说明请见用户手册。
DAC0832的片选CS0832接00H,观察输出端OUTl(B1部分)产生三角波由数字量的增减来控制,同时要注意三角波要分两段来产生。
三.实验步骤1、接线:此处无需接线。
2、示例程序:见Cpl源文件,程序流程如下图所示。
3、运行虚拟示波器方法:打开LCAACT软件中“设置”一>“实验机”,将其中的程序段地址设为8100,偏移地址0000。
然后选择“设置”一>“环境参数”一>“普通示波”,选择“工具”一>“加载目标文件”,本实验加载C:\AEDK\LCAACT\试验软件\CPI.EXE,然后选择在“工具”栏中“软件示波器”中“普通示波”,点击开始示波器即程序运行。
以后每个实验中的虚拟示波器运行方法同上。
只是加载的程序要根据实验的不同而不同。
如果以后用到该方法,不再赘述。
4、现象:程序执行,用虚拟示波器(CHl)观察输出点OUT(B1开始设置初始电平为0VD/A输出并增<=0FFH?YN数模转换中),可以测量到连续的周期性三角波。
通过实验结果的图片,我们可以知道得出来的三角波的幅值为U=(3.01V+1.95V)=4.96V。
T=1.3s模拟输出来的幅值和我们输入的5V有一定的偏差。
相对误差为(5-4.96)/5=0.8%,因为0832是8为的,所以分辨率为1/256即0.004。
相比较一下本次实验的误差只有0.8%,相当于掉了两个单位的分辨率。
在允许的误差范围之内。
所以本次实验的结果还算是比较成功的。
四、实验小结通过本次实验,我对数模转换的知识理解得更加透彻,以及如何使用DAC0832进行数模转换把数字量转换为模拟量并以三角波形式输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机控制ADC0809的模数转换与显示
一、实验内容和要求
本题目对单片机控制ADC0809(Proteus的元件库中没有ADC0809,用ADC0808来代替)的通道3的电压模拟量进行模数转换,转换为数字量后,显示在3位数码管上。
调节图中的电位器,可观察到数码管显示的电压值在变化。
二、实验主要仪器设备和材料
计算机一台
三、实验方法、步骤及结果测试
所有操作都在ISIS中进行,步骤如下。
(一)、Proteus电路设计
1.从Proteus库中选取元器件
(1)AT89C51:单片机;
(2)RES:电阻;
(3)7SEG-MAPX4-CC-BLUE
(4)CAP、CAP-ELEC:电容、电解电容
(5)CRYSTAL:晶振;
(6)BUTTON:开关
(7)BUTTON
(8)ADC0808
(9)POT-HG
(10)LED-YELLOW
(11)MAX7219
(12)RESONATOR
2.放置元器件、放置电源和地、连线、元器件属性设置、电气检测
所有操作都在ISIS中进行
完成的电路图设计如图
(二)、源程序设计
1、流程图
2、通过Keil u Vision4建立工程,再建立源程序文件
源程序如下
主机程序:
LED_0 EQU 30H
LED_1 EQU 31H
LED_2 EQU 32H
ADC EQU 35H
CLOCK BIT P2.4
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
ORG 00H
SJMP START
ORG 0BH
LJMP INT_T0
START:
MOV LED_0, #00H
MOV P2,#0FFH
MOV LED_1,#00H
MOV LED_2,#00H
MOV DPTR,#TABLE
MOV TMOD,#02H ;设置定时器工作方式2 MOV TH0,#245
MOV TL0,#00H
MOV IE,#82H ;开总中断和定时器0中断
SETB TR0 ;启动定时器0
WAIT:
CLR ST
SETB ST
CLR ST
JNB EOC,$ ;判断A/D转换结束否
SETB OE ;允许数据量输出
MOV ADC,P3
CLR OE
MOV A,ADC
MOV B,#51
DIV AB
MOV LED_2, A
MOV A,B
MOV B,#5
DIV AB
MOV LED_1, A
MOV LED_0, B
LCALL DISP ;跳至显示子程序
SJMP WAIT
INT_T0: ;定时器T0中断子程序
CPL CLOCK
RETI
DISP: ;显示子程序
MOV A, LED_0
MOVC A,@A+DPTR
CLR P2.3 ;显示数码管右边第一位数字
MOV P0,A
LCALL DELAY
SETB P2.3
MOV A, LED_1
MOVC A,@A+DPTR
CLR P2.2 ;显示数码管右边第二位数字
MOV P0,A
LCALL DELAY
SETB P2.2
MOV A,LED_2
MOVC A,@A+DPTR
CLR P2.1 ;显示数码管右边第三位数字
ORL A,#80H ;显示小数点
MOV P0,A
LCALL DELAY
SETB P2.1
RET
DELAY: ;延时子程序
MOV R6, #10
D1:
MOV R7,#250
DJNZ R7,$
DJNZ R6, D1
RET
TABLE:
DB 3FH, 06H, 5BH, 4FH, 66H
DB 6DH, 7DH, 07H, 7FH, 6FH
END
通过按钮“Build target”编译源程序,生成目标代码文件*.hex文件。
若编译失败,对程序修改调试直至编译成功。
(三)、Proteus仿真
1、加载目标代码
右击选中的ISIS编辑区中的单片机AT89C51,再单击打开其属性窗口,在“Program File”右侧框中输入目标代码“*.hex”文件,再在Clock Frequency 栏中设置12MHz,仿真系统则以12MHz的时钟频率运行。
2、仿真
单击仿真按钮进行仿真,仿真运行片段如下图所示:。