摘要:介绍了采取专用电平转换芯片MAX232实现PC机与MCS51单片机之间的串行通信的方法.通过对系统的通信方式选择89C51通信波特率的设置、通信的设置,以及对接口电路的软件和硬件的设计分析,展示了该电路的实用性.关键词:微处理器;PC机;串行通信;RS-232接口;MAX232芯片
上传时间: 2014-01-22
上传用户:shizhanincc
在计算机系统中,串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。由于串行通信和通信制式、传送距离以及I/O数据的串并变换等许多因素有关,为进一步学习MCS-51的串行接口打下基础。
上传时间: 2013-10-10
上传用户:李彦东
通用串行接口 UART90 系列单片机带有一个全双工的通用串行异步收发器UART 主要特征如下1 波特率发生器可以生成多种波特率2 在XTAL 低频率下仍可产生较高的波特率3 8 位和9 位数据4 噪声滤波5 过速的检测6 帧错误检测7 错误起始位的检测8 三个独立的中断发送TX 完成发送数据寄存器空接收RX 完成
上传时间: 2014-12-27
上传用户:yulg
以GMS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器,设计了一个串行数据采集/传输模块,给出了硬件原理图和主要源程序。关键词:串行A/D转换器;串行数据传输;GMS97C2051单片机 在微机测控系统中,经常要用到A/D转换。常用的方法是扩展一块或多块A/D采集卡。当模拟量较少或是温度、压力等缓变信号场合,采用总线型A/D卡并不是最合适、最经济的方案。这里介绍一种以GNS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器构成的采样模块,该模块的采样数据由单片机串口经电平转换后送到上位机(IBM PC兼容机)的串口COM1或COM2,形成一种串行数据采集串行数据传输的方式。经实践调试证实:该模块功耗低、采样精度高、可靠性好、接口简便,有一定实用价值。
上传时间: 2014-01-26
上传用户:sjb555
单片机串行通信发射机 我所做的单片机串行通信发射机主要在实验室完成,参考有关的书籍和资料,个人完成电路的设计、焊接、检查、调试,再根据自己的硬件和通信协议用汇编语言编写发射和显示程序,然后加电调试,最终达到准确无误的发射和显示。在这过程中需要选择适当的元件,合理的电路图扎实的焊接技术,基本的故障排除和纠正能力,会使用基本的仪器对硬件进行调试,会熟练的运用汇编语言编写程序,会用相关的软件对自己的程序进行翻译,并烧进芯片中,要与对方接收机统一通信协议,要耐心的反复检查、修改和调试,直到达到预期目的。单片机串行通信发射机采用串行工作方式,发射并显示两位数字信息,既显示00-99,使数据能够在不同地方传递。硬件部分主要分两大块,由AT89C51和多个按键组成的控制模块,包括时钟电路、控制信号电路,时钟采用6MHZ晶振和30pF的电容来组成内部时钟方式,控制信号用手动开关来控制,P1口来控制,P2、P3口产生信号并通过共阳极数码管来显示,软件采用汇编语言来编写,发射程序在通信协议一致的情况下完成数据的发射,同时显示程序对发射的数据加以显示。毕业设计的目的是了解基本电路设计的流程,丰富自己的知识和理论,巩固所学的知识,提高自己的动手能力和实验能力,从而具备一定的设计能力。我做得的毕业设计注重于对单片机串行发射的理论的理解,明白发射机的工作原理,以便以后单片机领域的开发和研制打下基础,提高自己的设计能力,培养创新能力,丰富自己的知识理论,做到理论和实际结合。本课题的重要意义还在于能在进一步层次了解单片机的工作原理,内部结构和工作状态。理解单片机的接口技术,中断技术,存储方式,时钟方式和控制方式,这样才能更好的利用单片机来做有效的设计。我的毕业设计分为两个部分,硬件部分和软件部分。硬件部分介绍:单片机串行通信发射机电路的设计,单片机AT89C51的功能和其在电路的作用。介绍了AT89C51的管脚结构和每个管脚的作用及各自的连接方法。AT89C51 与MCS-51 兼容,4K字节可编程闪烁存储器,寿命:1000次可擦,数据保存10年,全静态工作:0HZ-24HZ,三级程序存储器锁定,128*8 位内部RAM,32 跟可编程I/O 线,两个16 位定时/计数器,5 个中断源,5 个可编程串行通道,低功耗的闲置和掉电模式,片内震荡和时钟电路,P0和P1 可作为串行输入口,P3口因为其管脚有特殊功能,可连接其他电路。例如P3.0RXD 作为串行输出口,其中时钟电路采用内时钟工作方式,控制信号采用手动控制。数据的传输方式分为单工、半双工、全双工和多工工作方式;串行通信有两种形式,异步和同步通信。介绍了串行串行口控制寄存器,电源管理寄存器PCON,中断允许寄存器IE,还介绍了数码显示管的工作方式、组成,共阳极和共阴极数码显示管的电路组成,有动态和静态显示两种方式,说明了不同显示方法与单片机的连接。再后来还介绍了硬件的焊接过程,及在焊接时遇到的问题和应该注意的方面。硬件焊接好后的检查电路、不装芯片上电检查及上电装芯片检查。软件部分:在了解电路设计原理后,根据原理和目的画出电路流程图,列出数码显示的断码表,计算波特率,设置串行口,在与接受机设置相同的通信协议的基础上编写显示和发射程序。编写完程序还要进行编译,这就必须会使用编译软件。介绍了编译软件的使用和使用过程中遇到的问题,及在编译后烧入芯片使用的软件PLDA,后来的加电调试,及遇到的问题,在没问题后与接受机连接,发射数据,直到对方准确接收到。在软件调试过程中将详细介绍调试遇到的问题,例如:通信协议是否相同,数码管是否与芯片连接对应,计数器是否开始计数等。
上传时间: 2013-10-19
上传用户:uuuuuuu
用C18编译器进行Microwire串行EEPROM与PIC18单片机的接口设计 AN1004中文资料 目前市场上有许多种单片机用在嵌入式控制系统设计中,这些嵌入式控制系统中的很大一部分都要用到非易失性存储器。由于串行EEPROM 具有封装尺寸小,存储容量灵活,对I/O 引脚要求低,和低功耗低成本等特点,已成为非易失性存储器的首选。 为了满足市场需求, Microchip Technology 已经推出了一整套符合工业标准的串行EEPROM,覆盖了2 线式(I2C™)、3 线式(Microwire)和SPI 通信标准,并提供了不同的存储容量、工作电压范围和封装形式。
上传时间: 2013-10-22
上传用户:crazyer
串行编程器源程序(Keil C语言)//FID=01:AT89C2051系列编程器//实现编程的读,写,擦等细节//AT89C2051的特殊处:给XTAL一个脉冲,地址计数加1;P1的引脚排列与AT89C51相反,需要用函数转换#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引脚排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//编程前的准备工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//编程结束后的工作,设置合适的引脚电平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//从P0口获得数据{ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//转换并设置P0口的数据{ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//读特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//写器件{//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //写一个单元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效验:循环读,直到读出与写入的数相同 { nTimeOut++; if(nTimeOut>1000)//超时了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//读器件{ BYTE Data;//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //读一个单元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return Data;} void Lock01()//写锁定位{ InitPro01();//先设置成编程状态//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 if(ComBuf[2]>=1)//ComBuf[2]为锁定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//设置pw中的函数指针,让主程序可以调用上面的函数{ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上传时间: 2013-11-12
上传用户:gut1234567
串行下载线的原理图 SI Prog - Serial Interface for PonyProg
上传时间: 2013-11-09
上传用户:zhishenglu
摘 要:介绍了FPGA最新一代器件Virtex25上的高速串行收发器RocketIO。基于ML505开发平台构建了一个高速串行数据传输系统,重点说明了该系统采用RocketIO实现1. 25Gbp s高速串行传输的设计方案。实现并验证了采用FPGA完成千兆串行传输的功能目标,为后续采用FPGA实现各种高速协议奠定了良好的基础。关键词: FPGA;高速串行传输; RocketIO; GTP 在数字系统互连设计中,高速串行I/O技术取代传统的并行I/O技术成为当前发展的趋势。与传统并行I/O技术相比,串行方案提供了更大的带宽、更远的距离、更低的成本和更高的扩展能力,克服了并行I/O设计存在的缺陷。在实际设计应用中,采用现场可编程门阵列( FPGA)实现高速串行接口是一种性价比较高的技术途径。
上传时间: 2013-11-22
上传用户:lingzhichao
摘 要:介绍了FPGA最新一代器件Virtex25上的高速串行收发器RocketIO。基于ML505开发平台构建了一个高速串行数据传输系统,重点说明了该系统采用RocketIO实现1. 25Gbp s高速串行传输的设计方案。实现并验证了采用FPGA完成千兆串行传输的功能目标,为后续采用FPGA实现各种高速协议奠定了良好的基础。关键词: FPGA;高速串行传输; RocketIO; GTP 在数字系统互连设计中,高速串行I/O技术取代传统的并行I/O技术成为当前发展的趋势。与传统并行I/O技术相比,串行方案提供了更大的带宽、更远的距离、更低的成本和更高的扩展能力,克服了并行I/O设计存在的缺陷。在实际设计应用中,采用现场可编程门阵列( FPGA)实现高速串行接口是一种性价比较高的技术途径。
上传时间: 2013-10-22
上传用户:semi1981