⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6、a-d转换之差分.txt

📁 C8051F300的AD转换程序
💻 TXT
字号:
//P0.4(20脚口)控转向→数字输入,开漏输出,要跳过
//P0.5(19脚口)控制pwm→数字输入,推挽输出,不要跳过
//P1.4(12脚口)接电位器,正输入
//P1.5(11脚口)接电位器,负输入
//P0.0(4脚口)VREF基准电压,与P1.5(11脚口)连一块
//P0.0,P1.4,P1.5均为模拟输入,开漏输出,都要跳过
//通过if~else判断语句实现电位器由一端转向另一端,电机有快速正转慢慢速度减小,电位器过中间时候速度为0,再是反转,速度慢慢增大电位器转到底,速度达反向最大

#include <c8051f330.h>	

sbit  a4=P0^4; //P0.4给定左右轮方向
sbit  a5=P0^5; //PWM输出          

unsigned L;

void pwm123(void)    //PWM的初始化
{
   PCA0MD &= ~0x40; 
   PCA0CN=0x40;  //允许PCA工作   
   PCA0MD=0x02;  //PCA时钟为4分频
  
   PCA0CPM0=0x42;  //设置左轮为8为PWM输出    

}
 
void pio(void)  
{
   P0MDIN=0xFE;//注意P0.0用VREF功能模拟输入置0→1111 1110
   P0MDOUT=0xEE; //P0.4控转向要驱动能力强选择开漏置0;P0.5控制转速就选择开关能力强更好些置1;P0.0在接均压电阻,要驱动能力强选择开漏置0→1110 1110
   P0SKIP=0xDF;//不跳过P0.5,因为它是控制转速,要给CEX0功能留着;P0.0用到了VREF功能,属于被在设使用,必须跳过→1101  1111 
  
   P1MDIN=0xCF;  //P1.4接电位,随时控制转速大小,为模拟输入;P1.5接均压电阻,也为模拟输入→1100 1111
   P1MDOUT=0xCF; //我觉得P1.4,P1.5外接电位器,属于接了负载,要驱动能力强的,选择开漏置0→1100 1111
   P1SKIP=0xFF;//外设使用到P1.4和P1.5,必须跳过→1111 1111  

   XBR0=0x00;
   XBR1=0xC1;   //CEX0

}

void sysclk(void)    //内部晶振
{
   OSCICL=0x2D;  //20MHZ
   OSCICN=0xC2;// 二分频,分后为10MHZ
   CLKSEL=0x00;  
}

void AD(void)
{
   AMX0P=0x0C;//正输入选择P1.4→0000 1100
   AMX0N=0x0D;//负输入选择P1.5→0000 1101
   REF0CN=0x00;//选择基准电压VREF→0000 0000

   ADC0CF=0x24;//2M SAR,左对齐→0010 0100
   ADC0CN=0x80;//→1000 0000     
}
 
main( )
 {
   PCA0MD &= ~0x40;// 关狗
   sysclk();
   pio();
   pwm123() ;
   AD();
   a4=1;//电机转向
   a5=0;
  while(1)
  {
   AD0BUSY=0;
   AD0BUSY=1;//开启转换
   L=ADC0H;
   if((L>=0)&&(L<=127))//千万记得加等号,否则有突变的情况,“=127”没加对应的8突变到0,“=0”没加是反向的0突变到8
    {        //ADC0H是0~127的范围
       a4=0; //正转 
       L=L*2;//使0~127能控制0~255的速度
       L=255-L;//与电位器的旋转相搭配
       PCA0CPH0=L;//将转换好的值赋给PCA0CPH0
     }  

    else
      {         //ADC0H是128~255的范围
          a4=1; //反转
          L=255-L; //为以下转为速度准备使L的范围是0~128
          L=L*2; //同上
          L=255-L; //同上
          PCA0CPH0=L;

       } 

   
  }
     
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -