单片机课程设设计--------单总线和I2C总线结合实现数.
- 格式:docx
- 大小:20.13 KB
- 文档页数:10
IIC总线课程设计一、课程目标知识目标:1. 学生能理解IIC总线的基本概念,掌握其工作原理及特点;2. 学生能掌握IIC总线的通信协议,了解其数据传输方式;3. 学生能了解IIC总线在嵌入式系统中的应用及重要性。
技能目标:1. 学生能运用所学知识,设计并实现基于IIC总线的传感器数据采集系统;2. 学生能通过编程实践,掌握IIC总线的读写操作;3. 学生能运用调试工具,分析和解决IIC总线通信过程中出现的问题。
情感态度价值观目标:1. 培养学生对待科学技术的积极态度,提高对嵌入式系统及其应用的兴趣;2. 培养学生的团队协作精神,让学生在合作中共同解决问题,分享学习成果;3. 培养学生的创新意识,鼓励学生勇于尝试,不断探索新知识。
课程性质:本课程为电子信息类专业的选修课程,旨在帮助学生掌握IIC总线的基本原理和实际应用,提高学生的嵌入式系统设计和开发能力。
学生特点:学生具备一定的电子技术和编程基础,对嵌入式系统有一定了解,但可能对IIC总线及其应用尚不熟悉。
教学要求:结合学生特点,采用理论讲解、案例分析、实践操作相结合的方式进行教学,注重培养学生的实际操作能力和问题解决能力。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高学生的综合素养。
二、教学内容1. IIC总线概述:介绍IIC总线的发展背景、基本概念和主要特性,使学生对其有一个全面的认识。
相关教材章节:第一章 IIC总线概述2. IIC总线工作原理:讲解IIC总线的物理层、链路层和数据传输过程,使学生了解其内部工作机制。
相关教材章节:第二章 IIC总线工作原理3. IIC总线通信协议:详细介绍IIC总线的起始条件、停止条件、数据帧格式、地址识别等通信协议,使学生掌握IIC总线的数据传输方式。
相关教材章节:第三章 IIC总线通信协议4. IIC总线编程实践:结合实际案例,教授如何使用编程语言实现IIC总线的读写操作,提高学生的实际操作能力。
单片机单片机课程设计-双机串行通信单片机课程设计双机串行通信在当今的电子信息领域,单片机的应用无处不在。
而双机串行通信作为单片机系统中的一个重要环节,为实现设备之间的数据交换和协同工作提供了关键的技术支持。
一、双机串行通信的基本原理双机串行通信是指两个单片机之间通过串行接口进行数据传输的过程。
串行通信相较于并行通信,具有线路简单、成本低、抗干扰能力强等优点。
在串行通信中,数据是一位一位地按顺序传输的。
常见的串行通信协议有 UART(通用异步收发器)、SPI(串行外设接口)和 I2C(内部集成电路)等。
在本次课程设计中,我们主要采用 UART 协议来实现双机串行通信。
UART 协议包括起始位、数据位、奇偶校验位和停止位。
起始位用于标识数据传输的开始,通常为逻辑 0;数据位可以是 5 位、6 位、7 位或 8 位,具体取决于通信双方的约定;奇偶校验位用于检验数据传输的正确性,可选择奇校验、偶校验或无校验;停止位用于标识数据传输的结束,通常为逻辑 1。
二、硬件设计为了实现双机串行通信,我们需要搭建相应的硬件电路。
首先,每个单片机都需要有一个串行通信接口,通常可以使用单片机自带的UART 模块。
在硬件连接方面,我们将两个单片机的发送端(TXD)和接收端(RXD)交叉连接。
即单片机 A 的 TXD 连接到单片机 B 的 RXD,单片机 B 的 TXD 连接到单片机 A 的 RXD。
同时,还需要共地以保证信号的参考电平一致。
此外,为了提高通信的稳定性和可靠性,我们可以在通信线路上添加一些滤波电容和上拉电阻。
三、软件设计软件设计是实现双机串行通信的核心部分。
在本次课程设计中,我们使用 C 语言来编写单片机的程序。
对于发送方单片机,首先需要对 UART 模块进行初始化,设置波特率、数据位、奇偶校验位和停止位等参数。
然后,将要发送的数据放入发送缓冲区,并通过 UART 发送函数将数据一位一位地发送出去。
对于接收方单片机,同样需要对 UART 模块进行初始化。
单片机中的总线接口设计与应用作为嵌入式系统中的重要组成部分,单片机在各种应用领域中发挥着重要的作用。
总线接口设计是单片机系统中不可忽视的一部分,他在单片机与其他外设之间起着桥梁的作用。
本文将探讨单片机中的总线接口设计与应用的相关内容。
一、总线接口概述总线接口是单片机与外设之间进行数据交换的通信线路。
通过总线接口,单片机可以与各种外设进行数据的收发、控制信号的传输等操作。
常见的总线接口设计包括I2C、SPI、UART等。
1. I2C(Inter-Integrated Circuit)总线I2C是一种常见的串行通信协议,它使用两根线路(SDA和SCL)进行数据和时钟信号的传输。
单片机通过I2C总线可以与多个设备进行通信,每个设备通过唯一的地址来识别。
I2C总线接口的设计与应用需要注意以下几个方面:(1)硬件电路设计:I2C总线的硬件电路包括I2C总线控制器、电平转换电路、上拉电阻等。
其中,电平转换电路用于将单片机的信号电平转换为I2C总线所需的电平。
(2)软件设计:在单片机中,需要编写相应的软件程序来实现I2C总线的读写操作。
软件程序需要对I2C总线进行初始化,并实现对不同设备的访问与数据交换。
2. SPI(Serial Peripheral Interface)总线SPI总线是一种全双工的串行通信协议,它使用四根线路(SCLK、MOSI、MISO和SS)进行数据的传输和设备的选择。
SPI总线常用于单片机与外部存储器、传感器等设备之间的通信。
SPI总线接口的设计与应用需要注意以下几个方面:(1)硬件电路设计:SPI总线的硬件电路包括SPI总线控制器、数据线、时钟线和设备选择线等。
其中,设备选择线(SS)用于选择与单片机通信的设备。
(2)软件设计:在单片机中,需要编写相应的软件程序来实现SPI总线的读写操作。
软件程序需要进行SPI总线的初始化,并实现与具体设备之间的数据交换。
3. UART(Universal Asynchronous Receiver/Transmitter)总线UART总线是一种常见的串行通信协议,它通过两根线路(RX和TX)进行异步的数据传输。
单片机课程设计计划书(精选五篇)第一篇:单片机课程设计计划书机电科学与工程系电气自动化技术专业(专科)《单片机原理及接口技术课程设计》计划书一、目的及要求1.目的:通过本课程设计,•使学生进一步掌握单片机应用系统的硬、•软件开发方法,输入/输出(I/O)接口的扩展技术,应用程序设计技术并结合专业能设计简单、实用的单片机应用系统。
主要针对课堂重点讲授内容使学生加深对单片机硬件原理的理解及提高汇编语言程序设计的能力,提高学生的开发创新能力。
2.基本要求:重点研究单片机、A/D转换器、运算放大器、传感器、LED显示器、固态继电器、微型直流电机等元器件的特性、功能及使用方法;同时掌握主程序、子程序、中断服务程序框图的设计方法与汇编语言程序设计方法。
要求设计系统具有可靠性高、可维护、维修性好及检测精度高等优点。
设计内容可参考设计题目,也可根据自身情况自己拟定。
3.任务要求:了解控制对象、环境参数检测原理,在充分掌握单片机、A/D转换器、运算放大器、传感器、LED显示器、固态继电器、微型直流电机等元器件的工作原理、特性、功能及使用方法的基础上,创造性的、两人一组分工协作(一人偏软、一人偏硬)独立的设计本课题的内容。
二、设计内容、步骤及材料要求1.设计内容画出硬件原理图一张(A4号);软件框图(包括主程序框图、主要子程序框图、中断服务程序框图等)和系统初始化的汇编语言原程序。
提交不少于4000字的设计报告一份(A4纸)。
从整体方案的规划设计到各功能模块的设计,可实现功能及各元器件的选择,参数计算均需表述清楚。
报告的书写要清除工整,层次清晰,文字流畅。
后附5篇以上的参考文献。
2.设计步骤设计时间为5天,前2天进行硬件原理草图设计,指导教师审查之后用1天的时间再进行绘图;第四天进行软件框图(包括主程序框图、主要子程序框图、中断服务程序框图)的设计及系统初始化的汇编语言原程序的设计;第5天答辩。
3.设计图纸要求(1)硬件原理图的绘制:元件图正确、型号标注要准确、连线清楚.(2)软件框图的绘制:流程清晰。
基于I2C总线的单片机应用系统设计与实现
刘玉红
【期刊名称】《甘肃科技》
【年(卷),期】2004(020)007
【摘要】本文主要介绍了I2C总线的概念、特点及基于I2C总线的单片机系统软硬件设计与实现.I2C总线应用系统的软硬件通过调试,并应用于科研教学中,效果相当好,其他相近的系统作适当的修改即可.
【总页数】3页(P69-70,68)
【作者】刘玉红
【作者单位】兰州交通大学信息与电气工程学院,甘肃,兰州,730070
【正文语种】中文
【中图分类】TP368.1
【相关文献】
1.单片机应用技术讲座(12):第十讲 I2C总线及其数据存储器 [J], 骆东松;严天峰
2.基于I2C总线的电池管理系统通信方法 [J], 王壮鹏; 肖兵; 刘落实; 欧奔
3.基于I2C总线的针织机多路橡筋输送控制系统设计 [J], 任慧娟; 肖福礼; 俞琳; 崔朋娟
4.基于Proteus的I2C总线技术仿真 [J], 向继文
5.基于I2C总线和E2PROM存储器的帐户管理实验设计 [J], 黄克亚;陈畅
因版权原因,仅展示原文概要,查看原文内容请购买。
PIC单片机之I2C总线大家好,通过前一期的学习,我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管、继电器、蜂鸣器、按键、数码管、RS232 串口、步进电机、温度传感器等资源,体会到了学习板的易用性与易学性,看了前几期实例,当你实验成功后一定很兴奋,很有成就感吧!现在我们就趁热打铁,再向上跨一步,一起来学习一下I2C 总线的工作原理及使用方法,这样我们可以将一些我们要保存的数据存储到I2C总线的非易失存储器中,实现断电保持的功能,比如:你设置了一个密码,但不至于这个设备断过电以后就要重新设置过,我们可以将密码数据写在非易失存储器里面,还有如汽车的量程表的读数是不断累计的,可以通过不断访问I2C 存储器实现。
一、I2C总线特点I2C 总线是主从结构,单片机是主器件,存储器是从器件。
一条总线可以带多个从器件(也可以有多主结构),I2C 总线的SDA 和SCL 是双向的,开路门结构,通过上拉电阻接正电源。
进行数据传输时,SDA 线上的数据必须在时钟的高电平周期保持稳定。
数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变,如图1 所示。
图1 数据位的有效性规定在SCL 线是高电平时,SDA 线从高电平向低电平切换表示起始条件;当SCL 是高电平时SDA 线由低电平向高电平切换表示停止条件如图2 所示。
图2 起始和停止信号发送到SDA 线上的每个字节必须为8 位。
可以由高位到低位传输多个字节。
每个字节后必须跟一个响应位(ACK)。
响应时钟脉冲由主机产生。
主机释放SDA 线从机将SDA 线拉低,并在时钟脉冲的高电平期间保持稳定。
如图3 示。
当主机接受数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。
这个信号是由主机对从机的“非应答”来实现的。
然后,从机释放SDA 线,以允许主机产生终止或重复起始信号。
图3 字节格式与应答二、数据帧格式(1)主机向从机发送数据,数据的传送方向在传输过程中不改变,如图4 所示。
I2C总线——学习专业知识—单片机2009-12-14 22:44:25 阅读119 评论0 字号:大中小订阅一、总述:I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。
I2C总线只有两根双向信号线。
一根是数据线SDA,另一根是时钟线SCL。
I2C总线通过上拉电阻接正电源。
当总线空闲时,两根线均为高电平。
连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
每个接到I2C总线上的器件都有唯一的地址。
主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。
由总线上接收数据的器件则为接收器。
在多主机系统中,可能同时有几个主机企图启动总线传送数据。
为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。
二、数据传送:1、规定:I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
2、起始信号和终止信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。
连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。
接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。
直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。
3、数据传送格式:(1)、字节传送与应答:每一个字节必须保证是8位长度。
数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。
单片机的I2C总线协议原理及应用研究I2C(Inter-Integrated Circuit)是一种常用的串行总线协议,广泛应用于各种电子设备中。
本文将重点介绍单片机中的I2C总线协议原理及其应用研究。
一、I2C总线协议原理I2C总线协议是由Philips(现在的NXP Semiconductors)于1982年开发的,旨在提供一种简单、高效和灵活的通信方式。
它采用双线制,包括串行数据线(SDA)和串行时钟线(SCL)。
SDA线用于发送和接收数据,而SCL线用于时钟同步。
1、起始条件与停止条件I2C总线通信以起始条件和停止条件为起点和终点。
起始条件是指当SCL线为高电平时,SDA线由高电平变为低电平。
停止条件则是当SCL线为高电平时,SDA线由低电平变为高电平。
2、地址帧I2C总线协议使用7位或10位地址帧来寻址设备。
地址帧的最高位是固定1,接下来是设备的唯一地址,最后一位是读写位,指示数据的方向。
读写位为0表示主设备读取数据,为1表示主设备写入数据。
3、数据帧数据帧是在地址帧之后传输的信息。
每个数据帧由8位数据组成,位于最低有效位(LSB)到最高有效位(MSB)。
在每个数据位传输之后,接收方会发送一个应答位(ACK)以确认数据接收成功。
4、应答条件应答条件是指主设备在发送地址帧和数据帧之后,接收设备回复一个ACK位。
如果应答位为0,则表示设备接收成功,如果应答位为1,则表示设备接收失败或不可用。
5、时钟同步I2C总线协议使用SCL线来同步数据传输。
数据的传输速率由主设备控制,典型的速率有100kHz、400kHz和1MHz。
主设备通过控制SCL线的高低电平来调整数据的传输速率和时钟同步状态。
6、多主设备I2C总线协议支持多主设备的通信。
多主设备的情况下,每个主设备都会在总线空闲时发送起始条件,并负责传输设备地址和数据。
如果两个主设备同时发送起始条件,则传输冲突会导致通信失败。
因此,在多主设备系统中,主设备需要通过仲裁(arbitration)来决定哪个设备有权利使用总线。
单片机课程设计题目 :单总线和 I2C 总线结合实现数字温度计实验
班级:
设计者:
指导教师 :
单总线和 I2C 总线结合实现数字温度计实验
一、实验目的
通过本实验 ,理解掌握单总线器件和 I2C 总线器件的应用 ,熟悉串行总线的操作技巧。
二、实验设备及器件
IBM PC 机一台
DP-51PROC 单片机综合仿真实验仪一台
三、实验内容
1. 编写程序 ,通过单片机的 P3.3 口控制一个 DS18B20 完成数字温度的采集 ,然后用程序处理采集到的数据结果。
2. 编写程序 ,通过 I2C 总线器件 ZLG7290 实现温度数据的输出显示。
3. 结合以上两部分程序 ,编程实现数字式温度计的程序设计。
四、实验要求
熟练掌握单总线方式器件的应用,熟悉I2C总线协议,学习I2C器件的使用方法。
五、实验过程和步骤
(一、新建工程文件
1、点击工具栏 Project 选项,在下拉菜单中选择 New Project 命令 ,弹出项目文件保存对话框 ,输入项目名后 ,点击保存按钮。
2、在工程建立完毕以后,uVision 会弹出器件选择窗口,选择相应的器件型号。
如想修改 ,可点击工具栏 Project 选项,在下拉菜单中选择 Select Device for
Target …Target ?命令。
3、点击工具栏 File 选项,选中 New 命令,新建文件 ,输入源程序。
4、把文件保存到磁盘中,如用汇编语言编写程序用.asm为扩展名,如用C语言编写程序用 .c 为扩展名。
5、添加该文件到工程中 ,在 Projectwindos 窗口内 ,选中 Source Group1 然后点击鼠标右键 ,选择 Add files to Group “Source Group1 ”,选择刚才创建的源程序文件 ,单击 Add 按钮。
(二、程序文件的编译、链接
1. 安装B4区JP12接口上的短路帽,将B4区的DQ 与A2区INT1(P3.3相连。
2. 安装 D5 区 JP1 接口上的短路帽 ,将 D5 区的 SDA、 SCL 分别与 A2 区的 P17、
P16 相连。
3. 将 D5 区的 RST_L 针接上高电平。
4. 按照下面的程序在 Keil C51 集成开发环境中建立工程文件 ,并进行调试仿
真。
TEMPER_L EQU 36H ; 存放读出温度低位数据
TEMPER_H EQU 35H ; 存放读出温度高位数据
TEMPER_NUM EQU 37H ; 存放转换后的温度值
FLAG1 BIT 00H
DQ BIT P3.3 ; 一线总线控制端口
SDA BIT P1.7 ;I2C 总线定义
SCL BIT P1.6
MTD EQU 40H ; 发送数据缓冲器
MRD EQU 49H ; 接收数据缓冲区
;定义器件地址 ,变量
ZLG7290 EQU 70H ;ZLG7290 的器件地址ACK BIT 10H ; 应答标志位
SLA DA TA 50H ; 器件的从地址
SUBA DA TA 51H ; 器件的子地址NUMBYTE DA TA 52H ; 读 / 写的字节数变量ORG 0000H
LJMP MAIN
ORG 0100H
; ---- 温度计主程序如下 :
MAIN:
MOV SP,#70H
DISP_LOOP:
LCALL GET_TEMPER ;从 DS18B20 读出温度数据LCALL TEMPER_COV ; 转换读出的温度数据并保存LCALL DELAY
MOV MTD,#60H
MOV MTD+1,TEMPER_NUM; 温度值低位
ANL MTD+1,#0FH
MOV SLA,#ZLG7290 ; 指定器件地址
MOV SUBA,#07H ; 指定子地址
MOV NUMBYTE,#02H ; 发送 2 字节数据
LCALL IWRNBYTE ; 调用写 2 字节数据程序MOV MTD,#61H
MOV A,TEMPER_NUM
SWAP A
ANL A,#0FH
MOV MTD+1,A ; 温度值高位
MOV SLA,#ZLG7290 ; 指定器件地址
MOV SUBA,#07H ; 指定子地址
MOV NUMBYTE,#02H ; 发送 2 字节数据
LCALL IWRNBYTE ; 调用写 2 字节数据程序
LCALL DELAY
SJMP DISP_LOOP ; 温度循环采集显示
; ---- 读出转换后的温度值
GET_TEMPER:
SETB DQ ; 定时入口
BCD: LCALL INIT_1820
JB FLAG1,S22
LJMP BCD ; 若 DS18B20 不存在则返回 S22: LCALL DELAY1 MOV A,#0CCH ; 跳过 ROM 匹配------- 0CC
LCALL WRITE_1820
MOV A,#44H ; 发出温度转换命令
LCALL WRITE_1820
NOP
LCALL DELAY
LCALL DELAY
CBA: LCALL INIT_1820
JB FLAG1,ABC
LJMP CBA
ABC: LCALL DELAY1
MOV A,#0CCH ; 跳过 ROM 匹配
LCALL WRITE_1820
MOV A,#0BEH ; 发出读温度命令
LCALL WRITE_1820
LCALL READ_18200 ;READ_1820
RET
; ---- 读 DS18B20 的程序,从 DS18B20 中读出一个字节的数据 READ_1820: MOV R2,#8
RE1: CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RE1
RET
; ---- 写 DS18B20 的程序WRITE_1820:
MOV R2,#8
CLR C
WR1820: CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1820
SETB DQ
RET
; ---- 读 DS18B20 的程序,从 DS18B20 中读出两个字节的温度数据
READ_18200:
MOV R4,#2 ; 将温度高位和低位从 DS18B20 中读出
MOV R1,#36H ; 低位存入 36H(TEMPER_L,高位存入 35H(TEMPER_H REOO: MOV R2,#8
REO1: CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
SWAP A MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
; ---- 将从 DS18B20 中读出的温度数据进行转换 TEMPER_COV:
MOV A,#0F0H
ANL A,TEMPER_L ; 舍去温度低位中小数点后的四位温度数值
MOV TEMPER_NUM,A
MOV A,TEMPER_L
JNB A CC.3,TEMPER_COV1 ; 四舍五入去温度值
INC T EMPER_NUM
TEMPER_COV1:
MOV A,TEMPER_H
ANL A,#07H
SWAP A
ADD A,TEMPER_NUM
MOV TEMPER_NUM,A ; 保存变换后的温度数据LCALL BIN_BCD
RET
; ---- 将 16 进制的温度数据转换成压缩 BCD 码BIN_BCD:
MOV DPTR,#TEMP_TAB
MOV A,TEMPER_NUM
MOVC A,@A+DPTR
MOV TEMPER_NUM,A
RET
TEMP_TAB:。