- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
单片机串行总线通信设计第9章
在单片机的通信技术中,串行通信扮演着重要的角色。除串口数据通信之外,单片机与外部的通信还有常用的I2C总线、SPI总线等,它们都是标准的串行总线通信技术,有的单片机内部已经包含了这些接口硬件设计。然而,也有很多芯片、设备并不具备标准的串行总线接口,而是提供了接口的协议和控制时序,需要单片机通过I/O口来模拟产生时序逻辑控制脉冲对这些设备进行读/写控制。引言
目录单片机I/O口时序控制方法1DS18B20数字温度传感器通信2本章小结6项目训练一:温度采集系统设计3项目训练二:精准数字钟设计5行业PPT模板/hangye/DS1302时钟芯片通信4
9.1单片机I/O时序控制方法
9.1.1并行转串行单片机内部的存储数据通常以字节为单位,而单片机与外围设备的通信需要通过I/O口将单片机内部的字节数据发送出来,这就需要经过并行到串行的数据转换,把8位数据按位展开,一位接一位地把数据顺序传送出去,即把并行数据转为串行数据。在通信接口的设计中,除需要一根数据线外,通常还需要一根时钟线(并不是必需的)作为数据的时间基准。
9.1.1并行转串行图1一种并行转串行的时序
9.1.1并行转串行1时钟输出时钟的波形是一个方波,方波的输出在第5章介绍过,可以用定时器来实现。但是这里的方波需要和数据输出进行配合,定时器的输出方式不适合这样的操作。因此,可以采用延时的方式来实现,延时的时间根据时序参数的要求设定即可。2串行数据的输出串行数据的输出是重点,它是把1字节的数据变为8位的数据顺序输出,需要用到的算法如下。设要传输的数据为0x56,其二进制数要把这些二进制数由低位到高位拆分出来,需要用到与运算和移位运算。算法解释如下。(1)把数据和0x01进行与运算(2)把数据右移一位,得再行与算法,得把它送到I/O口,I/O口上得到的数据为“1”。(3)以此类推,最后即可把一字节的数据按位拆开送到I/O口,从而实现数据由并行转串行的操作。程序算法通过一条语句来实现:DATA=(send_datai)0x1; //i从0到7递增
9.1.1并行转串行3合并操作把时钟产生和串行数据输出合并在一起,就可以实现类似图1的时序控制要求,即先把时钟置1(初始为0),产生上升沿脉冲并延时;然后做与运算和移位运算和与运算,把结果输出并延时;最后把时钟置0,并延时,延时的时间根据实际要求而定。主要的算法示例程序如下:for(i=0;i8;i++){ CLK=1;//时钟上升沿延时; DATA=(send_datai)0x1; //将send_data的第i位赋DATA 延时; CLK=0; //时钟下降沿 延时;}
9.1.2串行转并行1时钟上升沿检测程序中是通过while(1)来循环检测CLK的状态的,当检测到上一次的CLK的状态clk_history为0,并且当前的CLK状态clk_get为1时,即认为检测到一个时钟上升沿。while(1){ clk_get=CLK; //在一次while循环中,只采样一次CLK端口 if((clk_history==0)(clk_get==1)) //时钟上升沿 {...(略)//起始位检测及有效数据的读取 } clk_history=clk_get;}后面的起始位检测及有效数据的读取均在检测到时钟上升沿时进行。
9.1.2串行转并行2起始位检测使用一个关键变量state来表示单片机程序当前的工作状态,当state为0时,表示当前处于起始位检测状态;当state为1时,表示当前处于有效数据的读取状态。state的初始值为0,当检测到CLK上升沿有效且DATA的数据为0时,认为检测到起始位,将state置1。
9.1.2串行转并行3有效数据读取当state为1时,进行有效数据的读取。通过变量cnt来表示当前读取的串行数据位是接收数据data_receive的第几位,cnt的数值为0~7。从I/O口读进来的数据是一个接一个的二进制数,需要把它们组合到一起,形成1字节的数据,这里需要用到左移和或运算。算法原理是:在时钟信号CLK上升沿到来时读取一位I/O口(DATA)的数据(data_get),左移cnt(cnt初始值为0)位后,将其和存放最终结果的变量data_receive进行或运算,并将结果存放到data_receive中,
您可能关注的文档
- 单片机技术与项目训练 课件 第1章 单片机初步认识.pptx
- 单片机技术与项目训练 课件 第2章 单片机开发语言及工具的使用.pptx
- 单片机技术与项目训练 课件 第3章 单片机IO口的应用.pptx
- 单片机技术与项目训练 课件 第4章 单片机中断系统.pptx
- 单片机技术与项目训练 课件 第5章 定时计数器.pptx
- 单片机技术与项目训练 课件 第6章 单片机串口数据通信.pptx
- 单片机技术与项目训练 课件 第7章 液晶显示接口设计.pptx
- 单片机技术与项目训练 课件 第8章 单片机AD转换接口设计.pptx
- 【2021-春】初二语文阅读写作目标班 陆杰峰 - 第四讲练习册.pdf
- 2024至2030年中国高纯超细电子级五氧化二铌行业投资前景及策略咨询研究报告.docx
- 2024年鲁人版选择性必修2地理下册月考试卷800.doc
- 2024年华东师大版八年级化学上册月考试卷850.doc
- 学生婚庆知识讲座-婚礼策划师的经验分享.pptx
- 【2021-春】初二语文阅读写作目标班 陆杰峰 - 第一讲练习册.pdf
- 2024至2030年中国鲜葡萄果冻行业投资前景及策略咨询研究报告.docx
- 2024年冀少新版八年级化学下册阶段测试试卷784.doc
- 2024年人教五四新版八年级语文上册月考试卷944.doc
- 2024年外研版必修1生物下册阶段测试试卷735.doc
- 2024届大学新生军训心得体会范本(31篇).pdf
- 【2021-春】初二语文阅读写作目标班 陆杰峰 - 第七讲练习册.pdf
文档评论(0)