单片机课程设计文档格式.docx
- 文档编号:5059489
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:14
- 大小:245.47KB
单片机课程设计文档格式.docx
《单片机课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
2.4IIC总线器件的寻址方式
IIC总线上的所有器件连接在一个公共的总线上,因此,主器件在进行数据传输前选择需要通信的从器件,即进行总线寻址。
地址位与一个方向位共同构成IIC总线器件寻址字节。
方向位(R/)规定了总线上的主器件与外围器件(从器件)的数据传输送方向。
当方向位R/=1,表示主器件读取从器件中的数据;
R/=0,表示主器件向从器件发送数据。
2.5IIC总线数据传输协议
IIC总线规定了严格的数据通信格式,所有具有IIC总线接口的器件都必须遵守。
另外,对于应用最广的51系列单片机,却没有提供IIC总线接口。
实际上,利用这些单片机的普通I/O口,采用软件模拟IIC总线SCL和SDA上的数据传送时序,可以实现对IIC总线器件的读、写操作。
3设计要求
将AT89C51内部数据存储器中的30H-3FH重的数据写入24C01C中从30H开始的16个连续存储单元中,再执行读操作,读取24C01C中30H-3FH中的数据,并将数据存储到AT89C51内部数据存储器中从40H开始的16个连续存储单元中。
4程序设计
4.1软件设计
4.1.1启动信号
在时钟线SCL保持高电平期间,数据线SDA上的电平负跳变定义为IIC总线的“启动信号”。
启动信号是一种电平跳变时序信号,而不是一个电平信号。
启动信号是由主控器主动建立的,在建立该信号之前,IIC总线必须处于空闲状态,即SDA和SCL两条信号线同时处于高电平,如图3。
4.1.2停止信号
在时钟线SCL保持高电平期间,数据线SDA被释放,使SDA的电平正跳变,定义为IIC总线的“停止信号”。
停止信号也是一种电平跳变的时序信号,而不是一个电平信号。
停止信号也是由主控器主动建立的,该信号之后,IIC总线返回空闲状态,如图3。
图3
4.1.3数据传送字节信号
在IIC总线上传送的每一位数据都有一个时钟脉冲相对应。
也就是说,在SCL时钟的配合下,在SDA数据线上一位一位地传送数据。
进行数据传送时,在SCL高电平期间,SDA线上的电平必须保持稳定,当SCL为低电平期间,才允许SDA线上的电平改变状
态。
如图4所示。
图4
4.1.4应答信号
在IIC总线上所有数据都是以8位字节传送的,发送器每发送一个字节之后,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。
应答信号为低电平时,定义为有效应答信号。
对于有效应答信号的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA电平拉低,并且确保在该时钟的高电平期间为稳定的低电平。
软件汇编程序如图5:
图5
4.2硬件设计
打开proteusISIS编辑环境,元件清单如表1
元件名称
所属类
所属子类
AT89C51.BUS
MicroprocessorICs
8051Family
CAP
Capacitors
Generic
CAP-ELEC
CRYSTAL
Miscellaneous
—
RES
Resistors
24C01C
MemoryICs
12CMemories
表1
硬件连接如图6:
图6
4.3调试与仿真
用Keil软件进行汇编程序的编写,用ProteusISIS软件进行外部接线图的连接,最后将Keil与ProteusISIS联机调试。
5源程序:
ACKBIT10H;
应答标志位
SLADATA50H;
器件地址字
SUBADATA51H;
器件子地址
NUMBYTEDATA52H;
读、写字节数
SDABITP1.5
SCLBITP1.4;
IIC总线定义
MTDEQU30H;
发送数据缓存区首地址
MRDEQU40H;
接收数据缓存区首地址
AJMPMAIN
ORG80H
JWRNBYTE:
MOVR3,NUMBYTE
LCALLSTART;
启动总线
MOVA,SLA
LCALLWRBYTE;
发送器件地址字
LCALLCACK
JNBACK,RETWRN;
无应答则退出
MOVA,SUBA;
指定子地址
LCALLWRBYTE
LCALLCACK
MOVR1,#MTD
WRDA:
MOVA,@R1
开始写入数据
JNBACK,IWRNBYTE
INCR1
DJNZR3,WRDA;
判断是否写完
RETWRN:
LCALLSTOP
RET
IRDNBYTE:
MOVR3,NUMBYTE
LCALLSTART
MOVA,SLA
LCALLCACK
JNBACK,RETRDN
指定子地址
重新启动总线
INCA;
准备进行读操作
LCALLWRBYTE
JNBACK,IRDNBYTE
MOVR1,#MRD
RON1:
LCALLRDBYTE;
读操作开始
MOV@R1,A
DJNZR3,SACK
LCALLMNACK;
最后字节发非应答位
RETRDN:
LCALLSTOP
SACK:
LCALLMACK
SJMPRON1
START:
SETBSDA;
发送起始条件数据信号
NOP;
起始条件建立时间大与4.7us
SETBSCL;
发送起始条件的时钟信号
NOP
起始条件锁定时间大于4.7us
CLRSDA;
发送起始信号
起始条件在锁定时间大于4.7us
CLRSCL;
钳住IIC总线,准备发送或接收数据
STOP:
CLRSDA;
发送停止条件的数据信号
NOP
发送停止条件的时钟信号
起始条件建立时间大于4.7us
SETBSDA;
发送IIC总线停止信号
延时时间大于4.7us
MACK:
将SDA置0
SETBSCL
保存数据时间大于4.7us
CLRSCL
MNACK:
将SDA置1
CACK:
SETBSDA
CLRACK
MOVC,SDA
JCCEND
SETBACK;
判断应答位
CEND:
NOP
WRBYTE:
MOVR0,#08H
WLP:
RLCA;
取数据位
JCWRI
SJMPWRO;
判断数据位
WLP1:
DJNZR0,WLP
WPI:
发送1
SJMPWLP1
WRO:
发送数据0
SJMPWLP1
RDBYTE:
RLP:
时钟线为高,接收数据
MOVC,SDA;
读取数据位
MOVA,R2
将SCL拉低,时间大于4.7us
RLCA;
进行数据位的处理
MOVR2,A
DJNZR0,RLP;
未够8位,继续读入
MAIN:
MOVR4,#OFOH;
延时,等待其他芯片复位完成
DJNZR4,$
MOVA,#0
MOVR0,#30H
S1:
MOV@R0,A
INCR0
INCA
CJNER0,#40H,S1
MOVSLA,#0A0H;
24C01C地址字,写操作
MOVSUBA,#30H;
目标地址
MOVNUMBYTE,#16;
字节数
LCALLIWRNBYTE;
写数据
DELAY:
MOVR5,#20
D1:
MOVR6,#248
D2:
MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
LCALLIRDNBYTE;
END
6心得体会
通过这次的课程设计,使我加深了对Keil与ProteusISIS两个软件的更深入了解,同时也加深了对IIC总线更深刻的认识。
在做课程设计的过程中,查阅了大量的资料,学到了不少知识,体会到了综合学习系统的易学性和易用性,同时和同学的默契配合也是十分重要的。
因为在设计中对软件的一些功能掌握的不是很透彻,用软件调试仿真的时候出现了一些错误,导致没有输出结果,为此在将来我还要不断地继续学习与深造,不断地完善自己。
参考文献
[1]赵瑞峰,胡荣强,郑存红.基于电话网的低成本远程监控
[2]赵建领,薛园园.51单片机开发与应用技术详解[J].北京:
电子工业出版社,2009
[3]聂春燕,徐振忠.混沌系统在弱信号检测中的应用
[4]侯玉宝,陈忠平,李成群,基于Proteus的51系列单片机设计与仿真[J].北京:
电子工业出版社,2008
[5]张淑清,姜万录,王玉田.强噪声中弱信号检测的混沌方法及超声系统的实现[J].电子测量与仪器学报,2001,12
[6]蔡美琴主编.MCS-51系列单片机系统及其应用.高等教育出版社,1992
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)