实验八 A/D模数转换(汇编与微机原理)

2023-12-17 18:20

本文主要是介绍实验八 A/D模数转换(汇编与微机原理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实验目的:

掌握ADC0809模数转换的工作原理。

掌握用ADC0809来进行电压转换的使用方法。

实验内容:

用模数转换器件ADC0809测量外部输入的模拟电压,将转换结果输出到数码管的最右边两位上显示。

实验原理:

     0809A/D转换芯片有8个A/D转换通道IN0~IN7,可以同时进行工作,从8个通道中输入8个不同的模拟信号可以“同时”分别进行转换(启动转换从程序上看是有先后顺序的,但从用户来看它们是同时在进行转换)。本次实验只要求选择其中的一个通道工作。

      当执行OUT DX,AL指令时0809的输入信号START为1,开始启动模数转换,START信号有效的同时ALE信号也会有效,此时ADD-A、ADD-B、ADD-C会把当前工作的通道端口地址锁存下来以确定是哪个通道进行转换。EOC是转换结束的标志信号,是输出信号。转换结束数据进入锁存后它由低变为高电平,用户可将此信号作为状态信号进行查询或作为中断信号来触发中断,在实验室实验中可采用“延时等待转换结束”的方法以节省硬件资源提高课堂效率。ENBLE是输入信号,当它高电平时模数转换后得到的数据可以通过 D7~D0引脚输出,用IN  AL,DX指令将转换后的数据读入到AL中。

硬件连线:

0809C2区:0809片选CS、ADDA、ADDB、ADDC 连接A3区:系统CS3、A0、A1、A2 ;

C2区:CLK 连接 B2区:500K;               C2区:IN0 连接 F6区:0~5V ;

8255D3区:8255片选CS、A0、A1   连接  A3区: 系统CS1、A0 、A1;

D3区:   (A口)B=JP16(SEGA-SEGP)、(B口)C=JP17(DIG0-DIG7) 连接

F5区:    B(JP36)(段码)、     C(JP35)(位码)

注意

要求程序编成一个不断循环的过程,不停地转换不断地在数码管上显示数据。

数码管显示部分可直接调用星研系统提供的数码管显示子程序Display8,不用自己编写。

实验代码:

.MODEL TINY
EXTRN InitKeyDisplay:NEAR,Display8:NEAR
ADDR_0809 EQU 0250H   ;通道0
.STACK 100
.DATA
buffer DB 8 DUP(?)
.CODE
START:MOV AX,@DATA;初始化DSMOV DS,AXCALL InitKeyDisplay;初始化8255键盘显示
START1:	;启动AD转换器MOV AL,0MOV DX,ADDR_0809OUT DX,AL;延时cx=100MOV CX,100LOOP $;读取转换数据MOV DX,ADDR_0809IN AL,DX;对8字节显示BUFFER赋值MOV AH,AL;低四位AND AL,0FHMOV buffer+0,ALMOV AL,AH;高四位AND AL,0F0HROR AL,4;循环右移4位MOV buffer+1,ALMOV buffer+2,10HMOV buffer+3,10HMOV buffer+4,10HMOV buffer+5,10HMOV buffer+6,10H					MOV buffer+7,10H;显示转换数据LEA SI,bufferCALL Display8;重复以上过程JMP START1END START

这篇关于实验八 A/D模数转换(汇编与微机原理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/505369

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente