单片机温度控制电机,求大神帮小女子一个忙!!非常感谢。

2019-07-15 15:09发布

求大神帮小女子一个忙!!非常感谢。
    正在做课程设计是用温度控制电机低中高速转的,代码是用1602显示,当不加入电机程序时温度显示正常,加入电机时温度显示不正常,一直跳变数字!大概检查了一下,应该是定时器产生pwm出现问题,其他的应该没什么问题,就是代码不懂怎么改!求大神帮忙解决一下!!万分感谢!!

wendu (2).rar 下载积分: 积分 -1 分
1.85 KB, 下载次数: 28, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
lenly21
1楼-- · 2019-07-17 03:00
破力达 发表于 2016-1-14 09:50
你的测温的程序有用到中断吗

测温没有用到中断的,就是电机部分用到了。。。
void timer0() interrupt 1
{
   if(m==0) //1个PWM周期完成后才会接受新数值
   {
     tmp1=i;
   }
   if(m<tmp1)
   {ena=1;}
   else
    {ena=0;} //产生左电机的PWM信号
   m++;
   if(m>=10)
   m=0; //1个PWM周期由100次中断产生
}
sangjian
2楼-- · 2019-07-17 04:52
 精彩回答 2  元偷偷看……
零tot
3楼-- · 2019-07-17 07:37
应该是pwm的那部分中断影响了那个读温度的时序,可以在读温度时序那边前后加上中断开关测试一下是不是这个原因
lenly21
4楼-- · 2019-07-17 13:26
sangjian 发表于 2016-1-14 14:11
我以前遇到过这样的问题?不知道跟你的一不一样

真的嘛?那后来怎么解决的呢
破力达
5楼-- · 2019-07-17 14:04
lenly21 发表于 2016-01-14 13:29
测温没有用到中断的,就是电机部分用到了。。。
void timer0() interrupt 1
{
&nbsp; &nbsp;if(m==0) //1个PWM周期完成后才会接受新数值
&nbsp; &nbsp;{
&nbsp; &nbsp;&nbsp;&nbsp;tmp1=i;
&nbsp; &nbsp;}
&nbsp; &nbsp;if(m=10)
&nbsp; &nbsp;m=0; //1个PWM周期由100次中断产生
}

我认为会不会是由于在单片机与18b20通信时,pwm产生中断,然后就扰乱了单片机与18b20的通信,使得它得出的数据出现紊乱。你可以试试控制单片机与18b20通讯时是在pwm的某个时间段内(比如在pwm刚刚跳变为低电平后,也就是说让他避免在pwm发生条变事通讯)。如果这样就变正常的话,那么问题就是出在这
破力达
6楼-- · 2019-07-17 16:09
气死我了,你的回复我竟然没收到,我是在“我的评论”里才查到有人回复我的。都隔了这么长时间

一周热门 更多>