最近要做一个51单片机SD卡的读写用12864显示!哪位大神能说下原理,怎么才能把SD卡的东西显示到12864上!

最近要做一个51单片机SD卡的读写用12864显示!哪位大神能说下原理,怎么才能把SD卡的东西显示到12864上!,第1张

本SD卡读写系统中的接口电路采用的STCl2C5A60S2单片机控制,并通过软件编程实现SPI模式的数据传输(包括串行时钟、数据的输入和输出)。在SPI模式下。单片机与SD卡的连接主要有四根线(包括时钟线,两根数据传输线和一根片选线),

通常,SD卡有两种总线模式,即SD总线模式和SPI总线模式。其中SD总线模式采用四条数据线并行传输数据,数据传输速率高,但是传输协议复杂,只有少数单片机才提供有此接口,而用软件方法模拟SD总线又比较繁琐,会降低SD卡的数据传输速率;而SPI总线模式只有一条数据传输线。传输协议简单,易于实现,虽然数据传输速率较低,但绝大多数中高档单片机都提供有SPI总线,同时由于其易于用软件方法来模拟。因此,本设计采用SPI总线模式。

SPI总线技术是MOTOROIA公司推出的一种同步串行总线接口,是目前单片机应用系统中最常用的几种串行扩展接口之一。 SPI总线主要通过三根线进行数据传输,包括同步时钟线SCK、主机输入/从机输出数据线MISO、主机输出/从机输人数据线MOSI。另外,它还有一条低电平有效的从机片选线CS,片选信号以及同步时钟脉冲由主机提供。SPI总线模式的数据是以字节为单位进行传输的,主机与SD卡的各种通信都由主机控制。

软件设计

SD卡的初始化

SD卡从上电到对SD卡进行正确的读写 *** 作,往往都需要一个上电初始化的过程。SD卡上电后,主机必须先向SD卡发送74个时钟周期,以完成SD卡的上电过程。通常SD卡上电后会自动进入SD总线模式,并在SD总线模式下向SD卡发送复位命令(CMD0)。

SD卡的读写

SD卡的数据传输主要通过块读写来实现。块长度默认为512 KB。当RAM中已存放由模数转换模块传来的512 KB数据时,单片机便向SD卡写入此块数据。块读取时,可发送命令CMDl7,接收到的应答信号为0x00。这样就可以直接接收数据了,接收到的数据的第1个字节为数据令牌0xfe,后面的为接收到的数据,当输出口变为高电平时。表明读取 *** 作完成。

装数据读出以后,通过单片机处理,把结果在液晶上显示。

你想把51单片机运行的程序放在SD卡里,然后让51单片机读取并执行?很难!!!除非你的单片机带有bootloader,能从SD卡里读出程序并烧写到单片机的ROM里,再跳转到PC=0x0000开始执行这个程序。

如果你的程序里包含了很多数据(不是运行的代码),比如显示一副图片。那就把数据分离出来放在SD卡里,那程序运行的时候就从SD里读出来做显示或怎么样。比如让LCD显示汉字而需要的汉字库HZK16有260KB,51单片机的64K是绝对装不下的,所以放在SD卡或者AT45DB161里,单片机的程序只需要计算出汉字的偏移量,然后从SD卡或AT45DB161的对应的地址里读出数据送到LCD上就可以了。

你好

ram不足是51的一大缺陷。不知你用的什么厂家的51,AT,STC?

如果是老AT的51需要通过P0,P2外扩RAM,占用io多也很不经济

所以建议选用STC的stc12c5a60s2这个型号,集成1KB的外部RAM,60k的FLASH ROM. 淘宝7元左右。比较经济。

当然这所谓的1KB的RAM虽然集成在单片机片内,但它本质还是外部RAM.所以在c中定义它需加xdata来声明。

比如你定义读SD卡的一个512b的扇区缓冲如下:

unsigned char xdata buffer[512]这样干就行

然后把常用的变量定义在片内那256B中就可以。

是,stc,只可以串口下载,建议不要用at了,搞sd这样的东东还是用ram多一些的单片机,如avr或stc,at89s52速度慢,资源少,做简单的控制还可以。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11418998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存