微机原理课程设计 通信Word文档下载推荐.docx
《微机原理课程设计 通信Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计 通信Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
DAC0832是8位双缓冲D/A转换器。
有8位输入锁存器,8位DAC寄存器,8位D/A转换电路组成。
有三种工作方式:
单缓冲方式,双缓冲方式,直通方式。
本实验用示波器观察其输出波形。
5).ADC0809是CMOS型的8位逐次逼近型A/D转换器,它由8路模拟开关、8位A/D转换器以及三态输出锁存器构成。
八路模拟量输入通道可以直接连通8个单端模拟信号。
6).键盘一般都是矩阵排列,行和列分别接微机的输出,输入端口,每个键都跨接在某行和某列上,当键按下时,该行与该列短路。
输入端口线一般都通过电阻拉至高电平,本实验中采用行扫描法来识别键盘上的闭合键。
行扫描法是使键盘的某一输出为低电平,其余为高电平,然后读取列植,如果列值中有某位为低电平,则表示行列交点处的键被按下,还可以知道是哪一行哪一列交点的键按下。
四、设计要求:
1)波特率设为9600hz或12000hz
2)内容一:
1、发送方通过选择采样通道,采集模拟信号,通过rs232接口发送到接受方
2、接受方接受到数据后,将数据送到数码管显示并且将数字还原为模拟信号,用示波器观察波形
3)内容二:
甲乙两台实验系统的键盘分别控制对方模拟输出产生—方波、三角波等;
4)硬件设计要求画出功能框图和逻辑原理图;
编程要有程序框图和流程图。
五、实验仪器与设备:
1)两台32位接口平台
2)微机及其兼容机两台
3)示波器两台
4)编程软件:
汇编语言或c语言等高级语言
六、设计过程:
1、扫描键盘显示部分
1)说明:
利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在七段数码管上。
2)实验思路:
利用8255可编程并行口做一个扫描键盘(4×
4)实验,把按键输入的键码,显示在由8255PA口控制的七段数码管上。
8255PC口(PC7~PC4)作行扫描线。
PB口(PB3~PB0)做键盘输入列线。
本实验采用行扫描法
3)实验程序流程图:
N
Y
4)实验电路及连线:
5)程序代码:
DATASEGMENT
SEGTABDB0C0H,0F9H,0A4H,0B0H,99H;
七段显示编码
DB92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H,8EH
DATAENDS
STACK1SEGMENTPARASTACK
DB200DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
MOVDX,9803H;
8255控制口
MOVAL,82H;
10000010方式0,A口输入,B口输入(读入列线状态),C口输出(控制行线)
OUTDX,AL
NEXT:
MOVDX,9802H;
PC口送低电平
MOVAL,0
DECDX;
B口
AB:
INAL,DX;
读列信息
CMPAL,0FH;
判断是否有键按下
JZAB
MOVCX,8000H;
时延
DELAY:
LOOPDELAY
MOVBH,00
MOVBL,0
MOVCX,4
MOVAH,0EFH
AGAIN:
MOVAL,AH;
逐行检测
MOVDX,9802H;
行线地址
B口列线地址
INAL,DX;
读入状态
ANDAL,0FH
CMPAL,0FH
JNZAB1;
在该行则转
ADDBH,4;
不在该行,总键值加4(换行)
SHLAH,1
LOOPAGAIN
JMPNEXT
AB1:
AB3:
SHRAL,1
JCAB2
JMPAB4
AB2:
INCBL
LOOPAB3
AB4:
ADDBH,BL
MOVAL,BH
LEABX,SEGTAB
XLAT
PUSHAX
MOVDX,9803H;
显示
MOVAL,80H
MOVDX,9801H
MOVAL,0FH
MOVDX,9800H
POPAX
MOVBX,0;
BQ:
MOVCX,00
AQ:
LOOPAQ
DECBX
CMPBX,0
JNZBQ;
JMPSTART
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2、ADC0809A/D转换器
ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器。
1)ADC0809的内部逻辑结构
由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
2)引脚结构
IN0-IN7:
8条模拟量输入通道
ADC0809对输入模拟量要求:
信号单极性,电压范围是0-5V,若信号太小,必须进行放大;
输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:
4条
ALE为地址锁存允许输入线,高电平有效。
当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。
A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
通道选择表如下表所示。
数字量输出及控制线:
11条
ST为转换启动信号。
当ST上跳沿时,所有内部寄存器清零;
下跳沿时,开始进行A/D转换;
在转换期间,ST应保持低电平。
EOC为转换结束信号。
当EOC为高电平时,表明转换结束;
否则,表明正在进行A/D转换。
OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。
OE=1,输出转换得到的数据;
OE=0,输出数据线呈高阻状态。
D7-D0为数字量输出线。
CLK为时钟输入信号线。
因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,
VREF(+),VREF(-)为参考电压输入。
3)程序框图:
4)参考程序:
XDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
YDB5
ZDB10
DATA
MOVAL,89H
8255初始化
L5:
MOVAL,01H;
选择选择通道1
MOVDX,9840H
L1:
MOVDX,9802H
INAL,DX
TESTAL,01H;
测试EOC,是否转化完?
JNZL1
L2:
MOVDX,9840H
INAL,DX;
读入转换结果数
ANDAX,0FFH
DIVY;
采样值转化,除以5
DIVZ;
除以10
LEABX,X
XLAT
显示整数部分
ADDAL,80H
MOVBX,50H;
L3:
MOVCX,0000H
L:
LOOPL
JNZL3
MOVCL,8
SHRAX,CL
MOVAL,02H;
显示小数部分
MOVDX,9801H
MOVBX,50H
L4:
P:
LOOPP
JNZL4
JMPL5
3、DAC0832数模转换部分
1)DAC0832内部结构图
0832的内部包括两个8位寄存器、1个8位
转换器和相应辅助电路:
˙8位输入寄存器为第一级锁存器,它的锁存信号为ILE。
当ILE为高电平、CS和W为低电平时,LE1为1,这种情况下,输入寄存器的输出随输入而变化。
此后,WR1由低变高时,ILE变为低电平,此时,数据被锁存到输入寄存器中。
˙8位DAC寄存器为第二级锁存器,它的锁存信号也称为通道控制信号。
WR2和XFEB同时为低电平时,LE2为高电平,这时,8位的DAC寄存器的输出随输入而变化,此后,当WR2由低变高时,LE2变为低电平,将输入寄存器的信息锁存到DAC寄存器。
˙8位D/A转换器,实际上是一个T型电阻网络,在外部运算放大器配合下完成D/A转换工作。
2)0832引脚图和工作时序
a.ADC0809的引脚定义
b.ADC0809的工作时序
ADC0809芯片是按典型的逐位比较工作原理集成的,但需外接参
考电源和时钟(10KHZ-1.2MHZ),在时钟为640KHZ时,一次变换时
间为100μs,且随时钟降低,变换时间加长,地址信号加入后,利用
LE加一个正跳变脉冲,将端口上的地址信号锁存于内部地址寄存器
中,对应着的模拟电压输入就和内部变换电路接通。
为了启动变换,
必须在START端加一个负跳变信号,此后变换就开始了。
当EOC为低
电平时,表示正在变换中,当EOC由低变高时,表示变换结束。
此时,
只要在此端加一个高电平,即可开启三态缓冲器,从数据线读数据。
芯片内有一个八选一的模拟开关,利用ADDA-ADDC三个信号编
码选择相应的输入。
3)0832输出连接方式
见附录图
4)实验程序如下(实现锯齿波,方波)
(1)方波波发生程序:
CODE
MOVAL,0
MOVDX,9880H
MOVBX,65H
MOVCX,0FFH
LOOPL
JNZL2
MOVAL,0FFH
LOOPP
(2)锯齿波发生程序:
OUTDX,AL
MOVBX,45H
MOVCX,0FFH;
延时决定了锯齿波的周期
INCAL
JMPL1
4、自发自收测试:
用8251实现自发自收,RxD,TxD连一起,CTS,RTS连一起。
程序代码:
ASCTADB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
XDB5
YDB10
CODE,DS:
MOVAX,DATA
MOVAL,89H;
10001001A,B口输出C口输入
L4:
MOVDX,9853H;
8254
MOVAL,37H
MOVDX,9850H;
0计数器
MOVAL,00H
MOVAL,05H
L1:
MOVAL,1
MOVDX,9840H;
启动0809,1通道
MOVDX,9802H;
是否转换结束
TESTAL,01H
L2:
读数据
L3:
MOVDX,98C1H;
8251控制口
MOVAL,0;
送三次0
S1:
LOOPS1
S2:
LOOPS2
S3:
LOOPS3
MOVAL,40H
S4:
LOOPS4
MOVAL,7EH;
方式指令01111110停止位1位,偶校验,字符长度8位,波特率因子16
S5:
LOOPS5
MOVAL,25H;
00100101允许发送与接收
S6:
LOOPS6
WAIT0:
MOVDX,98C1H
读8251状态字
TxRDY是否为1,不为1发送
JZWAIT0
MOVDX,98C0H
D1:
LOOPD1
WAIT1:
MOVDX,98C1H;
TESTAL,02H;
RxRDY是否为1,不为1接收
JZWAIT1
MOVDX,98C0H;
8251数据口
D2:
LOOPD2
PUSHAX
DIVX;
除以5
DIVY;
LEABX,ASCTA
MOVAL,01H
;
movbx,300
MOVCX,0FFFFH
L:
decbx
jnzl
MOVAL,02H
P:
MOVDX,9880H;
0832D/A
5、联机通信:
在以上分布实验的基础上,接入RS232串行接口,修改部分代码和对方计算机联机通讯。
七、实验总结
小键盘部分:
1.单步调试,若读入和写出的数据不同,要查看是否连接读或写的线接触不良或断掉,若不是就要查看8255是否烧坏。
2.注意选择合适的时延。
0809部分:
1.本实验中0809的数据口跟通道选择信号连在一起,向数据口送数就实现了芯片的启动和通道的选择。
2.模拟信号实际值是从0到5V,量化值是从00到FF,用本实验的转换算法显示的数字是从0.0到5.1,转化误差是0.1V。
3.实验中单步调试出现读取转化数据总是同一个数,不随模拟信号的变化而变化。
在指导老师的帮助下,检查连线,同时使用O、I命令直接测试芯片管脚电平,方便有效很快解决了问题。
4.若显示数据无法稳定就要通过修改延时来测试时钟信号的频率,看频率选择是否合适。
在实验中要学会分布实现各逻辑电路,逐步实现整个电路的功能。
在遇到问题时切忌急躁,要静下心分析程序代码和电路连线,在排查问题的过程中分布调试是很重要的,认真,仔细的分布测试定能解决问题。
在整体调试过程中要注意单步程序和整体程序在执行中的不同,考虑其中的细节方能解决整体的实验功能。
八、实验电路图(Protel)