MCS-51与串行D/A转换器的接口设计

发布者:数字狂想最新更新时间:2011-07-25 关键字:MCS-51 手机看文章 扫描二维码
随时随地手机看文章

1. 概述
  在微机控制的电气设备中,常常需要把数字信号变成模拟信号,以驱动电气设备的运行,在这个过程中,D/A转换是一个十分重要的环节,亦是微机控制系统重要的组成部分。一般的D/A转化芯片都是并行接口,如8位系列0830/0831/0832、10位系列7520/7530/7533和 12位系列1208/1209/1210等均为并行接口,14位、16位系列也全部为并行接口。只有AD7543是12位串行D/A转换芯片,它是美国模拟器件公司(Analog Devices)的产品,属于特殊用途D/A转换器,和并行接口芯片有很大不同,使用该芯片构成的系统具有接线简单、使用方便、控制灵活的特点,具有较好的应用前景和开发价值。

2. AD7543内部框图和特性
  AD7543为16引脚双列直插式封装,内部框图和引脚符号如图1所示。
  AD7543的逻辑电路由12位串行输入并行输出移位寄存器(A)和12位DAC输入寄存器(B)以及12位DAC单元组成。在选通输入信号的前沿或后沿(由用户选择)定时地把RSI引脚上的串行数据装入寄存器A,一旦寄存器A装满,在加载脉冲的控制下,寄存器A的数据便装入寄存器B。并进行D/A转换。
  AD7543的引脚功能见表1。出现在AD7543的SRI引脚上的串行数据在STB1、STB2和STB4的上升沿或STB3的下降沿作用下,定时的移到移位寄存器A中,寄存器A和B控制输入端所要求的各种信号的逻辑关系如表2所列。

  AD7543的主要特性如下:
  ● 分辨率为12位。
  ● 非线性为±1/2LSB。
  ● 接正或负选通进行串行加载。
  ●用非同步清除输入使其初始化。
  ●低功耗、最大为40mW。
3. AD7543和8031单片机的接口设计
  实现AD7543与单片机的连接有两种方法,其一是基于字节操作,利用串行通讯接口实现,其二是基于位操作,利用普通输入输出口线实现,两种实现方法对A/D转化芯片的转换速度、工作以及数据传输的波特率等技术指示的要求各不相同。以下具体说明这两种实现的方法。
3.1 AD7543与单片机串行通讯接口的连接
  图2是8031的串行口和AD7543相连的接口电路,8031的串行口选用方式0(移位寄存器方式),其TXD端移位脉冲的负跳变将RXD输出的位数据移入AD7543,利用P1.0产生加载脉冲,由于是低电平有效,从而将AD7543移位寄存器A中的内容输入到寄存器B中,并启动D/A,单片机复位端接AD7543的消除CLR端,以实现系统的同步。

  由于AD7543的12位数据是由高字节至低字节串行输入的,而8031单片机串行口工作于方式0时,其数据是由低字节至高字节串行输出的。因此,在数据输出之前必须重新装配,并改变发送顺序,以适应AD7543的时序要求。如表3所列,其中数据缓冲区DBH为高字节存储单元,DBL为数据低8位存储单元。[page]

  改变数据发送顺序的程序如下:
OUTDA:MOV A,DBH ;取高位
   SWAP ;高4位和低4位交换
    MOV DBH,A
    MOV A,DBL ;取低位
    ANL A,#OFOH ;截取高4位
    SWAP ;高4位和低4位交换
    ORL A,DBH ;合成,(DBH)=D11 D10 D9 D8 D7 D6 D5 D4
    LCALL ASMBB ;顺序转换
    MOV DBH,A  ;存结果(DBH)=D4 D5 D6 D7 D8 D9 D10 D11
    MOV A,DBL   ;取低位
    ANL A,#OFH  ;截取低4位
    SWAP ;交换,(A)=D3 D2 D1 D0 0 0 0 0
    LCALL ASMBB  ;顺序转换
     MOV DBL,A  ;存结果(A)=0 0 0 0 D0 D1 D2 D3
     MOV A, DBH
     MOV SBUF,A ;发送高8位
     JNB TI $   ;等待发送完成
     CLR TI    ;发送完毕,清标志
     MOV A,DBL
       MOV SBUF,A  ;发送低4位
     JNB TI $    ;等待
     CLR TI     ;发送完毕
     CLR P1.0    ;A寄存器加载到B寄存器
     NOP
     SETB P1.0    ;恢复
     REF
     ……
ASMBB: MOV R6,#00H
     MOV R7,#08H
     CLR C
ALO:   RLC A
     XCH A,R6
     RRC A
     XCH A,R6
     DJNZ R7,AL0
     XCH A,R6
     RET
  以上这种方式的单片机串行通讯口与AD7543的接口电路,其波特率固定为CPU时钟频率的1/12,如果CPU的频率为6MHz,那么波特率为50kbps,位周期为20μs,显然,这种连接方法只能用于高速系统。
3.2 AD7543与单片机普通输入输出口线的连接
  AD7543可以用8031的P1口实现数据传送。这种方法的波特率可调,传输速度由程序控制。电路与图2相同,仅把8031的数据输出端由RXD引脚改为P1.1,将移位脉冲输出端由TXD改为P1.2口线,P1.0仍为加载脉冲输出。其程序如下:
FS:   MOV R7,#04H
    MOV A,DBH;数据高4位
    SWAP
LOOP1: RLC A
    MOV P1.0 ;输出
    LCALL PULSE ;移位脉冲输出
    DJNZ R7,LOOP1 ;4位未完继续
    MOV R7,#08H
    MOV A,DBLH ;数据低8位
LOOP2: RLC A
    MOV P1.0 C ;输出
    LCALL PULSE ;移位脉冲输出
    DJNZ R7,LOOP2 ;8位未完继续
    CLR P1.1 ;输出加载脉冲
    NOP
    SETB P1.1
    RET ;传送完毕
PULSE: SETB P1.1 ;输出高电平
    MOV R3,#4
PULS1: DJNZ R3,PULS1
    CLR P1.1;输出低电平
    MOV R3,#4
PULS2:DJNZ R3,PULS2
    RET
  其中FS为AD7543驱动程序,子程序PULSE为移位脉冲形成程序,改变R3的数值可以改变移位脉冲的频率。从而改变串行通讯波特率。

 

关键字:MCS-51 引用地址:MCS-51与串行D/A转换器的接口设计

上一篇:基于51单片机的空气净化机的设计
下一篇:基于C8051F920的太阳能金卤灯控制器设计

推荐阅读最新更新时间:2024-03-16 12:38

MCS-51单片机内部结构及功能简介
1.结构   (1)中央处理单元(8位) 数据处理、测试位,置位,复位 位操作   内容来自单片机之家www.dpj100.com (2)只读存储器(4KB或8KB)   永久性存储应用程序,掩模ROM、EPROM、EEPROM (3)随机存取内存(128B、128B SFR) 在程序运行时存储工作变量和资料 内容来自单片机之家www.dpj100.com (4)并行输入/输出口(I / O)(32条) 作系统总线、扩展外存、I / O接口芯片 (5)串行输入/输出口(2条)   串行通信、扩展I / O接口芯片 内容来自单片机之家www.dpj100.com (6)定时/计数器
[单片机]
MCS-51指令简介
MCS-51系列单片机指令系统分类 计算机的许多功能都是由程序实现,而程序是由指令编写而成,所以熟悉并掌握单片机的指令是非常重要的。为了便于学习,常把指令分成许多类型。51系列单片机共有111条指令,这些指令的集合称为指令系统。常用的分类方式有以下几种。 按寻址方式分为以下七种: 1、立即寻址 2、直接寻址 3、寄存器寻址 4、寄存器间接寻址 5、相对寻址 6、变址寻址 7、位寻址 按功能分为以下四种 1、数据传送指令 2、算术、逻辑运算指令 3、控制转移类指令 4、位操作指令(布尔指令) 若按字节又可分为单字节指令、双字节指令和三字节指令。 指令格式 MC
[单片机]
汇编语言的特点 MCS-51汇编语言的语句格式
由于计算机只能识别二进制数,所以计算机的 指令 均由二进制代码组成。为了阅读和书写的方便,常把它写成十六进制形式,通常称这样的 指令 为机器指令。现在一般的计算机都有几十甚至几百种指令。显然即便用十六进制去书写和记忆也是不容易的,为了便于记忆和使用的方便,制造厂家对指令系统的每一条指令都给出了助记符。助记符是根据机器指令不同的功能和操作对象来描述指令的符号。由于助记符是用英文缩写来描述指令的特征,因此它不但便于记忆,也便于理解和分类。这种用助记符形式来表示的机器指令称为汇编语言指令。 汇编语言有如下特点: ① 助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序
[单片机]
基于K9F5608A的MCS-51单片机驱动程序
K9F5608A的MCS-51单片机驱动程序主要包括函数声明管脚定义部分、命令操作函数以及数据输出函数。 (1)函数声明管脚定义部分主要完成程序所涉及的库函数的声明及有关引脚的定义,一般置于程序的开头部分,代码如下: (2)命令操作函数NFCommand()。 NfCommand()函数实现向K9F5608发送操作命令,程序代码如下: (3)地址发送函数NfAddre()。 NfAddre()函数完成向K9F5608发送3字节地址数据,程序代码如下: (4)页读函数。 页读函数实现对K9F5608数据的页读功能,主要包括ReadPageF()、ReadPage()和ReadPageS()等3种函数,相关程序
[单片机]
基于K9F5608A的<font color='red'>MCS-51</font>单片机驱动程序
单片机成长之路(51基础篇) - 013 MCS-51单片机控制详解–T2M
T2CON:定时器控制寄存器 寄存器地址0C8H,位寻址0C8H~0CFH。 位地址 CF CE CD CC CB CA C9 C8 位符号 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 TF2:T2溢出标记   当T2溢出时TF2=1,TD2只能用软件清除   当RCLK=1或TCLK=1时,TF2将不置位 EXF2:T2外部标记   当EXEN2=1时,T2EX/P1.1引脚上的负跳变引起T2的捕捉/重装操作,此时EXF2=1。在T2中断允许时,EXF2=1将引起中断,EXF2只能用软件清除。在T2的向上、向下计数模式下(DCEN=1)EXF2的置
[单片机]
MCS-51 单片机的硬件结构
MCS-51基本构成 Ø CPU :8位 Ø 存储器:128字节RAM;4K字节ROM存储器 Ø 并行口:4个8位并行口 Ø 串行口:1个全双工的串行口 Ø 21个专用特殊功能寄存器 Ø 定时器/计数器:2个16位的定时器/计数器 Ø 中断系统:5个中断源,两个中断优先级 Ø 寻址范围: 64K字节(程序存储区和外部数据存储区各64K) 即MCS-51是8位单片机,有40个管脚,8根数据线,16根地址线。通常称为八大基本组成部分:CPU 、ROM、RAM、I/O 、定时/计数器、串口、SFR、中断服务系统。备注:其中特殊功能寄存器(SFR)共有21个,是一个具有特殊功能的RAM区。 一、中央处理器(CPU):单片机的核心部分
[单片机]
<font color='red'>MCS-51</font> 单片机的硬件结构
MCS-51系列单片机串行接口的组成和特性
  MCS-51的串行口是一个全双工的异步串行通信接口,可以同时发送和接收数据。      串行口的内部有数据接收 缓冲器 和数据发送缓冲器。数据接收缓冲器只能读出不能写入,数据发送缓冲器只能写入不能读出,这两个数据缓冲器都用符号SBUF来表示。      CPU对特殊功能寄存器SBUF执行写操作,就是将数据写入数据发送缓冲器;对SBUF执行读操作,就是读出数据接收缓冲器的内容。      与串行通信有关的特殊功能寄存器共有4个:      1、特殊功能寄存器SCON:存放串行口的控制和状态信息。      2、特殊功能寄存器PCON:最高位SMOD为串行口波特率的倍率控制位。      3、中断允许寄存器IE:D4位(ES)为串
[单片机]
MCS-51单片机的硬件结构
MCS-51单片机的基本组成 MCS-51是Intel公司生产的一个单片机系列的总称.在功能上,该系列单片机有基本型和增强型两大类,通常以芯片型号的末位数字来区别。末位数字位“1”的型号是基本型,为“2”的信号是增强型。 MCS-51单片机的内部结构如图所示,基本结构包括: 一个8位的CPU及片内振荡器; 4KB掩膜ROM(8051),4KB EPROM(8751),无ROM(8031); 128B RAM,21个特殊功能寄存器SFK; 4个(P0~P3)8位并行I/O接口,一个可编程全双工通用异步串行接口(UART); 具有5个中断源,2个优先级; 可寻址64KB 的片外ROM和64KB的片外RAM; 两个16位的
[单片机]
<font color='red'>MCS-51</font>单片机的硬件结构
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved