资源简介

基于51单片机的三路电磁传感器的智能循迹小车完整程序,使用keil打开即可编译,功能已经完美实现,代码有详细注释。

资源截图

代码片段和文件信息

/*------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------------------------------------*/
/* --- STC12C5Axx Series MCU A/D Conversion Demo -------------------*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-0513-550129565501294755012969 ---------------------*/
/* --- Tel: 86-0513-550129285501292955012966----------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* --- Web: www.GXWMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the  */
/* article please specify in which data and procedures from STC    */
/*------------------------------------------------------------------*/

#include “reg51.h“
#include “intrins.h“
#include “AD.h“
/*Declare SFR associated with the ADC */
sfr ADC_CONTR   =   0xBC;           //ADC control register
sfr ADC_RES     =   0xBD;           //ADC high 8-bit result register
sfr ADC_LOW2    =   0xBE;           //ADC low 2-bit result register
sfr P1ASF       =   0x9D;           //P1 secondary function control register

/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER   0x80            //ADC power control bit
#define ADC_FLAG    0x10            //ADC complete flag
#define ADC_START   0x08            //ADC start control bit
#define ADC_SPEEDLL 0x00            //420 clocks
#define ADC_SPEEDL  0x20            //280 clocks
#define ADC_SPEEDH  0x40            //140 clocks
#define ADC_SPEEDHH 0x60            //70 clocks




/*----------------------------
Get ADC result
----------------------------*/
BYTE GetADCResult(BYTE ch)
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
    _nop_();                        //Must wait before inquiry
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag
    ADC_CONTR &= ~ADC_FLAG;         //Close ADC
    return ADC_RES;                 //Return ADC result
}

/*----------------------------
Initial ADC sfr
----------------------------*/
void InitADC()
{
    P1ASF = 0x0e;                   //初始化ADC通道
    ADC_RES = 0;                    //Clear previous result
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
    Delay(2);                       //ADC power-on and delay
}

/*----------------------------
Software delay function
----------------------------*/
void Delay(WORD n)
{
    WORD x;

    while (n--)
    {
        x = 5000;
        while (x--);
    }
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2578  2017-04-08 18:44  AD.c
     文件         168  2017-04-01 18:15  AD.h
     文件      137949  2018-04-14 10:45  ADC.uvgui.63279
     文件       71638  2018-10-05 18:24  ADC.uvgui.ly
     文件       85821  2018-04-13 16:47  ADC.uvgui.Sx
     文件        6716  2018-04-13 21:27  ADC.uvopt
     文件       14046  2017-04-09 21:24  ADC.uvproj
     文件        5921  2018-04-14 10:45  mian.c
     文件         182  2017-03-11 16:14  scope.h
     文件        6376  2016-04-01 17:01  STARTUP.A51
     文件       18708  2017-03-11 14:50  STC12C5A60S2.h
     文件         357  2017-03-26 00:25  uart.h

评论

共有 条评论