键控数据采集及数值显示电路设计微机原理.docx
《键控数据采集及数值显示电路设计微机原理.docx》由会员分享,可在线阅读,更多相关《键控数据采集及数值显示电路设计微机原理.docx(8页珍藏版)》请在冰豆网上搜索。
![键控数据采集及数值显示电路设计微机原理.docx](https://file1.bdocx.com/fileroot1/2022-11/24/b3e8aa31-eb43-42b9-b6a9-2977340bcb7f/b3e8aa31-eb43-42b9-b6a9-2977340bcb7f1.gif)
键控数据采集及数值显示电路设计微机原理
二○一二~二○一三学年第一学期
信息科学与工程学院
自动化系
课程设计计划书
班级:
自动化1006班
课程名称:
微机原理及应用课程设计
姓名:
指导教师:
二○一二年月十二日
一、设计题目
键控数据采集及数值显示电路设计
二、设计任务
按不同的数字键(0、1、2、3、4、5、6、7)采集0809相应数据通道的模拟量,并在LED数码管上显示值。
设定输入模拟量在0—5V范围内,显示值在0—255范围内。
三、设计要求
1.画出连接线路图或功能模块引脚连接图。
2.采用8088CPU作主控制器,0809作A/D转换器,采用直接地址译码方法,给各芯片分配地址,选取芯片中必须包含有8255。
3.采用3个共阴极型LED动态显示,只需显示0—255范围内的值。
四、设计思想及需要用的主要芯片
1、设计思想
首先通过编程对8255初始化,然后通过8255对ADC0809转换器初始化,通过0~7号按键(在这里0~7号按键用开关实现,有按键的过程中会有抖动,所以需要加入一个74LS244芯片,用于缓冲),经8088微处理器处理后选择ADC0809的模拟通道,将0~5V内的模拟量通过选择的模拟通道传递给模数转换器,通过转换器把模拟量转换为0~255之间的数字量,将数字量通过可编程并行接口8255(在这里端口A作为数据输入端,端口B作为数据输出端,端口C作为控制端),送给LED数码管显示。
2.主要芯片及其功能
ADC0809是8位逐次逼近式A/D转换器。
片内有8路模拟开关及地址锁存与译码电路、8位A/D转换和三态输出锁存缓冲器。
其芯片引脚图如下
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
。
74LS244是数据输入三态缓冲器。
外设输入的数据和状态信号,通过数据输入三态缓冲器井经过数据总线传递给微处理器。
8个数据输入端与外设相连,8个数据输出端与微型计算机的数据总线相连。
其引脚图如下
74LS273是数据输出寄存器。
8个输入端微型计算机的数据总线相连,8个数据输出端与外设相连,由时终端控制数据的写入。
其引脚图如下
六、流程图:
七、源程序代码
STACKSEGMENT
DW32DUP(0)
STACKENDP
DATASEGMENG
BUFDB40H,79H,24H,30H,19H,12H,02H,78H,00H,18H;0~9的字形码
IBUFDB4,0,4DUP(0);分配空间,为存储数据做准备
DATAENDS
CODESEGMENT
STARTPROCFAR
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVDX,383H;8255控制字寄存器的端口地址
MOVAL,83H;方式选择字
OUTDX,AL
LOP1:
MOVAL,0
MOVDX,005H;读74LS244芯片地址
INAL,DX;读74LS244端口地址
ANDAL,OFFH
JZLOP5
MOVBL,0
LOP2:
CMPAL,01H;将按键转化成相应的数字
JELOP3
SHRAL,1
INCBL
JMPLOP2
LOP3:
MOVAL,BL
OUTDX,AL;启动A/D转换并选择通道
MOVDX,382H;PC端口地址
LOP4:
INAL,DX
TESTAL,01H;为1表示转换结束,否则继续等待
JZLOP4
MOVDX,383H;控制字寄存器的端口地址
MOVAL,80H;写OE让其有效
OUTDX,AL
MOVAL,1;PC端口选择位置位字
OUTDX,AL;将ADC0809的EOC改为高电平有效
MOVAL,0BH;
OUTDX,AL;使OE有效,允许输出
MOVDX,383H
MOV90H;将PA端口设置为输入
OUTDX,AL
MOVDX,380H;写PA端口,将转化结果写入8255
INAL,DX
MOVDX,383H;设置控制字,将PB端口设置为输出
MOVAL,80H
OUTDX,AL
MOVDX,381H;读PB端口
OUTDX,AL
LOP5:
MOVCL,10
MOVAH,0
BEGIN:
DIVCL
MOVBP,OFFSETIBUF;依次将百位,十位,个位存入IBUF
MOV[BP+4],AH
MOVAH,0
DIVCL
MOV[BP+3],AH
MOVAH,0
DIVCL
MOV[BP+2],AH
MOV[BP+5],0DH;存入回车符
MOVAH,04H;用于操作七段显示器的位码
SHOW:
MOVBL,DS:
[BP+2]
MOVBH,0
MOVAL,BUF[BX];取出BCD数七段显示码,用于显示
MOVDX,380H;74LS273端口地址,输出端码
OUTDX,AL
MOVAL,AH
MOVDX,384H;输出位码
OUTDX,AL
MOVCX,1000;延时
LOOP$
INCBP;调整指向BCD码的指针,用于显示下一个数字
SHRAH,1;调整位码指针,是的下一个七段显示器有效
ANDAH,AH;判断三位数字是否已经完全输出
JNZSHOW;没有输入完,则跳转至SHOW
MOVAH,11;检测有无输入
INT21H
CMPAL,0
JNZLOP1;若有按键,则返回继续选择通道继续执行
RET
STARTENDP
CODEENDS
ENDSTART
八、实验小结
此次试验对于我来说是一次历练,由于我们在做实验时做的题目相对于这一次的课程设计来说要简单,所以开始拿到题目是有一些茫然。
冷静下来后开始分析题目,首先得知道题目究竟要我们做什么,实现什么功能。
然后拿着我们的《微机原理、汇编与接口技术》课本,分析一个个学过的芯片,看它能够实现什么功能,分析芯片的引脚应该怎样连接。
除了已经要求必须要用到的主要芯片,还需要找出一些辅助芯片,看究竟用哪一个芯片,能够是连接的电路图能够更加的简介。
在画硬件电路图上我也遇到了问题,由于没有选修电子电路CAD那门课,我一开始对Protel软件完全不熟悉,所以开始完全不知道图怎么画,最后请教的同学,他们教我怎样选择芯片、怎样选择一些元器件、怎样连接试图看起来更加清晰。
在Protel软件里面所有芯片内部的接Vcc的引脚和接地的引脚都没有显示,再此加以说明。
在实现功能的时候自己也遇到了一些麻烦,比如我们一般做试验的时候,实验室里面不需要我们对如何实现8086芯片的功能进行连线,只需把相应的数据总线等与其他的芯片连接起来即可,且许多芯片的内部已经接好,不需要我们另外连接。
在该课程设计中模拟量是0~5V,我在这里在ADC0809的ref(+)和ref(-)端分别接+5V和地,在在它们之间接一个滑动变阻器来实现。