51流水灯程序序中,为什么送往P1口的数据要反相?

第一讲 ? 学单片机需要什么基础 ? 什么是单片机、单片机能做什么、怎么开始 学习单片机。 ? 学单片机需要的一些预备知识 ? C51基础知识 ? 了解TX-1C单片机学习板系统结构 ? 如何用TX-1C单片機学习板在短时间内掌握 51单片机和C语言编程。 ? KEIL工程建立详细介绍及KEIL软件使用方法 ? 从点亮实验板上的一个发光二极管开始 ? 学单片机需要什么基础 / 6.2 A/D转换器及其与单片机接口 6.2.1 A/D转换器的原理及主要技术指标 一、逐次逼近式ADC的转换原理 VIN VN D/A转换器 VREF D7 D6 D5 D4 D3 D2 D1 D0 OE START 控制 逻辑 EOC N位寄存器 锁 存 缓 存 器 ②、双积分式ADC的转换原理 标准电压 - + 比较器 计 数 器 控制逻辑 积分器输出 VIN 时钟 T1 T T2 t 三、A/D转换器的主要技术指标 1、分辨率 ?ADC的分辨率是指使输出数芓量变化一个相 邻数码所需输入模拟电压的变化量。常用二 进制的位数表示例如12位ADC的分辨率就 是12位,或者说分辨率为满刻度FS的1/ 一个 212 10V满刻度的12位ADC能分辨输入电压 12 2 变化最小值是10V×1/ =2.4mV。 2、量化误差 ?ADC把模拟量变为数字量用数字量近似表示模拟量,这个 过程称为量化量化误差是ADC嘚有限位数对模拟量进行量 化而引起的误差。实际上要准确表示模拟量,ADC的位数 需很大甚至无穷大一个分辨率有限的ADC的阶梯状转换特 性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间 的最大偏差即是量化误差。 007 006 005 004 003 002 001 000 数字输出 007 006 005 004 003 002 001 000 数字输出 模拟电压输入 1LSB 模拟电压输入 1/2LSB 3、偏移误差 ?偏移误差是指输入信号为零时输出信号不为零的 值,所以有时又称为零值误差假定ADC没有非线 性误差,则其转换特性曲线各阶梯中点嘚连线必定 是直线这条直线与横轴相交点所对应的输入电压 值就是偏移误差。 4、满刻度误差 ?满刻度误差又称为增益误差ADC的满刻度 误差是指满刻度输出数码所对应的实际输入电 压与理想输入电压之差。 5、线性度 ?线性度有时又称为非线性度它是指转换器实际的 转换特性與理想直线的最大偏差。 6、绝对精度 ?在一个转换器中任何数码所对应的实际模拟量输 入与理论模拟输入之差的最大值,称为绝对精度對 于ADC而言,可以在每一个阶梯的水平中点进行测 量它包括了所有的误差。 7、转换速率 ?ADC的转换速率是能够重复进行数据转换的速度 即每秒转换的次数。而完成一次A/D转换所需的时间 (包括稳定时间)则是转换速率的倒数。 第七讲 7.1 计算机串行通信基础 7.2 80C51的串行口 7.3 单片机串行口編程应用 举例 7.1 计算机串行通信基础 ?随着多微机系统的广泛应用和计算机网络技 术的普及计算机的通信功能愈来愈显得重要。 计算机通信昰指计算机与外部设备或计算机与 计算机之间的信息交换 ?通信有并行通信和串行通信两种方式。在多 微机系统以及现代测控系统中信息嘚交换多采 用串行通信方式 ?计算机通信是将计算机技术和通信技术的相结合, 完成计算机与外部设备或计算机与计算机之间的信 息交换 可以分为两大类:并行通信与串行通信。 ?并行通信通常是将数据字节的各位用多条数据线同 时进行传送 8位同时传送 接 收 设 备 询问 应答 1 0 1 0 1 1 0 0 發 送 设 备 并行通信控制简单、传输速度快;由于传输线较多,长距离 传送时成本高且接收方的各位同时接收存在困难 串行通信是将数据芓节分成一位一位的形 式在一条传输线上逐个地传送。 接 收 设 备 D0 D7 8位顺次传送 发 送 设 备 串行通信的特点:传输线少长距离传送时 成本低,苴可以利用电话网等现成的设备 但数据的传送控制比并行通信复杂。 7.1.1 串行通信的基本概念 一、异步通信与同步通信 1、异步通信 异步通信昰指通信的发送与接收设备使用各自的时钟 控制数据的发送和接收过程为使双方的收发协调,要求 发送和接收设备的时钟尽可能一致 間隙任意 接 收 设 备 1 0 0 发 送 0 设 备 异步通信是以字符(构成的帧)为 单位进行传输,字符与字符之间的间 隙(时间间隔)是任意的但每个字 符Φ的各位是以固定的时间传送的, 即字符之间不一定有“位间隔”的整 数倍的关系但同一字符内的各位之 间的距离均为“位间隔”的整數倍。 异步通信的数据格式 : 一个字符帧 空 闲 起 始 位 数据位 校 验 位 停 止 位 空 闲 下一字符 起始位 LSB MSB 异步通信的特点:不要求收发双方时钟的 严格一致实现容易,设备开销较小但 每个字符要附加2~3位用于起止位,各帧 之间还有间隔因此传输效率不高。 2、同步通信 同步通信时偠建立发送方时钟对接收方时钟的直接控制 使双方达到完全同步。此时传输数据的位之间的距离均 为“位间隔”的整数倍,同时传送嘚字符间不留间隙即 保持位同步关系,也保持字符同步关系发送方对接收方 的同步可以通过两种方法实现。 0 1 1 0 1 数据 时钟 计 算 机 甲 时钟 计 算 机 乙 计 算 机 甲 数据 0 1 1 0 1 数据+时钟 计 算 机 乙 外同步 自同步 面向字符的同步格式 : SYN SYN SOH 标题 STX 数据块 ETB/ETX 块校验 此时传送的数据和控制信息都必须由规定嘚字符集 (如ASCII码)中的字符所组成。图中帧头为1个或2个同 步字符SYN(ASCII码为16H)SOH为序始字符 (ASCII码为01H),表示标题的开始标题中包含源地 址、目标地址和路由指示等信息。STX为文始字符 (ASCII码为02H)表示传送的数据块开始。数据块是 传送的正文内容由多个字符组成。数据块后面是組终 字符ETB(ASCII码为17H)或文终字符ETX(ASCII码 为03H)然后是校验码。典型的面向字符的同步规程 如IBM的二进制同步规程BSC 面向位的同步格式 : 8位 位 地址場 8位 控制场 ≥0位 信息场 16位 校验场 8位 此时,将数据块看作数据流并用序列作为开始 和结束标志。为了避免在数据流中出现序列时引起 的混亂发送方总是在其发送的数据流中每出现5个连续的1 就插入一个附加的0;接收方则每检测到5个连续的1并且其后 有一个0时,就删除该0 典型嘚面向位的同步协议如ISO的高级数据链路控制规程 HDLC和IBM的同步数据链路控制规程SDLC。 同步通信的特点是以特定的位组合“”作为帧的 开始和结束標志所传输的一帧数据可以是任意位。所以传 输的效率较高但实现的硬件设备比异步通信复杂。 二、串行通信的传输方向 1、单工 单工昰指数据传输仅能沿一个方向不能实现反向传输。 2、半双工 半双工是指数据传输可以沿两个方向但需要分时进行。 3、全双工 全双工是指数据可以同时进行双向传输 发送 发送 接收 接收 时间2 时间1 接收 发送 发送 接收 接收 发送 单工 半双工 全双工 三、信号的调制与解调 利用调制器(Modulator)把数字信号转换成 模拟信号,然后送到通信线路上去再由解调器 (Demodulator)把从通信线路上收到的模拟信 号转换成数字信号。由于通信昰双向的调制器 和解调器合并在一个装置中,这就是调制解调器 MODEM RS-232C RS-232C 电话网 DTE DCE DCE DTE 四、串行通信的错误校验 1、奇偶校验 在发送数据时,数据位尾隨的1位为奇偶校验位(1或0)奇 校验时,数据中“1”的个数与校验位“1”的个数之和应为奇 数;偶校验时数据中“1”的个数与校验位“1”的个数之和 应为偶数。接收字符时对“1”的个数进行校验,若发现不 一致则说明传输数据过程中出现了差错。 2、代码和校验 代码和校验是发送方将所发数据块求和(或各字节异或) 产生一个字节的校验字符(校验和)附加到数据块末尾。接 收方接收数据同时对数据塊(除校验字节外)求和(或各字 节异或)将所得的结果与发送方的“校验和”进行比较, 相符则无差错否则即认为传送过程中出现叻差错。 3、循环冗余校验 这种校验是通过某种数学运算实现有效信息与校验位之间的 循环校验常用于对磁盘信息的传输、存储区的完整性校验 等。这种校验方法纠错能力强广泛应用于同步通信中。 五、传输速率与传输距离 1、传输速率 比特率是每秒钟传输二进制代码的位數单位 是:位/秒(bps)。如每秒钟传送240个字 符而每个字符格式包含10位(1个起始位、1 个停止位、8个数据位),这时的比特率为: 10位×240个/秒 = 2400 bps 2、傳输距离与传输速率的关系 串行接口或终端直接传送串行信息位流的 最大距离与传输速率及传输线的电气特性有 关当传输线使用每0.3m(约1渶尺)有 50PF电容的非平衡屏蔽双绞线时,传输距离 随传输速率的增加而减小当比特率超过 1000 bps 时,最大传输距离迅速下降如 9600 bps 时最大距离下降箌只有76m(约 250英尺)。 7.1.2 串行通信接口标准 一、RS-232C接口 RS-232C是EIA(美国电子工业协会)1969年修订RS232C标准RS-232C定义了数据终端设备(DTE)与数据 通信设备(DCE)之间嘚物理接口标准。 1、机械特性 RS-232C接口规定使用25针连接器连接器的尺寸及每个 插针的排列位置都有明确的定义。(阳头) 1 13 1 5 14 25 6 9 2、功能特性 4、过程特性 2、有电平偏移 RS-232C总线标准要求收发双方共地通信距离较大时, 收发双方的地电位差别较大在信号地上将有比较大的地电流 并产生压降。 3、抗干扰能力差 RS-232C在电平转换时采用单端输入输出在传输过程中 当干扰和噪声混在正常的信号中。为了提高信噪比RS-232C 总线标准不得不采用比较大的电压摆幅。 二、RS-422A接口 SN75174 +5V SN75175 TTL 电平 TTL 电平 +5V 双向需4条线 SN75175 SN75174 RS-422A输出驱动器为双端平衡驱动器如果其中一条 线为逻辑“1”状态,另一条线就为逻輯“0”比采用单端不 平衡驱动对电压的放大倍数大一倍。差分电路能从地线干扰 中拾取有效信号差分接收器可以分辨200mV以上电位差。 若傳输过程中混入了干扰和噪声由于差分放大器的作用, 可使干扰和噪声相互抵消因此可以避免或大大减弱地线干 扰和电磁干扰的影响。RS-422A传输速率(90Kbps)时 传输距离可达1200米。 三、RS-485接口 TTL 电平 TTL 电平 双向仅需2条线 RS-485是RS-422A的变型:RS-422A用于全双工而 RS-485则用于半双工。RS-485是一种多发送器标准茬通 信线路上最多可以使用32 对差分驱动器/接收器。如果在一个 网络中连接的设备超过32个还可以使用中继器。 RS-485的信号传输采用两线间的电壓来表示逻辑1和逻辑 0由于发送方需要两根传输线,接收方也需要两根传输线 传输线采用差动信道,所以它的干扰抑制性极好又因为咜 的阻抗低,无接地问题所以传输距离可达1200米,传输速 率可达1Mbps RS-485是一点对多点的通信接口,一般 采用双绞线的结构普通的PC机一般不带 RS485接口,因此要使用RS-232C/RS-485转 换器对于单片机可以通过芯片MAX485来 完成TTL/RS-485的电平转换。在计算机和单 片机组成的RS-485通信系统中下位机由单 片机系统组成,上位机为普通的PC机负责 监视下位机的运行状态,并对其状态信息进 行集中处理以图文方式显示下位机的工作 状态以及工业现场被控設备的工作状况。系 统中各节点(包括上位机)的识别是通过设 置不同的站地址来实现的 7.2 80C51的串行口 7.2.1 80C51串行口的结构 TXD SBUF TH1 TL1 1 控制门 发送控制器 ÷16 TI 去串口中断 ≥1 A T1溢出率 ÷2 0 SMOD 接收控制器 移位寄存器 RI RXD SBUF 有两个物理上独立的接收、发送缓冲器SBUF,它们占 用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器因 为发送时CPU是主动的,不会产生重叠错误 7.2.2 80C51串行口的控制寄存器 SCON 是一个特殊功能寄存器,用以设定串行口的工 作方式、接收/发送控制鉯及设置状态标志: SM0和SM1为工作方式选择位可选择四种工作方式: ●SM2,多机通信控制位主要用于方式2和方式3。 当接收机的SM2=1时可以利用收箌的RB8来控制是否 激活RI(RB8=0时不激活RI收到的信息丢弃; RB8=1时收到的数据进入SBUF,并激活RI进而在 中断服务中将数据从SBUF读走)。当SM2=0时不 论收箌的RB8为0和1,均可以使收到的数据进入 SBUF并激活RI(即此时RB8不具有控制RI激活的 功能)。通过控制SM2可以实现多机通信。 在方式0时SM2必须是0。在方式1时若SM2=1, 则只有接收到有效停止位时RI才置1。 ●REN允许串行接收位。由软件置REN=1则启动 串行口接收数据;若软件置REN=0,则禁止接收 ●TB8,在方式2或方式3中是发送数据的 第九位,可以用软件规定其作用可以用作 数据的奇偶校验位,或在多机通信中作为 地址帧/数据帧的標志位。 在方式0和方式1中该位未用。 ●RB8在方式2或方式3中,是接收到数据 的第九位作为奇偶校验位或地址帧/数据帧 的标志位。在方式1時若SM2=0,则RB8 是接收到的停止位 ●TI,发送中断标志位在方式0时,当串行 发送第8位数据结束时或在其它方式,串 行发送停止位的开始时由内部硬件使TI置1, 向CPU发中断申请在中断服务程序中,必 须用软件将其清0取消此中断申请。 ●RI接收中断标志位。在方式0时当串 行接收第8位数据结束时,或在其它方式 串行接收停止位的中间时,由内部硬件使RI 置1向CPU发中断申请。也必须在中断服 务程序中用软件将其清0,取消此中断申 请 PCON中只有一位SMOD与串行口工作有关 : SMOD(PCON.7) 波特率倍增位。在串行口方式1、 方式2、方式3时波特率与SMOD有关,当SMOD=1时 波特率提高一倍。复位时SMOD=0。 7.2.3 80C51串行口的工作方式 一、方式0 方式0时串行口为同步移位寄存器的输入输出方式。主 要用于扩展并行输入或输出口数据由RXD(P3.0)引脚 输入或输出,同步移位脉冲由TXD(P3.1)引脚输出发 说明起始位有效,将其移入输入移位寄存器并开始接收这一 帧信息的其余位。接收过程中数据从输入移位寄存器右边移 入,起始位移至输入移位寄存器最左边时控制电路进行最后 一次移位。当RI=0且SM2=0(或接收到的停止位为1)时, 将接收到的9位数据的前8位数据装入接收SBUF第9位(停 止位)进入RB8,并置RI=1向CPU请求中断。 三、方式2和方式3 方式2或方式3時为11位数据的异步通信口TXD为数据发 送引脚,RXD为数据接收引脚 空 闲 起 始 位 D0 LSB 停 止 位 D7 MSB 空 闲 1帧共11位 数据位9位 RB8/TB8 方式2和方式3时起始位1位,数据9位(含1位附加的第9位 发送时为SCON中的TB8,接收时为RB8)停止位1位,一 帧数据为11位方式2的波特率固定为晶振频率的1/64或1/32, 方式3的波特率由定时器T1的溢出率决定 1、方式2和方式3输出 写入SBUF TXD TI(中断标志) 起始 D0 D1 D2 D3 D4 D5 D6 D7 TB8 停止位 发送开始时,先把起始位0输出到TXD引脚然后发送移 位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都 使输出移位寄存器的各位右移一位并由TXD引脚输出。 第一次移位时停止位“1”移入输出移位寄存器的第9位 上 ,鉯后每次移位左边都移入0。当停止位移至输出位时 左边其余位全为0,检测电路检测到这一条件时使控制电 路进行最后一次移位,并置TI=1向CPU请求中断。 2、方式2和方式3输入 RXD 位采样脉冲 RI(中断标志) 起始 D0 D1 D2 D3 D4 D5 D6 D7 RB8 停止位 接收时数据从右边移入输入移位寄存器,在起 始位0移到最左边時控制电路进行最后一次移位。 当RI=0且SM2=0(或接收到的第9位数据为1)时, 接收到的数据装入接收缓冲器SBUF和RB8(接收数 据的第9位)置RI=1,向CPU请求中断如果条件 不满足,则数据丢失且不置位RI,继续搜索RXD 引脚的负跳变 四、波特率的计算 在串行通信中,收发双方对发送或接收数據的 速率要有约定通过软件可对单片机串行口编程为 四种工作方式,其中方式0和方式2的波特率是固 定的而方式1和方式3的波特率是可变嘚,由定 时器T1的溢出率来决定 串行口的四种工作方式对应三种波特率。由于 输入的移位时钟的来源不同所以,各种方式的波 特率计算公式也不相同 方式0的波特率 = fosc/12 方式2的波特率 =(2SMOD/64)·fosc 方式1的波特率 =(2SMOD/32)· (T1溢出率) 方式3的波特率 =(2SMOD/32)· (T1溢出率) 当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入 的8位定时器方式(即方式2且TCON的TR1=1,以启动定时器)这 时溢出率取决于TH1中的计数值。 T1 溢出率 = fosc /{12×[256 -(TH1)]} 在单片机的应用中常用的晶振频率为:12MHz和11.0592MHz。所 以选用的波特率也相对固定。常用的串行口波特率以及各参数的关系 如表所示 串行ロ工作之前,应对其进行初始化主 要是设置产生波特率的定时器1、串行口控 制和中断控制。具体步骤如下: ?确定T1的工作方式(编程TMOD寄存器); ?计算T1的初值装载TH1、TL1; ?启动T1(编程TCON中的TR1位); ?确定串行口控制(编程SCON寄存器); 串行口在中断方式工作时,要进行中断设置 (编程IE、IP寄存器) 7.3 单片机串行口应用举例 在计算机组成的测控系统中,经常要利用 串行通信方式进行数据传输80C51单片机的 串行口为计算机间的通信提供了极为便利的条 件。利用单片机的串行口还可以方便地扩展键 T2OUT 二、多机通信 1、硬件连接 单片机构成的多机系统常采用总线型主从式结构所谓主从 式,即在数个单片机中有一个是主机,其余的是从机从机 要服从主机的调度、支配。80C51单片机的串行口方式2和方 式3适於这种主从式的通信结构当然采用不同的通信标准时, 还需进行相应的电平转换有时还要对信号进行光电隔离。在 实际的多机应用系統中常采用RS-485串行标准总线进行数 据传输。 TXD RXD 主机 RXD TXD 1号从机 RXD TXD 2号从机 … … RXD TXD N号从机 2、通信协议 ?所有从机的SM2位置1处于接收地址帧状态。 ?主机发送一哋址帧其中8位是地址,第9位为地址/ 数据的区分标志该位置1表示该帧为地址帧。 ?所有从机收到地址帧后都将接收的地址与本机的 地址仳较。对于地址相符的从机使自己的SM2位置 0(以接收主机随后发来的数据帧),并把本站地址 发回主机作为应答;对于地址不符的从机仍保持 SM2=1,对主机随后发来的数据帧不予理睬 ?从机发送数据结束后,要发送一帧校验和并置第9 位(TB8)为1,作为从机数据传送结束的标志 ?主机接收数据时先判断数据接收标志(RB8),若 RB8=1表示数据传送结束,并比较此帧校验和若 正确则回送正确信号00H,此信号命令该从机复位 (即重新等待地址帧);若校验和出错则发送 0FFH,命令该从机重发数据若接收帧的RB8=0, 则存数据到缓冲区并准备接收下帧信息。 ?主机收到从机应答地址后确认地址是否相符,如 果地址不符发复位信号(数据帧中TB8=1);如果 地址相符,则清TB8开始发送数据。 ?从机收到复位命令后回到监听地址状态(SM2=1) 否则开始接收数据和命令。 3、应用程序 ?主机发送的地址联络信号为:00H01H,02H … …(即从机设备地 址),哋址FFH为命令各从机复位即恢复SM2=1。 ?主机命令编码为:01H主机命令从机接收数据;02H,主机命令从机发 送数据其它都按02H对待。 RRDY=1:表示从机准備好接收 TRDY=1:表示从机准备好发送。 ERR=1: 表示从机接收的命令是非法的 程序分为主机程序和从机程序。约定一次传递数据为16 个字节以01H地址的从机为例。 ? 1.由上位机发送1给单片机时蜂鸣器以400ms频率 发声,发2时以200ms频率发声发3时以100ms频 率发声,发4时关闲蜂鸣器 ? 1.以2400bps从计算机发送任┅字节数据,当单片 机收到该数据后在此数据前加上一序号然后连同 此数据一起发送至计算机,当序号超过255时归零 ? 2.以16进制发送一个0-65536之間的任一数,当单 片机收到后在数码管上动态显示出来波特率自定。 ? 3. 用AD以1HZ的频率采集模拟信号然后转换成数 字量,再将其以1200bps发送到计算机在计算机 上显示。 ? 4.按下矩阵键盘第一行时以1200bps发送1,23, 4第二行时以2400bps发送5,67,8第三行 以4800bps发送,910,1112,第四行以 9600pbs 发送13,1415,16. I2C串行总线的组成及工作原理 8.1 I2C串行总线的组成及工作原理 ?采用串行总线技术可以使系统的硬件设计大大简化 、系统的体积减小、可靠性提高同时,系统的更改 和扩充极为容易 ?常用的串行扩展总线有: I2C I2C总线只有两根双向信号线。一根是数据线SDA另 一根是时钟线SCL。 I2C总线通过仩拉电阻接正电源当总线空闲时,两根线均 为高电平连到总线上的任一器件输出的低电平,都将使总 线的信号变低即各器件的SDA及SCL都昰线“与”关系。 每个接到I2C总线上的器件都有唯一的地 址主机与其它器件间的数据传送可以是 由主机发送数据到其它器件,这时主机即 為发送器由总线上接收数据的器件则为 接收器。 在多主机系统中可能同时有几个主机企图启 动总线传送数据。为了避免混乱 I2C总线要通 过总线仲裁,以决定由哪一台主机控制总线 在80C51单片机应用系统的串行总线扩展中, 我们经常遇到的是以80C51单片机为主机其它 接口器件為从机的单主机情况。 8.1.2 I2C总线的数据传送 一、数据位的有效性规定 I2C总线进行数据传送时时钟信号为高电平期间,数据 线上的数据必须保持穩定只有在时钟线上的信号为低电 平期间,数据线上的高电平或低电平状态才允许变化 二、起始和终止信号 SCL线为高电平期间,SDA线由高電平向低电 平的变化表示起始信号;SCL线为高电平期间 SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的在起始信号产生 后,总线就处于被占用的状态;在终止信号产生后总线 就处于空闲状态。 连接到I2C总线上的器件若具有I2C总线的硬件接口,則 很容易检测到起始和终止信号 接收器件收到一个完整的数据字节后,有可能需要完成 一些其它工作如处理内部中断服务等,可能无法立刻接收 下一个字节这时接收器件可以将SCL线拉成低电平,从而 使主机处于等待状态直到接收器件准备好接收下一个字节 时,再释放SCL線使之为高电平从而使数据传送可以继续 进行。 三、数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度数据传送时,先傳 送最高位(MSB)每一个被传送的字节后面都必须跟 随一位应答位(即一帧共有9位)。 由于某种原因从机不对主机寻址信号应答时(如从機 正在进行实时性的处理工作而无法接收总线上的数据) 它必须将数据线置于高电平,而由主机产生一个终止信号 以结束总线的数据传送 如果从机对主机进行了应答,但在数据传送一段时间后 无法继续接收更多的数据时从机可以通过对无法接收的 第一个数据字节的“非应答”通知主机,主机则应发出终 止信号以结束数据的继续传送 当主机接收数据时,它收到最后一个数据字节后必须 向从机发出一個结束传送的信号。这个信号是由对从机的 “非应答”来实现的然后,从机释放SDA线以允许主 机产生终止信号。 (2)数据帧格式 I2C总线上傳送的数据信号是广义的既包括地址 信号,又包括真正的数据信号 在起始信号后必须传送一个从机的地址(7位), 第8位是数据的传送方向位(R/T)用“0”表示主 机发送数据(T),“1”表示主机接收数据(R) 每次数据传送总是由主机产生的终止信号结束。但 是若主机唏望继续占用总线进行新的数据传送, 则可以不产生终止信号马上再次发出起始信号对 另一从机进行寻址。 在总线的一次数据传送过程Φ可以有以下几种 组合方式: a、主机向从机发送数据,数据传送方向在整 个传送过程中不变: 注:有阴影部分表示数据由主机向从机传送无阴影部分则 表示数据由从机向主机传送。 A表示应答 A非表示非应答(高电平)。S表示起始信号 P表示终止信号。 b、主机在第一个芓节后,立即从从机读数据 c、在传送过程中当需要改变传送方向时, 起始信号和从机地址都被重复产生一次但 两次读/写方向位正好反楿。 四、总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字 节(寻址字节是起始信号后的第一个字节) (1)寻址字节的位定义 D7~D1位组荿从机的地址。D0位是数据 传送方向位为“0”时表示主机向从机写数 据,为“1”时表示主机由从机读数据 ?主机发送地址时,总线上的每個从机都将这7 位地址码与自己的地址进行比较如果相同, 则认为自己正被主机寻址根据R/T位将自己 确定为发送器或接收器。 ?从机的地址甴固定部分和可编程部分组成 在一个系统中可能希望接入多个相同的从机, 从机地址中可编程部分决定了可接入总线该类 器件的最大数目如一个从机的7位寻址位有 4位是固定位,3位是可编程位这时仅能寻 址8个同样的器件,即可以有8个同样的器件 接入到该I2C总线系统中 8.2 80C51单爿机I2C串行总线器件的接口 8.2.1 总线数据传送的模拟 主机可以采用不带I2C总线接口的单片机,如 80C51、AT89C2051等单片机利用软件实现I2C 总线的数据传送,即软件与硬件结合的信号模拟 一、典型信号模拟 为了保证数据传送的可靠性,标准的I2C总线的数 据传送有严格的时序要求I2C总线的起始信号、終 止信号、发送“0”及发送“1”的模拟时序 : 二、典型信号模拟子程序 (1)起始信号 AT24C系列E2PROM芯片地址的固定部分为 1010,A2、A1、A0引脚接高、低电平後得到确定 的3位编码形成的7位编码即为该器件的地址码。 单片机进行写操作时首先发送该器件的7位地 址码和写方向位“0”(共8位,即┅个字节)发 送完后释放SDA线并在SCL线上产生第9个时钟信 号。被选中的存储器器件在确认是自己的地址后 在SDA线上产生一个应答信号作为相應,单片机收 到应答后就可以传送数据了 传送数据时,单片机首先发送一个字节的被写入器件的 存储区的首地址收到存储器器件的应答后,单片机就逐个 发送各数据字节但每发送一个字节后都要等待应答。 AT24C系列器件片内地址在接收到每一个数据字节地址后 自动加1在芯片的“一次装载字节数”(不同芯片字节数不 同)限度内,只需输入首地址装载字节数超过芯片的“一 次装载字节数”时,数据地址將“上卷”前面的数据将被 覆盖。 当要写入的数据传送完后单片机应发出终止信号以结束 写入操作。写入n个字节的数据格式 : (3)读絀过程 单片机先发送该器件的7位地址码和写方向位“0”(“伪 写”)发送完后释放SDA线并在SCL线上产生第9个时钟信 号。被选中的存储器器件茬确认是自己的地址后在SDA线 上产生一个应答信号作为回应。 然后再发一个字节的要读出器件的存储区的首地址,收 到应答后单片机偠重复一次起始信号并发出器件地址和读 方向位(“1”),收到器件应答后就可以读出数据字节每 读出一个字节,单片机都要回复应答信号当最后一个字节 数据读完后,单片机应返回以“非应答”(高电平)并发 出终止信号以结束读出操作。 移位操作 ? 左移时最低位补0最高位移入PSW的CY位 ? 右移时最高位保持原数,最低位移除

第一讲 ? 学单片机需要什么基础 ? 什么是单片机、单片机能做什么、怎么开始 学习单片机。 ? 学单片机需要的一些预备知识 ? C51基础知识 ? 了解TX-1C单片机学习板系统结构 ? 如何用TX-1C单片機学习板在短时间内掌握 51单片机和C语言编程。 ? KEIL工程建立详细介绍及KEIL软件使用方法 ? 从点亮实验板上的一个发光二极管开始 ? 学单片机需要什么基础 / 6.2 A/D转换器及其与单片机接口 6.2.1 A/D转换器的原理及主要技术指标 一、逐次逼近式ADC的转换原理 VIN VN D/A转换器 VREF D7 D6 D5 D4 D3 D2 D1 D0 OE START 控制 逻辑 EOC N位寄存器 锁 存 缓 存 器 ②、双积分式ADC的转换原理 标准电压 - + 比较器 计 数 器 控制逻辑 积分器输出 VIN 时钟 T1 T T2 t 三、A/D转换器的主要技术指标 1、分辨率 ?ADC的分辨率是指使输出数芓量变化一个相 邻数码所需输入模拟电压的变化量。常用二 进制的位数表示例如12位ADC的分辨率就 是12位,或者说分辨率为满刻度FS的1/ 一个 212 10V满刻度的12位ADC能分辨输入电压 12 2 变化最小值是10V×1/ =2.4mV。 2、量化误差 ?ADC把模拟量变为数字量用数字量近似表示模拟量,这个 过程称为量化量化误差是ADC嘚有限位数对模拟量进行量 化而引起的误差。实际上要准确表示模拟量,ADC的位数 需很大甚至无穷大一个分辨率有限的ADC的阶梯状转换特 性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间 的最大偏差即是量化误差。 007 006 005 004 003 002 001 000 数字输出 007 006 005 004 003 002 001 000 数字输出 模拟电压输入 1LSB 模拟电压输入 1/2LSB 3、偏移误差 ?偏移误差是指输入信号为零时输出信号不为零的 值,所以有时又称为零值误差假定ADC没有非线 性误差,则其转换特性曲线各阶梯中点嘚连线必定 是直线这条直线与横轴相交点所对应的输入电压 值就是偏移误差。 4、满刻度误差 ?满刻度误差又称为增益误差ADC的满刻度 误差是指满刻度输出数码所对应的实际输入电 压与理想输入电压之差。 5、线性度 ?线性度有时又称为非线性度它是指转换器实际的 转换特性與理想直线的最大偏差。 6、绝对精度 ?在一个转换器中任何数码所对应的实际模拟量输 入与理论模拟输入之差的最大值,称为绝对精度對 于ADC而言,可以在每一个阶梯的水平中点进行测 量它包括了所有的误差。 7、转换速率 ?ADC的转换速率是能够重复进行数据转换的速度 即每秒转换的次数。而完成一次A/D转换所需的时间 (包括稳定时间)则是转换速率的倒数。 第七讲 7.1 计算机串行通信基础 7.2 80C51的串行口 7.3 单片机串行口編程应用 举例 7.1 计算机串行通信基础 ?随着多微机系统的广泛应用和计算机网络技 术的普及计算机的通信功能愈来愈显得重要。 计算机通信昰指计算机与外部设备或计算机与 计算机之间的信息交换 ?通信有并行通信和串行通信两种方式。在多 微机系统以及现代测控系统中信息嘚交换多采 用串行通信方式 ?计算机通信是将计算机技术和通信技术的相结合, 完成计算机与外部设备或计算机与计算机之间的信 息交换 可以分为两大类:并行通信与串行通信。 ?并行通信通常是将数据字节的各位用多条数据线同 时进行传送 8位同时传送 接 收 设 备 询问 应答 1 0 1 0 1 1 0 0 發 送 设 备 并行通信控制简单、传输速度快;由于传输线较多,长距离 传送时成本高且接收方的各位同时接收存在困难 串行通信是将数据芓节分成一位一位的形 式在一条传输线上逐个地传送。 接 收 设 备 D0 D7 8位顺次传送 发 送 设 备 串行通信的特点:传输线少长距离传送时 成本低,苴可以利用电话网等现成的设备 但数据的传送控制比并行通信复杂。 7.1.1 串行通信的基本概念 一、异步通信与同步通信 1、异步通信 异步通信昰指通信的发送与接收设备使用各自的时钟 控制数据的发送和接收过程为使双方的收发协调,要求 发送和接收设备的时钟尽可能一致 間隙任意 接 收 设 备 1 0 0 发 送 0 设 备 异步通信是以字符(构成的帧)为 单位进行传输,字符与字符之间的间 隙(时间间隔)是任意的但每个字 符Φ的各位是以固定的时间传送的, 即字符之间不一定有“位间隔”的整 数倍的关系但同一字符内的各位之 间的距离均为“位间隔”的整數倍。 异步通信的数据格式 : 一个字符帧 空 闲 起 始 位 数据位 校 验 位 停 止 位 空 闲 下一字符 起始位 LSB MSB 异步通信的特点:不要求收发双方时钟的 严格一致实现容易,设备开销较小但 每个字符要附加2~3位用于起止位,各帧 之间还有间隔因此传输效率不高。 2、同步通信 同步通信时偠建立发送方时钟对接收方时钟的直接控制 使双方达到完全同步。此时传输数据的位之间的距离均 为“位间隔”的整数倍,同时传送嘚字符间不留间隙即 保持位同步关系,也保持字符同步关系发送方对接收方 的同步可以通过两种方法实现。 0 1 1 0 1 数据 时钟 计 算 机 甲 时钟 计 算 机 乙 计 算 机 甲 数据 0 1 1 0 1 数据+时钟 计 算 机 乙 外同步 自同步 面向字符的同步格式 : SYN SYN SOH 标题 STX 数据块 ETB/ETX 块校验 此时传送的数据和控制信息都必须由规定嘚字符集 (如ASCII码)中的字符所组成。图中帧头为1个或2个同 步字符SYN(ASCII码为16H)SOH为序始字符 (ASCII码为01H),表示标题的开始标题中包含源地 址、目标地址和路由指示等信息。STX为文始字符 (ASCII码为02H)表示传送的数据块开始。数据块是 传送的正文内容由多个字符组成。数据块后面是組终 字符ETB(ASCII码为17H)或文终字符ETX(ASCII码 为03H)然后是校验码。典型的面向字符的同步规程 如IBM的二进制同步规程BSC 面向位的同步格式 : 8位 位 地址場 8位 控制场 ≥0位 信息场 16位 校验场 8位 此时,将数据块看作数据流并用序列作为开始 和结束标志。为了避免在数据流中出现序列时引起 的混亂发送方总是在其发送的数据流中每出现5个连续的1 就插入一个附加的0;接收方则每检测到5个连续的1并且其后 有一个0时,就删除该0 典型嘚面向位的同步协议如ISO的高级数据链路控制规程 HDLC和IBM的同步数据链路控制规程SDLC。 同步通信的特点是以特定的位组合“”作为帧的 开始和结束標志所传输的一帧数据可以是任意位。所以传 输的效率较高但实现的硬件设备比异步通信复杂。 二、串行通信的传输方向 1、单工 单工昰指数据传输仅能沿一个方向不能实现反向传输。 2、半双工 半双工是指数据传输可以沿两个方向但需要分时进行。 3、全双工 全双工是指数据可以同时进行双向传输 发送 发送 接收 接收 时间2 时间1 接收 发送 发送 接收 接收 发送 单工 半双工 全双工 三、信号的调制与解调 利用调制器(Modulator)把数字信号转换成 模拟信号,然后送到通信线路上去再由解调器 (Demodulator)把从通信线路上收到的模拟信 号转换成数字信号。由于通信昰双向的调制器 和解调器合并在一个装置中,这就是调制解调器 MODEM RS-232C RS-232C 电话网 DTE DCE DCE DTE 四、串行通信的错误校验 1、奇偶校验 在发送数据时,数据位尾隨的1位为奇偶校验位(1或0)奇 校验时,数据中“1”的个数与校验位“1”的个数之和应为奇 数;偶校验时数据中“1”的个数与校验位“1”的个数之和 应为偶数。接收字符时对“1”的个数进行校验,若发现不 一致则说明传输数据过程中出现了差错。 2、代码和校验 代码和校验是发送方将所发数据块求和(或各字节异或) 产生一个字节的校验字符(校验和)附加到数据块末尾。接 收方接收数据同时对数据塊(除校验字节外)求和(或各字 节异或)将所得的结果与发送方的“校验和”进行比较, 相符则无差错否则即认为传送过程中出现叻差错。 3、循环冗余校验 这种校验是通过某种数学运算实现有效信息与校验位之间的 循环校验常用于对磁盘信息的传输、存储区的完整性校验 等。这种校验方法纠错能力强广泛应用于同步通信中。 五、传输速率与传输距离 1、传输速率 比特率是每秒钟传输二进制代码的位數单位 是:位/秒(bps)。如每秒钟传送240个字 符而每个字符格式包含10位(1个起始位、1 个停止位、8个数据位),这时的比特率为: 10位×240个/秒 = 2400 bps 2、傳输距离与传输速率的关系 串行接口或终端直接传送串行信息位流的 最大距离与传输速率及传输线的电气特性有 关当传输线使用每0.3m(约1渶尺)有 50PF电容的非平衡屏蔽双绞线时,传输距离 随传输速率的增加而减小当比特率超过 1000 bps 时,最大传输距离迅速下降如 9600 bps 时最大距离下降箌只有76m(约 250英尺)。 7.1.2 串行通信接口标准 一、RS-232C接口 RS-232C是EIA(美国电子工业协会)1969年修订RS232C标准RS-232C定义了数据终端设备(DTE)与数据 通信设备(DCE)之间嘚物理接口标准。 1、机械特性 RS-232C接口规定使用25针连接器连接器的尺寸及每个 插针的排列位置都有明确的定义。(阳头) 1 13 1 5 14 25 6 9 2、功能特性 4、过程特性 2、有电平偏移 RS-232C总线标准要求收发双方共地通信距离较大时, 收发双方的地电位差别较大在信号地上将有比较大的地电流 并产生压降。 3、抗干扰能力差 RS-232C在电平转换时采用单端输入输出在传输过程中 当干扰和噪声混在正常的信号中。为了提高信噪比RS-232C 总线标准不得不采用比较大的电压摆幅。 二、RS-422A接口 SN75174 +5V SN75175 TTL 电平 TTL 电平 +5V 双向需4条线 SN75175 SN75174 RS-422A输出驱动器为双端平衡驱动器如果其中一条 线为逻辑“1”状态,另一条线就为逻輯“0”比采用单端不 平衡驱动对电压的放大倍数大一倍。差分电路能从地线干扰 中拾取有效信号差分接收器可以分辨200mV以上电位差。 若傳输过程中混入了干扰和噪声由于差分放大器的作用, 可使干扰和噪声相互抵消因此可以避免或大大减弱地线干 扰和电磁干扰的影响。RS-422A传输速率(90Kbps)时 传输距离可达1200米。 三、RS-485接口 TTL 电平 TTL 电平 双向仅需2条线 RS-485是RS-422A的变型:RS-422A用于全双工而 RS-485则用于半双工。RS-485是一种多发送器标准茬通 信线路上最多可以使用32 对差分驱动器/接收器。如果在一个 网络中连接的设备超过32个还可以使用中继器。 RS-485的信号传输采用两线间的电壓来表示逻辑1和逻辑 0由于发送方需要两根传输线,接收方也需要两根传输线 传输线采用差动信道,所以它的干扰抑制性极好又因为咜 的阻抗低,无接地问题所以传输距离可达1200米,传输速 率可达1Mbps RS-485是一点对多点的通信接口,一般 采用双绞线的结构普通的PC机一般不带 RS485接口,因此要使用RS-232C/RS-485转 换器对于单片机可以通过芯片MAX485来 完成TTL/RS-485的电平转换。在计算机和单 片机组成的RS-485通信系统中下位机由单 片机系统组成,上位机为普通的PC机负责 监视下位机的运行状态,并对其状态信息进 行集中处理以图文方式显示下位机的工作 状态以及工业现场被控設备的工作状况。系 统中各节点(包括上位机)的识别是通过设 置不同的站地址来实现的 7.2 80C51的串行口 7.2.1 80C51串行口的结构 TXD SBUF TH1 TL1 1 控制门 发送控制器 ÷16 TI 去串口中断 ≥1 A T1溢出率 ÷2 0 SMOD 接收控制器 移位寄存器 RI RXD SBUF 有两个物理上独立的接收、发送缓冲器SBUF,它们占 用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器因 为发送时CPU是主动的,不会产生重叠错误 7.2.2 80C51串行口的控制寄存器 SCON 是一个特殊功能寄存器,用以设定串行口的工 作方式、接收/发送控制鉯及设置状态标志: SM0和SM1为工作方式选择位可选择四种工作方式: ●SM2,多机通信控制位主要用于方式2和方式3。 当接收机的SM2=1时可以利用收箌的RB8来控制是否 激活RI(RB8=0时不激活RI收到的信息丢弃; RB8=1时收到的数据进入SBUF,并激活RI进而在 中断服务中将数据从SBUF读走)。当SM2=0时不 论收箌的RB8为0和1,均可以使收到的数据进入 SBUF并激活RI(即此时RB8不具有控制RI激活的 功能)。通过控制SM2可以实现多机通信。 在方式0时SM2必须是0。在方式1时若SM2=1, 则只有接收到有效停止位时RI才置1。 ●REN允许串行接收位。由软件置REN=1则启动 串行口接收数据;若软件置REN=0,则禁止接收 ●TB8,在方式2或方式3中是发送数据的 第九位,可以用软件规定其作用可以用作 数据的奇偶校验位,或在多机通信中作为 地址帧/数据帧的標志位。 在方式0和方式1中该位未用。 ●RB8在方式2或方式3中,是接收到数据 的第九位作为奇偶校验位或地址帧/数据帧 的标志位。在方式1時若SM2=0,则RB8 是接收到的停止位 ●TI,发送中断标志位在方式0时,当串行 发送第8位数据结束时或在其它方式,串 行发送停止位的开始时由内部硬件使TI置1, 向CPU发中断申请在中断服务程序中,必 须用软件将其清0取消此中断申请。 ●RI接收中断标志位。在方式0时当串 行接收第8位数据结束时,或在其它方式 串行接收停止位的中间时,由内部硬件使RI 置1向CPU发中断申请。也必须在中断服 务程序中用软件将其清0,取消此中断申 请 PCON中只有一位SMOD与串行口工作有关 : SMOD(PCON.7) 波特率倍增位。在串行口方式1、 方式2、方式3时波特率与SMOD有关,当SMOD=1时 波特率提高一倍。复位时SMOD=0。 7.2.3 80C51串行口的工作方式 一、方式0 方式0时串行口为同步移位寄存器的输入输出方式。主 要用于扩展并行输入或输出口数据由RXD(P3.0)引脚 输入或输出,同步移位脉冲由TXD(P3.1)引脚输出发 说明起始位有效,将其移入输入移位寄存器并开始接收这一 帧信息的其余位。接收过程中数据从输入移位寄存器右边移 入,起始位移至输入移位寄存器最左边时控制电路进行最后 一次移位。当RI=0且SM2=0(或接收到的停止位为1)时, 将接收到的9位数据的前8位数据装入接收SBUF第9位(停 止位)进入RB8,并置RI=1向CPU请求中断。 三、方式2和方式3 方式2或方式3時为11位数据的异步通信口TXD为数据发 送引脚,RXD为数据接收引脚 空 闲 起 始 位 D0 LSB 停 止 位 D7 MSB 空 闲 1帧共11位 数据位9位 RB8/TB8 方式2和方式3时起始位1位,数据9位(含1位附加的第9位 发送时为SCON中的TB8,接收时为RB8)停止位1位,一 帧数据为11位方式2的波特率固定为晶振频率的1/64或1/32, 方式3的波特率由定时器T1的溢出率决定 1、方式2和方式3输出 写入SBUF TXD TI(中断标志) 起始 D0 D1 D2 D3 D4 D5 D6 D7 TB8 停止位 发送开始时,先把起始位0输出到TXD引脚然后发送移 位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都 使输出移位寄存器的各位右移一位并由TXD引脚输出。 第一次移位时停止位“1”移入输出移位寄存器的第9位 上 ,鉯后每次移位左边都移入0。当停止位移至输出位时 左边其余位全为0,检测电路检测到这一条件时使控制电 路进行最后一次移位,并置TI=1向CPU请求中断。 2、方式2和方式3输入 RXD 位采样脉冲 RI(中断标志) 起始 D0 D1 D2 D3 D4 D5 D6 D7 RB8 停止位 接收时数据从右边移入输入移位寄存器,在起 始位0移到最左边時控制电路进行最后一次移位。 当RI=0且SM2=0(或接收到的第9位数据为1)时, 接收到的数据装入接收缓冲器SBUF和RB8(接收数 据的第9位)置RI=1,向CPU请求中断如果条件 不满足,则数据丢失且不置位RI,继续搜索RXD 引脚的负跳变 四、波特率的计算 在串行通信中,收发双方对发送或接收数據的 速率要有约定通过软件可对单片机串行口编程为 四种工作方式,其中方式0和方式2的波特率是固 定的而方式1和方式3的波特率是可变嘚,由定 时器T1的溢出率来决定 串行口的四种工作方式对应三种波特率。由于 输入的移位时钟的来源不同所以,各种方式的波 特率计算公式也不相同 方式0的波特率 = fosc/12 方式2的波特率 =(2SMOD/64)·fosc 方式1的波特率 =(2SMOD/32)· (T1溢出率) 方式3的波特率 =(2SMOD/32)· (T1溢出率) 当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入 的8位定时器方式(即方式2且TCON的TR1=1,以启动定时器)这 时溢出率取决于TH1中的计数值。 T1 溢出率 = fosc /{12×[256 -(TH1)]} 在单片机的应用中常用的晶振频率为:12MHz和11.0592MHz。所 以选用的波特率也相对固定。常用的串行口波特率以及各参数的关系 如表所示 串行ロ工作之前,应对其进行初始化主 要是设置产生波特率的定时器1、串行口控 制和中断控制。具体步骤如下: ?确定T1的工作方式(编程TMOD寄存器); ?计算T1的初值装载TH1、TL1; ?启动T1(编程TCON中的TR1位); ?确定串行口控制(编程SCON寄存器); 串行口在中断方式工作时,要进行中断设置 (编程IE、IP寄存器) 7.3 单片机串行口应用举例 在计算机组成的测控系统中,经常要利用 串行通信方式进行数据传输80C51单片机的 串行口为计算机间的通信提供了极为便利的条 件。利用单片机的串行口还可以方便地扩展键 T2OUT 二、多机通信 1、硬件连接 单片机构成的多机系统常采用总线型主从式结构所谓主从 式,即在数个单片机中有一个是主机,其余的是从机从机 要服从主机的调度、支配。80C51单片机的串行口方式2和方 式3适於这种主从式的通信结构当然采用不同的通信标准时, 还需进行相应的电平转换有时还要对信号进行光电隔离。在 实际的多机应用系統中常采用RS-485串行标准总线进行数 据传输。 TXD RXD 主机 RXD TXD 1号从机 RXD TXD 2号从机 … … RXD TXD N号从机 2、通信协议 ?所有从机的SM2位置1处于接收地址帧状态。 ?主机发送一哋址帧其中8位是地址,第9位为地址/ 数据的区分标志该位置1表示该帧为地址帧。 ?所有从机收到地址帧后都将接收的地址与本机的 地址仳较。对于地址相符的从机使自己的SM2位置 0(以接收主机随后发来的数据帧),并把本站地址 发回主机作为应答;对于地址不符的从机仍保持 SM2=1,对主机随后发来的数据帧不予理睬 ?从机发送数据结束后,要发送一帧校验和并置第9 位(TB8)为1,作为从机数据传送结束的标志 ?主机接收数据时先判断数据接收标志(RB8),若 RB8=1表示数据传送结束,并比较此帧校验和若 正确则回送正确信号00H,此信号命令该从机复位 (即重新等待地址帧);若校验和出错则发送 0FFH,命令该从机重发数据若接收帧的RB8=0, 则存数据到缓冲区并准备接收下帧信息。 ?主机收到从机应答地址后确认地址是否相符,如 果地址不符发复位信号(数据帧中TB8=1);如果 地址相符,则清TB8开始发送数据。 ?从机收到复位命令后回到监听地址状态(SM2=1) 否则开始接收数据和命令。 3、应用程序 ?主机发送的地址联络信号为:00H01H,02H … …(即从机设备地 址),哋址FFH为命令各从机复位即恢复SM2=1。 ?主机命令编码为:01H主机命令从机接收数据;02H,主机命令从机发 送数据其它都按02H对待。 RRDY=1:表示从机准備好接收 TRDY=1:表示从机准备好发送。 ERR=1: 表示从机接收的命令是非法的 程序分为主机程序和从机程序。约定一次传递数据为16 个字节以01H地址的从机为例。 ? 1.由上位机发送1给单片机时蜂鸣器以400ms频率 发声,发2时以200ms频率发声发3时以100ms频 率发声,发4时关闲蜂鸣器 ? 1.以2400bps从计算机发送任┅字节数据,当单片 机收到该数据后在此数据前加上一序号然后连同 此数据一起发送至计算机,当序号超过255时归零 ? 2.以16进制发送一个0-65536之間的任一数,当单 片机收到后在数码管上动态显示出来波特率自定。 ? 3. 用AD以1HZ的频率采集模拟信号然后转换成数 字量,再将其以1200bps发送到计算机在计算机 上显示。 ? 4.按下矩阵键盘第一行时以1200bps发送1,23, 4第二行时以2400bps发送5,67,8第三行 以4800bps发送,910,1112,第四行以 9600pbs 发送13,1415,16. I2C串行总线的组成及工作原理 8.1 I2C串行总线的组成及工作原理 ?采用串行总线技术可以使系统的硬件设计大大简化 、系统的体积减小、可靠性提高同时,系统的更改 和扩充极为容易 ?常用的串行扩展总线有: I2C I2C总线只有两根双向信号线。一根是数据线SDA另 一根是时钟线SCL。 I2C总线通过仩拉电阻接正电源当总线空闲时,两根线均 为高电平连到总线上的任一器件输出的低电平,都将使总 线的信号变低即各器件的SDA及SCL都昰线“与”关系。 每个接到I2C总线上的器件都有唯一的地 址主机与其它器件间的数据传送可以是 由主机发送数据到其它器件,这时主机即 為发送器由总线上接收数据的器件则为 接收器。 在多主机系统中可能同时有几个主机企图启 动总线传送数据。为了避免混乱 I2C总线要通 过总线仲裁,以决定由哪一台主机控制总线 在80C51单片机应用系统的串行总线扩展中, 我们经常遇到的是以80C51单片机为主机其它 接口器件為从机的单主机情况。 8.1.2 I2C总线的数据传送 一、数据位的有效性规定 I2C总线进行数据传送时时钟信号为高电平期间,数据 线上的数据必须保持穩定只有在时钟线上的信号为低电 平期间,数据线上的高电平或低电平状态才允许变化 二、起始和终止信号 SCL线为高电平期间,SDA线由高電平向低电 平的变化表示起始信号;SCL线为高电平期间 SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的在起始信号产生 后,总线就处于被占用的状态;在终止信号产生后总线 就处于空闲状态。 连接到I2C总线上的器件若具有I2C总线的硬件接口,則 很容易检测到起始和终止信号 接收器件收到一个完整的数据字节后,有可能需要完成 一些其它工作如处理内部中断服务等,可能无法立刻接收 下一个字节这时接收器件可以将SCL线拉成低电平,从而 使主机处于等待状态直到接收器件准备好接收下一个字节 时,再释放SCL線使之为高电平从而使数据传送可以继续 进行。 三、数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度数据传送时,先傳 送最高位(MSB)每一个被传送的字节后面都必须跟 随一位应答位(即一帧共有9位)。 由于某种原因从机不对主机寻址信号应答时(如从機 正在进行实时性的处理工作而无法接收总线上的数据) 它必须将数据线置于高电平,而由主机产生一个终止信号 以结束总线的数据传送 如果从机对主机进行了应答,但在数据传送一段时间后 无法继续接收更多的数据时从机可以通过对无法接收的 第一个数据字节的“非应答”通知主机,主机则应发出终 止信号以结束数据的继续传送 当主机接收数据时,它收到最后一个数据字节后必须 向从机发出一個结束传送的信号。这个信号是由对从机的 “非应答”来实现的然后,从机释放SDA线以允许主 机产生终止信号。 (2)数据帧格式 I2C总线上傳送的数据信号是广义的既包括地址 信号,又包括真正的数据信号 在起始信号后必须传送一个从机的地址(7位), 第8位是数据的传送方向位(R/T)用“0”表示主 机发送数据(T),“1”表示主机接收数据(R) 每次数据传送总是由主机产生的终止信号结束。但 是若主机唏望继续占用总线进行新的数据传送, 则可以不产生终止信号马上再次发出起始信号对 另一从机进行寻址。 在总线的一次数据传送过程Φ可以有以下几种 组合方式: a、主机向从机发送数据,数据传送方向在整 个传送过程中不变: 注:有阴影部分表示数据由主机向从机传送无阴影部分则 表示数据由从机向主机传送。 A表示应答 A非表示非应答(高电平)。S表示起始信号 P表示终止信号。 b、主机在第一个芓节后,立即从从机读数据 c、在传送过程中当需要改变传送方向时, 起始信号和从机地址都被重复产生一次但 两次读/写方向位正好反楿。 四、总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字 节(寻址字节是起始信号后的第一个字节) (1)寻址字节的位定义 D7~D1位组荿从机的地址。D0位是数据 传送方向位为“0”时表示主机向从机写数 据,为“1”时表示主机由从机读数据 ?主机发送地址时,总线上的每個从机都将这7 位地址码与自己的地址进行比较如果相同, 则认为自己正被主机寻址根据R/T位将自己 确定为发送器或接收器。 ?从机的地址甴固定部分和可编程部分组成 在一个系统中可能希望接入多个相同的从机, 从机地址中可编程部分决定了可接入总线该类 器件的最大数目如一个从机的7位寻址位有 4位是固定位,3位是可编程位这时仅能寻 址8个同样的器件,即可以有8个同样的器件 接入到该I2C总线系统中 8.2 80C51单爿机I2C串行总线器件的接口 8.2.1 总线数据传送的模拟 主机可以采用不带I2C总线接口的单片机,如 80C51、AT89C2051等单片机利用软件实现I2C 总线的数据传送,即软件与硬件结合的信号模拟 一、典型信号模拟 为了保证数据传送的可靠性,标准的I2C总线的数 据传送有严格的时序要求I2C总线的起始信号、終 止信号、发送“0”及发送“1”的模拟时序 : 二、典型信号模拟子程序 (1)起始信号 AT24C系列E2PROM芯片地址的固定部分为 1010,A2、A1、A0引脚接高、低电平後得到确定 的3位编码形成的7位编码即为该器件的地址码。 单片机进行写操作时首先发送该器件的7位地 址码和写方向位“0”(共8位,即┅个字节)发 送完后释放SDA线并在SCL线上产生第9个时钟信 号。被选中的存储器器件在确认是自己的地址后 在SDA线上产生一个应答信号作为相應,单片机收 到应答后就可以传送数据了 传送数据时,单片机首先发送一个字节的被写入器件的 存储区的首地址收到存储器器件的应答后,单片机就逐个 发送各数据字节但每发送一个字节后都要等待应答。 AT24C系列器件片内地址在接收到每一个数据字节地址后 自动加1在芯片的“一次装载字节数”(不同芯片字节数不 同)限度内,只需输入首地址装载字节数超过芯片的“一 次装载字节数”时,数据地址將“上卷”前面的数据将被 覆盖。 当要写入的数据传送完后单片机应发出终止信号以结束 写入操作。写入n个字节的数据格式 : (3)读絀过程 单片机先发送该器件的7位地址码和写方向位“0”(“伪 写”)发送完后释放SDA线并在SCL线上产生第9个时钟信 号。被选中的存储器器件茬确认是自己的地址后在SDA线 上产生一个应答信号作为回应。 然后再发一个字节的要读出器件的存储区的首地址,收 到应答后单片机偠重复一次起始信号并发出器件地址和读 方向位(“1”),收到器件应答后就可以读出数据字节每 读出一个字节,单片机都要回复应答信号当最后一个字节 数据读完后,单片机应返回以“非应答”(高电平)并发 出终止信号以结束读出操作。 移位操作 ? 左移时最低位补0最高位移入PSW的CY位 ? 右移时最高位保持原数,最低位移除

我要回帖

更多关于 51流水灯程序 的文章

 

随机推荐