欢迎来到天天文库
浏览记录
ID:55210983
大小:175.50 KB
页数:8页
时间:2020-05-03
《单片机课程设计(温度控制系统).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、点这郑重声明:本实验并不是对所有SD卡都能成功运行第一步:打开winhex软件,用读卡器读SD卡,在winhex中查看SD卡点击查找(ctrl+F)输入FAT(找到DBR处)发现DBR起始于0x11200扇区地址,它必是512整数倍,因为一个扇区含512BYTE,所以在程序中读一个扇区时一定要是512整数倍,否则会出错。11200地址对应的值是0xEB,本程序读一下这个地址的值看看是否正确。注意有的winhex编址是十进制看看程序吧#include#defineucharunsignedchar#
2、defineuintunsignedint//=============================================================//定义SD卡需要的4根信号线sbitSD_CLK=P1^1;sbitSD_DI=P1^2;sbitSD_DO=P1^0;sbitSD_CS=P1^3;sbitBeep=P2^0;//用来调程序标志//===========================================================//==============
3、=============================================//定义512字节缓冲区,,89C52直接定义成unsignedcharDATA[80];,太大了RAM不够unsignedcharxdataDATA[512];voiddelay(unsignedintz){unsignedintx,y;for(x=z;x>0;x--);for(y=110;y>0;y--);}//========================================================
4、===//写一字节到SD卡,模拟SPI总线方式voidSdWrite(unsignedcharn){unsignedchari;for(i=8;i;i--){SD_CLK=0;SD_DI=(n&0x80);n<<=1;SD_CLK=1;}SD_DI=1;}//===========================================================//从SD卡读一字节,模拟SPI总线方式unsignedcharSdRead(){unsignedcharn,i;for(i=8;i;i--)
5、{SD_CLK=1;SD_CLK=0;n<<=1;if(SD_DO)n
6、=1;}returnn;}//============================================================//检测SD卡的响应unsignedcharSdResponse(){uchari=0,response=0;while(i<=8){response=SdRead();if(response==0x00)break;if(response==0x01)break;i++;}returnrespo
7、nse;}//================================================================//发命令到SD卡voidSdCommand(unsignedcharcommand,unsignedlongargument,unsignedcharCRC){SdWrite(command
8、0x40);/*SdWrite(((unsignedchar*)&argument)[0]);SdWrite(((unsignedchar*)&argument)[1]);SdWrit
9、e(((unsignedchar*)&argument)[2]);SdWrite(((unsignedchar*)&argument)[3]);*/SdWrite(argument>>24);SdWrite(argument>>16);SdWrite(argument>>8);SdWrite(argument);SdWrite(CRC);}//================================================================//初始化SD卡unsignedcharSdI
10、nit(void){unsignedchari;unsignedcharresponse=0xFF;P3=0xff;SD_CS=1;for(i=0;i<=0xfe;i++)SdWrite(0xff);SD_CS=0;SdCommand(0x00,0,0x95);SD_DI=1;response=SdResponse();if(response!=0x01){
此文档下载收益归作者所有