存储器卡读写实验Word格式文档下载.docx

上传人:b****4 文档编号:18167904 上传时间:2022-12-13 格式:DOCX 页数:10 大小:160.48KB
下载 相关 举报
存储器卡读写实验Word格式文档下载.docx_第1页
第1页 / 共10页
存储器卡读写实验Word格式文档下载.docx_第2页
第2页 / 共10页
存储器卡读写实验Word格式文档下载.docx_第3页
第3页 / 共10页
存储器卡读写实验Word格式文档下载.docx_第4页
第4页 / 共10页
存储器卡读写实验Word格式文档下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

存储器卡读写实验Word格式文档下载.docx

《存储器卡读写实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《存储器卡读写实验Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。

存储器卡读写实验Word格式文档下载.docx

3.实验结果

刚开始运行时,单片机没有读取任何数据,此时数码管显示数字为0;

当“读卡”按钮按下时,此时发光二极管亮,数码管显示预先存入24C04芯片的数值;

当“清除”按钮按下时,此时此时发光二极管灭,数码管数值清零。

图4

图5

图6

五、实验总结

通过本次实验我了解了存储器卡存、取数据的过程,同时了解

串行总线的工作原理。

实验在程序编写过程中遇到了问题,还是参考过老师以及网上的程序得到同学的帮助,才大体上完成。

每次实验都有新的收获,以后我会更加努力学习的。

六、实验代码

#include<

reg52.h>

#include<

intrins.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineNOP4(){_nop_();

_nop_();

}//延时4us

sbitSCL=P1^0;

//SCL引脚

sbitSDA=P1^1;

//SDA引脚

sbitBUTTON=P1^5;

//定义读卡按键

sbitLED=P1^6;

//定义模拟上电卡座

sbitBUTTONQ=P1^7;

//定义模拟取卡按键

uintshu;

//定义写入变量

//数码管显示数组

ucharcodeDUAN_XUAN[]={

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90

};

//延迟函数

voidDelay(uintx){

uchari;

while(x--){

for(i=0;

i<

120;

i++);

}

}

voidDelayMS(uintx){

uchart;

for(t=120;

t>

0;

t--);

/*IIC启动*/

voidStart(){

SDA=1;

SCL=1;

NOP4();

SDA=0;

SCL=0;

/*IIC停止*/

voidStop(){

SDA=0;

SDA=1;

/*读取应答*/

voidRACK(){

SDA=1;

/*发送非应答信号*/

voidNO_ACK(){

/*向24c04中写一字节*/

voidWrite_A_Byte(ucharb){

for(i=0;

8;

i++){//循环移入8位b<

<

=1;

SDA=CY;

RACK();

//读取应答

/*向24c04中读一字节*/

ucharReceive_A_Byte(){

uchari,d;

i++){

SCL=1;

d<

d|=SDA;

returnd;

/*任意地址写数据*/

voidWrite_Random_Address_Byte(ucharadd,uchardat){

Start();

Write_A_Byte(0xa0);

Write_A_Byte(add);

Write_A_Byte(dat);

Stop();

DelayMS(10);

/*当前地址读数据*/

ucharRead_Current_Address_Data(){

uchard;

Start();

Write_A_Byte(0xa1);

d=Receive_A_Byte();

NO_ACK();

/*任意地址读数据*/

ucharRandom_Read(ucharaddr){

Write_A_Byte(addr);

returnRead_Current_Address_Data();

//显示函数

voiddisplay(uintx){

ucharbai,shi,ge;

bai=x/100;

//取百位

shi=x%100/10;

//取十位

ge=x%10;

//取个位

P0=0xff;

//消影

Delay

(1);

P2=0x01;

P0=DUAN_XUAN[ge];

//显示个位

Delay(10);

P2=0x02;

P0=DUAN_XUAN[shi];

//显示十位

P2=0x04;

P0=DUAN_XUAN[bai];

//显示百位

//主函数

voidmain(){

uintx;

x=0;

shu=129;

//把要写的值赋给变量

BUTTON=1;

LED=0;

Write_Random_Address_Byte(0x00,shu);

//往00地址写入一个值

shu=Random_Read(0x00);

//读00地址的值

while

(1){

if(BUTTON==0){//判断读卡按键

Delay(40);

if(BUTTON==0){//消抖

LED=1;

//灯亮

x=shu;

//把读出的数赋给显示变量

}

}

if(BUTTONQ==0){//判断清除按键

if(BUTTONQ==0){

LED=0;

//灯灭

x=0;

//对显示变量的值清零

display(x);

//显示

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1