8051单片机全双工串行口具有4种工作方式,可通过软件编程选择。方式1为波特率可变的10位异步通信接口方式。在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,在移位脉冲作用下串行数据从TXD引脚输出。发送和接收的一帧信息为11位,即1个起始位,9个数据位和1个停止位。发送一帧信息后,置位中断标志TI,其过程与方式1相同。方式3为波特率可变的11位UART方式。......
2023-11-04
由于AT89S52单片机内部没有集成I2C总线模块,采用C语言编写I2C总线技术的通信协议,实现单片机与AT24C02存储器的密码读出与写入功能。
1.I2C总线的传输协议和数据传输
(1)起始和停止条件
在数据传送过程中,必须确认数据传送的开始和结束。在I2C总线技术规范中,开始和结束信号(也称启动和停止信号)的定义如图20-12所示。
图20-12 超始和停止信号图
开始信号:当时钟总线SCL为高电平时,数据线SDA由高电平向低电平跳变,开始传送数据。
结束信号:当SCL线为高电平时,SDA线从低电平向高电平跳变,结束传送数据。
开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态,其他器件不能再产生开始信号。主器件在结束信号以后退出主器件角色,经过一段时间后,总线被认为是空闲的。
(2)数据格式
I2C总线数据传送采用时钟脉冲逐位串行传送方式,在SCL的低电平期间,SDA线上高、低电平能变化,在高电平期间,SDA上数据必须保护稳定,以便接收器采样接收,数据传送时序如图20-13所示。
图20-13 数据传送时序图
I2C总线发送器送到SDA线上的每个字节必须为8位长,传送时高位在前,低位在后。与之对应,主器件在SCL线上产生8个脉冲;第9个脉冲低电平期间,发送器释放SDA线,接收器把SDA线拉低,以给出一个接收确认位;第9个脉冲高电平期间,发送器收到这个确认位然后开始下一字节的传送,下一个字节的第一个脉冲低电平期间接收器释放SDA。每个字节需要9个脉冲,每次传送的字节数是不受限制的。
I2C总线的数据传送格式是在I2C总线开始信号后,送出的第一字节数据是用来选择从器件地址的,其中前7位为地址码,第8位为方向位(R/W)。方向位为“0”表示发送,即主器件把信息写到所选择的从器件中;方向位为“1”表示主器件将从从器件读信息。格式如下:(www.chuimin.cn)
注:前四位固定为1010。
开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即被主器件寻址的器件,其接收信息还是发送信息则由第8位(R/W)决定。发送完第一个字节后再开始发数据信号。
(3)响应
数据传输必须带响应。相关的响应时钟脉冲由主机产生,当主器件发送完一字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,此时钟内主器件释放SDA线,一字节传送结束,而从器件的响应信号将SDA线拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。通常被寻址的接收器在接收到的每个字节后必须产生一个响应。当从机不能响应从机地址时,从机必须使数据线保持高电平,然后主机产生一个停止条件终止传输或者产生重复起始条件开始新的传输。如果从机接收器响应了从机地址但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平主机产生一个停止或重复起始条件。完整的数据传送过程如图20-14所示。
I2C总线还具有广播呼叫地址,用于寻址总线上所有器件的功能。若一个器件不需要广播呼叫寻址中所提供的任何数据,则可以忽咯该地址不作响应。如果该器件需要广播呼叫寻址中按需提供的数据,则应对地址作出响应,其表现为一个接收器。
图20-14 完整的数据传送过程
2.AT24C02读写操作
本系统设计中利用P1.2,P1.3作为SDA、SCL串行通信线,实现对AT24C02芯片内某一地址数据的读写操作。2402读写关键代码如下:
从24c02的地址address中读取一个字节数据
对于存储器存储密码,为了方便调试,如果忘记存储器里的密码,此时P1.4引脚断开,连接P1.5引脚使其设置成高电平,软件程序中设置初始密码123456,按下确认键,数码管显示“HELLO”;如果修改密码,可以把P1.4引脚接地,P1.5引脚设置成低电平,输入新的密码存入存储器中,如果存储成功,L4灯亮;下次只要把P1.5引脚设置高电平,P1.4引脚接地,将输入的键值与存储器里的密码进行对比分析。
有关51单片机初级入门实战教程的文章
8051单片机全双工串行口具有4种工作方式,可通过软件编程选择。方式1为波特率可变的10位异步通信接口方式。在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,在移位脉冲作用下串行数据从TXD引脚输出。发送和接收的一帧信息为11位,即1个起始位,9个数据位和1个停止位。发送一帧信息后,置位中断标志TI,其过程与方式1相同。方式3为波特率可变的11位UART方式。......
2023-11-04
图10-3 中断方式T0控制LED程序流程图用定时器T0方式1编写程序,即采用中断方式设计的程序流程图如图10-3所示。在图10-3程序流程图的基础上书写中断实现T0控制LED闪烁程序代码如下:结合2.3节关于单片机开发环境Keil C51的学习,建立工程time文件,并将上述代码在Keil环境下进行编译,程序成功编译结果如图10-4所示。同时在创建工程路径time1文件夹下生成一个扩展名为.hex文件,供下载软件将生成的.hex文件下载到单片机中。......
2023-11-04
硬件设计一个嵌入式系统的硬件电路设计包括三部分内容:单片机芯片的选择、单片机系统扩展、系统配置。2)系统的扩展与外设配置的水平应充分满足应用系统当前的功能要求,并留有适当余地,便于以后进行功能的扩充。4)整个系统中相关的元器件要尽可能做到性能匹配。2)各功能程序实现模块化、系统化。4)运行状态实现标志化管理。软件抗干扰是计算机应用系统提高可靠性的有力措施。......
2023-10-28
图3-18 串行口结构图表3-12 SCON各位结构定义表3-13 SM0和SM1串行口工作方式选择位2)SM2:多机通信控制位。3)REN:允许串行接收位。......
2023-11-04
注意:进行单片机电子系统设计时,时钟频率一般选用11.05926MHz时,可以获得标准的波特率,所以51单片机选用这个看起来很“怪”的晶振。因为方式0和2波特率是固定传输,方式1和3波特率是可变的,表3-15给出方式1和方式3常用波特率设置。表3-15 常用波特率设置表单片机的串行通信方法较为多样,传统的串行通信方式是通过单片机自带的串行口进行RS232方式的通信。......
2023-11-04
CPU对中断处理过程包括中断初始化、中断响应、保护现场、中断服务程序处理、中断撤销和中断返回。所以在进入中断服务子程序后,一般都要保护现场,再执行中断服务程序,返回主程序前再恢复现场,用户在编制中断处理程序时必须要考虑上述问题。......
2023-11-04
评价程序优劣的因素1)正确性,容错性。程序设计过程与基本设计方法1)模块化;结构化;自顶而下与自底而上。4)从原理到程序实现:原理→模型→算法→流程→程序设计→调试→优化→验证→建档。常用的程序调试方法1)原则:先硬后软;先局部,后整体。程序的优化与文件编制1)参照评价因素,修改程序结构、数据结构、算法及程序等。5)使用说明功能、操作方法、出错信息与排除方法、注意事项等。......
2023-10-28
所谓的函数调用就是在一个函数体中引用另外一个已经定义的函数,前者为主调函数,后者为被调用函数。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值。因此在以后各主调函数中不用对ann和circle函数说明,可直接调用。......
2023-11-04
相关推荐