单片机数据存储系统

  • n4_569631
    了解作者
  • C/C++
    开发工具
  • 318.8KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-25 12:40
    上传日期
设计一个数据存储系统,系统以U盘为移动存储设备,通过单片机控制U盘进行数据读写,使得U盘脱离PC机运用到嵌入式系统当中。本设计使用USB通信芯片CH375与U盘进行数据交换,实现嵌入式的U盘数据存储系统。
11-邓文拔-程序.zip
  • U盘存储电位器的值
  • U盘读写操作
  • code
  • main.c
    11.6KB
  • GUI.H
    728B
  • temp.h
    452B
  • temp.c
    3.9KB
  • ds1302.c
    2.2KB
  • i2c.c
    3.3KB
  • STARTUP.A51
    5KB
  • touch.c
    7.7KB
  • LCD_DRIVE.H
    1.5KB
  • lcd.c
    3.5KB
  • gui.c
    3.9KB
  • CH375HFT.C
    15.4KB
  • i2c.H
    417B
  • touch.h
    2KB
  • CH375HFC.LIB
    41.5KB
  • lcd.h
    963B
  • ad_ch375.c
    14.8KB
  • LCD1602.c
    2.7KB
  • CH375HFT.HEX
    28.6KB
  • ds1302.h
    307B
  • CH375HF6.LIB
    41.6KB
  • lcd_drive.c
    8.5KB
  • CH375HF6.H
    42.2KB
  • ch375.h
    5.3KB
  • 5110.H
    13.8KB
  • charcode.h
    47.6KB
  • CH375HFC.H
    42.5KB
  • debug
  • CH375.lnp
    177B
  • i2c.obj
    4.5KB
  • lcd_drive.__i
    109B
  • lcd.lst
    7.1KB
  • CH375HFT.obj
    42.7KB
  • touch.__i
    91B
  • ds1302.lst
    5KB
  • ad_ch375.obj
    48KB
  • STARTUP.lst
    11.5KB
  • CH375.plg
    1.5KB
  • lcd.obj
    4.1KB
  • temp.obj
    5.7KB
  • touch.obj
    14.1KB
  • temp.__i
    94B
  • gui.lst
    9.9KB
  • CH375.m51
    66.3KB
  • CH375
    102.6KB
  • lcd_drive.obj
    13.6KB
  • ad_ch375.lst
    29.4KB
  • main.obj
    42.9KB
  • main.lst
    25.5KB
  • STARTUP.obj
    822B
  • CH375HFT.lst
    26.4KB
  • lcd_drive.lst
    15.3KB
  • lcd1602.__i
    97B
  • CH375.hex
    58.3KB
  • temp.lst
    7.9KB
  • ds1302.obj
    4.4KB
  • lcd.__i
    91B
  • lcd1602.obj
    6.2KB
  • touch.lst
    14.9KB
  • lcd1602.lst
    5.5KB
  • gui.__i
    91B
  • gui.obj
    13.9KB
  • i2c.lst
    6.8KB
  • CH375B_uvopt.bak
    8.5KB
  • CH375B.uvproj
    13.6KB
  • CH375B.uvopt
    8.5KB
  • CH375B.Uv2.bak
    2.1KB
  • CH375B.opt.bak
    1.4KB
  • CH375B_uvproj.bak
    14.1KB
  • CH375B.uvgui_Administrator.bak
    66.2KB
  • CH375B_Uv2.Bak
    2.1KB
  • CH375B_Opt.Bak
    1.4KB
  • CH375B.uvgui.Administrator
    66.2KB
内容介绍
/**************************************************************************** ** ** 飞鹏电子工作室 ** 嵌入式项目 ** **项目名称: U盘读写模块C51例程. **编译环境: Keil UV2 **-------------------------------------------------------------------------- **工程作者: fpdz **创建日期: 2009.07.25 **版权声明: 移植南京沁恒公司提供FAT文件系统. ** FAT文件系统版权归南京沁恒. ** ** ** ---------尊重作者劳动成果,移植时请保留版权信息------------ ** ** **描 述: ** 本程序支持FAT12/FAT16/FAT32文件系统. ** 支持U盘容量32G,(4G以下均测试) ** 支持SD读卡器, ** ** 用于以下情况的MCS51单片机 ** 1. 高速MCS51单片机,机器周期小于0.3uS, ** 或者在机器周期为12个时钟时的时钟频率大于40MHz ** 2. 非总线MCS51单片机,用普通I/O引脚模拟8位并行总线读写, ** 与CH375之间采用并口连接 ** 3. 单片机与CH375之间采用串口连接 ** ** ** 本例程使用字节流方式读写U盘,不需要单片机提供大的RAM空间. ** 没有使用总线方式,而是使用IO模拟总线方式. ** 以字节为单位读写U盘文件,读写速度较扇区模式慢, ** 但是由于字节模式读写文件不需要文件数据缓冲区FILE_DATA_BUF, ** 所以总共只需要600字节的RAM, ** 适用于单片机硬件资源有限、数据量小并且读写速度要求不高的系统 ** ** 使用内置768B(及以上)的XRAM的普通单片机即可 ** 建议使用STC89C54RD+及以上型号 ** 建议使用SST89E516RD及以上型号 ** ****************************************************************************/ /*************************************** ** Copyright (C) W.ch 1999-2004 ** ** Web: http://www.winchiphead.com ** **************************************** ** USB Host File Interface for CH375 ** ** TC2.0@PC, KC7.0@MCS51 ** ***************************************/ #include <reg52.h> #include <stdio.h> #include"i2c.h" //============================================================================================================================== //以下为头文件引用及宏定义配置文件系统参数 #define MAX_BYTE_IO 35 /* 以字节为单位单次读写文件时的最大长度,默认值是29,值大则占用内存多,值小则超过该长度必须分多次读写 */ /* 以下定义的详细说明请看CH375HFC.H文件 */ #define LIB_CFG_FILE_IO 1 /* 文件读写的数据的复制方式,0为"外部子程序",1为"内部复制" */ #define LIB_CFG_INT_EN 0 /* CH375的INT#引脚连接方式,0为"查询方式",1为"中断方式" */ //#define LIB_CFG_UPD_SIZE 1 /* 在添加数据后是否自动更新文件长度: 0为"不更新",1为"自动更新" */ /* 默认情况下,如果扇区数/字节数不为0那么CH375FileWrite/CH375ByteWrite只负责写入数据而不修改文件长度, 如果需要每次写完数据后会自动修改/更新文件长度,那么可以使全局变量CH375LibConfig的位4为1, 如果长时间不写入数据则应该更新文件长度,防止突然断电后前面写入的数据与文件长度不相符, 如果确定不会突然断电或者后面很快有数据不断写入则不必更新文件长度,可以提高速度并减少U盘损耗(U盘内部的内存寿命有限,不宜频繁改写) */ /* 只使用单片机内置的1KB外部RAM: 0000H-01FFH 为磁盘读写缓冲区, 以字节为单位读写文件不需要文件数据读写缓冲区FILE_DATA_BUF */ #define DISK_BASE_BUF_ADDR 0x0000 /* 外部RAM的磁盘数据缓冲区的起始地址,从该单元开始的缓冲区长度为SECTOR_SIZE */ //#define FILE_DATA_BUF_ADDR 0x0000 /* 外部RAM的文件数据缓冲区的起始地址,缓冲区长度不小于一次读写的数据长度,字节模式不用该缓冲区 */ /* 由于单片机内置的外部RAM只有1KB, 有些单片机还要去掉256字节内部RAM, 只剩下768字节的外部RAM, 其中前512字节由CH375子程序用于磁盘数据缓冲 */ //#define FILE_DATA_BUF_LEN 0x0200 /* 外部RAM的文件数据缓冲区,缓冲区长度不小于一次读写的数据长度,字节模式不用该缓冲区 */ /* 如果准备使用双缓冲区交替读写,那么不要定义FILE_DATA_BUF_LEN,而是在参数中指定缓冲区起址,用CH375FileReadX代替CH375FileRead,用CH375FileWriteX代替CH375FileWrite */ #define CH375_INT_WIRE INT0 ///* P3.2, INT0, CH375的中断线INT#引脚,连接CH375的INT#引脚,用于查询中断状态 */ #define NO_DEFAULT_CH375_F_ENUM 1 /* 未调用CH375FileEnumer程序故禁止以节约代码 */ #define NO_DEFAULT_CH375_F_QUERY 1 /* 未调用CH375FileQuery程序故禁止以节约代码 */ #define WRITEADDR 0x90 #define READADDR 0x91 void Pcf8591SendByte(unsigned char channel); unsigned char Pcf8591ReadByte(); void Pcf8591DaConversion(unsigned char value); #include "CH375HFC.H" //================================================================================================================================================ //以下为接口定义区 /* 本例中的硬件连接方式如下,本例使用51总线方式进行数据操作.不可更改接口 CH375芯片的引脚 51单片机的引脚 RD----接P3.7 WR----接P3.6 CS----接P2.1 A0----接P2.0 INT---接P3.2 D0----接P0.0 . . . D7----接P0.7 */ //================================================================================================================================================ unsigned char volatile xdata CH375_CMD_PORT _at_ 0x8100; /* CH375命令端口的I/O地址 */ unsigned char volatile xdata CH375_DAT_PORT _at_ 0x8000; /* CH375数据端口的I/O地址 */ sbit CH375RST= P3^4; //================================================================================================================================================== void mDelay1_2uS() /* 至少延时1.2uS,根据单片机主频调整 */ { return; } void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */ { CH375_CMD_PORT=mCmd; mDelay1_2uS(); } void xWriteCH375Data( UINT8 mData ) /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ { CH375_DAT_PORT=mData; mDelay1_2uS(); } UINT8 xReadCH375Data( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { return( CH375_DAT_PORT ); } /* 以毫秒为单位延时,不精确,适用于12MHz时钟 */ void mDelaymS( UINT8 delay ) { unsigned char i, j, c; for ( i = delay; i != 0; i -- ) { for ( j = 100; j != 0; j -- ) c += 3; for ( j = 100; j != 0; j -- ) c += 3; } } void DelayCS(UINT8 i) { while(i--) { mDelaymS(100); printf("."); } } void Delay1us(uint a) { uint b,c; for(c=a;c>0;c--) for(b=110;b>0;b--); } /* 将程序空间的字符串复制到外部RAM中,返回字符串长度 */ UINT8 mCopyCodeStringToXRAM( UINT8 xdata *iDestination, UINT8 code *iSource ) { UINT8 i = 0; while ( *iDestination = *iSource ) { iDestination ++; iSource ++; i ++; } return( i ); } /* 检查操作状态,如果错误则显示错误代码并停机 */ void mStopIfError( UINT8 iError ) { if ( iError == ERR_SUCCESS ) return; /* 操作成功 */ printf("Erorr!"); DelayCS(100); printf("Reset MCU.."); DelayCS(10); (*(void (*)() )0)( ); //复位单片机. } /******************************************************************************* * 函 数 名 : Pcf8591SendByte * 函数功能 : 写入一个控制命令 * 输 入 : channel(转换通道) * 输 出 : 无 *******************************************************************************/ void Pcf8591SendByte(unsigned char channel) { I2C_Start(); I2C_SendByte(WRITEADDR, 1); //发送写器件地址 I2C_SendByte(0x40|channel, 0); //发送控制寄存器 I2C_Stop(); } /******************************************************************************* * 函 数 名 : Pcf8591ReadByte * 函数功能 : 读取一个转换值 * 输 入 : 无 * 输 出 : dat *******************************************************************************/ unsigned char Pcf8591ReadByte() { unsigned char dat; I2C_Start(); I2C_SendByte(READADDR, 1);//发送读器件地址 dat=I2C_ReadByte(); //读取数据 I2C_Stop(); //结束总线 return dat; } /******************************************************************************* * 函 数 名 : Pcf8591DaConversion * 函数功能 :
评论
    相关推荐
    • 单片机课件
      单片机的课件及例题, 单片机的课件及例题, 单片机的课件及例题, 单片机的课 件及例题,
    • 爱上单片机
      一本电子爱好者都能看懂,会边看边笑的单片机入门书籍,作者杜洋曾在《无线电》上发表过“趣味单片机制作专题”、“单片机编程魔法学校”等深受读者喜爱、让无数单片机入门者热血沸腾的系列文章。本书通过生动的语言...
    • 单片机资料
      内含30个单片机应用开发的资料,包括配套单片机入门PPT。
    • 单片机课件
      单片机课的课件,对单片机的基础进行了全面的概述,也有非常精细的指导。
    • 单片机工具
      单片机工具 供单片机学习使用 免费资源 日后还会有更多资源 请联系我
    • 单片机
      单片机c 和汇编程序
    • 单片机课件
      单片机课件 ppt文件格式 介绍了单片机的结构、程序设计、定时器、中断等
    • 单片机教程
      这是一个单片机的教程,可以用于初次学习单片机的人学习。
    • 单片机入门
      很好的单片机学习资源,入门比较好适合对单片机的学习有兴趣的人,而且是名校的精彩讲解,
    • 单片机
      利用protues仿真实现基于51单片机的大棚温湿度检测系统设计