基于Proteus和_Keil的串行通信系统仿真
Keil 与Proteus的联合仿真调试

Keil 与Proteus的联合仿真调试Keil与Proteus的联合仿真调试================================Keil和 Proteus是两个优秀的单片机仿真调试软件,如果让它们联合工作,其效果更是如虎添翼。
使它们联合仿真调试的工作的步骤共有4步,如下所示。
1.复制文件把 Proteus安装目录下的 VDM51.dll文件复制到 Keil安装目录下的\C51\BIN目录中。
VDM51.dll也可以到网上下载。
2.修改 Keil的 TOOLS.INI文件用记事本打开 Keil安装目录下的 TOOLS.INI文件,在 [C51]栏目下加入: TDRV3=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver")注意其中“TDRV3”中的“3”要根据实际情况写,不要和文件中原有的重复。
3. Keil的设置(1)在 Keil的 project菜单 DEBUG选项中,选中右边的“use:”,并在右栏上部的下拉菜单里选中“Proteus VSM Monitor-51 Driver”。
(2)接着进入setings设置通信接口,如果同一台机器则IP名为127.0.0.1,如不是同一台则填另一台的 IP地址。
在 Port后面添上 8000。
4. Proteus的设置在 Proteus (ISIS)的 DEBUG菜单中,选中“use romote debuger monitor”。
================================做到这一步,就可以开始他们的联调工作了。
打开 Keil和 Proteus项目,点击 Debug-start/stop debug session进入联调状态,点击单步运行,如果能看到 Protues中的电路根据 Keil运行的程序位置而显示不同的现象,这就说明联调成功了。
单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导实验三调度器设计基础一、实验目的和要求1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。
2.掌握Keil与Proteus的联调技巧。
3.掌握串行通信在单片机系统中的使用。
4.掌握调度器设计的基础知识:函数指针。
二、实验设备1.PC机一套2.Keil C51开发系统一套3.Proteus 仿真系统一套三、实验容1.甲机通过串口控制乙机LED闪烁(1)要求a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时闪烁,关闭所有的LED。
b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。
i.甲机发送“A”,控制乙机LED1闪烁。
ii.甲机发送“B”,控制乙机LED2闪烁。
iii.甲机发送“C”,控制乙机LED1,LED2闪烁。
iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。
c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。
两机的程序要分别编写。
d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下:i.设置串口模式(SCON)ii.设置定时器1的工作模式(TMOD)iii.计算定时器1的初值iv.启动定时器v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。
(2)电路原理图Figure 1 甲机通过串口控制乙机LED闪烁的原理图(3)程序设计提示a.模式1下波特率由定时器控制,波特率计算公式参考:b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。
2.单片机与PC串口通讯及函数指针的使用(1)要求:a.编写用单片机求取整数平方的函数。
b.单片机把计算结果向PC机发送字符串。
c.PC机接收计算结果并显示出来。
d.可以调用Keil C51 stdio.h 中的printf来实现字符串的发送。
proteus与keil Cx51的单片机仿真(串行通信口)

proteus 与keil Cx51 的单片机仿真(串行通信口)单片机串行口工作于方式0,通过74LS164 实现串并转换,来控制共阳极数码管的显示,当按下K01 按钮显示2010,按下K02 键显示1987,按下K03键显示0606,按下K04 键显示1988,按下K05 键显示1224。
其中数字显示可由自己设定.电路图:C 程序:#include#include#include#define uchar unsigned char//宏定义sbit P1_1=P1;sb it P1_2=P1 ;sbit P1_3=P1;sb it P1_4=P1;sb it P1_5=P1 ;sbit P2_0=P2;uchar code discode[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//串行方式下共阳极数码管段码表0~9unsigned char leddis[4]={0,1,2,3};//显存,有几个数码管进行定义void display(void)//数码管显示函数{unsigned char count;//数码管个数P2_0=0;//P2.0 引脚输出清零信号,对74LS164 清零_nop_();_nop_();//延时,保证清零完成P2_0=1;//结束对74LS164 清零for(count=4;count>0;count--){SBUF=discode[leddis[count-1]];while(TI==0);TI=0;}}void main(){SCON=0x00;//设定UART 的工作方式为方式0leddis[0]=0;leddis[1]=1;leddis[2]=2;leddis[3]=3;//显示内容初始化display();//显示函数while(1){if(P1_1==0)//K01 按下,即P1_1被按下,显示2010{leddis[0]=2;leddis[1]=0;leddis[2]=1;leddis[3]=0;display();P1_1=1;}if(P1_2==0)//K02 按下,即P1_2 被按下,显示1987{leddis[0]=1;leddis[1]=9;leddis[2]=8;leddis[3]=7;display();P1_2=1;}if(P1_3==0)//K03 按下,即P1_3 被按下,显示0606{leddis[0]=0;leddis[1]=6;leddis[2]=0;leddis[3]=6;display();P1_3=1;}if(P1_4==0)//K04 按下,即P1_4 被按下,显示1988{leddis[0]=1;leddis[1]=9;leddis[2]=8;leddis[3]=8;display();P1_4=1;}if(P1_5==0)/ /K05 按下,即P1_5 被按下,显示1224{leddis[0]=1;leddis[1]=2;leddis[2]。
PROTEUS与KEIL的联合仿真

译结果如图 14 下方所示。
图 14 源程序编译
④ 加 载 目标 代 码文 件 右击 选中 ISIS 编辑 区中 单片 机 AT89C51,选择 “Edit Properties”打开其属性窗口,如图 15 所示。在其中的“Program File”右侧框中输入目 标代码文件(目标代码与 DSN 文件在同一目录下,直接输入代码文件名即可,否则要写出完 整的路径。或单击本栏打开按钮,选取目标文件),再在“Clock Frequency”栏中设置 12MHz, 仿真系统则以 12MHz 的时钟频率运行。
图 12 目标输出设置
● Debug:设置调试工具,如图 13 所示,在下拉组合框选择“PROTEUS VSM Sipnulator”。
图 13 KEIL 中目标调试设置
● 通信设置:单击调试工具框右边的“Settings”,如图 13 所示,设置 Host、Port。 KEIL 与 PROTEUS 在同一台机器上时,Host 设为 127.0.0.1;若不在同一台机子上,则填另 一台的 IP 地址。Port 为 8000。
图 15 注:因运行时钟频率以单片机属性设置中的时钟频率 (Clock Frequency)为准,所以在编辑区设计 以仿真为目标的 MCS-51 系列单片机系统电路时,可以略去单片机振荡电路。另外,对 MCS-51 系列单片机 而言,复位电路也可略去,EA 控制引脚也可悬空。但要注意若要进行电路电气检测,不可略去。
图7
这时,新建立的项目出现在项目窗口中,如图 8 所示。
图 8 项目窗口中新建立的项目
(4)编译、调试 C51 程序 ① 加入 C51 程序 用鼠标右击项目工作区里的源代码组,选择“把文件加入到源代码 组(Add Files to Group‘Source Group1)”命令,把刚保存的 C51 程序源代码加入到新建
KeilC与Proteus相结合的仿真过程

KeilC与Proteus相结合的仿真过程单片机电路设计如图所示。
电路的核心是单片机A T89C51。
单片机的P1口八个引脚接LED显示器的段选码(a、b、c、d、e、f、g、dp)的引脚上,单片机的P2口六个引脚接LED显示器的位选码(1、2、3、4、5、6)的引脚上,电阻起限流作用,总线使电路图变得简洁。
程序设计实现LED显示器的选通并显示字符。
电路图的绘制1、将所需元器件加入到对象选择器窗口。
Picking Components into the Schematic单击对象选择器按钮,如图所示弹出“Pick Devices”页面,在“Keywords”输入A T89C51,系统在对象库中进行搜索查找,并将搜索结果显示在“Results”中,如图所示。
在“Results”栏中的列表项中,双击“A T89C51”,则可将“A T89C51”添加至对象选择器窗口。
接着在“Keywords”栏中重新输入7SEG,如图所示。
双击“7SEG-MPX6-CA-BLUE”,则可将“7SEG-MPX6-CA-BLUE”(6位共阳7段LED显示器)添加至对象选择器窗口。
最后,在“Keywords”栏中重新输入RES,选中“Match Whole Words”,如图所示。
在“Results”栏中获得与RES完全匹配的搜索结果。
双击“RES”,则可将“RES”(电阻)添加至对象选择器窗口。
单击“OK”按钮,结束对象选择。
经过以上操作,在对象选择器窗口中,已有了7SEG-MPX6-CA-BLUE、A T89C51、RES三个元器件对象,若单击A T89C51,在预览窗口中,见到A T89C51的实物图,如图所示;若单击RES或7SEG-MPX6-CA-BLUE,在预览窗口中,见到RES和7SEG-MPX6-CA-BLUE的实物图,如图所示。
此时,我们已注意到在绘图工具栏中的元器件按钮处于选中状态。
2、放置元器件至图形编辑窗口Placing Components onto the Schematic在对象选择器窗口中,选中7SEG-MPX6-CA-BLUE,将鼠标置于图形编辑窗口该对象的欲放位置、单击鼠标左键,该对象被完成放置。
单片机串行通信仿真实验

目的:掌握电平转换器件RS-232的使用方法;掌握 Proteus VSM虚拟终端(VITUAL TERMINAL)的使用; 掌握单片机与PC机间的串行通信软硬件设计方法。
1 2013年3月 2006-2-10
传感器原理与应用
1
51系列单片机与PC机串行通信实验Proteus仿真
1 Proteus电路设计
所属子类
8051 Family Generic Generic - Generic
7SEG-BCD-GRN
MAX232 COMPIM
2 2013年3月
Optoelectronics
Microprocessor ICs Miscellaneous
2006-2-10
7-Segment Displays
Peripherals -
在Proteus仿真中,单片机和COMPIM之间也可以 不用加MAX232器件
11 2013年3月
2006-2-10
传感器原理与应用
11
传感器原理与应用
2
51系列单片机与PC机串行通信实验Proteus仿真(2)串口模型介绍
串口模型COMPIM及其引脚功能如图1中(a)所示。需要 注意的是,在Proteus ISIS元件库的“Connectors”类的 “D-Type”子类中,也有一个串口模型器件CONN-D9F, 如图1中(b)所示,因该器件在使用时没有仿真模型,将 导致仿真失败,所以要避免选用。
进入调试环境执行程序,进行以下操作: (I) 在Proteus ISIS界面中的PCT虚拟终端上单击右键,在弹出的 快捷菜单中选择“Echo Typed Characters”项; (II) 鼠标指针在PCT终端窗口单击,该窗口出现闪烁的光标,从 键盘输入数字“8”,在PCS终端窗口中就出现“8”,表明PC机 发送数据“8”,按照设计好的程序,单片机将接收到“8”,所 以在单片机接收虚拟终端SCMR上会显示“8”,同时又将数字 “8”送显到数码管上。接下来,单片机又将该数回发给PC机, 因此在单片机发送终端SCMT上也显示“8”,PC机接收到数据 后在接收终端PCR上同样显示“8”,结果如图6所示。根据程序 设计,当在键盘上输入0~9以外的字符时,单片机输出到数码 管上显示的则是该字符的ASCII码,如图7所示。
郑丕凯 基于Proteus和 Keil的串行通信系统仿真

毕业设计设计题目:基于Proteus和 Keil的串行通信系统仿真2011年6月1日目录1. 引言 12. I2C总线原理 1 2.1 数据位的传送 2 2.2 启始和停止状态 2 2.3 传输数据 3 2.4 应答 3 2.5 数据传输格式 4 2.6 I2C总线的寻址 5 3.I2C总线应用 63.1 I2C总线扩展E2PROM 6 3.2 I2C总线扩展I/O口7 3.3 I2C总线A/D及D/A转换8 3.3.1 PCF8591芯片介绍8 3.3.2 器件总地址9 3.3.3 D/A转换与A/D转换9 4.I2C总线通信系统仿真114.1 I2C总线扩展E2PROM与I/O口11 4.2 I2C总线接PCF8591 13 5.总结14 程序附录15 参考文献24 致谢24基于Proteus和 Keil(I2C)串行通信系统仿真郑丕凯(电子与电气工程学院电气工程及其自动化2007级1班20072926061)摘要:本文主要是基于I2C技术,应用Proteus 和Keil软件,设计虚拟I2C总线串行通信外围扩展。
介绍了I2C串行通信的基本原理,虚拟I2C总线技术,I2C总线与E2PROM,ADC/DAC,I/O口等外围器件接线方法,时序,及其寻址方法。
关键词: I2C总线技术;串行通信;I2C总线虚拟技术;串行外围扩展Serial (I2C) Communication System Simulation Based on Proteusand Keil SoftwareZheng Pikai(College of Electronics and Electrical Engineering,Electrical Engineering and Automation,Class1 Grade2007, 20072926061) Abstract:This article is based on I2C technology, application Proteus keil software, designing virtual I2C bus serial communications peripherals expansion. It has Introduced the basic principles of I2C serial communication, virtual I2C bus, I2C bus and E2PROM, ADC / DAC, I / O ports and other peripheral device connection method, timing, and addressing methods.Key Words:I2C bus technology; serial communication; I2C bus virtual technology; serial peripheral expansion1 引言I2C(Inter IC BUS)总线是一种可用于IC器件间连接通信的二进制总线。
基于Proteus和Keil的单片机仿真实验系统设计

河北建筑工程学院本科毕业设计(论文)学科专业机械电子工程班级机电102班姓名冯立岗指导教师张东辉摘要本设计是基于51系列的单片机进行的单片机实验仿真系统设计,可以进行键盘输入显示、计数器、流水灯、LCD显示字符、抢答器等八个实验的仿真。
单片机实验仿真系统的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由AT89C51单片机,4×4键盘阵列,七段数码管显示,8×8LED显示模块,16×16LED点阵显示模块,流水灯模块,LCD液晶模块,以及抢答器按键电路等组成,系统通过LED及LCD显示数据,所以具有人性化的操作和直观的显示效果。
软件方面主要包括时钟程序、键盘程序,显示程序等。
由于本设计实验项目有多个,考虑到汇编语言并不适于比较繁琐的程序的编写,故本系统以单片机的C 语言进行软件设计,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,以便更简单地实现实验的选取及显示功能。
所有程序在Keil软件编写完成后调试编译最后生成hex格式的文件导入到Proteus 软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
关键词:AT89C51;流水灯;抢答器;键盘ABSTRACTIt is a design of single chip experimental simulation system based on the 51 series single chip. It can perform eight experimental simulations including the keyboard input display, counter, water lights, LCD display character, responder.This design’s process is designed to synchronize the hardware and software aspects. The hardware part is mainly composed of AT89C51 microcontroller,4*4 keyboard array, seven segment LED display, 8*8 LED display module, 16*16 dot matrix display module, water light module, LCD liquid crystal module and responder key circuit and other components. The system displays the data via LED and LCD, so it has humanized operation and intuitive display effect. The software includes a clock procedure, the keyboard procedure and the display procedure. Since there are many experimental projects in this design, assembly language does not take into account the relatively cumbersome procedures for the preparation, and the system is designed of the microcontroller C language. In order to facilitate the expansion and change, the software is designed with modular structure, so that the logic programming is more concise and easier to realize the experimental selection and display. All the programs are debugged and compiled after the completion of the written of the keil software. And the final completed files of hex form are debugged in the Proteus software. When there is no problem, embedded the microcontroller into the Proteus software to simulate.Key words: AT89C51;water lights;responder;keyboard目录第1章前言 (1)1.1 单片机现状及发展概述 (1)1.2 单片机的性能特点 (2)1.3 AT89系列单片机简介 (2)1.4 单片机实验仿真系统 (3)第2章 Proteus和Keil软件 (4)2.1 Proteus与Keil的历史及联合仿真 (4)2.2 Proteus与Keil的联合仿真的优势 (5)2.3 Proteus与Keil的使用 (6)2.3.1 Keil C软件的使用 (6)2.3.2 Proteus仿真软件的使用 (9)第3章系统总体设计及方案的确定 (10)3.1 单片机实验仿真系统实验项目的设计 (10)3.2 系统总体设计 (11)3.3 系统总线的设计 (11)3.3 系统设计用到的元件 (12)第4章硬件及电路原理图的设计 (12)4.1 单片机最小系统设计 (12)4.2 流水灯的设计 (14)4.3 4×4矩阵键盘扫描与显示 (14)4.3.1键盘处理 (14)4.3.2 LED显示 (16)4.4 INT0中断三位计数器演示实验 (18)4.5 LCD液晶屏的字符显示实验 (19)4.5.1 液晶显示简介 (20)4.5.2 1602字符型LCD简介 (21)4.5.3 1602LCD的指令说明及时序 (21)4.5.4 1602LCD的指令说明及时序 (23)4.5.5 1602LCD的RAM地址映射及标准字库表 (25)4.5.6 1602LCD的一般初始化(复位)过程 (26)4.6 点阵显示字符实验 (27)4.6.1 LED简介 (28)4.6.2 LED点阵 (29)4.6.3点阵显示原理 (29)4.6.4 显示屏的原理图及结构 (30)4.6.5 显示屏的实验内容 (31)4.7 数码管动态显示实验 (32)4.8 8位计数器实验 (33)第5章系统的软件设计 (34)5.1 系统软件设计流程图 (34)5.2 单片机实验仿真系统原理图 (35)5.3 系统主程序 (36)第6章单片机实验仿真系统的仿真与调试 (38)6.1 利用Keil进行源程序的编译及调试 (38)6.2 利用Proteus调试电路检查系统的运行情况 (39)6.3 单片机实验仿真系统的运行及调试结果 (40)第7章毕业设计小结 (44)参考文献 (46)附录 (47)附:英文原文英文翻译毕业实习报告指导教师:张东辉设计项目计算与说明结果2.3.1 KeilC软件的使用创建工程: Keil C 把用户的每个工程都当作一个项目。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
聊城大学本科生毕业论文(设计)题目:基于Proteus和keil的串行通信系统仿真专业代码:交通运输(081201)作者姓名:管国阳学号:单位:汽车与交通工程学院指导教师:2012年5月19日原创性声明本人郑重声明:所提交的学位论文是本人在导师指导下,独立进行研究取得的成果。
除文中已经注明引用的内容外,论文中不含其他人已经发表或撰写过的研究成果,也不包含为获得聊城大学或其他教育机构的学位证书而使用过的材料。
对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。
本人承担本声明的相应责任。
学位论文作者签名:日期指导教师签名: 日期摘要本文主要是基于I2C技术,应用proteus和keil软件,设计虚拟I2C总线串行通信外围扩展。
介绍了I2C串行通信的基本原理,I2C总线设计系统的优点,虚拟I2C总线技术,I2C总线与E2PROM,ADC/DAC,I/O接口等外围器件接线方法,时序,及其寻址方法。
关键词:I2C总线技术;串行通信;I2C总线虚拟技术;串行外围扩AbstractThis article is based on I2C technology, application Proteus keil software, designing virtual I2C bus serial communications peripherals expansion. It has Introduced the basic principles of I2C serial communication, Design of I2C bus system,virtual I2C bus, I2C bus and E2PROM, ADC / DAC, I / O ports and other peripheral device connection method, timing, and addressing methods.Key Words: I2C bus technology; serial communication; I2C bus virtual technology; serial peripheral expansion目录引言 (1)1.I2C总线原理 (1)1.1 数据位的传送 (2)1.2 启始和停止状态 (3)1.3 传输数据 (3)1.4 应答 (4)1.5 数据传输格式 (4)1.6 I2C总线的寻址 (6)2.I2C总线应用 (6)2.1 I2C总线扩展E2PROM (6)2.2 I2C总线扩展I/O口 (8)2.3 I2C总线A/D及D/A转换 (9)2.3.1 PCF8591芯片介绍 (9)2.3.2 器件地址 (9)2.3.3 D/A转换与A/D转换 (10)3.I2C总线通信系统仿真 (12)3.1 I2C总线扩展E2PROM与I/O口 (13)3.2 I2C总线接PCF8591 (14)总结 (16)程序附录 (17)参考文献 (26)致谢 (27)基于Proteus和keil的串行通信系统仿真引言I2C(Inter IC BUS)总线是一种可用于IC器件间连接通信的二进制总线,是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。
I2C总线产生于80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。
例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。
可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
它通过串行数据线(SDA)及串行时钟线(SCL)两根线连到总线的器件之间传送信息,并可根据地址识别每个器件。
采用串行总线扩展技术可使系统的硬件设计简化,系统的体积减小,同时系统的更改和扩充变得更为容易。
目前常用的串行扩展总线有:I2C总线、SPI(Serial Peripheral Interface)总线、Microwire总线及单总线(1-Wire BUS)等。
有些单片机(如MCS-51)没有串行总线接口,利用其自身的通用并行线可以模拟多种串行总线时序信号,因此可以充分利用各种串行接口芯片资源。
目前,Philips及其它半导体厂商提供了大量的含有I2C总线的外围接口芯片,I2C总线已成为广泛应用的工业标准之一,有广阔的发展前景。
1.I2C总线原理I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。
在CPU与被控IC之间、IC与IC之间进行双向传送。
各种被控制电路均并联在这条总线上,但就像电话机一样只有在拨通各自的号码时才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。
CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。
这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。
I2C总线位传输是由于连接到I2C 总线的器件有不同种类的工艺,逻辑0(低)和逻辑1(高)的电平不是固定的,它由电源VCC的相关电平决定,没传输一个数据位就产生一个时钟脉冲。
I2C总线特征:(1)只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL;(2)每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器;(3)它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;(4)串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s;(5)连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。
I2C总线设计系统的优点:(1)功能框图中的功能模块与实际的外围器件对应,可以使系统设计直接由功能框图很快地过渡到系统样机。
(2)外围器件直接挂在I2C总线上,不需设计总线接口;增加或删减系统中的外围器件,不会影响系统总线和其他器件的工作,便于系统功能的改进和升级。
(3)集成在器件中的寻址和数据传输协议可以使系统完全由预设软件来定义。
1.1 数据位的传送图1.1 数据位传送I2C总线上一次传送的数据称为一帧。
由启动信号、若干个数据字节、应答位和停止信号组成。
数据传送的基本单元为一位数据。
时钟线SCL在一个时钟周期内只能传输一位数据。
SCL时钟线为高电平期间内,数据线SDA上的数据必须稳定。
只有当SCL时钟线变为低电平时,数据线SDA的状态才能改变。
1.2 启始和停止状态图1.2 启动与停止起始(START)状态: I2C总线传输过程中,当时钟线SCL为高电平时,数据线SDA由高电平到低电平跳变时,标志I2C总线传输数据开始。
停止(STOP)状态:I2C总线传输过程中,当时钟线SCL为高电平时,数据线SDA由低电平到高电平跳变时,标志着I2C总线传输数据结束。
1.3 传输数据图1.3 传输数据时序波形每次传输的字节数不受限制,每个字节后必须跟一个应答(acknowledge)位。
数据传输时,首先传送最高位,如图所示,如果从机暂时不能接收下一个字节数据(如从机响应内部中断),那么,可以使时钟线SCL保持为低电平,迫使主机处于等待状态;当从机准备就绪后,再释放时钟线SCL,使数据传输继续进行。
1.4 应答图1.4 应答时序I2C协议规定,每个数据发送完之后,应有一个应答位。
应答位的时钟脉冲有主机产生。
应答时钟有效期间,发送设备把数据线SDA置为高电平;接收设备把数据线SDA置为低电平,并且在此期间保持低电平状态,以产生有效的应答信号。
1.5 数据传输格式图1.5 数据传输格式数据传输格式可介绍如下:在起始状态s之后,先发送一个字,它的前7位是R/,0表示发送(写),1表示请求数据(读)。
一从机地址,第8位是数据方向位W次数据传输一般是由主机产生停止状态P而结束。
但如果主机还要继续为其他器件传输数据,它可以产生另一个起始状态和寻址另一个从机,不需要先产生一个停止状态。
在这种传输方式中,就可能有读写方式的组合。
在I2C总线启动或应答信号后的第1~8个时钟脉冲,对应一个字节的8位数据传送。
SCL高电平期间,数据串行传送;低电平期间为数据准备,允许总线上数据电平变化I2C总线启动后,传送的字节数一般没有限制,只要求每传送一个字节后,对方回应一个应答位。
发送时,数据由高位开始依次发送。
传送完一个字节,可以通过对时钟线SCL的控制使传送暂停。
数据传输的字节格式:发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。
每个字节后必须跟一个响应位,首先传输的是数据的最高位,如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。
在I2C总线上,传输数据的数据格式:(1)主机发送器发送到从机接收器(数据传输的方向不变化)图1.6 主机写数据格式(2)在第一个字节后主机立即读从机图1.7 主机读数据格式(3)组合格式图1.8 读写组合格式1.6 I 2C 总线的寻址每个连接在I 2C 总线的器件,都具有一个唯一确定的地址。
在任何时刻,I 2C 总线上只能有一个主机对总线实行控制权,分时地实现点对点的数据传送。
器件(从机)的地址由7位地址位和一个方向位组成,是数据传输时起始状态S 之后第1个字节。
A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0WR/图1.9 寻址格式从机地址由固定位和可编程位组成。
固定位是器件出厂时给定的,用户不能自行设置,它是器件的标识码。
当主机发送了第1个字节后,系统中的每个从机(器件)都在起始状态S 之后把高7位与本机的地址比较,如果与本机地址一样,则该从机被主机选中,是接收数据还是发送数据由 W R/ 确定。
当系统中使用了多个相同器件时,从机地址中的可编程位,使这些器件具有不同的地址;因此这些可编程位也规定了I 2C 总线上同类芯片的最大个数。
常见I 2C 器件的标识码如下表12.I 2C 总线应用2.1 I 2C 总线扩展E 2PROMAT24CXX 系列串行E 2PROM 是Atme1公司生产的具有I 2C 总线接口功能的串行E2PROM 器件,有掉电保护功能,AT24C02容量为256B 。