多功能数字电压电流表的设计.docx
- 文档编号:5650299
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:15
- 大小:104.41KB
多功能数字电压电流表的设计.docx
《多功能数字电压电流表的设计.docx》由会员分享,可在线阅读,更多相关《多功能数字电压电流表的设计.docx(15页珍藏版)》请在冰豆网上搜索。
多功能数字电压电流表的设计
一.摘要
本次课程设计利用实验箱设计一个可测量多路电压的多功能数字电压电流表,按键控制分时显示测量值。
设计时用查询方式、采用A/D转换器ADC0809采集3路被测的电压信号,并利用按键来控制各路的通断与工作与否。
实验中用八段数码管显示测量数值,测量数值精确到小数点后两位。
二.关键词
ADC0809电压表82558253按键8段数码管
正文
三.元件功能及原理介绍
3.18253的功能和使用
1.
8253是一种可编程的定时器或计数器。
本次设计中利用8253的定时作用,用于产生一个稳定的脉冲。
该脉冲用于提供ADC0809的触发脉冲。
本设计中使用一片8253芯片,其线路如图3.1所示。
端口地址如表3.1所示。
系统中,8253在通道0下工作于方式2。
。
8253通道入口接1MHz的信号源,输出接ADC0809的时钟端,数模转化用,这里的0计数器仅当作一个时钟脉冲用。
2.《8253引脚图》当A1A0分别为00011011时分别选中三个通道和控制字寄存器在8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连Intel8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。
每个通道都可以编程设定6种工作方式之一种;由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。
表8-4控制功能表CS RD WRA1A0功能01000写计数器001001写计数器101010写计数器201011写控制字寄存器00100读计数器000101读计数器100110读计数器200111无操作1XXXX禁止使用011XX无操作计数器(0~2)即三个计数器/定时器通道。
每个通道包括:
8位控制字寄存器、16位计数初值寄存器、减一计数器和输出锁存器。
作定时器用:
其CLK端上的输入脉冲应是标准的、精确的;作计数器用:
对其CLK端上的脉冲计数,脉冲宽度可以不等。
采用减一计数器,为0时,从OUT端上输出一个脉冲定时时间=时钟脉冲周期X预置的计数初值每个通道:
CLK计数脉冲或标准脉冲输入端 OUT计数值为0时输出一个脉冲 GATE允许端,当GATE=1时允许计数
3.读/写控制逻辑;
CS:
片选信号,低电平有效;
RD:
读信号,低电平有效;
WR:
写信号,低电平有效
A1A0:
端口选择信号
4.三个通道(0~2);
每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。
8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。
采用二进制计数时,最大计数值是FFFFH,采用BCD码计数时。
最大计数值是9999。
与此计数器相对应,每个通道内设有一个16位计数值锁存器。
必要时可用来锁存计数值。
当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。
OUT端将有输出。
表示计数次数到。
当某个通道用作定时器时。
由CLK输入一定频率的时钟脉冲。
根据要求定时的时间长短确定所需的计数值。
并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”。
OUT将有输出,表示定时时间到。
允许从CLK输入的时钟频在1~2MHz范围内。
因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。
而后者是内时钟脉冲进行减“1”计数。
作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。
作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:
定时系数=需要定时的时间/时钟脉冲周期
①设置通道:
向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;
②计数/定时:
向通道写入计数值,启动计数操作;
③读取当前的计数值:
向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。
④计数到:
当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。
计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。
锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。
3.28255的功能与使用
8255是一种可编程的外围接口芯片,本设计中用3个8255分别进行键盘状态的输入和显示数据的输出。
8255的数据线、片选信号线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用。
8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种;
方式0:
基本的输入输出方式,即无须联络就可以直接进行的I/O方式。
其中A、B、C口的高四位或低四位可分别设置成输入或输出。
方式1:
选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0.
方式2:
双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。
(1)8255的初始化
D7
D6
D5
D4
D3
D2
D1
D0
上表为选择控制字的格式。
其中D7是标志位,本次设计中D7恒为1.D6,D5为A口的方式选择位。
D4为A口的输入输出选择位。
D3为C口的方式选择位。
D0为C口的输入输出选择字。
而D2为B口的方式选择位,D1为B口的输入输出选择位。
(2)设计中8255的使用
本设计中用三个8255,第一个用来采集按键的状态,第二个,第三个分别驱动两个八段的数码管。
下表为各个8255的端口分配。
8255
各端口
A口
B口
C口
控制端口
1
0f0h
0f2h
0f4h
0f6h
2
60h
62h
64h
66h
2
70h
72h
74h
76h
(3)8255的接线图
设计中第一个8255用于按键的采集,只用其中的A口,工作于输入状态。
第二个和第三个分别使用两个口A和B。
连接线路时,三个8255的D7—D0分别与8086的D7—D0相连。
地址总线的连接按照端口地址来依次连接。
3.3ADC0809的功能和使用
(1)ADC0809的结构
图中可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。
地址锁存与译码电路完成对A、B、C3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。
ADC0809芯片为28引脚为双列直插式封装,其引脚排列见图9.8。
对ADC0809主要信号引脚的功能说明如下:
IN7~IN0——模拟量输入通道
ALE——地址锁存允许信号。
对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
START——转换启动信号。
START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。
本信号有时简写为ST.
A、B、C——地址线。
通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。
其地址状态与通道对应关系见表9-1。
CLK——时钟信号。
ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。
通常使用频率为500KHz的时钟信号
EOC——转换结束信号。
EOC=0,正在进行转换;EOC=1,转换结束。
使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
D7~D0——数据输出线。
为三态缓冲输出形式,可以和单片机的数据线直接相连。
D0为最低位,D7为最高
OE——输出允许信号。
用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
Vcc——+5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。
其典型值为+5V(Vref(+)=+5V,Vref(-)=-5V).
图9.8《ADC0809引脚图》
表9-1通道选择表
(2)ADC0809与8086的连接
用Y9—Y3做片选信号,A0---A3与0809上的ABC相连接。
D7—D0与8086的D0----D7相连接。
连接后端口分配。
地址
通道1
通道2
通道3
状态口
300h
301h
302h
308h
3.4数码管的显示使用
(1)数码管的结构
如上图所示,本次设计中用共阳极数码管,数码管电压为+5v。
7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。
而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
其它字符的显示原理类同。
四程序介绍
4.1程序流程图
4.2程序模块介绍
4.21模数转化模块
采用ADC0809将模拟电压信号转化为数字信号,本设计中使用ADC0809中的三路转化通道,即1,2,3通道。
4.22数字处理模块
将采集的数字信号化为相应的模拟信号形式输出显示出来。
具体地说,就是先将数字量与52比较,若大于52则用公式:
A*52/256的商作为输出对应模拟量的第一位,即整数位。
若无则整数位置零。
而第二位,则取上式的余数作为数字量,再用公式求出商和余数,把商作为第二位数字输出,余数为第三位数字准备。
一次原理,可依次求出多位的精确数,本设计中,只取小数点后两位。
4.23数字输出模块
选用八段数码管,设计中选用的是共阳极的,采用查表法依次查表输出到显示管。
五课程设计心得体会
本次设计中,我深深的感觉到了‘精诚团结’重要性。
这次设计中,我们小组共有四个人,正是我们四个人的紧密合作,我们才能成功的完成这个设计。
有句话说得好:
书中自有黄金屋,通过这次设计,我认识了知识的重要性,更加深了自己对知识的理解,对实践的认识。
实践教会了我们学习。
通过在这次设计,我理解了实践的重要性。
通过自己的动手,我学到很多在课堂上没有学到的东西,更加深了自己对课本知识的理解。
比如说8086的各引脚功能,8253的实践应用等。
在设计过程中,我们通过查找资料,分享资料,学习资料,感受到了学习的快乐,学习的无止境性。
附录
附录程序代码
DATASSEGMENT
DATEDB0C0H,0F9H,0B4H,0B0H,99H,92H,82H,0F8H,80H,90H,7FH;共阳
DBUFDB1200DUP(?
);此处输入数据段代码
DATASENDS
STACKSSEGMENT;此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
MAINPROCFAR
START:
MOVAX,DATAS
MOVDS,AX;此处输入代码段代码
LEASI,DBUF
;8253的初始化
MOVDX,31BH;DX指向控制字端口
MOVAL,00110101B;通道0先读低字节,后高字节,方式2,BCD计数
OUTDX,AL;送控制字
MOVDX,318H;指向通道0端口
MOVAX,5000H;送计数值
OUTDX,AL
MOVAL,AH
OUTDX,AL
;8255的初始
LLLp:
movdx,0f6h;指向8255控制字寄存器
moval,10010000b;送控制字,A口方式0,输入
outdx,al
movdx,0f0h;指向A口
inal,dx;从A口读入状态
cmpal,7;采集输入信号
jzcai1;并判断通道
cmpal,6
jzcai2
cmpal,5
jzC5
CMPAL,4
JZC4
CMPAL,3
JZC3
CMPAL,2
JZC2
CMPAL,1
JZC1
jmpLLLP;循环,无口工作时
cai1:
movdx,300h;DX指向ADC通道0,三个口一起工作
callCAIJI
CALLXIANSHI
CALLDELLY
cai2:
MOVDX,301H;DX指向ADC通道1,
CALLCAIJI
CALLXIANSHI
CALLDELLY
MOVDX,302H
CALLCAIJI
CALLXIANSHI
CALLDELLY
JMPLLLP
C5:
MOVDX,302H;DX指向ADC通道2,2,3口一起工作
CALLCAIJI
CALLXIANSHI
CALLDELLY
MOVDX,300H
CALLCAIJI
CALLXIANSHI
CALLDELLY
JMPLLLP
C4:
MOVDX,302H;1,3口一起工作
CALLCAIJI
CALLXIANSHI
CALLDELLY
JMPLLLP
C3:
movdx,300h;3口工作
callCAIJI
CALLXIANSHI
CALLDELLY
MOVDX,301H
CALLCAIJI
CALLXIANSHI
CALLDELLY
JMPLLLP
C2:
MOVDX,301H;2,1口一起工作
CALLCAIJI
CALLXIANSHI
CALLDELLY
JMPLLLP
C1:
movdx,300h;1口工作
callCAIJI
CALLXIANSHI
CALLDELLY
JMPLLLP
RET
MAINENDP
CAIJIPROCNEAR;模数转换程序,即将模拟量转化为数字量存入计算机中
OUTDX,AL;启动一次转换
PUSHDX
MOVDX,308H;DX指向状态口
POLL:
INAL,DX;读入EOC状态
TESTAL,80H
JNZPOLL
NOEND:
INAL,DX
TESTAL,80H
JZNOEND
POPDX
INAL,DX
MOV[SI],AL
RET
CAIJIENDP
XIANSHIPROCNEAR;显示子程序
MOVAL,[SI];传递数模转化的数字
MOVAH,0;以下为数模转化的算法
CMPAL,52;先判断整数位的有无,有显示,无置零
JBZERO1
MOVBL,5
MULBL
MOVBX,256
MOVDX,0
DIVBX
MOVBX,AX
MOVAX,DX
JMPX1
ZERO1:
MOVBX,0
X1:
ADDDI,BX
MOVBX,AX
MOVAL,[DI]
MOVDX,66H
MOVAL,10000000B
OUTDX,AL
MOVDX,60H
OUTDX,AL
MOVAL,[DI+10];第二位恒输入显示小数点
MOVDX,66H
MOVAL,10000000B
OUTDX,AL
MOVDX,62H
OUTDX,AL
MOVAX,BX;输出小数点后第一位数
CMPAL,52
JBZERO2
MOVBL,5
MULBL
MOVBX,256
MOVDX,0
DIVBX
MOVBX,AX
MOVAX,DX
JMPX2
ZERO2:
MOVBX,0
X2:
ADDDI,BX
MOVBX,AX
MOVAL,[DI]
MOVDX,76H
MOVAL,10000000B
OUTDX,AL
MOVDX,70H
OUTDX,AL
MOVAX,BX
CMPAL,52
JBZERO3
MOVBL,5
MULBL
MOVBX,256
MOVDX,0
DIVBX
MOVBX,AX
MOVAX,DX
JMPX3
ZERO3:
MOVBX,0;输出小数点后第二位数字
X3:
ADDDI,BX
MOVBX,AX
MOVAL,[DI]
MOVDX,76H
MOVAL,10000000B
OUTDX,AL
MOVDX,72H
OUTDX,AL
RET
XIANSHIENDP
DELLYPROCNEAR;延时子程序
MOVCX,0010H
T1:
MOVAX,0010H
T2:
DECAX
JNZT2
LOOPT1
RET
DELLYENDP
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
参考文献
[1]周荷琴,吴秀清"微型计算机原理与接口技术"中国科学技术大学出版社,2009年6月
[2]唐瑞庭"微型原理.汇编语言与接口技术"中国水利水电出版社,2006年5月
[3]李捍东"微机原理与接口技术"重庆大学出版社,2004年10月
[4]宁飞,王维华,孔宇"微型计算机原理与接口实践"清华大学出版社,2006年12月
[5]彭虎,周佩玲,傅忠谦"微型计算机原理与接口技术学习指导"电子工业出版社,2008年4月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 数字 电压 电流表 设计