用U盘实现数据采集存储

作者: Tom Chen
上传时间为: 2016-01-20 08:42 AM
2016-01-20
阅读:

 
目前正在研制的系统为大功率光伏阵列特性测试仪,其主要用于对各种规格、容量的光伏阵列进行I-V特性的测试,为光伏系统(并网、发电)的选型提供必要的参 考。该系统需要人员采集光伏阵列的电压、电流、温度、日照等数据,由于该系统多用于野外,因此需要对所测得的数据进行存储以便进行I-V特性曲线的绘制及 光伏阵列在各种不同的日照和温度下特性的推演。数据的采集及存储可由系统控制芯片DSP通过串行接口USB118模块通讯,并辅以大容量USB存储设备来 完成。
在 所设计的系统中采用了西安达泰电子有限责任公司提供的USB118AD模块,其具有标准2.0协议及支持1G以上优盘的优点,这点非常适合于本系统经常在 野外应用的特点,并且随产品所提供的串行通讯程序也可以很方便的移植到所采用的DSP平台上,大大简化了本系统在数据存储方面的程序设计工作。


* USB118a 51汇编测试程序
* U盘文件读写模块以字节为单位进行U盘文件读写。
* MCS-51单片机汇编示例程序

* 硬件连接方式: 4线制串口(电源,地,输入,输出)

view plaincopy to clipboardprint?

  1. /*--------------------------------
  2. 初始化程序
  3. ---------------------------------*/
  4. ORG 0000H
  5. AJMP MAIN
  6. ORG 0100H
  7. /*--------------------------------
  8. 主函数
  9. ---------------------------------*/
  10. MAIN:
  11. MOV SP, #60H ;设置堆栈指针
  12. MOV TMOD,#20H ;计数器1工作在方式2
  13. MOV TH1, #0F3H ;晶振频率为24MHZ,波特率为9600
  14. MOV TL1, #0F3H
  15. ;MOV TH1, #0FAH ;晶振频率为11.0592MHZ,波特率为9600
  16. ;MOV TL1, #0FAH
  17. MOV PCON,#80H ;smod为1
  18. SETB TR1 ;启动计时
  19. MOV SCON,#40H
  20. /*---------------------------------------------------------------------
  21. 延时是由于本人所用的单片机和USB118A是同一电源供电,
  22. 起初上电复位后由于USB118A要进行U盘检测,延时大约让检测完成即可发送指令
  23. ----------------------------------------------------------------------*/
  24. MOV R1,#10H ;闪烁10次
  25. ML:
  26. LCALL DELAY
  27. LCALL DELAY ;延时
  28. LCALL DELAY
  29. LCALL DELAY
  30. DJNZ R1,ML
  31. //检测U盘是否连接正常
  32. USB_Detect:
  33. CLR EA ;关闭中断
  34. CLR REN ;关闭接收位
  35. MOV DPTR, #Detect ;检测U盘命令初址
  36. MOV R7, #66 ;R7定义为将要发送的字节数
  37. LCALL SEND ;调用发送子程序
  38. SETB REN ;打开接收位
  39. JNB RI,$ ;等待接收到数据
  40. CLR RI
  41. MOV A,SBUF ;接收应答码
  42. CJNE A,#04H,OUT1 ;04检测应答码,对则继续执行判断是否成功执行否则转错误处理
  43. JNB RI,$ ;等待接收到数据
  44. CLR RI
  45. MOV A,SBUF ;接收应答信号
  46. CJNE A,#01H,OUT1 ;01判断是否成功执行,成功则继续执行否则转错误处理
  47. //create file
  48. LCALL CRT
  49. JNB RI,$ ;等待接收到数据
  50. CLR RI
  51. MOV A,SBUF ;接收应答码
  52. CJNE A,#0AH,OUT1 ;0A检测应答码,对则继续执行判断是否成功执行否则转错误处理
  53. JNB RI,$ ;等待接收到数据
  54. CLR RI
  55. MOV A,SBUF ;接收应答信号
  56. CJNE A,#01H,OUT1 ;01判断是否成功执行,成功则继续执行否则转错误处理

文章来自网络

相关阅读:

嵌入式Linux学习之路

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示