AD收集两路电压,并比较,操控电机滚动方向,并将数据传至上位机
西安理工大学–自动化与信息工程学院
邹艺良 编写(2014.08.25)
邮箱:262276047@qq.com
//*******************************
//西安理工大学–自动化与信息工程学院–邹艺良
//*******************************
unsigned int ch0,ch1;
int value,chazhi,z1,z2,z3,z4,gap;
gap=30;
while(1)
{
uart_init();
ADC_init();
//显现左右两传感器电压
ch0=show_ADC_result_ch0(); //通道ch0电压
Send(0x20); //四个空格符
Send(0x20);
Send(0x20);
Send(0x20);
ch1=show_ADC_result_ch1(); //通道ch1电压
Send(0x20); //四个空格符
Send(0x20);
Send(0x20);
Send(0x20);
//显现差值电压
value=ch0-ch1;
if(ch0>ch1)
{chazhi=ch0-ch1;}
else
{chazhi=ch1-ch0;}
z1=chazhi/1000;
z2=chazhi00/100;
z3=chazhi000/10;
z4=chazhi000;
Send(0x43); //C
Send(0x3D); //=
if(ch0
{Send(0x2D);}
else
{Send(0x2B);}
Send(z1+48);
Send(0x2E); //.
Send(z2+48);
Send(z3+48);
Send(z4+48);
if((ch0+gap)
{Send(0x52);}
if(ch0>(ch1+gap))
{Send(0x4C);}
if(-gap<(ch0-ch1) || (ch0-ch1)
{Send(0x20);}
//Send(0xD); //回车
//Send(0xA); //换行
//光源盯梢
if(-gap
stop_turn();
else if(value<-gap)
negative_turn(10);
else if(value>gap)
positive_turn(10);
//for(p=0;p<50;p++) //延时1s改写一次
//{delay_10ms();}
}
unsigned int result;
ADC_CONTR=0x88|ch; //敞开AD,挑选通道
_nop_();
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTR & 0x10));//等候转化完结,FLAG标志方位位
ADC_CONTR&=0x67; //关AD,清FLAG 01100111
result=ADC_RES*4+ADC_RESL; //获取10位成果
return(result);
#include
#include
#include
void ADC_init();
int get_ADC_result(char ch);
unsigned int show_ADC_result_ch0();
unsigned int show_ADC_result_ch1();
void Send(unsigned char dat);
void uart_init();
void delay(unsigned int a);
void delay_10ms();
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P1_3=P1^3;
void positive_turn(unsigned int count); //顺时针
void negative_turn(unsigned int count); //逆时针
void stop_turn();
void main()
{
}
void ADC_init()
{
P1ASF=0x03;//设置P1.0,P1.1为AD转化口
ADC_CONTR=0x80;//翻开AD电源、挑选转化速度、
ADC_RES=0;
ADC_RESL=0;
AUXR1&=0xfb; //设置AD转化成果寄存方法,此设为10位
delay(5);
}
int get_ADC_result(char ch)
{
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/257095.html