当前位置: 代码迷 >> 单片机 >> STC12系列单片机 数码管展示 抖动
  详细解决方案

STC12系列单片机 数码管展示 抖动

热度:297   发布时间:2016-04-28 14:49:16.0
STC12系列单片机 数码管显示 抖动
MCU:stc12c5a60s2 晶振:33M  温度传感器
使用温度传感器将接收到的温度数据通过905传递出去,并通过数码管将温度数据在数码管上显示出来
问题:由于数码管显示数据需要在程序中一直while(1),而我的单片机同时还需要905发射数据,这样的话数码管一直抖动的很厉害
请大牛指点,如果不更换MCU,有没有别的办法让数码管不抖动(NRF9051分钟发射一次数据也就够了)
void main()
{  
unsigned int x=123;
unsigned int val;
NRF905_Init();
    NRF905_Configure();
Set_TX_Mode();
Drop_Init();
while(1)
{
for(val=0;val<1;val++)
{
TX_Packet(TXBuf);//此延时程序可兼容呼叫铃,保存
Delay_us(55);
//x=Drop_Rate();
}
x--;
for(val=0;val<2000;val++)
{
    Shumaguan_Display(x);
}
    
}
}
------解决思路----------------------
2个解决方法
1. 跑OS
2. 用专用的数码管驱动芯片去驱动数码管显示,MCU只负责定期刷新
------解决思路----------------------
1 保证刷新速率就不会抖,比如50Hz刷新率,20mS刷新一次。对单片机来说,20mS很容易保证
2  可以用一个定时器来计时,设置标志。不要用空循环延时
3  TX_Packet(TXBuf) 函数执行时间长吗?改写掉耗时间的部分
4  也可以在定时中断中刷新数码管,可以不受其它程序影响
------解决思路----------------------
引用:
2个解决方法
1. 跑OS
2. 用专用的数码管驱动芯片去驱动数码管显示,MCU只负责定期刷新




我喜欢这样的做法!!
  相关解决方案