1、不校验。停止位:用于设置传输帧与传输帧之间的间隔大小,停止位主要有1、1.5、2位。如传输E的传输参数设置: (9600,7,0,1) 可传输9600/(7+1+1+校验位(1)=960个字符。数据传送方式:串行通信中,按照在同一时刻数据流的方向可分为全双工和半双工传送方式。 1)全双工: 当数据的发送和接受分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接受操作,这就叫全双工传送方式 终端设备发送字符给串行接口,串行接口接收后发送回波给终端设备2)半双工: 使用一根传输线既进行数据输入又进行数据输出时,通信双方不能同时收发数据,这就叫 终端设备发送字符同时显示,并在发送数据的同
2、时,接收串行接口返回的信息。人机交互接口键盘接口的基本功能:去抖动、防串键、识别被按下或释放键,以及产生与被按键或释放键对应的键码。按键识别的方法(怎样识别): 1) 行扫描法 :计算机通过程序先向键盘的所有行逐行输出低电平(逐行扫描),若无按键按下闭合,则所有列的输出均为高电平,若有一个按键按下闭合,就会将所在的列输出低电平。计算机通过程序读入列线的状态,就可能判断有无键按下及哪个键按下,键所在的行、列位置的编码就是该键的编码。 首先使用PA0=0,然后读取PB端口,若PB=0FFH则表示行0没有按键按下,再使PA1=0,在读取PB判断行1有无按键按下,依次扫描全部的行线。当PB读取的数据不
3、为0FFH时,则表示该扫描行有按键按下,则在确定相应的按键序号。 2) 行列交换法:计算机通过程序先向所有的行输出全低电平,然后读入所有列的状态,若读入的列状态为全高电平,说明没有键按下,若读入的列中有一个为低电平,其余为高电平,表面有键按下;将读到的列状态从列输出,然后读入所有行的状态,可判断出是那一行有按键按下;通过两次扫描就可以知道是哪行的按键按下,通过行列状态数据可得到该键的编码。 在识别闭合按键时,要将行线接一个并口,工作于输出方式,将列线也接一个并口,工作于输入方式,程序使cpu通过输出端口向各行线上全部送低电平,然后读入列线的值。如果某按键按下,则必定会使某一列线值为0。.然后,
4、程序再对两个并行端口进行方式设置,使行线工作在输入方式,列线工作在输出方式,并将刚才读到的列线值从列线所接的并口输出,再读取行线上的输入值,在闭合键所在行线上的值比定为0,这样,当一个按键被按下时,必定可以读取一对唯一的行值和列值。3. PC键盘接口: 当在键盘上输入一个键时,键盘上的处理器首先向计算机主机产生硬件中断请求IRQ1,然后将该键的扫描码以串行的方式传送给计算机主机;而计算机主机在IRQ1硬件中断的作用下,调用INT 09H硬件中断把键盘送来的扫描码读入,并转换为ASCII码,存入键盘缓冲区。 在PC机中,各种特殊键的处理都通过INT 09H中断程序来实现,这些与PC的键盘接口硬件
5、无关。接盘接口电路它由串并转换芯片74LS322 和一些触发器、门电路构成,数据通过8255A的PA读入计算机。第六章 D/A转换器的特征性及连续1. 选择D/A 转换器芯片时一般考虑如下指标: 1)分辨率:指D/A转换器所能分辨的最小电压增量,或一个二进制增量所代表的模拟量大小。 分辨率= Vref / 2位数或分辨率()()位数,若Vref=5v,8位的D / A转换器分辨率为 5/256=20mV. 2)转换时间:指数字量输入到模拟量输出达到稳定所需的时间。 3)精度:指D/A转换器实际输出与理论值之间的误差,一般采用数字量的最低有效位作为衡量单位,如D/A分辨率为20mv,则精度为+-
6、10mv。 4)线性度:当数字量变化时,D/A转换器输出的模拟量按比例变化的程度,理想的D/A转换器是线性的,但实际有一定的误差,模拟输出偏离理想输出的最大值称为线性误差。 DAC(数字模拟变换集成电路)是系统或设备中的一个功能器件,当将它接入系统时,不同的应用场合对其输入输出有不同的要求,要考虑一下几点:输入缓冲能力: DAC的输入缓冲能力是非常重要的,具有缓冲能力(数据寄存器)的DAC芯片可直接与cpu或系统总线相连,否则必须添加锁存器。输入码制:DAC输入有二进制和BCD码两种,对于单极性DAC可接收二进制和BCD码;双极性DAC接收偏移二进制或补码。输出类型:DAC输出有电流型和电压型
7、两种,用户可根据需要选择,也可进行电流-电压转换。输出极性:DAC有单极性和双极性两种,如果输出要求有正负变化,则必须使用双极性DAC芯片。 选用DAC芯片应根据需要选择转换速度、精度和分辨率等满足设计需要的芯片。编程题:1.函数信号发生器: 利用DAC可以产生任意波形、幅度和频率的信号,如 三角波、方波和函数波等,设计信号发生器使,一般可根据所需频率和幅度生产一个周期的数据,然后循环输出该周期数据即可。 如DAC0832电路产生的函数信号程序。 设CS=200H20FH,产生Y=2*cos(200t)*sin(100t).解: 由于Vref=5V,所以对应的函数应为256 / 5 * 2 c
8、os(200t)*sin(100t),而该函数输出周期为18,输出程序为:#include #includeMain()unsigned char V0=128,VOUT;Unsigned int I;Next:i=0;while(i=18)VOUT=V0+256/5*2*cos(200*3.14159*i/180)*sin(100*3.14159*i/180);Outportb(0x200,VOUT); / 输出信号对应的Y值Outportb(0x201,VOUT); /将DAC0832缓冲数据输出到DACi+;While(!kbhit() /等待键盘goto next; /无键,返回继续利
9、用DAC可实现任意波形(如锯齿波、三角波、正玄波)的输出,如输出锯齿波、三角波的程序段:TRG: MOV DX,200HMOV AL,0HTN1: OUT DX,ALINC ALJNZ TN1MOV AL,0FFHTN2: OUT DX,ALDEX ALJNZ TN2MOV AH,1INT 16H ; /测试键盘按键JZ TRG.输出锯齿波程序如下:TRG: MOV DX,200HMOV AL,0HTN: OUT DX,ALINC ALJMP TN*C语言实现DAC0832的正玄波的输出。因为DAC0832是一个单极性输出DAC芯片,因此在正玄波输出中应将0V平移到128数值上。#include#includeMain()Unsigned char V0=128,VOUT;int i;next:i=0;while(i=360) /角度最大为360度VOUT=V0+128*sin(3.14159*i/180); /计算每10度的正玄值Outportb(0x200,VOUT); /输出i=i+10; /角度+10While (!kbhit() /等待键盘goto next; /键盘无键按下,重复输出正玄波。