单片机/MCU论坛
直播中

张文强

8年用户 30经验值
擅长:MEMS/传感技术 嵌入式技术 控制/MCU
私信 关注
[问答]

求助,有偿修改程序!

求助,本人使用的是stc89C52RC单片机(也有一片闲置stc12c5a),想要实现AD四路数据采集LCD显示,并通过蓝牙模块hc05将数据发送到手机端,但由于程序是自己拼凑而成,多余冗长且不太稳定,现在只实现到采集并用LCD显示环节,但是继续写程序提示ram内存不够了,希望有哪位大神可以帮忙精简优化一下程序,最终实现要求。有意联系q406920971,亦可留言,关于为啥不用stc12c5a,是之前有个问题一直没解决。。https://bbs.elecfans.com/forum.ph ... &tid=1125450&extra= 如果能解决上述问题也是极好的,感谢!

  1. main()
  2. {
  3. //----blue//
  4.                 SCON = 0X50;
  5.                 TMOD = 0X20;
  6.                 TH1=0xFD;
  7.                 TL1=0xFD;
  8.                 ES = 1;
  9.                 EA = 1;
  10.                 TR1 = 1;      
  11.                                 //unsigned int num=0,i;
  12.                                  Init_timer0();
  13.                                  lcd_system_reset();                                                   //LCD1602 初始化
  14.                                  lcd_bad_check();

  15. while (1)         //主循环
  16.   {
  17. if(ReadADFlag)
  18.   {
  19.   ReadADFlag=0;
  20. //连续读5次,输入通道后多读几次,取最后一次值,以便读出稳定值
  21. /*for(i=0;i<5;i++)
  22.         {
  23.         Delay(5);
  24.     num=ReadADC(0);
  25.         sum=sum+num;
  26.     num=sum/4;
  27.         }
  28. //*/
  29. // num=ReadADC(0);
  30. // x10表示把实际值扩大10,如4.5 变成 45 方便做下一步处理 x5 表示基准电压5V
  31.   for(i=0;i<5;i++)
  32.   num=ReadADC(0);
  33.   num=num*250/255; //*5*100/255
  34.   num=num*2;
  35.   xx=num/100;
  36.   yy=num%100/10;
  37.   zz=num%100%10;
  38.   pos_char_table[3]= data_char_table[xx];                //电压值个位
  39.   pos_char_table[5]= data_char_table[yy];        
  40.   pos_char_table[6]= data_char_table[zz];

  41.   for(i=0;i<5;i++)
  42.   num=ReadADC(1);
  43.   num=num*250/255; //*5*100/255
  44.   num=num*2;
  45.   xx=num/100;
  46.   yy=num%100/10;
  47.   zz=num%100%10;
  48.   pos_char_table[11]= data_char_table[xx];                //电压值个位
  49.   pos_char_table[13]= data_char_table[yy];
  50.   pos_char_table[14]= data_char_table[zz];
  51.   
  52.   for(i=0;i<5;i++)
  53.   num=ReadADC(2);
  54.   num=num*250/255; //*5*100/255
  55.   num=num*2;
  56.   xx=num/100;
  57.   yy=num%100/10;
  58.   zz=num%100%10;
  59.   num_char_table[3]= data_char_table[xx];                //电压值个位
  60.   num_char_table[5]= data_char_table[yy];
  61.   num_char_table[6]= data_char_table[zz];

  62. for(i=0;i<5;i++)
  63.   num=ReadADC(3);
  64.   num=num*250/255; //*5*100/255
  65.   num=num*2;
  66.   xx=num/100;
  67.   yy=num%100/10;
  68.   zz=num%100%10;
  69.   num_char_table[11]= data_char_table[xx];                //电压值个位
  70.   num_char_table[13]= data_char_table[yy];
  71.   num_char_table[14]= data_char_table[zz];
  72. //主循环中添加其他需要一直工作的程序
  73.    }
  74.   LcdDisp();
  75.   DelayMs(500);
  76.   }
  77. }


已退回20积分

更多回帖

发帖
×
20
完善资料,
赚取积分