AD转换技术(中断方式)
8.3AD转换器及接口技术
第8章 AT89C51系统接口技术
8.3.3 AT89C51单片机与ADC0809接口应用 1. ADC0809内部结构及特性 ADC0809是8位逐次比较式A/D转换器,其内部包
1/2CLK周 期 ≈16 400个 时 钟 周 期
EOC
(最 高 位 )DS1 1/2位
DS2
18个 时 钟 脉 冲 周 期 2个 时 钟 脉 冲 周 期
DS3
(最 低 位 )DS4
Q3~ Q0
千位
百位
十位
个位
千位
百位
图8-14 MC14433选通脉冲时序图
第8章 AT89C51系统接口技术
(13) Q0~Q3:BCD码数据输出端,其中Q0为最低 位,Q3为最高位。在DS2、DS3和DS4选通期间,分别 输出三位完整的BCD码,即0~9这10个数码中的任何 一个。但在DS1选通期间,Q0~Q3输出除了表示千位 的0或1外,还表示了正负极性及欠过量程,其含义见 表8-3。
D7
D4 D3
D0
2EH 符 号
××
千
百
D7 2FH
D4 D3 十
D0 个
图8-16 数据存放格式
第8章 AT89C51系统接口技术
AD转换
CS WR1 WR2 XFER 图10-2 DAC0832引脚及内部结构
D7~D0 IOW 系 统 总 线 A9~A0 AEN
DAC0832 DI0~7 Verf WR1 +5V ILE
+5V R
Rfb
I01 Vout
译 码 器
200H
CS WR2 XFER DGND
A
I02
AGND
+
图10-3 DAC0832单缓冲方式连接
D/A转换器的基本原理
D/A转换器的基本组成
集成化的D/A转换芯片按输入二进制的位数常见的有8、12、16、 20位D/A转换器。
二、D/A转换器特性及连接
D/A转换器一般是根据自己的需要选择相应数据位宽度和速度
的D/A转换芯片,在选择D/A转换器芯片时一般考虑如下指标: (1)分辨率: 指D/A转换器能分辨的最小电压增量,或1个二进制增量所 代表的模拟量大小。 分辨率的表示式为: 分辨率=Vref/2位数 或 分辨率=(V+ref+V-ref)/2位数 若Vref=5V,8位的D/A转换器分辨率为5/256=20mV。
2.量化
3.编码
为了方便处理.通常将量化值进行二进制编码, 如图,我们可以看到,最大量化误差为1/2LSB.
2.模拟多路开关
当系统中有多个变化较为缓慢的模 拟量输入时,常常采用模拟多路开关, 利用它将各路模拟量轮流与A/D转 换器接通.这样使用一片A/D转换 器就可完成多个模拟输入信号的依次 转换,从而节省了硬件电路。 切换模拟信号,通常是多路输入,一 路输出。目前已有多种型号的模拟多 路开关集成芯片,它们的功能基本相 同,仅在某些参数和性能指标上有所 差异。下面简单介绍一种有代表性的 芯片AD7501.
ADDA转换
A/D接口电路的设计 在合理选择ADC芯片后,还必须正确设计ADC的外围电路,通常包括模拟电路、数字接口电路、电源电 路等部分。 1模拟电路 (1)放大器电路 除了少数ADC本身带有模拟放大电路外,大多数ADC的模拟输入电压范围在1~10V之间。大多数模数转 换系统的模拟输入信号是较小的,通常需要使用模拟放大器。模拟放大器一般选用集成运算放大器。一些 ADC的模拟输入端电阻比较小,而模拟信号源的内阻常常比较大,因此需要选用高输入阻抗、低输出电阻的 放大器。必要时可以加电压跟随器,以提高输入阻抗。
ADDC ADDB ADDA
000 001 010 011 100 101 110 111
地址
0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H
功能
输入信号1 输入信号2 输入信号3 输入信号4 输入信号5 输入信号6 输入信号7 输入信号8
备注
输入电压 范围0~5V
ADC0809没有内部时钟,需外接10KHz~1290Hz的时钟信号,时钟信号可以由单片 机的ALE信号通过74HC74 D触发器进行1/2分频得到。例如: 8051单片机的ALE输出的 频率为Fosc/6,当系统晶振为12MHz时,ALE信号频率约为1MHz,通过74HC74 D触发 器进行1/2分频后,符合ADC0809的时钟信号频率要求。
【AT91SAM3S】ADC中断方式采集数据
【AT91SAM3S】ADC中断⽅式采集数据
板⼦依旧是英倍特的EK-SAM3S。ADC部分的原理图如下:
PB1是⼀个复⽤引脚,在这⾥被⽤作AD功能,对应芯⽚上的AD5。即,使⽤⽚内ADC的5通道测VR1上2号引脚的电压。
实验采⽤了SysTick定时器产⽣中断⽅式来采集ADC数据。SysTick中断发⽣时,开启ADC转换。ADC转换结束时,产⽣中断,在ADC中断处理函数中读取ADC采集到的数据。转换后,通过UART输出,到PC端显⽰。
SysTick和ADC的中断处理函数如下:
uint32_t time_stamp = 0;
WEAK void SysTick_Handler( void )
{
uint32_t status;
time_stamp++;
/* simply to get 1s interval*/
if (time_stamp % 1000 == 0) //1秒采集⼀次ADC数据
{
status = ADC_GetStatus( ADC ) ;
/* if conversion is done*/
if ( (status & ADC_ISR_EOC5) == ADC_ISR_EOC5 )
{
ADC_StartConversion( ADC ) ;//开启ADC转换
}
}
}
/**
* \brief Default SUPC interrupt handler for ADC.
*/
WEAK void ADC_IrqHandler( void )
{
uint32_t status;
status = ADC_GetStatus(ADC);
第10章AD及D
有些A/D转换器由于芯片内部数据输出寄存器具有可控三态输出功能,故A/D转换的数据输出线可以直接和 CPU的数据总线相连。CPU可用输入指令从A/D转换器中读取转换数据。MCS-51单片机字长为8位,一 般的8位A/D转换器都可与单片机直接相配。对高于8位的A/D转换器,单片机需要从8位数据总线上读取 执行二次输入操作,即分别读取高位字节与低位字节。
ADC0809是28引脚DIP封装的芯片,各引脚功能如下: IN0~IN7(8条):8路模拟量输入,用于输入被转换的模拟电压。 D7~D0为数字量输出。 A、B、C:模拟输入通道地址选择线,其8位编码分别对应IN0~IN7,用于选择IN7~IN0上哪一路模拟电压 送给比较器进行A/D转换。
ALE:地址锁存允许,高电平有效。由低至高电平的正跳变将通道地址锁存至地址锁存器,经译码后控制八路 模拟开关工作。
启动A/D转换只需使用1条MOVX指令。在此之前,要将P2.0清0并将低三位与所选择的通道号相对应的口地址送 入数据指针DPTR中。例如要选择IN0通道时,可采用如下两条指令,即可启动A/D转换:
MOV DPTR,#FEF0H
;选中通道0,送入0809的口地址
MOVX @DPTR,A ;信号有效,启动A/D转换(IN0)
VDD:主电源,+5V。 VEE:模拟部分的负电源,-5V。 VAG:VREF和VX的地(模拟地)。 VSS:数字地。 VREF:基准电压输入线,其值为200mV或2V。 VX:被测电压输入线,其最大输入电压为199.9mV和1.999mV。 R1:积分电阻输入线,当VX量程为2V时,Rl取470Ω,当VX量程为200mV时,R1取27kΩ。 C1:积分电容输入线,C1一般取0.1μF。 Rl/C1:R1和Cl的公共连接端。 C01、C02:接失调补偿电容C0,C0的值约为0.1μF。
单片机课程设计AD转换
引言
本课题旳任务是对A/D转换电路进行设计,理解A/D转换与单片机旳接口措施,掌握AD0809转换性能及编程措施。
把模拟量转换成数字量旳器件,称为模数转换器,简称为A/D(Anolog to Digit)。一般旳A/D转换过程是通过采样、保持、量化和编码4个环节完毕旳,这些环节往往是合并进行旳。当A/D转换结束,ADC输出一种转换结束信号数据。CPU可有多种措施读取转换成果:①查询方式;②中断方式;③ 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转换器去控制多种参数量。
目录
一系统设计原理 (3)
二系统设计 (4)
三整个系统实现功能 (7)
四收获与心得体会 (9)
五参照书目 (10)
一系统设计原理
1 引脚定义:
IN0~IN7:8路模拟信号输入端,由地址锁存及译码控制单元旳3位地址A、B、C进行选通切换。
START:A/D转换启动控制信号输入端。
电气检测技术(新9)AD转换原理
7
积分式ADC中,最常用的是双积分式的ADC, 双积分式的ADC除了具有一般积分式AD转换 器件的优点外,还具有转换灵敏度高,性能稳 定等优点。在转换位数相同时,其价格仅为同 类ADC(逐次逼近式)的20%左右。
8
双积分ADC的原理图
9
2、双积分式ADC的特点
如在工作范围内,能得到较为可靠、稳定的 传递特性曲线,采用软件非线性校正就很容易实 现。此时的问题不在于非线性误差有多大,而在 于得到的特线曲线是否稳定、可靠。
36
2、分辨率 输入数字量变化一个最小单位时,输出模拟
量的变化量与满度输出量之比。 DAC位数愈多,输出电压增量愈小,分辨率愈
高。 例如,采用相同的5V参考电压,8位DAC的电
5
3、ADC的启动信号: 有的ADC需电平启动信号,或整个转换过程都 须保证启动信号有效。有的要求用脉冲信号启动。 显然,提供启动信号的接口电路也是不同的。 4、转换结束信号的处理及读取转换数据: ADC完成一次转换(从启动到转换完毕)需要一 定时间。转换完毕后ADC输出一个转换结束信号。 控制器必须判断转换结束后,方可执行读取数据 指令。判断的方法有:查询方式、中断方式、固 Biblioteka Baidu延时方式等。
19
ADC的转换能力有着比较大的差别,且有的 还是串行输出的ADC(AD7888、MAX170),转换
第7章-AD转换
第7章AD转换
7.1 概述
7.1.1 AD转换器
AD转换器即ADC(Analog to Digital Converter),是能将模拟量转换为数字量的器件。单片机能直接处理和控制的是数字量,对于模拟量,则可通过AD转换器件将其先转换为数字量,然后再交付单片机去做进一步处理。
在AD转换器件将模拟量转换为数字量的过程中,有许多参数值得我们关注,其中最重要的两个参数是转换时间和转换分辨率。
目前,常见AD转换器与微处理器间的数据接口有并行和串行之分,AD转换器的转换精度有8位、10位、12位等多种类型。此处选取并行8位AD转换器ADC0809,并行12位AD转换器AD574,串行8位AD转换器ADC0832,串行12位AD转换器TLC2543,共四种AD转换器件,分别说明其特点和使用方法。
7.1.2 AD转换分辨率
AD转换中,用转换分辨率来表示AD转换器对输入模拟信号的分辨能力,常用转换结果的二进制数的位数来表示,8位精度代表转换结果用8位二进制数表示,12位精度代表转换结果用12位二进制数表示。以下通过两个例子具体解释其内在含义。
例1:假设被转换的模拟量是电压信号,被测电压值在0V~5V的固定区间内连续可调,AD转换器分辨率假设是8位。
我们已经熟知,8位无符号二进制数的数值范围是十进制的0~255,共256个数。如果AD转换器分辨率是8位,则从理论上说,被测电压范围5V(5V-0V=5V)被平均等分为256等份,每一份是5V/256=0.01953125V≈0.02V=20mV,这每一份的含义是:电压每增大20mV,AD转换结果的数值就增加1;0V电压对应的转换结果应该是最小值0,而5V电压对应的转换结果应该是最大值255,2.5V电压对应的转换结果应该是0~255的中间值128,其它电压依次成比例对应某一数值。
单片机课设AD转换
1. ADC0809读写原理
A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
ADC0809属第二类,是八位A/D转换器。每采集一次需100us。
ADC0809 START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,故启动A/D转换只需如下两条指令: MOV DPTR,#PORT
汇编语言代码
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT_T0
ORG 0010H
MAIN:
MOV R0,#60H ;数据区起始地址送R0
MOV R2,#08H ;模拟量路数8路
SETB EA
SETB IT0
MOV DPTR,#7FF8H
MOVX @DPTR,A ;启动AD转换
uchar idata *p,*q;
void Init()
{
EA=1; CPU开总中断
EX0=1;
IT0=1;
*p=ADC0809;
*q=STO0809;
ADC0809=0x00; //启动ADC0809
}
void main()
实验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_CONTR
ADC_POWER=1,打开AD转换器电源(关闭电源可降低功耗,ADC初次上电需适当延时,再启动AD转换)。
SPEED1、SPEED0选择AD转换速度。
ADC_FLAG:AD
ADC_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)计算:
Vcc
Vin 1024
0]:ADC_RESL[10],:ADC_RES[7= (1)
如果只取⾼8位,则由式(2)计算: Vcc
Vin 256
0]:ADC_RES[7=……………………………………...…………………(2)当ADRJ=1时,10位转换结果与输⼊模拟电压的关系由式(3)计算:
单片机第09章 键盘中断模块与AD转换模块
(1)键的识别 )
如何知道键盘上哪个键被按下就是键盘识别问题. 如何知道键盘上哪个键被按下就是键盘识别问题.键盘识别主要 有行扫描法与行反转法. 有行扫描法与行反转法.
(2)抖动问题 )
当按下一个键时, 当按下一个键时,会出现所按的键在闭合位置和断开位置之间跳 几下才稳定到闭合状态的情况, 几下才稳定到闭合状态的情况,当释放一个按键时也会出现类似的情 这就是抖动问题. 况,这就是抖动问题.解决抖动的方法通常是延迟等待抖动的消失或 多次识别判定. 多次识别判定.
ADSCR主要功能是:选取要转换的通道,决定转换结束数据获取 主要功能是:选取要转换的通道, 主要功能是 的方式,设置是连续转换还是一次转换.其地址是$003C. 的方式,设置是连续转换还是一次转换.其地址是 .
数据位 定义 复位 D7 D6 D5 D4 D3 D2 D1 D0
COCO AIEN ADCO ADCH4 ADCH3 ADCH2 ADCH1 ADCH0 0 0 0 1 1 1 1 1
9.4 MC68HC908GP32 MCU内部的A/D转换模块
转换输入时钟寄存器( (3)A/D转换输入时钟寄存器(Analog-to-Digital Input ) 转换输入时钟寄存器 Clock Register—ADCLK) )
ADCLK决定 决定A/D转换的时钟频率来源,分频系数值,芯片内的 转换的时钟频率来源, 决定 转换的时钟频率来源 分频系数值,芯片内的A/D 转换器要求ADC时钟频率为 时钟频率为1MHz左右.ADCLK 的地址是:$003E. 左右. 的地址是: 转换器要求 时钟频率为 左右 .
AD转换电路(ADC0809)
气敏传感器:半导体气敏传感器是利用半导体于某种气体接 触式电阻机功率函数变化这一效应来检测气体的成分或浓度 的传感器。 压电式或压阻式传感器:某些电解质(石英晶体压电陶 瓷),在沿一定的方向受外力的作用而变形时,内部会产生 极化的现象,同时在其表面产生电荷。而当外力撤销时又重 新回到不带电的状态。利用这些介质可以做成压电式传感器。 固体受到作用力后,电阻率(或电阻)就要发生变化,这 种效应称压阻式效应,利用它可做成压阻式传感器。
分辨率为8位,精度为8位。 转换时间:100微秒 8个模拟输入通道,有通道地址锁存。 数据有三态输出能力。 输入电压范围为0~+5v 零偏差和满量程误差均小于1/2LSB,不需要校准 单一+5v电源供电工作温度范围为-40~+85℃ 功耗为15mw
从物理信号到电信号的转换
A/D转换器的作用是将模拟的电信号转换成数字信号。在 将物理量转换成数字量之前,必须先将物理量转换成电模 拟量,这种转换是靠传感器完成的。传感器的种类繁多, 如温度传感器,压力传感器、光传感器、气敏传感器等。 温度传感器:典型的温度传感器有热电偶和热敏电阻。热 电偶是利用热点效应来工作的,室温下的输出电压为毫伏 级的。热敏电阻是一种半导体新型感温元件,具有负的电 阻温度系数,当温度升高时,其电阻减小。 湿度传感器:是利用湿度变化引起其电阻值或电容量变 化原理制成的,即将湿度变化转换成电量变化。
ATmega16之AD转换与ADC中断程序
5
1、ATmega16内部ADC特点
• 可选的左对齐 ADC 读数 • 0 - VCC 的 ADC 输入电压范围 • 可选的 2.56V ADC 参考电压 • 连续转换或单次转换模式 • 通过自动触发中断源启动 ADC 转换 • ADC 转换结束中断 • 基于睡眠模式的噪声抑制器
• 逐次逼近电路需要一个从 50 kHz 到 200 kHz 的 输入时钟以获得最大精度(所需的转换精度低于 10 比特时输入时钟频率可以高于 200 kHz)
8
1、ATmega16内部ADC特点
• ADC 模块包括一个预分频器,可以由任何超过 100 kHz 的 CPU 时钟来产生可接受的 ADC 时钟 。预分频器通过 ADCSRA 寄存器的 ADPS 进行 设置。置位 ADCSRA 寄存器的 ADEN 将使能 ADC,预分频器开始计数。只要 ADEN 为1,预 分频器就持续计数,直到 ADEN 清零。
37
5、ADC中断程序
• “#pragma interrupt_handler <函数名>: <中断向 量>”
- ADC 转换结束中断向量为 15 - 中断向量表见 ATmega16 数据手册 Page43 Table18
AD转换中断程序
AD转换中断程序
void initInterrupt(void)
{
// 设置中断控制寄存器
CSR&=0xfffffffe; // 关中断 GIE=0
ISTP=0x00000c00; // 重置中断向量表到0C00h
IMH=0x08000000; // 指定Timer1产生int15中断
IML=0;
ICR=0xff;// 清除等待的中断
IER=0x8003;// 使能int15中断
// 设置定时器产生中断信号的频率
TIMER1PRD=0x1000;// 定时器1的周期=0x1000
TIMER1CTL=0x3c0; // 开始计数
CSR=CSR|1; // 开中断
}
DA转换
void InitInterrupt(void); // 初始化中断
void init_emif( void ); // 初始化emif接口寄存器
void InitCTR(); // 初始化ICETEK-CTR
void CloseCTR(); // 关闭ICETEK-CTR上各设备
void Delay(unsigned int nTime); // 延时子程序
void Delay1(unsigned int nTime); // 延时子程序(带LED显示刷新) unsigned char GetKey(); // 读取键盘输入
void RefreshLEDArray(); // 刷新发光二极管阵列显示
void SetLEDArray(int nNumber); // 修改发光二极管阵列显示内容
char ConvertScanToChar(unsigned char cScanCode); // 将键盘扫描码转换成字符
3.3 AD信号转换
2.6 A/D转换器
2.6.1 A/D转换器的种类
模拟信号在时间和数值上都是连续的,而数字信号在时间和数值上都是离散的,所以进行模数转换时只能在一些选定的瞬间对输入的模拟信号进行采样,使它变成时间上离散的采样信号,然后将采样信号保持一定的时间,以便在此时间内对其进行量化,使采样值变成数值上离散的量化值,再按一定的编码形式转换成数字量。完成一次A/D转换通常需要经历采样、量化和编码三个步骤。不同的量化和编码过程对应不同原理的A/D转换器。
A/D转换器的种类繁多,仪器系统中应用较多的主要有并联比较型、双积分型、逐次逼迫型、Σ-Δ调制型等。
1、并联比较型A/D转换器
并联比较型A/D转换器由分压电阻链、电压比较器、寄存器和优先编码器四部分组成,各级同时进行比较,各级输出码同时并行产生,转换速度与输出码的位数无关,所以最大优点是转换速度快。但缺点是随着输出位数的增加,所需器件数增加速度很快。所以这种ADC 适合速度快、分辨度低的场合。
2、逐次逼近型A/D转换器
逐次逼近型A/D转换器是由比较器、控制电路、逐次逼迫寄存器和DAC等部分组成,工作原理是将输入模拟电压与不同的基准电压多次比较,比较时从DAC输入数字量的高位到低位逐次进行,依次确定各位数码的“0”、“1”状态,使转换所得的数字量在数值上逐次逼近输入模拟量的对应值。
逐次逼近型A/D转换器的转换时间取决于输出数字的位数和时钟频率,位数越多则时间频率越低,转换所需要的时间越长。在输出相同位数的情况下,该转换方式的转换速度是除并联比较型A/D转换器外最快的一种,而且当输出位数较多时电路规模较小,所以它是目前集成A/D转换器产品中使用较为普遍的一种。
AD转换的步骤
A/D转换的步骤:
1.端口的配置,需要单片机外部采样时,把端口配置成输入模式,有TRIS 和 ANSEL设定;
2.配置A/D模块:
(1)选择A/D转换时钟;
(2)配置参考电压;
(3)选择A/D输入通道;
(4)配置A/D转换结果存储的格式;
(5)做好以上几步后,选择就可以启动A/D转换模块了;
3.配置ADC 中断;
(1)清零ADC 中断标志位;
(2) 允许ADC 中断;
(3) 允许外设中断;
(4) 允许全局中断;
4.等待所需的采集时间;
5.将GO/DONE 置1 启动转;
6.由如下方法之一等待ADC 转换结束;
(1)查询GO/DONE 位;
(2) 等待ADC 中断(允许中断);
7.读ADC 结果;
8.将ADC 中断标志位清零(如果允许中断的话,需要进行此操作);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称:微机原理与接口技术
实验名称:8位A/D转换实验(中断方式)
一.实验目的
掌握模/数信号转换的基本原理,掌握ADC0809芯片中断采样编程方法。
二.实验内容
从ADC0809通道0输入+5V可变电压,使用中断方式采集数据,并将转换数据在7段数码管上16进制数显示。
三.实验结果分析
拧电位器后发现数码显示管数字改变,并且两盏灯明亮程度不同。
附上源代码:
.MODEL SMALL
.386
DATA SEGMENT
NUM DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H,
7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
BUF DB 100 DUP (?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
IN AL, 21H
AND AL, 11011111B ;开放IRQ5
OUT 21H, AL
CLI
CLD
MOV AX,0
MOV ES,AX
MOV DI,4*35H
MOV AX,OFFSET AD
STOSW
MOV AX,SEG AD
STOSW
MOV AX,DATA ;恢复数据段
MOV DS,AX
MOV DX,200H ;启动转换
MOV AL,00H
OUT DX,AL
BEGIN: STI
HLT ;等待中断
JNZ BEGIN
IN AL,21H ; 关闭MIR5
AND AL,20H
OUT 21H,AL
MOV AH, 4CH
INT 21H
DIS PROC NEAR ;显示程序
MOV CX, 0FFH
NEXT: MOV AL, [DI]
MOV AH, AL
PUSH CX
MOV CL, 4
SHR AL, CL
POP CX
MOV BX, 0
MOV BL, AL
MOV AL, NUM[BX]
MOV DX, 210H
OUT DX, AL
MOV DX, 211H
MOV AL, 00100000B
OUT DX, AL
CALL DELAY
AND AH, 00001111B
MOV BX, 0
MOV BL, AH
MOV AL, NUM[BX]
MOV DX, 210H
OUT DX, AL
MOV DX, 211H
MOV AL, 00010000B
OUT DX, AL
CALL DELAY
LOOP NEXT
RET
DIS ENDP
AD PROC NEAR ;中断程序
PUSH AX ;保存寄存器
PUSH DX
PUSH DI
CLI
MOV DX, 201H ;读取转换结果
IN AL, DX
NOP
MOV DI, POINT
MOV [DI], AL ;保存转换结果
CALL DIS ;调用显示程序
INC DI
MOV POINT, DI
MOV AL, 20H ;中断结束命令
OUT 20H, AL
MOV DX, 200H ;开启转换
MOV AL, 00H
OUT DX, AL
POP DI ;恢复寄存器内容
POP DX
POP AX
STI
IRET ;中断返回
AD ENDP
CODE ENDS
END START