微型计算机技术课程设计模拟电压采集电路设计.docx
- 文档编号:24067481
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:27
- 大小:805.79KB
微型计算机技术课程设计模拟电压采集电路设计.docx
《微型计算机技术课程设计模拟电压采集电路设计.docx》由会员分享,可在线阅读,更多相关《微型计算机技术课程设计模拟电压采集电路设计.docx(27页珍藏版)》请在冰豆网上搜索。
微型计算机技术课程设计模拟电压采集电路设计
微型计算机技术
课程设计
模拟电压采集电路
指导教师:
学生班级:
学生姓名:
学号:
班内序号:
41
课设日期:
2013年1月11日~2013年1月16日
同组队员:
目录
一.设计任务、设计要求、设计目的--------------------------------------------------------------------1
二.课题设计思路--------------------------------------------------------------------------------------------2
三.设计仪器、器件-----------------------------------------------------------------------------------------3
以及芯片介绍--------------------------------------------------------------------------------------3
74LS138----------------------------------------------------------------------------------------3
8253----------------------------------------------------------------------------------------------4
8255A--------------------------------------------------------------------------------------------5
ADC0809----------------------------------------------------------------------------------------6
ADC0809与8255A的连接-----------------------------------------------------------------7
8259内部结构及原理-----------------------------------------------------------------------7
数码管------------------------------------------------------------------------------------------9
四.芯片初始化
编程程序初始化8255和8253-----------------------------------------------------------------------10
(1)初始化8255-----------------------------------------------------------------------------------10
(2)初始化8253-----------------------------------------------------------------------------------10
编写中断服务子程序----------------------------------------------------------------------------------11
五.程序流程图----------------------------------------------------------------------------------------------12
ADC主程序编写---------------------------------------------------------------------------------------12
中断流程-------------------------------------------------------------------------------------------------12
六.硬件连接图----------------------------------------------------------------------------------------------13
七.程序代码-------------------------------------------------------------------------------------------------14
八.主要难点及解决思路和办法-------------------------------------------------------------------19
九.课设设结果及分析----------------------------------------------------------------------20
十.收获、体会和建议---------------------------------------------------------------------21
一、设计任务
利用《微型计算机原理》课程中所学的主要可编程接口芯片74LS138、8253、8255A、ADC0809和中断控制器8259设计一个模拟电压采集电路。
采用ADC0809设计一个单通道模拟电压采集电路,要求对所接通道变化的模拟电压值进行采集,采集来的数字量送至数码管LED指示,采集完100个数据后停止采集过程。
设计要求
1、选用8088CPU和适当的存储器芯片、接口芯片完成相应的功能。
2、画出详细的硬件连接图。
3、画出各程序的详细框图。
4、给出RAM地址分配表及接口电路的端口地址。
5、给出设计思路。
6、给出程序所有清单并加上必要的注释。
7、完成设计说明书。
设计目的
1.通过本设计,使学生综合运用《微型计算机技术》、《汇编语言程序设计》以及电子技术等课程的内容,为以后从事计算机检测与控制工作奠定一定的基础。
2.主要掌握并行I/O接口芯片8253、8255A、ADC0809及中断控制芯片8259A等可编程器件的使用,掌握译码器74LS138的使用。
3.学会用汇编语言编写一个较完整的实用程序。
4.掌握微型计算机技术应用开发的全过程:
分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。
2、设计思路:
本设计是利用已给芯片配搭相应辅助器件完成一个对电压的采集并显示的过程。
我对这个课题的设计思路如下:
先用ADC0809模数转换芯片作为与外部测量到的模拟量相连接,如果ADC0809接收到模拟量时,将其转化为相应的数字信号。
然后中断芯片8259不停地对外设进行探测,没有发现中断就继续探测,当有模拟量转化为数字量时,就有中断执行。
8088开始工作,通过接口电路8255A对数据进行传输,最后显示在数码管上!
100个数据还得分配相应的内存空间(本设计中没有画出相应的存储芯片)。
本设计以8088为中心,通过译码器74LS138对个芯片的工作进行地址分配,控制各个芯片工作在何种状态。
当第一个模拟信号通过采集放到内存并显示后,中断执行结束,8088通过控制分频器8253,在一定时间间隔后再对模拟电压量进行采集,知道执行100次之后,采集电压过程结束!
三、设计仪器、器件
1、一台微机原理与接口实验装置一套。
2、可编程芯片8253、8255A、ADC0809和译码器芯片74LS138、8259中断芯片、数据总路线缓冲器74LS245各一片。
3、四位数码管
4、其它逻辑器件、导线若干、示波器、万用表、常用工具等。
74LS138
芯片图:
控制方式图:
当一个选通端为高电平,另两个选通端为低电平时,可将地址端(A、B、C)的二进制编码在Y0至Y7对应的输出端以低电平译出。
比如:
ABC=110时,则Y6输出端输出低电平信号。
8253
8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
8255A
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线。
8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:
A组包括A口及C口高4位,B组包括B口及C组的低4位。
A口可以设置为方式0、方式1、方式2,B口与C口只能设置为方式0或方式1.
ADC0809
1、提供一个8通道的多路开关和寻址逻辑
●IN0~IN7:
8个模拟电压输入端
●ADDA、ADDB、ADDC:
3个地址输入线
●ALE:
地址锁存允许信号
2、ALE的上升沿用于锁存3个地址输入的状态,然后由译码器从8个模拟输入中选择一个模拟输入端进行A/D
3、ADC0809的转换时序:
4、ADC0809内部锁存转换后的数字量
5、具有三态数字量输出端D0~D7
6、配合输出允许信号OE
7、当输出允许信号OE为高电平有效时,将三态锁存缓冲器的数字量从D0~D7输出
(4).8255A与ADC0809的连接
中断控制器8259
8259芯片的工作原理
一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。
如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号。
但CPU这时可能正在执行一条指令,因此CPU不会立即响应。
而当这CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选。
如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。
当CPU执行完一条指令时后,会检查一下INTR管脚是否有信号。
如果发现有信号,就会转到中断服务,此时,CPU会立即向8259A芯片的INTA(中断应答)管脚发送一个信号。
当芯片收到此信号后,判优部件开始工作,它在IRR中,挑选优先级最高的中断,将中断请求送到ISR(中断服务寄存器),也即将ISR中代表此IRQ的位置位,并将IRR中相应位置零,表明此中断正在接受CPU的处理。
同时,将它的编号写入中断向量寄存器IVR的低三位(IVR正是由ICW2所指定的,不知你是否还记得ICW2的最低三位在指定时都是0,而在这里,它们被利用了!
)这时,CPU还会送来第二个INTA信号,当收到此信号后,芯片将IVR中的内容,也就是此中断的中断号送上通向CPU的数据线。
数码管
数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
4、芯片初始化
(1)初始化8255:
8255有四个寄存器,地址为300h-303h,分别为A口,B口,C口,和控制口,首先要向C口写入控制字,控制字格式如下:
工作方式控制
D7D6D5D4D3D2D1D0
特征位
1
A组方式选择
端口A输入/输出
C口高四位输入/输出
B组方式选择
端口B输入/输出
端口C低四位输入/输出
C端口置位/复位控制
D7D6D5D4D3D2D1D0
特征位0
任意
位选择
置位/复位0为复位,1为置位
可用如下代码初始化8255:
MOVDX,303H
MOVAL,10011001b
OUTDX,AL
(2)初始化8253
8253控制字格式如下
D7D6D5D4D3D2D1D0
计数器选择
读写格式
工作方式
计数方式
输入时钟信号为0.5MHZ,需要写入的计数初值为2,选用计数器0,工作方式3,代码如下:
MOVDX,307H
MOVAL,00110110b
OUTDX,AL
MOVAX,2
MOVDX,304H
OUTDX,AL
MOVAL,AH
OUTDX,AL
(3)编写中断服务子程序
首先要设置好中断向量,这里是调用72H号中断,在里面写入A/D转换的中断服务子程序地址,所以要保存原来72H中断向量表里面的内容,最后在程序完成时要恢复72H里的内容,在执行这些操作的时候是不容许中断的,所以要关中断,操作完成后要开中断,可以用一下指令来完成:
CLI;获取原中断向量里的内容并保存
INAL,0A1H;设置中断屏蔽寄存器,系统自动产生72号中断
ANDAL,0FBH
OUT0A1H,AL
MOVAX,3572H
INT21H
MOVINTOFF,BX
MOVINTSEG,ES
PUSHDS
MOVDX,OFFSETCONVERT_PROC;设置新的中断向量
MOVAX,SEGCONVERT_PROC
MOVDS,AX
MOVAX,2572H
INT21H
POPDS
STI;开中断,进行判断选择按什么键
CLI;恢复1C号中断向量
MOVDX,INTOFF
MOVAX,INTSEG
MOVDS,AX
MOVAX,2572H
INT21H
STI
中断服务子程序:
要想启动0809进行转换,首先必须有一个start信号,该信号为:
在转换的时候通过EOC信号来判断转换是否结束,当EOC信号由0变为1时就代表转换结束,此时让OE引脚为1,这时转换出来的数据就输出了。
五、程序流程图
ADC主程序编写
六、详细的硬件连接图
七、程序代码
STACK1SEGMENTSTACK
DW200DUP(?
)
STACK1ENDS
DATASEGMENT
MESG1DB'8255checkself8253checkselfandA/Dconversion',0ah,0dh
DB'ExitwithEsc',0ah,0dh,'$'
LEDDATADB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH
NUMdb0
count1db0
INT0A_OFFDW(?
)
INT0A_SEGDW(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
DELAYPROC
PUSHCX
PUSHBX
MOVBX,0FFFH
LOOP2:
MOVCX,0FFFFH
LOOP1:
LOOPLOOP1
DECBX
JNZLOOP2
POPBX
POPCX
RET
DELAYENDP;延时程序
START:
MOVAX,DATA
MOVDS,AX
MOVAH,09H
MOVDX,OFFSETMESG1
INT21h;显示提示信息
MOVDX,303H;初始化8255
MOVAL,80H
OUTDX,AL
MOVDX,301H;LED灯亮4盏灭四盏
MOVAL,0F0H
OUTDX,AL
MOVAX,3572H;获取原中断向量
INT21H
MOVINT0A_OFF,BX;保存原中断向量
MOVBX,ES
MOVINT0A_SEG,BX
CLI;关中断
MOVAX,2572H
MOVDX,SEGLEDLIGHT;设置新的中断向量
PUSHDS
MOVDS,DX
MOVDX,OFFSETLEDLIGHT
INT21H
POPDS
STI;开中断
INAL,0A1H;打开IRQ10
ANDAL,0FBH
OUT0A1H,AL
INAL,21H;打开IRQ2
ANDAL,0FBH
OUT21H,AL
MOVDX,307H;8253定时1S
MOVAL,01110110B
OUTDX,AL
MOVDX,305H
MOVAL,0E8H
OUTDX,AL
MOVAL,03H
OUTDX,AL
MOVDX,307H
MOVAL,10110110B
OUTDX,AL
MOVDX,306H
MOVAL,0E8H
OUTDX,AL
MOVAL,03H
OUTDX,AL
L1:
MOVAH,0BH;检查是否有Esc键按下
INT21H
INCAL
JNZNEXT0;若无键按下,则程序往下执行
MOVAH,08H;如有Esc键按下,则程序退出
INT21H
CMPAL,27
JZEXIT
NEXT0:
CALLDELAY
JMPL1
EXIT:
MOVAX,2572H;恢复中断向量
MOVDX,INT0A_SEG
PUSHDS
MOVDS,DX
MOVDX,INT0A_OFF
INT21H
POPDS
INAL,0A1H;屏蔽IRQ10
ORAL,04H
OUT0A1H,AL
INAL,21H;屏蔽IRQ2
ORAL,04H
OUT21H,AL
MOVAX,4C00H;程序退出
INT21H
LEDLIGHTPROCFAR;中断服务程序
PUSHAX
INCcount1
MOVAL,count1
CMPAL,100
POPAX
JZEXIT;采集到100次后退出
CLI;关中断
MOVDX,303H
MOVAL,10011000B
OUTDX,AL;重写8255方式字,A口输入,C口低四位输出,C口高四位输入
lop:
MOVDX,303H
MOVAL,1H
OUTDX,AL;先使PC0为1
MOVCX,0F00H
lop1:
LOOPlop1;延时
MOVDX,303H
MOVAL,00H;使PC0为0下降沿启动信号
OUTDX,AL
lopsub:
MOVDX,302
INAL,DX
ANDAL,10H
JZlopsub;判断PC4是否为高,即判断转换是否结束
MOVDX,303H
MOVAL,5H
OUTDX,AL;使PC2为高,发出OE
MOVDX,300H
INAL,DX;从A口读数据
MOVBL,AL
PUSHAX
MOVDX,303H
MOVAL,10011001B
OUTDX,AL
MOVDX,301H
MOVAL,BL
OUTDX,AL;将数据输入发光二极管显示
POPAX
PUSHAX
show1:
;显示高四位
ANDAL,0F0H
SHRAL,4
CMPAL,9
JAHEX2
ADDAL,30H
JMPNEXTPROL1
HEX2:
ADDAL,37H
NEXTPROL1:
MOVDL,AL
MOVAH,2
INT21H
POPAX
ANDAL,0FH;显示低四位
CMPAL,9
JAHEX3
ADDAL,30H
JMPnext4
HEX3:
ADDAL,37H
next4:
PUSHAX
INCNUM
MOVAL,NUM
CMPAL,5
POPAX
JNZNEXT5;使一行输入5个数据
MOVDL,AL
MOVAH,2
INT21H
MOVDL,20H;向屏幕送空格符
MOVAH,2
INT21H
MOVDL,13;向屏幕送回车符
MOVAH,2
INT21H
MOVDL,10;向屏幕送换行符
MOVAH,2
INT21H
MOVNUM,0
JMPNEXT
NEXT5:
MOVDL,AL
MOVAH,2
INT21H
MOVDL,20H;向屏幕送空格符
MOVAH,2
INT21H
NEXT:
MOVAL,62H;发中断结束命令
MOVDX,0A0H
OUTDX,AL;向从片8259发EOI命令
OUT020H,AL;向主片8259发EOI命令
STI;开中断
IRET
LEDLIGHTENDP
CODEENDS
ENDSTART
八、设计过程中的主要难点及解决思路和办法:
在本次设计中,我遇到的问题很多:
1、ADC08009模数转换芯片的使用,以及对这块芯片与接口单元8255A的连接很不熟悉。
解决方法:
先翻阅相关文献,了解ADC0809各个接口的功能以及内部结构原理,再和本次设计的课题相结合,找出它与8255A的连接方式。
2、译码器74LS138如何输出相应的地址控制各个芯片正常工作。
解决方法:
在设计前先对这个电路的所有工作方式写出来,然后通过对相应的芯片的片选端进行置1或置0,从而对每一个方式进行地址译码,这样就可以较简洁地通过译码器输出相应控制地址。
3、中断处理器8259如何放入设计电路中,对中断进行执行。
解决方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型计算机技术 课程设计 模拟电压采集电路设计 微型计算机 技术 模拟 电压 采集 电路设计