第 27 页 共 36 页
谢 辞
基于SD卡存储采集数据电路设计终于告一段落了,在此我想对帮助我的老师们和同学们真诚的说声谢谢。
论文的研究工作是在陈锡华副教授的悉心指导下完成的。论文的每一步进展都倾注着老师的关怀、教导和帮助。老师渊博的知识和丰富的经验使我受益匪浅,此外,陈老师言传身教,不仅使我开拓了视野,增加了知识,更重要的是使我系统的掌握了科学研究的方法和自己动手的能力。在这里,向我的陈老师表示我由衷的谢意!
与此同时也非常感谢我的卢文华同学在设计过程中给我的帮助和鼓励。
最后,还要向所有关心和帮助过我的人致以最衷心的感谢!论文的工作是在我的导师陈锡华教授的悉心指导下完成的,陈教授严谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢陈老师对我的关心和指导。
还要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位老师表示感谢!
第 28 页 共 36 页
参考文献
[1] 潘水雄.新编单片机原理与应用,西安:西安电子科技大学出版社,2008-01. [2] 赵威.SD存储卡的设计和实现,上海:上海交通大学软件学院,2007-09. [3] 于振南.51单片机读写SD卡,哈尔滨:哈尔滨工程大学信息学院,2009-03. [4] 康华光.电子技术基础,北京:高等教育出版社,2005-12.
[5] 潘新民,王燕芳.微型计算机控制技术,北京:电子工业出版社,2006-01. [6] 龚运新.单片机C语言开发技术,北京:清华大学出版社,2006-10. [7] 张宋润.单片机应用设计200例,北京:北京航空航天大学出版社,2006-7. [8] 关德新,冯文全.单片机外围器件实用手册-电源器件分册[M],北京:北京航空航 天大学出版社,1998-02.
[9] 华成英.模拟电子技术基础(第三版),高等教育出版社,2001.
[10] 王伟.高性能、低功耗带RAM实时时钟芯片DS1302 (上),电子世界:第一期, 1995,26-35.
[11] 王伟.高性能、低功耗带 RAM 实时时钟芯片 DS1302(下),电子世界:第四期, 1995,32-41.
第 29 页 共 36 页
附 录
附件A:STC12C5A60S2单片机最小系统原理图
第 30 页 共 36 页
附件B:A/D转换程序
/*----------------------------------------------- 名称:IIC协议 PCF8591 AD转换
内容:使用4路AD中的4路检测外部模拟量输入 ------------------------------------------------*/
#include
#define AddWr 0x90 //写数据地址 #define AddRd 0x91 //读数据地址 extern bit ack;
/*------------------------------------------------ 读AD转值程序
输入参数 Chl 表示需要转换的通道,范围从0-3 返回值范围0-255
------------------------------------------------*/ unsigned char ReadADC(unsigned char Chl) {
unsigned char Val;
Start_I2c(); //启动总线
SendByte(AddWr); //发送器件地址 if(ack==0)return(0);
SendByte(0x40|Chl); //发送器件子地址 if(ack==0)return(0); Start_I2c(); SendByte(AddRd); if(ack==0)return(0); Val=RcvByte();
NoAck_I2c(); //发送非应位 Stop_I2c(); //结束总线
return(Val); }
第 31 页 共 36 页
附件C:SD卡程序
#include \
#include \这是振南的公共函数头文件
bit is_init; //在初始化的时候设置此变量为1,同步数据传输(SPI)会放慢 unsigned char bdata _dat; sbit _dat7=_dat^7; sbit _dat6=_dat^6; sbit _dat5=_dat^5; sbit _dat4=_dat^4; sbit _dat3=_dat^3; sbit _dat2=_dat^2; sbit _dat1=_dat^1; sbit _dat0=_dat^0;
/****************************************************************** - 功能描述:IO模拟SPI,发送一个字节 - 隶属模块:SD卡模块 - 函数属性:内部
- 参数说明:x是要发送的字节 - 返回说明:无返回
- 注:其中is_init为1时,写的速度放慢,初始化SD卡SPI速度不能太高 ******************************************************************/ void SD_spi_write(unsigned char x) {
_dat=x;
SD_SI=_dat7; SD_SCL=0;
if(is_init) delay(DELAY_TIME); SD_SCL=1;
if(is_init) delay(DELAY_TIME); SD_SI=_dat6; SD_SCL=0;
if(is_init) delay(DELAY_TIME); SD_SCL=1;
if(is_init) delay(DELAY_TIME); SD_SI=_dat5; SD_SCL=0;
if(is_init) delay(DELAY_TIME); SD_SCL=1;
if(is_init) delay(DELAY_TIME); SD_SI=_dat4; SD_SCL=0;
if(is_init) delay(DELAY_TIME); SD_SCL=1;