温度对单片机(STC12C5A60S2)系统的影响
为了不误导他人,在此我只把我发现的一个现象描述给大家。为什么会有上面的题目? ----最近做一个项目,总出现这样的问题, 头天晚上写好并调试过的程序(已经下载到单片机),第二天早上开始用的时候总不正常,开始以为程序有BUG,后来一想BUG不可能只在早上出现,就开始怀疑是温度原因。把板子温温,重复上电几次后就一切正常了,于是有了上面的题目。
以下附上出问题的代码
按键扫描代码
static data unsigned char keyvalue=0;
void task_key(void) _task_ SCAN_KEY
{
static unsigned char key = 0xFF;
static bit keydown = 0;
static bit longkey = 0;
static unsigned char keydowntime = 0;
static unsigned char delay;
P0=0xFF;
while(1)
{
if(P0!=0xFF)
{
key = P0;
if(!keydown)
{
delay=200;//大约2ms的去抖
while(delay--)
{
if(P0==0xFF)
goto out;
}
key = P0;
keydown = 1;
}
}
else
{
keydown = 0;
keydowntime = 0;
if(!longkey)//当有长按键有效时,按键弹起不发送键值
{
keyvalue = ~key;
if(keyvalue!=0)
os_send_signal(SET_PARA);
}
longkey = 0;
key = 0xFF;
}
if(keydown)
{
keydowntime++;
if(keydowntime>15) //有键按下3秒钟
{
keyvalue = (~key) + 0x80;
keydowntime = 0;
longkey = 1; //产生一个有效的长按键
os_send_signal(SET_PARA);
}
}
out:
os_wait(K_TMO,10,0);//按键扫描 周期为10倍系统tick
}
}
每天早上开始用系统的时候,单片机总是检测出长按键。 明明3秒的长按键,结果不到半秒钟就被检测出来了。 内部时钟,还是外接晶振? 先不要通电,先温一下,然后一次上电,看是否正常,如果还是需要上电几次才行,应该和温度没有关系
我也发现一个问题,我写12232的液晶,气温低的情况下,需要上电几次才正常,但是不是每一个都这样,我怀疑液晶有问题,气温大概0度左右
补充:我用外部11.0592的晶振 现在冬天啊,的确有可能是温度影响哦 回复【1楼】lsy5110
内部时钟,还是外接晶振?
-----------------------------------------------------------------------
外部12MHZ时钟 回复【楼主位】lugang_2920213 老陆
-----------------------------------------------------------------------
从没遇到过 室内恒温, 断电一个晚上, 第二天再上电, 几中可能都确定一下, 看似简单的问题最好能100%确认, 否则批量生产就头大了. 可以当温度计用啊!当内部温度传感器用! 一直用at的没发现这种问题 应该不会是温度对单片机影响吧,怀疑是你电路焊接出了问题 曾经参加一个比赛,冬天在室外,电路上电要等5分钟才有反应的,应该是温度影响,电路在室内一切正常的。 不错,学习了
页:
[1]