单片机读取SD卡中BMP图片文件并送往TFT彩屏上显示(测试成功)(二)

该博客详细介绍了如何使用单片机从SD卡读取BMP图片文件,并将其显示在TFT彩屏上。通过一系列的SD卡操作指令,包括初始化、写入和读取命令,实现了图片数据的传输和显示。在程序中,博主特别强调了初始化速度控制、数据读写注意事项以及BMP文件格式的处理细节。
摘要由CSDN通过智能技术生成

二、软件部分

软件中INI_FLAG为设置的一个标志位,通过置1该位可以控制发送或接受数据速度。因为在初始化阶段SD卡操作需要适当放缓,而初始化成功后可以加快数据传动速率。

1>往SD卡写一个字节

void SD_WRITE(unsigned char daima)  //往SD写一个字节
{unsigned char i;
for(i=0;i<8;i++)
{
SD_CLK=0;
if(INI_FLAG)delayNOP();
SD_DI=(daima&0x80)>>7;//注意先发送高位
SD_CLK=1;
if(INI_FLAG)delayNOP();
daima<<=1;
}
SD_DI=1;
}

2>从SD读一个字节

unsigned char SD_READ()//从SD读一个字节
{unsigned char n=0,i;
SD_DO=1;//将单片机引脚接口读打开
for(i=0;i<8;i++)
{
n<<=1;//先接受高位
SD_CLK=0;
if(INI_FLAG)delayNOP();
SD_CLK=1;
if(INI_FLAG)delayNOP();
if(SD_DO)n|=1;
}
return n;
}

3>延时函数

void delayNOP()
{
  _nop_();//需要在头文件中加入#include <intrins.h>
  _nop_();
  _nop_();
  _nop_();
}

4>写入一个完整指令

unsigned char SD_CMD(unsigned char command,unsigned long address,unsigned char crc)//往SD写完整命令
{unsigned char argument1,argument2,argument3,argument4,i,temp;
SD_CS=1;
SD_WRITE(0xFF);//在命令结束后可以加入8个时钟,在写下个命令时就能实现此效果
SD_CS=0;
argument4=address;
argument3=(unsigned char)(address>>8);
argument2=(unsigned char)(address>>16);
argument1=(unsigned char)(address>>24);
SD_WRITE(command);
SD_WRITE(argument1);
SD_WRITE(argument2);
SD_WRITE(argument3);
SD_WRITE(argument4);
SD_WRITE(crc);
SD_READ();
do
{ i++;
temp=SD_READ();
}while((temp==0XFF)&&(i<100));

*******************************************************************************************************************(1)
return(temp);
}

5>RESET 命令

unsigned char SD_RST()//SD 卡复位,进入SPI 模式,使用
{
unsigned char i,time,temp;
TP_CS=1;******************************************************************************************************(2)
INI_FLAG=1; //将INI_FLAG 置为1,以减慢读写速度
SD_CS=1;    //设置起始状态**********************************************************************************(3)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值