CH375在机车智能测温系统中的应用
以下为文章全文:(本站微信公共账号:cartech8)

汽车零部件采购、销售通信录 填写你的培训需求,我们帮你找 招募汽车专业培训老师
根据DOS文件管理系统格式,声明必要的结构体,用于增强程序的跨平台可操作性及可读性。需要定义的结构体为DPT(DOS分区表)、MBR(主引导记录)、BPB16(BIOS参数块,仅适合于FAT12及FAT16)、BPB32(仅适合于FAT32)、FDT(文件目录表)、LFDT(长文 件名 FDT)等。除DPT、MBR外,其它结构体的内容在FAT硬件白皮书中均有专门表格详细说明。 声明并初始化必要的全局变量。首先必须读取首个物理扇区,即MBR扇区,取得DBR的相对起始地址,然后读取DBR的内容。有些U盘没有MBR,首个物理扇区就是DBR区,因此必须进行判断:若扇区首字节为0xeb或0xe9,则为DBR区,否则为MBR区。其次设置重要变量,并计算DOS各分区的起始LBA值。需要处理的变量按先后顺序如下:每扇区字节数、每簇扇区数、FAT表起始地址、单FAT表扇区数、根目录区扇区数(FAT32为0)、数据区起始地址、数据区总簇数、FAT类型及根目录的起始地址等。FAT类型按如下标准进行判定,如果数据区总簇数少于4085,则为FAT12类型;否则,若少于65525,则为FAT16;大于或等于65535为FAT32。 定义大小端模式转换程序。单片机对于字或双字数据的存储多采用大端模式,而绝大多数PC机为小端模式。U盘中的文件管理由于要兼容PC机,存储格式几乎均为小端格式。因此进行U盘数据操作时,如果读写字或双字数据,则必须进行大小端模式转换。 FAT表基本 操作,包括查找空簇、读写指定簇内容。可编写子函数来解决查找空簇的问题,设计思路为读取FAT表特定扇区,然后按FAT类型不同分情况讨论。从第2簇开始,将代表特定簇的单元逐个与0比较,若不为0,则偏移地址作相应移动,例如FAT16每次移动2字节,而FAT32为4字节;至于 FAT12,由于每12比特表征一簇,必须考虑FAT扇区的“边界问题”(如图4所示),需判断簇的奇偶性、设置边界校验标志,以解决边界问题。对给定簇号以读写FAT表对应单元的问题,也可编写子函数进行解决,该函数需要指定簇号、待写内容,还要给定输出指针变量。执行时根据簇号计算指定簇号所在扇区地址,将其读出,然后另存指定簇的内容,写入新内容,最后将修改后的扇区数据重新写入U盘原位置。为了使程序精简,还可将读指定簇内容的子程序与该函数并成单个子函数,考虑到待写内容即使在FAT32下,其有效值也不会超过0x0fffffff,因此编写程序时,可以均将其定义为双字类型,然后设定某值,例如0xf0000000,若待写内容为此值时,则不写入该簇内容,这样就保证了对FAT表只读不写。 最后,对FDT表进行基本操作及文件的创建、读写。根据文件系统有无根目录区,分情况读取FDT特定扇区。分析扇区数据时,如果待查看文件与待写入文件重名,则要读出文件首簇号及大小,到FAT表找到文件末簇,接着根据文件大小,判断待添加内容在簇中哪个扇区、扇区的哪个位置,读出并修改该扇区内容,然后重新写入,最后修改文件大小。 2 C语言移植 由于C语言具有良好的可移植性,编写文件管理程序,推荐在PC机上先实现,再移植至单片机平台。在PC机实现,硬件上只要求PC机有USB口;而软件方面,PC机编程具有以下特点:(1)读写扇区有专用函数;(2)要使用伪指令#pragma pack(1),使编译后的结构体字节对齐;(3)读写字或双字数据不必进行大小端模式的转换。 对于读写扇区,主要有以下两种方案: 其一,调用Windows API函数进行基本扇区读写。开发工具Dev—c++,包含头文件windows.h。方法是调用CreateFile( )打开设备端口;接着用SetFilePointer( )调整字节位置;最后用ReadFile( )或WriteFile( )进行扇区读写。 其二,调用DOS函数进行扇区读写。有两组函数供调用:(1)biosdisk( ),功能是使用中断0x13,直接调用BIOS进行磁盘操作;(2)absread( )及abswrite( ),可读写U盘的逻辑扇区,调用前须确定存储设备盘符,需指定待操作的逻辑扇区号。 在PC机上编写文件管理程序,无需外接硬件,操作简易;软件调试通过之后,代码可高效移植至单片机平台,极大提高了项目的开发效率。 3 结果比较 项目中本部分程序篇幅670行,文件管理层自编程序进行调试,在型号ATMega64的AVR单片机平台上测试通过。表1为采用ICCAVR编译后资源占用情况的对比,可见自编代码占用资源仅占后者的70%,远胜于后者。至于执行单步调试、修改延时等方面,其直观灵活性更明显。 4 结束语 在所涉及项目中,通过自编文件管理操作代码,使程序更为优化,极大减小了主系统的负担。按此方法设计的测温系统,能实时记录危险时刻的温度、时间数据,操作者只需往USB接口插入存储设备,系统即将数据以文本写入设备,简单实用,易于推广。通过分析读取到的数据,对确定电力部件发热状况、找出危险因素并进行预防,均有实用价值。 |
文章网友提供,仅供学习参考,版权为原作者所有,如侵犯到
你的权益请联系542334618@126.com,我们会及时处理。
会员评价:
共0条 发表评论