单片机串行口 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
上传时间: 2014-12-27
上传用户:x18010875091
通过介绍串行EEPR0M芯片在MCS.51单片机系统中的应用,为单片机应用数据存储器的扩展,提供一个新的理念,从而有效地提高了单片机cPu的引脚资源利用率,为单片机应用系统设计、开发、数据管理提供了又一种结构形式.
上传时间: 2013-10-21
上传用户:181992417
基于AT89C51应用系统的串行通信设计:介绍了基于AT89C51应用系统中的串行通信软硬件设计方法和实现过程,在基于红外成像技术的电力设备状态检测系统中,将红外测温仪检测到设备的温度数据传给控制电路,进行数据格式的转换后,在RAM 中存储,同时上传给PC机。系统利用MAX232实现RS 232C的EIA 电平与单片机的TTI 电平之闻转换,利用通用串口芯片8251A扩展串行接13',实现PC机与单片机之问的串行通信。 关键词:串行通信;单片机;接口;RS232C
上传时间: 2014-12-21
上传用户:aeiouetla
PC机之间串口通信的实现一、实验目的 1.熟悉微机接口实验装置的结构和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.学会串行通信程序的编制方法。 二、实验内容与要求 1.基本要求主机接收开关量输入的数据(二进制或十六进制),从键盘上按“传输”键(可自行定义),就将该数据通过8251A传输出去。终端接收后在显示器上显示数据。具体操作说明如下:(1)出现提示信息“start with R in the board!”,通过调整乒乓开关的状态,设置8位数据;(2)在小键盘上按“R”键,系统将此时乒乓开关的状态读入计算机I中,并显示出来,同时显示经串行通讯后,计算机II接收到的数据;(3)完成后,系统提示“do you want to send another data? Y/N”,根据用户需要,在键盘按下“Y”键,则重复步骤(1),进行另一数据的通讯;在键盘按除“Y”键外的任意键,将退出本程序。2.提高要求 能够进行出错处理,例如采用奇偶校验,出错重传或者采用接收方回传和发送方确认来保证发送和接收正确。 三、设计报告要求 1.设计目的和内容 2.总体设计 3.硬件设计:原理图(接线图)及简要说明 4.软件设计框图及程序清单5.设计结果和体会(包括遇到的问题及解决的方法) 四、8251A通用串行输入/输出接口芯片由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串→并)和“发送移位寄存器”(并→串)。能够完成上述“串←→并”转换功能的电路,通常称为“通用异步收发器”(UART:Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251。8251A异步工作方式:如果8251A编程为异步方式,在需要发送字符时,必须首先设置TXEN和CTS#为有效状态,TXEN(Transmitter Enable)是允许发送信号,是命令寄存器中的一位;CTS#(Clear To Send)是由外设发来的对CPU请求发送信号的响应信号。然后就开始发送过程。在发送时,每当CPU送往发送缓冲器一个字符,发送器自动为这个字符加上1个起始位,并且按照编程要求加上奇/偶校验位以及1个、1.5个或者2个停止位。串行数据以起始位开始,接着是最低有效数据位,最高有效位的后面是奇/偶校验位,然后是停止位。按位发送的数据是以发送时钟TXC的下降沿同步的,也就是说这些数据总是在发送时钟TXC的下降沿从8251A发出。数据传输的波特率取决于编程时指定的波特率因子,为发送器时钟频率的1、1/16或1/64。当波特率指定为16时,数据传输的波特率就是发送器时钟频率的1/16。CPU通过数据总线将数据送到8251A的数据输出缓冲寄存器以后,再传输到发送缓冲器,经移位寄存器移位,将并行数据变为串行数据,从TxD端送往外部设备。在8251A接收字符时,命令寄存器的接收允许位RxE(Receiver Enable)必须为1。8251A通过检测RxD引脚上的低电平来准备接收字符,在没有字符传送时RxD端为高电平。8251A不断地检测RxD引脚,从RxD端上检测到低电平以后,便认为是串行数据的起始位,并且启动接收控制电路中的一个计数器来进行计数,计数器的频率等于接收器时钟频率。计数器是作为接收器采样定时,当计数到相当于半个数位的传输时间时再次对RxD端进行采样,如果仍为低电平,则确认该数位是一个有效的起始位。若传输一个字符需要16个时钟,那么就是要在计数8个时钟后采样到低电平。之后,8251A每隔一个数位的传输时间对RxD端采样一次,依次确定串行数据位的值。串行数据位顺序进入接收移位寄存器,通过校验并除去停止位,变成并行数据以后通过内部数据总线送入接收缓冲器,此时发出有效状态的RxRDY信号通知CPU,通知CPU8251A已经收到一个有效的数据。一个字符对应的数据可以是5~8位。如果一个字符对应的数据不到8位,8251A会在移位转换成并行数据的时候,自动把他们的高位补成0。 五、系统总体设计方案根据系统设计的要求,对系统设计的总体方案进行论证分析如下:1.获取8位开关量可使用实验台上的8255A可编程并行接口芯片,因为只要获取8位数据量,只需使用基本输入和8位数据线,所以将8255A工作在方式0,PA0-PA7接实验台上的8位开关量。2.当使用串口进行数据传送时,虽然同步通信速度远远高于异步通信,可达500kbit/s,但由于其需要有一个时钟来实现发送端和接收端之间的同步,硬件电路复杂,通常计算机之间的通信只采用异步通信。3.由于8251A本身没有时钟,需要外部提供,所以本设计中使用实验台上的8253芯片的计数器2来实现。4:显示和键盘输入均使用DOS功能调用来实现。设计思路框图,如下图所示: 六、硬件设计硬件电路主要分为8位开关量数据获取电路,串行通信数据发送电路,串行通信数据接收电路三个部分。1.8位开关量数据获取电路该电路主要是利用8255并行接口读取8位乒乓开关的数据。此次设计在获取8位开关数据量时采用8255令其工作在方式0,A口输入8位数据,CS#接实验台上CS1口,对应端口为280H-283H,PA0-PA7接8个开关。2.串行通信电路串行通信电路本设计中8253主要为8251充当频率发生器,接线如下图所示。
上传时间: 2013-12-19
上传用户:小火车啦啦啦
串行编程器源程序(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
带I2C串行CMOS EEPROM、精密复位控制器和看门狗定时器的监控电路 特性 看门狗监控SDA信号 (CAT1161) 兼容400KHz 的I2C总线 操作电压范围为2.7V~6.0V 低功耗CMOS 技术 16 字节的页写缓冲区 内置误写保护电路-Vcc锁定-写保护管脚WP 复位高电平或低电平有效-精确的电源电压监控-支持5V,3.3V 和3V 的系统-5个复位门槛电压可供选择 1,000,000个编程/擦除周期 手动复位 数据可保存100 年 8 脚DIP 封装或8 脚SOIC 封装 商业和工业级温度范围描述CAT1161/2 为基于微控器的系统提供了一个完整的存储器和电源监控解决方案。它们利用低功耗CMOS技术将16k带硬件存储器写保护功能的串行EEPROM 存储器、用于掉电保护的电源监控电路和一个看门狗定时器集成到一块芯片上。存储器采用I2C 总线接口。当系统由于软件或硬件干扰而被终止或“挂起”时,1.6 秒的看门狗电路将复位系统,使系统恢复正常。CAT1161的看门狗电路监控着SDA,这就可以省去额外的PC板跟踪电路。低价位的CAT1162不含看门狗定时器。电源监控和复位电路可在系统上电/下电时保护存储器和系统控制器,防止掉电条件的产生。CAT1161/2的5个门槛电压可支持5V、3.3V和3V的系统。一旦电源电压超出范围,复位信号有效,禁止微控制器、ASIC或外围器件继续工作。复位信号在电源电压超过复位门槛电压后的200ms内仍保持有效。由于带有高电平和低电平复位信号,因此CAT1161/2可以很方便地连接到微控制器和其它IC。另外,复位管脚还可用作手动按键复位的去抖输入。 CAT1161/2 的存储器构造成16字节的页。除此之外,写保护管脚WP和VCC 检测电路提供的硬件数据保护功能可防止在Vcc降到低于复位门槛电压或上电时Vcc上升到复位门槛电压之前对存储器的写操作。器件包含8脚DIP和表贴8脚SOIC两种封装形式。
上传时间: 2014-03-19
上传用户:虫虫虫虫虫虫
1. RS-232-C 详解 22. 串口通信基本接线方法 123. 串口通讯的概念及接口电路 134. 有关RS232和RS485接口的问答 145. 同步通信方式 166. 通信协议197. 实战串行通讯258. 全双工和半双工方式 339. 浅析PC 机串口通讯流控制 3410. 奇偶校验 3511. 开发通信软件的技术与技巧 3612. 接口技术的基本知识 4113. 一个单片机串行数据采集/传输模块的设计 4414. 单工、半双工和全双工的定义 4815. 从RS232 端口获得电源4916. 串行同步通信的应用5017. 串行通信波特率的一种自动检测方法5318. RS-232、RS-422 与RS-485 标准及应用5619. 串口泵 6串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232C为主来讨论。RS-323C 标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969 年公布的通信协议。它适合于数据传输速率在0~20000b/s 范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。在讨论RS-232C 接口标准的内容之前,先说明两点:首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了。其次,RS-232C 标准中所提到的“发送”和“接收”,都是站在DTE 立场上,而不是站在DCE 的立场来定义的。由于在计算机系统中,往往是CPU 和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。
上传时间: 2013-11-21
上传用户:crazyer
针对目前工控领域,现场数据采集分散管理的不足,该文采用了Modbus RTU通信协议和串口通信技术,设计了主从式通信的采集系统,实现对各个现场的远程集中监控,即集散控制系统。详细阐述了在C#环境下基于Modbus RTU通信协议的上位机和DAM-3504系列三相多功能电量采集模块经过GPRS网络的主从式串行通信的实现。经过现场测试验证,表明该方案运行稳定,操作简便,能够对采集的数据进行实时显示,解决了对现场的统一监控和分布式管理的问题,为工业控制现场提供了一套可行性方案。
上传时间: 2013-10-29
上传用户:88mao
众志-863系统芯片 USBDC(univer serial bus devce control通用串行总线设备控制芯片,以下简称USBDC)是和带有USB主机控制器的设备进行通信的支持部件,实现和带有USB主机控制器的设备进行数据交换。 USBDC和APB连接进行寄存器的初始化配置,和DMAC连接进行大量的数据交换。
标签: control univer serial USBDC
上传时间: 2015-03-31
上传用户:kytqcool
本程序是用于通用同步和异步串行接收器和转发器(USART),使用中断方式异步接收和发送数据通信源的程序文件。
上传时间: 2015-04-15
上传用户:cooran