GPIO报告.docx
- 文档编号:14554458
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:12
- 大小:68.82KB
GPIO报告.docx
《GPIO报告.docx》由会员分享,可在线阅读,更多相关《GPIO报告.docx(12页珍藏版)》请在冰点文库上搜索。
GPIO报告
学院:
广东水利电力职业技术学院
系别:
自动化工程系
班级:
13嵌入式系统班
小组成员:
陈秋娥131202105
许宋如131202137
邹艳萍131202150
目录
目录2
一、任务要求:
3
二、知识点:
3
三、实验目的:
3
四、实验器材:
3
五、I2C总线原理3
六、EEPROM从板原理图5
七、程序开发流程图5
八、主程序及核心函数说明5
九、调试结果5
一、任务要求:
1.在EEPROM里开辟出一个区间,存储自己的姓名、学号等信息。
2.当按键K1按下时,就从EEPROM里读出姓名信息并通过串口发送到PC;
3.当按键K2按下,就从EEPROM读出学号信息,送到数码管显示,同时串口发送。
2、知识点:
1.阅读I2C总线协议,了解I2C总线电气连接特性以及数据传输特点。
2.了解EEPROM存储特点,阅读AT24C系列存储器datasheet,了解AT24C芯片电气特性以及数据读写时序。
三、实验目的:
要求使用单片机模拟I2C总线,驱动AT24C系列EEPROM。
在开发过程中,学会查找和阅读相关资料;能根据芯片datasheet画出单片机接口扩展电路;能根据时序图,编写单片机程序。
通过实践练习,最终掌握单片机I2C总线接口扩展芯片的驱动方法。
四、实验器材:
单片机C51开发板,EEPROM从板,连接线,PC机,KeilforC51开发软件。
5、I2C总线原理
I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。
I2C总线只有两根双向信号线。
一根是数据线SDA,另一根是时钟线SCL。
I2C总线通过上拉电阻接正电源。
当总线空闲时,两根线均为高电平。
连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
标准模式I2C总线的传输速率可高达100kb/s。
为了符合更高速度的要求,标准模式I2C总线规范不断升级:
(1)快速模式,位速率高达400kbit/s
(2)高速模式,位速率高达3.4Mbit/s
(3)从机的寻址,也从7位寻址,达到了10位寻址
每个接到I2C总线上的器件都有唯一的地址。
主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。
由总线上接收数据的器件则为接收器。
(在80C51单片机应用系统的串行总线扩展中,我们经常遇到的是以80C51单片机为主机,其它接口器件为从机的单主机情况。
)
6、EEPROM从板原理图
七、程序开发流程图
八、主程序及核心函数说明
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitscl=P3^2;
sbitsda=P3^7;
voiddelay5us()
{
uchara;
for(a=1;a>0;a--);
}
voiddelayms(uintxms)
{
uinti,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
voidstart()//起始信号
{
sda=1;
delay5us();
scl=1;
delay5us();
sda=0;
delay5us();
scl=0;
delay5us();
}
voidstop()//终止信号
{
sda=0;
delay5us();
scl=1;
delay5us();
sda=1;
delay5us();
}
voidrespond()//等待应答
{
uchari=0;
scl=1;
while((sda==1)&&(i<255))i++;
scl=0;
delay5us();
}
voidwriter(uchardate)//写入一个字节
{
uchari,temp;
temp=date;
for(i=0;i<8;i++)
{
scl=0;
temp=temp<<1;
delay5us();
sda=CY;
delay5us();
scl=1;
delay5us();
}
scl=0;
delay5us();
sda=1;
delay5us();
}
ucharread()//读取一个字节
{
uchari,date=0;
scl=0;
delay5us();
sda=1;
delay5us();
for(i=0;i<8;i++)
{
date=date<<1;
scl=1;
delay5us();
date=date|sda;
scl=0;
delay5us();
}
delay5us();
returndate;
}
voidwriteROM(ucharadd,uchardate)
{
start();//起始信号
writer(0xa0);
respond();//等待应答
writer(add);//写入一个地址
respond();
writer(date);//写入数据
respond();
stop();//终止信号
}
voidwriterROMStream(ucharadd,constchar*str)
{
ucharlen=strlen(str);
uchari;
char*ptr=str;
for(i=0;i { writeROM(add+i,*ptr); ptr++; } } ucharreadROM(ucharadd) { uchardate; start();//起始信号 writer(0xa0); respond();//等待应答 writer(add);//写入一个地址 respond(); start(); writer(0xa1); respond(); date=read(); respond(); stop();//终止信号 returndate; } voidreadROMStream(ucharadd,char*strBuff,ucharlen) { uchari; char*ptr=strBuff; for(i=0;i { *ptr=readROM(add+i); ptr++; } *ptr=0; } voidUARTinit() { TMOD=0x20; SCON=0x40; TH1=0xFA; TL1=TH1; PCON=0x00; EA=1; ES=1; TR1=1; } voidUARTSendStream(char*strBuff) { char*ptr=strBuff; ucharlen=strlen(strBuff); uchari; for(i=0;i { SBUF=*ptr; ptr++; while(TI==0); TI=0; } } constchar*Name="XXX\n"; constucharNameADD=0x00; constchar*Number="05\n"; constucharNumberADD=0x10; sbitK33=P3^3; sbitK34=P3^4; charstrBuff[16]; voidUARTSendDate(); voidmain() { K33=1; K34=1; UARTinit(); while (1) { switch(K33|(uchar)K34<<1) { case0x02: //K33 readROMStream(NumberADD,strBuff,strlen(Number)); UARTSendStream(strBuff); P1=0x01; while(K33==0); break; case0x01: //K34 readROMStream(NameADD,strBuff,strlen(Name)); UARTSendStream(strBuff); P1=0x02; while(K34==0); break; case0x00: writerROMStream(NameADD,Name); writerROMStream(NumberADD,Number); P1=0x03; while(K34==0||K33==0); break; default: break; } P1=0x00; delayms(500); } } 九、调试结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GPIO 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)