|
还不是很稳定,硬件完全是是仿照gzhuli 前辈的,2路变一路。学单片机的第一个作品,三天的泡面没白吃,献丑了
在此谢谢gzhuli 前辈
#include<avr/io.h>
#define F_CPU 8000000UL
#define uint unsigned int
#define uchar unsigned char
void Delay_ms(uint i)
{
uint j;
while(i--)
{
for(j=0;j<1200;j++);
}
}
uint get_adc()
{
uint a=0,b=0;
ADMUX=0X60;
ADCSRA=0X87;
Delay_ms(1);
ADCSRA|=0X40;
while(!(ADCSRA&0X10));
a=ADCL;
b=ADCH;
ADCH=0x00;
ADCL=0x00;
ADCSRA&=0Xef;
return b;
}
int ads,m;
int kp=1,ki=0,kd=1;
int temp=0;
int pid()
{
static int n1,n2,n3,res;
n1=get_adc();
res=196+kp*n1*n1/676+(n1-n2)*kd/3;
n3=n2;
n2=n1;
return res;
}
int main(void)
{
DDRA&=~(1<<0);
DDRB|=0x30;
DDRD|=0X30;
PORTB|=0x10;
TCCR1A=0X63;
TCCR1B=0X1B;
while(1)
{
get_adc();
Delay_ms(5);
OCR1A=255;
temp=pid();
if(temp>255)temp=255;
if(temp<0)temp=0;
OCR1B=temp;
}
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
有时候所谓难以割舍的感情,事实上只是不甘心而已。 (出处:黄舒骏《不要只因为他亲吻了你》)
|