标题:
怎么样把直流电动机调速的代码整合到温度传感器的代码中 求救!
[打印本页]
作者:
sun小胖
时间:
2021-12-9 16:53
标题:
怎么样把直流电动机调速的代码整合到温度传感器的代码中 求救!
任务:代码整合一份 完成温度采集并显示
完成声光报警
按键调整温度上下限
直流电动机调速
前三个任务都可以
#include "reg52.h"
sbit DQ=P1^4;
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0XBF};
unsigned char dspbuf[]={10,10,10,10,10,10,10,10};
unsigned char dspcom=0;
unsigned int num=0;
unsigned char low_temp=7;
unsigned char high_temp=26;
unsigned char intr;
void delayms(unsigned int x);
bit temper_flag=0;
void Delay_OneWire();
void Write_DS18B20();
bit init_ds18b20();
unsigned char rd_temperature();
sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;
void display(void);
void main(void)
{
unsigned char temperature;
TMOD|=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
delayms(10);
if(S7==0)
{
delayms(10);
if(S7==0)
{
low_temp+=1;
if(low_temp>26)
{
low_temp=7;
}
dspbuf[0]=low_temp/10;
dspbuf[1]=low_temp%10;
}
while(!S7);
}
if(S6==0)
{
delayms(10);
if(S6==0)
{
low_temp-=1;
if(low_temp>15)
{
low_temp=07;
}
dspbuf[0]=low_temp/10;
dspbuf[1]=low_temp%10;
}
while(!S6);
}
if(S5==0)
{
delayms(10);
if(S5==0)
{
high_temp+=1;
if(high_temp>26)
{
high_temp=7;
}
dspbuf[3]=high_temp/10;
dspbuf[4]=high_temp%10;
}
while(!S5);
}
if(S4==0)
{
delayms(10);
if(S4==0)
{
high_temp-=1;
if(high_temp>26)
{
high_temp=7;
}
dspbuf[3]=high_temp/10;
dspbuf[4]=high_temp%10;
}
while(!S4);
}
dspbuf[0]=low_temp/10;
dspbuf[1]=low_temp%10;
dspbuf[3]=high_temp/10;
dspbuf[4]=high_temp%10;
if(temper_flag)
{
temper_flag=0;
temperature=rd_temperature();
}
dspbuf[6]=temperature/10;
dspbuf[7]=temperature%10;
if(temperature>=high_temp||temperature<=low_temp)
{
P0=0XFF;
P2=P2&0X1F|0XA0;
P2&=0X1F;
P0=0X00;
P2=P2&0X1F|0X80;
P2&=0X1F;
}
else
{
P0=0X00;
P2=P2&0X1F|0XA0;
P2&=0X1F;
P0=0XFF;
P2=P2&0X1F|0X80;
P2&=0X1F;
}
}
}
void isr_time_0(void) interrupt 1
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
display();
if(++intr==100)
{
intr=0;
temper_flag=1;
}
}
void display(void)
{
P0=0XFF;
P2=P2&0X1F|0XE0;
P2=P2&0X1F;
P0=0X01<<dspcom;
P2=P2&0X1F|0XC0;
P2=P2&0X1F;
P0=tab[dspbuf[dspcom]];
P2=P2&0X1F|0XE0;
P2=P2&0X1F;
if(++dspcom==8)
{
dspcom=0;
}
}
void Delay_OneWire(unsigned int t)
{
unsigned char i;
while(t--)
{
for(i=0;i<12;i++);
}
}
void Write_DS18B20(unsigned char dat)
{
unsigned char i;
for (i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;
Delay_OneWire(5);
DQ=1;
dat>>=1;
}
Delay_OneWire(5);
}
unsigned char Read_DS18B20(void)
{
unsigned char i;
unsigned char dat;
for (i=0;i<8;i++)
{
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
{
dat|=0x80;
}
Delay_OneWire(5);
}
return dat;
}
bit init_ds18b20(void)
{
bit initflag=0;
DQ = 1;
Delay_OneWire(12);
DQ = 0;
Delay_OneWire(80);
DQ = 1;
Delay_OneWire(10);
initflag=DQ;
Delay_OneWire(5);
return initflag;
}
unsigned char rd_temperature(void)
{
unsigned char low,high;
char temp;
init_ds18b20();
Write_DS18B20(0xCC);
Write_DS18B20(0x44);
Delay_OneWire(200);
init_ds18b20();
Write_DS18B20(0xCC);
Write_DS18B20(0xBE);
low=Read_DS18B20();
high=Read_DS18B20();
temp=high<<4;
temp|=(low>>4);
return temp;
}
void delayms(unsigned int x)
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
直流电动机代码
#include<reg52.h>
sbit S7=P3^0;
unsigned char Key_Num,PWM_ON,ms;
unsigned char code Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xFF};
void delayms(unsigned int);
main()
{
TMOD=0X01;
TH0=0XFC;
TL0=0X66;
EA=1;
ET0=1;
TR0=1;
P0=0X80;
P2=P2&0X1F|0XC0;
P2&=0X1F;
P0=Tab[0];
P2=P2&0X1F|0Xe0;
P2&=0X1F;
while(1)
{
if(!S7)
{
delayms(30);
if(!S7)
{
if(++Key_Num>=5)
Key_Num=1;
switch(Key_Num)
{
case 1:PWM_ON=3; //1μμ
break;
case 2:PWM_ON=5; //2μμ
break;
case 3:PWM_ON=7; //3μμ
break;
case 4:PWM_ON=9; //4μμ
break;
}
P0=Tab[Key_Num];
P2=P2&0X1F|0XE0;
P2&=0X1F;
}
while(!S7);
}
}
}
void T0_Int() interrupt 1
{
TH0=0XFC;
TL0=0X66;
if(++ms>=10)
ms=0;
if(ms<PWM_ON)
P0=P0|0X20;
else
P0=P0&0X9F;
P2=P2&0X1F|0XA0;
P2&=0X1F;
}
void delayms(unsigned int x)
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=113;j>0;j--);
}
不会整合 求救一下
作者:
heicad
时间:
2021-12-9 17:53
先看一下黑坛里面解决此问题的相关帖子吧, 举一反三
MCU程序?多个功能如何组合
http://www.51hei.com/bbs/dpj-205474-1.html
单片机程序合并教程:
http://www.51hei.com/bbs/dpj-157117-1.html
整合2个程序:
http://www.51hei.com/bbs/dpj-192954-1.html
单片机怎么把两个C程序整合到一起运行?
http://www.51hei.com/bbs/dpj-213562-1.html
作者:
liesnake
时间:
2021-12-9 20:59
据我所知,一般的电机控制器都不会带温度传感器,都是把温度传感器放到显示控制面板上,然后通过串口发送温度信息。那个ds18b20读取数据需要延时,延时的时候电机控制器有可能就卡顿了吧?
作者:
univers
时间:
2021-12-10 13:09
代码那么多,看了眼花。就不看了,基本逻辑是这样的,cpu热行电机电流输出,隔一锻时间检查温度,或电机pwm速度控制,突然间妈哟高温着火了,cpu执行关断所有电流。
作者:
sun小胖
时间:
2021-12-10 14:56
heicad 发表于 2021-12-9 17:53
先看一下黑坛里面解决此问题的相关帖子吧, 举一反三
MCU程序?多个功能如何组合
http://www.51hei.com/bbs/d
...
时间不够呀 希望您可以指导指导
作者:
279634783
时间:
2021-12-12 12:16
好久没有看 这种 没有任何操作系统的,硬循环了。 也行吧~
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1