求助,本人使用的是stc89C52RC
单片机(也有一片闲置stc12c5a),想要实现AD四路数据采集LCD显示,并通过蓝牙模块hc05将数据发送到
手机端,但由于程序是自己拼凑而成,多余冗长且不太稳定,现在只实现到采集并用LCD显示环节,但是继续写程序提示ram内存不够了,希望有哪位大神可以帮忙精简优化一下程序,最终实现要求。有意联系q406920971,亦可留言,关于为啥不用stc12c5a,是之前有个问题一直没解决。。
https://bbs.elecfans.com/forum.ph ... &tid=1125450&extra= 如果能解决上述问题也是极好的,感谢!
- main()
- {
- //----blue//
- SCON = 0X50;
- TMOD = 0X20;
- TH1=0xFD;
- TL1=0xFD;
- ES = 1;
- EA = 1;
- TR1 = 1;
- //unsigned int num=0,i;
- Init_timer0();
- lcd_system_reset(); //LCD1602 初始化
- lcd_bad_check();
- while (1) //主循环
- {
- if(ReadADFlag)
- {
- ReadADFlag=0;
- //连续读5次,输入通道后多读几次,取最后一次值,以便读出稳定值
- /*for(i=0;i<5;i++)
- {
- Delay(5);
- num=ReadADC(0);
- sum=sum+num;
- num=sum/4;
- }
- //*/
- // num=ReadADC(0);
- // x10表示把实际值扩大10,如4.5 变成 45 方便做下一步处理 x5 表示基准电压5V
- for(i=0;i<5;i++)
- num=ReadADC(0);
- num=num*250/255; //*5*100/255
- num=num*2;
- xx=num/100;
- yy=num%100/10;
- zz=num%100%10;
- pos_char_table[3]= data_char_table[xx]; //电压值个位
- pos_char_table[5]= data_char_table[yy];
- pos_char_table[6]= data_char_table[zz];
- for(i=0;i<5;i++)
- num=ReadADC(1);
- num=num*250/255; //*5*100/255
- num=num*2;
- xx=num/100;
- yy=num%100/10;
- zz=num%100%10;
- pos_char_table[11]= data_char_table[xx]; //电压值个位
- pos_char_table[13]= data_char_table[yy];
- pos_char_table[14]= data_char_table[zz];
-
- for(i=0;i<5;i++)
- num=ReadADC(2);
- num=num*250/255; //*5*100/255
- num=num*2;
- xx=num/100;
- yy=num%100/10;
- zz=num%100%10;
- num_char_table[3]= data_char_table[xx]; //电压值个位
- num_char_table[5]= data_char_table[yy];
- num_char_table[6]= data_char_table[zz];
-
- for(i=0;i<5;i++)
- num=ReadADC(3);
- num=num*250/255; //*5*100/255
- num=num*2;
- xx=num/100;
- yy=num%100/10;
- zz=num%100%10;
- num_char_table[11]= data_char_table[xx]; //电压值个位
- num_char_table[13]= data_char_table[yy];
- num_char_table[14]= data_char_table[zz];
- //主循环中添加其他需要一直工作的程序
- }
- LcdDisp();
- DelayMs(500);
- }
- }