普中51单片机开发攻略--A7,c51单片机的例程

目录

1-1 点亮一个LED

1-2 流水灯LED

1-3蜂鸣器

1-4 继电器

1-5 静态数码管

1-6 动态数码管

1-7 独立按键

1-8 矩阵按键

1-9 74HC165-单片机io口的扩展并转串

1-10 74HC595-单片机io口的扩展串转并

1-10-2 74HC595-静态数码管显示0-f

1-11 74HC595-动态数码管显示0-f

1-12 74HC595-LED点阵点亮一个点

1-13 74HC595-LED点阵点亮一个汉字

1-14 74HC595-LED点阵显示图像

1-16   步进电机

1-17 独立按键控制  步进电机/

1-1 点亮一个LED

*******************1-1 点亮一个LED*********************
****                                                                                            *****
#include "reg52.h" 
sbit D1=P0^0;
void main()
{
    D1=0; 
    while(1)
    {
    }
}

1-2 流水灯LED

*******************1-2 流水灯LED  *********************
****                                                                                            *****
#include "reg52. h"   
#include<intrins.h>
typedef unsigned int ul6; 
typedef unsigned char u8;
#include <REGX51.H>
#define led P0

//延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--) ;
}
//NO1
//void main()
//{
//    u8 i;
//    led=~0x01;//0x01 取反 0xFF 
//    delay(50000); // 450ms 
//    while (1)
//        {
//                for(i=0;i<8;i++)
//            {
//                    P0=~(0x01<<i) ;
//                    delay(50000); //延时 450ms
//            }
//        }
//}
//NO2
void main ( )
{
    u8 i;
    led=~0x01;
    delay(50000) ; // 450ms
    while (1) 
    {
   for(i=0;i<7;i++) //? led ????
    {
     led=_crol_(led, 1) ;
     delay(50000) ; //450ms 
    }

    for(i=0;i<7;i++) // ? led you???
    {
    led=_cror_(led,1) ;
    delay(50000) ; //  450ms
    }
    }
}

1-3蜂鸣器

*******************   1-3蜂鸣器  *********************
//****                                                                                            *****
#include <REGX51.H>
#include "reg52. h"   
#include<intrins.h>
typedef unsigned int ul6; 
typedef unsigned char u8;

sbit beep=P1^5;//P1.5

//延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--) ;
}

void main()
{
    while(1) 
    {
        beep=~beep;
        delay(100) ;
    }
}

1-4 继电器

*******************1-4 继电器  *********************
****                                                                                            *****
#include <REGX51.H>
#include "reg52. h"   
#include<intrins.h>
typedef unsigned int ul6; 
typedef unsigned char u8;

sbit relay=P1^4;//P1.4

void main()
{
    relay=0;
    while(1);
    
}

1-5 静态数码管

*******************1-5 静态数码管  *********************
//****                                                                                            *****
#include <REGX51.H>
#include "reg52. h"   
typedef unsigned int ul6; 
typedef unsigned char u8;

    u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极0~F
    u8 code smgduan1[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳极0~F

    延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--) ;
}

void main()
{
    u8 j;
  for(j=0;j<16;j++)
    {
        P0=~smgduan[j];
        delay(50000) ;//2s
    }
    
      for(j=16;j>0;j--)
    {
        P0=smgduan1[j];
        delay(50000) ;//2s
    }
}

1-6 动态数码管

*******************1-6 动态数码管 *********************
****                                                                                            *****
J22-->J6 P22-->J9(A) P23-->J9(B) P24-->J9(C)

#include "reg52. h"   
#include <REGX51.H>
typedef unsigned int ul6; 
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

    u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极0~F

//延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--);
}

void DigDisplay()
{
        u8 i;
        for(i=0;i<8;i++)
        {
            switch(i)//位选
            {
                case(0):
                            LSA=0;LSB=0;LSC=0; break;// 0 位
                case(1):
                            LSA=1;LSB=0;LSC=0; break;//T 1  
                case(2):
                            LSA=0;LSB=1;LSC=0; break;//T 2 
                case(3):
                            LSA=1;LSB=1;LSC=0; break;//T 3  
                case(4):
                            LSA=0;LSB=0;LSC=1; break;//T 4 
                case(5):
                            LSA=1;LSB=0;LSC=1; break;//T 5  
                case(6):
                            LSA=0;LSB=1;LSC=1; break;//T 6 
                case(7):
                            LSA=1;LSB=1;LSC=1; break;// 7 
            }
                P0=smgduan[i];//发送段码
                delay(100);//
                //P0=0x00;//消隐
            
        }
}
    void main()
{
      while(1)
        {
        DigDisplay();
        }
}

1-7 独立按键

*******************1-7 独立按键*********************
****                                                                                      *****
 
#include <REGX51.H>
typedef unsigned int ul6; 
typedef unsigned char u8;
sbit k1=P1^0;//P1.0
sbit led=P0^0;//P0.0

//延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--);
}

void keypros()
{
    if(k1==0)
    {
        delay(1000);//消抖10ms
        
        if(k1==0)//2次检测
        {
            led=~led;//执行按键后程?
            //led=0;
        }
    }
}

void main()
{
    led=1;
    while(1)
    {
        keypros();
    }
}

1-8 矩阵按键

*******************1-8 矩阵按键************************
****                                                                                      *****
S1-S4: 0-3 S5-S8: 4-7 S9-S12: 8-B S13-S16: C-F
typedef unsigned int ul6; 
typedef unsigned char u8;

#include <REGX51.H>
#define GPIO_DIG P0
#define GPIO_KEY P1

u8 KeyValue;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极0~F

//延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--);
}

void KeyDown(void)
{
    char a=0;
    GPIO_KEY=0x0f;        //1111 1111
    if(GPIO_KEY!=0x0f)
    {
        delay(1000);
        if(GPIO_KEY!=0x0f)
        {
            //测试列
            GPIO_KEY = 0X0F;
            switch(GPIO_KEY)
            {
            case(0X07): KeyValue=0;break;
            case(0X0b):    KeyValue=1;break;
            case(0X0d): KeyValue=2;break;
            case(0X0e):    KeyValue=3;break;
            }
            //测试行
            GPIO_KEY = 0XF0;
            switch (GPIO_KEY)
            {
            case(0X70):KeyValue = KeyValue ; break;
            case(0Xb0):KeyValue = KeyValue + 4; break;
            case(0Xd0):KeyValue = KeyValue + 8; break;
            case(0Xe0):KeyValue = KeyValue + 12; break;
            }    
        }

    }
    while((a<50)&&(GPIO_KEY!=0xf0))
    {
        delay(100); 
        a++;
    }    
}

void main()
{   
    while(1)
    {
        KeyDown();
        GPIO_DIG=~smgduan[KeyValue];
    }
}

1-9 74HC165-单片机io口的扩展并转串

*******************1-9 74HC165-单片机io口的扩展并转串***********************
****                                                                                      *****
typedef unsigned int ul6; 
typedef unsigned char u8;

#include <REGX51.H>
#include "intrins.h"

//IO
#define GPIO_LED P0
sbit IN_PL=P1^6;//P1.6
sbit IN_Data=P1^7;//1.7
sbit SCK=P3^6;

u8 Read74HC165(void)
{
    u8 i;
  u8 indata; 
    IN_PL = 0;
    _nop_(); 
    IN_PL = 1; 
    _nop_(); 
    
    indata=0;

    for(i=0; i<8; i++)
    {
        indata = indata<<1;
        SCK=0;
        _nop_(); 
        indata |=IN_Data;
        SCK=1;
    }
    return(indata); 
}

void main()
{
    u8 h165Value;
  GPIO_LED = 0xff;
    while(1)
    {
        h165Value = Read74HC165();
        
        if(h165Value != 0xFF)
        {
            GPIO_LED = h165Value;
        }
    }
}

1-10 74HC595-单片机io口的扩展串转并

*******************1-10 74HC595-单片机io口的扩展串转并***********************
****                                                                                      *****
typedef unsigned int ul6; 
typedef unsigned char u8;
#include <REGX51.H>
#include "intrins.h"

IO

sbit SER=P3^4;
sbit RCLK=P3^5;
sbit SRCLK=P3^6;

延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--);
}
向595发送一个字节数据
void Hc595SendByte(u8 dat)
{    
    u8 a;
    SRCLK = 1; 
    RCLK = 1;
    for(a=0;a<8;a++)
        {
            SER = dat >> 7;
            dat <<= 1 ;
                
            SRCLK = 0;
            _nop_() ; 
            _nop_() ;  
            SRCLK = 1;
        }
        RCLK = 0;
        _nop_() ;
        _nop_() ; 
        RCLK = 1;
}


void main()
{
    u8 ledNum;
    ledNum=~0x01;//1111 1110

    while(1)
    {
        Hc595SendByte(ledNum);
        ledNum = _crol_(ledNum,1);
        delay(50000);
    }
}

1-10 74HC595-静态数码管显示0-f

*******************1-10 74HC595-静态数码管显示0-f***********************
****                                                                                      *****
typedef unsigned int ul6; 
typedef unsigned char u8;
#include <REGX51.H>
#include "intrins.h"

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极0~F
//IO

sbit SER=P3^4;
sbit RCLK=P3^5;
sbit SRCLK=P3^6;

//延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--);
}
//向595发送一个字节数据
void Hc595SendByte(u8 dat)
{    
    u8 a;
    SRCLK = 1; 
    RCLK = 1;
    for(a=0;a<8;a++)
        {
            SER = dat >> 7;
            dat <<= 1 ;
                
            SRCLK = 0;
            _nop_() ; 
            _nop_() ;  
            SRCLK = 1;
        }
        RCLK = 0;
        _nop_() ;
        _nop_() ; 
        RCLK = 1;
}


void main()
{
    u8 i;
    while(1)
    {
        for(i=0;i<16;i++)
        {
            Hc595SendByte(~smgduan[i]);//硬件是共阳极则取反
            delay(50000);
        }
    }
}

1-11 74HC595-动态数码管显示0-f

*******************1-11 74HC595-动态数码管显示0-f***********************
****                                                                                      *****
J27-->J6 P22-->J9(A) P23-->J9(B) P24-->J9(C)
P34-->SE P35-->RC P36-->SC
typedef unsigned int ul6; 
typedef unsigned char u8;

#include <REGX51.H>
#include "intrins.h"

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极0~F
//IO

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

sbit SER=P3^4;
sbit RCLK=P3^5;
sbit SRCLK=P3^6;

//延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--);
}
//动态数码管显示函数,只进行位选,由595确定段码数字
void DigDisplay(u8 i)
{

            switch(i)//位选
            {
                case(0):
                            LSA=0;LSB=0;LSC=0; break;// 0 位
                case(1):
                            LSA=1;LSB=0;LSC=0; break;//T 1  
                case(2):
                            LSA=0;LSB=1;LSC=0; break;//T 2 
                case(3):
                            LSA=1;LSB=1;LSC=0; break;//T 3  
                case(4):
                            LSA=0;LSB=0;LSC=1; break;//T 4 
                case(5):
                            LSA=1;LSB=0;LSC=1; break;//T 5  
                case(6):
                            LSA=0;LSB=1;LSC=1; break;//T 6 
                case(7):
                            LSA=1;LSB=1;LSC=1; break;// 7 
            }

}
//向595发送一个字节数据
void Hc595SendByte(u8 dat)
{    
    u8 a;
    SRCLK = 1; 
    RCLK = 1;
    for(a=0;a<8;a++)
        {
            SER = dat >> 7;
            dat <<= 1 ;
                
            SRCLK = 0;
            _nop_() ; 
            _nop_() ;  
            SRCLK = 1;
        }
        RCLK = 0;
        _nop_() ;
        _nop_() ; 
        RCLK = 1;
}


void main()
{
    u8 i;
    while(1)
    {
        for(i=0;i<8;i++)
        {        
            DigDisplay(i);//位选
            Hc595SendByte(smgduan[i]);//段码,共阴极不取反
            delay(50000);
        }
    }
}

1-12 74HC595-LED点阵点亮一个点

//*******************1-12 74HC595-LED点阵点亮一个点***********************
//****                                                                                      *****
//P34-->SE P35-->RC P36-->SC 单片机到 74HC595
//74HC595(A)-->led J27-->J28,74HC595(b)-->led J32-->J34

#include <REGX51.H>
#include "intrins.h"
typedef unsigned int ul6; 
typedef unsigned char u8;

sbit SER=P3^4;
sbit RCLK=P3^5;
sbit SRCLK=P3^6;

//发送数据至595
//datl:  第4个 595输出值
//dat2:  3 595
//dat3:  2 595
//dat4:  1 595
void Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{
    u8 a;
    
    SRCLK = 1;
    RCLK = 1;
    for (a=0;a<8; a++)
    {
        SER = dat1 >> 7;
        dat1 <<= 1;
            
        SRCLK = 0;
        _nop_();
        _nop_();
        SRCLK = 1;
    }
    
        for (a=0;a<8; a++)
    {
        SER = dat2 >> 7;
        dat2 <<= 1;
            
        SRCLK = 0;
        _nop_();
        _nop_();
        SRCLK = 1;
    }
    
    for (a=0;a<8; a++)
    {
        SER = dat3 >> 7;
        dat3 <<= 1;
            
        SRCLK = 0;
        _nop_();
        _nop_();
        SRCLK = 1;
    }
    
    for (a=0;a<8; a++)
    {
        SER = dat4 >> 7;
        dat4 <<= 1;
            
        SRCLK = 0;
        _nop_();
        _nop_();
        SRCLK = 1;
    }
    
        RCLK = 0;
        _nop_();
        _nop_();
        RCLK = 1;
}

void main()
{
    while(1)
    {
        Hc595SendByte(0xff,0xfe ,0x00,0x01);
    }
}

1-13 74HC595-LED点阵点亮一个汉字

*******************1-13 74HC595-LED点阵点亮一个汉字**********************
****                                                                                      *****
//P34-->SE P35-->RC P36-->SC 单片机到 74HC595
//74HC595(A)-->led J27-->J28,74HC595(b)-->led J32-->J34

#include <REGX51.H>
#include "intrins.h"
typedef unsigned int ul6; 
typedef unsigned char u8;

sbit SER=P3^4;
sbit RCLK=P3^5;
sbit SRCLK=P3^6;
sbit k1=P1^0;//P1.0

u8 t;

u8 code ledduan1[]=
{
    /*--  ??:  好  --*/
/*--  ??12;  ??????????:?x?=16x16   --*/
0x10,0x10,0xF0,0x1F,0x10,0xF0,0x00,0x80,0x82,0x82,0xE2,0x92,0x8A,0x86,0x80,0x00,
0x40,0x22,0x15,0x08,0x16,0x61,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,
};

u8 code ledduan2[]={
/*--  ??:  的 --*/
/*--  ??12;  ??????????:?x?=16x16   --*/
0x00,0xF8,0x0C,0x0B,0x08,0x08,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0xF8,0x00,0x00,
0x00,0x7F,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00,0x43,0x80,0x40,0x3F,0x00,0x00,
};

u8 code ledwei[]={
    0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
};

//延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--);
}

//发送数据至595
//datl:  第4个 595输出值
//dat2:  3 595
//dat3:  2 595
//dat4:  1 595

void Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{
    u8 a;
    
    SRCLK = 1;
    RCLK = 1;
    for(a=0;a<8;a++)
    {
        SER = dat1 >> 7;
        dat1 <<= 1;
            
        SRCLK = 0;
        _nop_();
        _nop_();
        SRCLK = 1;
    }
    
        for (a=0;a<8; a++)
    {
        SER = dat2 >> 7;
        dat2 <<= 1;
            
        SRCLK = 0;
        _nop_();
        _nop_();
        SRCLK = 1;
    }
    
    for (a=0;a<8; a++)
    {
        SER = dat3 >> 7;
        dat3 <<= 1;
            
        SRCLK = 0;
        _nop_();
        _nop_();
        SRCLK = 1;
    }
    
    for (a=0;a<8; a++)
    {
        SER = dat4 >> 7;
        dat4 <<= 1;
            
        SRCLK = 0;
        _nop_();
        _nop_();
        SRCLK = 1;
    }
    
        RCLK = 0;
        _nop_();
        _nop_();
        RCLK = 1;
}
//显示"好"
void de_1()
{
    u8 i;
    for(i=0;i<16;i++)
    {
        Hc595SendByte(~ledwei[i+16],~ledwei[i],ledduan2[16+i],ledduan2[i]);
        delay(100);
    }
}
//显示"的"
void hao_1()
{
    u8 i;
    for(i=0;i<16;i++)
    {
        Hc595SendByte(~ledwei[i+16],~ledwei[i],ledduan1[16+i],ledduan1[i]);
        delay(100);
    }    
}
        
//换字
void turn(u8 i)
{
    if(i==0x00)
    {
     hao_1();
    }
    else de_1();
}
//按键控制t的值
void keypros()
{
    if(k1==0)
    {
        delay(1000);//消抖10ms
        
        if(k1==0)//2次检测
        {
            t=~t;//执行按键后程?
            //led=0;
        }
    }
}
        
void main()
{
    u8 i;
    t=0x00;
    while(1)
    {
   keypros();//检查t有无变化,按键是否按下
     turn(t);//根据t来选择显示哪个字
    }
}

1-14 74HC595-LED点阵显示图像

*******************1-14 74HC595-LED点阵显示图像***********************
****                                                                                                                       *****


*******************1-15 ULN2003D 直流电机 **********************
****                                                                                                                       *****
#include <REGX51.H>
#include "intrins.h"
typedef unsigned int ul6; 
typedef unsigned char u8;

sbit moto=P1^0;//P1.0

//延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--);
}

void main()
{
    u8 i;
    moto=0;
    for(i=0;i<100;i++)//100ci
    {
        moto=1;
        delay (5000);//50ms
    }
    moto=0;//off
    while(1)
    {
    }
}

1-15 ULN2003D 直流电机独立按键控制

*******************1-15 ULN2003D 直流电机独立按键控制 **********************
****                                                                                                                                   *****

#include <REGX51.H>
#include "intrins.h"
typedef unsigned int ul6; 
typedef unsigned char u8;

sbit moto=P1^0;//P1.0
sbit k1=P0^0;//P0.0

u8 t;

延时函数,i=1大概延时10us
void delay(ul6 i) 
{
    while(i--);
}

电机状态函数
void moto_1(u8 i)
{
    if(i==0x00)
    {
     moto=0;
    }
     else moto=1;
}
按键控制
void keypros()
{
    if(k1==0)
    {
        delay(1000);//消抖10ms
        
        if(k1==0)//2次检测
        {
            
            t=~t;
            //moto=~moto;//执行按键后程?
            //moto_1(t);
            //led=0;
        }
    }
}

void main()
{
    t=0x00;
    while(1)
    {
   keypros();//检查t有无变化,按键是否按下
     moto_1(t);//根据t来选择on or off
    }
}

1-16   步进电机

//*******************1-16   步进电机**********************
//****                                                                                                                                   *****
//P10-->IA P11-->IB P12-->IC P13-->ID
//OA-->A+ OB-->A- OC-->B+ OD-->B-

#include <REGX51.H>
#include "intrins.h"
typedef unsigned int ul6; 
typedef unsigned char u8;

sbit MOTOA=P1^0;//P1.0
sbit MOTOB=P1^1;//P1.0
sbit MOTOC=P1^2;//P1.0
sbit MOTOD=P1^3;//P1.0

#define SPEED 100//转速70不转
void delay(ul6 i) 
{
    while(i--);
}

void main()
{
    P1=0X00;
    while(1)
    {
        MOTOA = 1;
        MOTOB = 0;//前进
        MOTOC = 1;
        MOTOD = 1;//刹车
        delay(SPEED) ;
        
        MOTOA = 1;
        MOTOB = 1;//刹车
        MOTOC = 1;
        MOTOD = 0;//前进
        delay(SPEED) ;
        
        MOTOA = 0;
        MOTOB = 1;//后退
        MOTOC = 1;
        MOTOD = 1;//刹车
        delay(SPEED) ;
        
        MOTOA = 1;
        MOTOB = 1;//刹车
        MOTOC = 0;
        MOTOD = 1;//后退
        delay(SPEED);
    }
}

1-17 独立按键控制  步进电机

//*******************1-17 独立按键控制  步进电机**********************
//****                                                                                                                    *****
//P10-->IA P11-->IB P12-->IC P13-->ID
//OA-->A+ OB-->A- OC-->B+ OD-->B-
//P0.0--K1
#include <REGX51.H>
#include "intrins.h"
typedef unsigned int ul6; 
typedef unsigned char u8;

sbit MOTOA=P1^0;//P1.0
sbit MOTOB=P1^1;//P1.0
sbit MOTOC=P1^2;//P1.0
sbit MOTOD=P1^3;//P1.0
sbit k1=P0^0;//P0.0

u8 t;
#define SPEED 100//转速70不转
void delay(ul6 i) 
{
    while(i--);
}

//电机正反转
void turn(u8 i)
{
    if(i==0x00)
    {
        MOTOA = 1;
        MOTOB = 0;//前进
        MOTOC = 1;
        MOTOD = 1;//刹车
        delay(SPEED) ;
        
        MOTOA = 1;
        MOTOB = 1;//刹车
        MOTOC = 1;
        MOTOD = 0;//前进
        delay(SPEED) ;
        
        MOTOA = 0;
        MOTOB = 1;//后退
        MOTOC = 1;
        MOTOD = 1;//刹车
        delay(SPEED) ;
        
        MOTOA = 1;
        MOTOB = 1;//刹车
        MOTOC = 0;
        MOTOD = 1;//后退
        delay(SPEED);
    }
     else
     {
        MOTOA = 1;
        MOTOB = 1;//刹车
        MOTOC = 0;
        MOTOD = 1;//后退
        delay(SPEED);
         
        MOTOA = 0;
        MOTOB = 1;//后退
        MOTOC = 1;
        MOTOD = 1;//刹车
        delay(SPEED) ;    

        MOTOA = 1;
        MOTOB = 1;//刹车
        MOTOC = 1;
        MOTOD = 0;//前进
        delay(SPEED) ; 
         
        MOTOA = 1;
        MOTOB = 0;//前进
        MOTOC = 1;
        MOTOD = 1;//刹车
        delay(SPEED) ;
     }

}

//按键控制
void keypros()
{
    if(k1==0)
    {
        delay(1000);//消抖10ms
        
        if(k1==0)//2次检测
        {
            t=~t;
            //moto=~moto;//执行按键后程?
            //moto_1(t);
            //led=0;
        }
    }
}

void main()
{
    P1=0X00;
    t=0x00;
    while(1)
    {
    keypros();
        turn(t);
    }
}

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
普中51单片机A2开发板是一款智能控制开发板,采用51单片机作为控制核心。该开发板具有丰富的接口资源和强大的功能,适用于物联网、智能家居、机器人等多种应用场景。 该开发板的资料包括以下主要内容: 1. 主板设计资料:包括电路原理图、PCB设计文件、材料清单等。主板设计资料详细描述了开发板的硬件电路设计,包括各个接口的连接方式、电源部分设计等。这些资料对于理解开发板的硬件工作原理非常重要。 2. 软件开发资料:包括51单片机开发环境、编程工具和普中提供的代码库等。开发环境通常包括集成开发环境(IDE)和编译器等,用于编写、调试、烧录代码。普中还提供了丰富的代码库,包含各种功能的例程,如LED控制、串口通信、温度传感器读取等。 3. 使用手册:详细介绍了开发板的功能、使用方法和注意事项等。手册中包括硬件连接示意图、软件调试步骤以及常见问题解答等内容,帮助用户快速上手和解决问题。 4. 实验教程:提供一系列实验教程,引导用户逐步学习开发板的各种功能和应用。实验教程通常包括实验目的、实验原理、实验步骤和实验结果等内容,用户可以跟随实验教程一步一步掌握开发板的使用。 通过阅读这些资料例程,用户可以了解开发板的硬件设计和软件开发过程,掌握开发板的各种功能和应用,进而进行自己的项目开发。同时,普中还提供了技术支持平台,用户可以在平台上提问和交流,获得更详细的技术指导和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值