《U盘伴侣 U盘接口 U盘模块 USB转串口》由会员分享,可在线阅读,更多相关《U盘伴侣 U盘接口 U盘模块 USB转串口(10页珍藏版)》请在金锄头文库上搜索。
1、用 MCS51 单片机串口读写 U 盘的 C 语言编程实例一、概述目前,基于USB接口的移动存储设备已经被广泛使用,尤其是采用USB-FLASH技术的U盘产品几乎完全取代了软盘。 U盘的使用通常是作为计算机的外部存储设备,能否脱离计算机直接向U盘读写数据呢?答案是肯定的。嵌入式U盘读写模块提供了通过串口读写U盘的简单途径,由此结合单片机的串口就可以实现U盘的文件读写。 嵌入式U盘读写模块可以嵌入用户的数据采集系统中,从而实现数据的海量存储。在工控领域,军工产品、石油、交通、水文等野外数据采集系统中可以广泛使用。二、* USB118 C51测试程序* * 网址: http:/ * 电话: 029
2、-85272421 , 88022900/* U盘文件读写模块 以字节为单位进行U盘文件读写。10条精简命令完成所有读写过程* MCS-51单片机C语言示例程序 * 硬件连接方式: 4线制串口(电源,地,输入,输出) #include #include #define uchar unsigned char#define uint unsigned int/检测u盘命令uchar code Detect66=0xaa,0xbb,0x01,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
3、,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20; /建立TEST.TXT文件命令uchar code Create66=0xaa,0xbb,0x07,0x54,0x45,0x5
4、3,0x54,0x20,0x20,0x20,0x20,0x54,0x58,0x54,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x4F,0xFD,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
5、0;/打开文件命令uchar code Open66 =0xaa,0xbb,0x06,0x54,0x45,0x53,0x54,0x20,0x20,0x20,0x20,0x54,0x58,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x
6、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;/写文件命令uchar code Write66=0xaa,0xbb,0x09,0x00,74,0x01,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
7、,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20;/读文件命令uchar code Read66=0xaa,0xbb,0x08,0x08,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
8、0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20;/设置文件指针命令uchar code SetFilePointer66=0xaa,0xbb,0x15,0x00,74,0x01,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
9、0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20;/数据1uchar code Date166=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x
10、39,0x61,0x62,0x63,0x64,0x65,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0x64,0x65,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0x64,0x65,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0x64,0x65,0x30,0x31,0x32,0x33,0x0d,0x0a;/数据2uchar code Da
11、te266=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0x64,0x65,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0x64,0x65,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0x64,0x65,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0x64
12、,0x65,0x30,0x31,0x32,0x33,0x34,0x35;uchar data num;void delay_xms(unsigned int); /延时函数void init_com(void); /初始化串口函数void test(void); /系统测试函数void Send_Data(uchar Serial_data); /发送一个字节函数void TXD_Int(uchar *s); /发送数据函数bit Receive_Data(uchar,uint ); /接收数据函数uchar Receive_One(void); /接收一个字节函数void main()int
13、 i,j;SP = 0x60; /设置堆栈指针P3 = 0xff;init_com(); /初始化串口test(); /系统测试并延时det: /检测U盘TXD_Int(Detect);if(Receive_Data(0x04,0)=0) /命令是否成功执行,是则继续执行 /否则重新执行delay_xms(1000);goto det;num=0x41;for(j=0;j0) /应答信号后有数据for(i=0;inum;i+) /接收数据Receive_One();REN = 0; /关闭接收位return(1); /返回1/*接收一个字节通讯函数功能:接收一个字节通讯入口参数:无出口参数:返回接收值*/uchar Receive_One(void)while(!RI)P0=0x00; /等待接收P0=0xff;RI = 0;return(SBUF); /将接收数据返回