找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2417|回复: 2
打印 上一主题 下一主题
收起左侧

51单片机用UART模式往tf卡这写数据 程序只能建立一个txt文件,但是文件是空的。

[复制链接]
跳转到指定楼层
楼主
ID:318531 发表于 2018-5-13 04:51 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  1. 在淘宝上买的北京博通电子的sd卡读写模块SDV7O5M,给的测试程序只能建立一个txt文件,但是文件是空的。/************************************************************************************/
  2. /*     程序名:51单片机的串口---SDV700模块测试程序                                  */
  3. /*                                                                                  */
  4. /*     晶振:22.1184 M         波特率115200                CPU型号:STC89C52        */
  5. /*                                                                                  */
  6. /*                                                                                  */
  7. /*     功能描述:单片机上电后,向SD卡得mydata.txt文件内不断写入数据                 */
  8. /*                                                                                  */
  9. /*                                                                                                                                                                */
  10. /*                                                                                  */
  11. /*                                                   北京博通电子   版权所有        */
  12. /*                                                                                  */   
  13. /*                                                         2009-08-20               */
  14. /************************************************************************************/

  15. #include <reg51.h>
  16. #include <string.h>

  17. #define uchar unsigned char
  18. #define uint unsigned int

  19. sbit P1_0 = P1 ^ 0;//busy忙标志管脚
  20. sbit P1_1 = P1 ^ 1;//SD模块电源
  21. sbit P1_5 = P1 ^ 5;//测试板信号指示(指示发送数据)


  22. uchar  date_temp[50]={0};//获取系统状态
  23. code uchar  top[]={"单位:北京博通电子 SDV700"};//获取系统状态
  24. code uchar  item[]={"    年-月-日 时:分  载荷记录(kN)  工作状态"};//获取系统状态
  25. uchar  D_date[]={"    09-08-07 12:55      878            正常"};//定义数据格式
  26. void Send_UART(unsigned int num/*字节数*/,unsigned char *Date_OUT/*数据数组*/);

  27. unsigned char a;

  28. /***********************************************************************************************/
  29. void Delay(unsigned char a)
  30. {
  31.         unsigned char i;
  32.         while( --a != 0)
  33.         {
  34.                 for(i = 0; i < 4; i++);
  35.         }
  36. }


  37. /***********************************************************************************************/
  38. void main (void)
  39. {
  40.         unsigned long tt=0;
  41.         //Timer0Init();
  42.         P1_1 = 1;//给SD卡模块上电

  43.         SCON    =   0x50;   //0101,0000 串口方式1,允许接收,无奇偶校验位
  44.     TMOD    =   0x20;   //0010,0000 时器1,定时方式2 自动重装装计数器
  45.     PCON = 0x80;  //SMOD=1
  46.         TL1 = 0xff;
  47.         TH1 = 0xff;
  48.         TR1 = 1;

  49.         P1_0 = 1;
  50.         Delay(4000);
  51.         //写标题
  52.         while(P1_0);
  53.         memcpy(date_temp,top,25);
  54.     Send_UART(25,date_temp);
  55.         //写条目
  56.         while(P1_0);
  57.         memcpy(date_temp,item,45);
  58.     Send_UART(45,date_temp);
  59.         
  60.         while(1)
  61.         {
  62.           //连续写入数据
  63.           while(P1_0);
  64.           tt++;
  65.           D_date[21] = tt/100000000+'0';
  66.           D_date[22] = ((tt%100000000)/10000000)+'0';
  67.           D_date[23] = (((tt%100000000)%10000000)/1000000)+'0';
  68.           D_date[24] = ((((tt%100000000)%10000000)%1000000)/100000)+'0';
  69.           D_date[25] = (((((tt%100000000)%10000000)%1000000)%100000)/10000)+'0';
  70.           D_date[26] = ((((((tt%100000000)%10000000)%1000000)%100000)%10000)/1000)+'0';
  71.           D_date[27] = (((((((tt%100000000)%10000000)%1000000)%100000)%10000)%1000)/100)+'0';
  72.           D_date[28] = ((((((((tt%100000000)%10000000)%1000000)%100000)%10000)%1000)%100)/10)+'0';
  73.           D_date[29] = ((((((((tt%100000000)%10000000)%1000000)%100000)%10000)%1000)%100)%10)+'0';
  74.           memcpy(date_temp,D_date,43);
  75.       Send_UART(43,date_temp);
  76.           Delay(1);
  77.         }                                                   
  78. }


  79. void Send_UART(unsigned int num/*字节数*/,unsigned char *Date_OUT/*数据数组*/)
  80. {
  81.    unsigned int i=0;

  82.    P1_5 = 0;//点亮测试板指示灯

  83.    while(i<num)
  84.    {
  85.      TI     =   0;  //清零串口发送完成中断请求标志
  86.      SBUF   =   Date_OUT[i];        //date[i]
  87.      while(TI ==0); //等待发送完成
  88.      TI     =   0;  //清零串口发送完成中断请求标志
  89.      i++;
  90.    }

  91.    //WINDOWS里的是 13 + 10(ASCII码值)作为换行
  92.    //-----------------------------------------------发送换行符0x0D
  93.    SBUF   =  0x0d;
  94.    while(TI ==0); //等待发送完成
  95.    TI     =   0;  //清零串口发送完成中断请求标志

  96.    //-----------------------------------------------发送换行符0x0a
  97.    SBUF   =  0x0a;
  98.    while(TI ==0); //等待发送完成
  99.    TI     =   0;  //清零串口发送完成中断请求标志

  100.    P1_5 = 1;//熄灭测试板指示灯
  101. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277550 发表于 2018-5-13 12:35 | 只看该作者
这是特定的模块,还是得有模块的资料,和实践,才知道问题
回复

使用道具 举报

板凳
ID:318531 发表于 2018-5-13 16:49 来自手机 | 只看该作者
devcang 发表于 2018-5-13 12:35
这是特定的模块,还是得有模块的资料,和实践,才知道问题

这就是那个模块的资料,

収*O_20180513_164904.png (9.15 KB, 下载次数: 34)

収*O_20180513_164904.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表