【单片机】51单片机,晨启科技,板子引脚对应关系

【单片机】51单片机,晨启科技,板子引脚对应关系_第1张图片

一般引脚:

sbit beep=P2^4;	   //将单片机的P2.4端口定义为beep.本口用于屏蔽上电后蜂鸣器响
sbit led=P1^0;	   //将单片机的P1.0端口定义为led,用于点亮LED-D1
sbit DIG1=P0^0;					//数码管位选1
sbit DIG2=P0^1;					//数码管位选2

	P1=0xFF;//初始化P1引脚全部置高,LED全灭
	beep=0;	//蜂鸣器不响
	DIG1=0;	//禁止数码管个位亮
	DIG2=0;	//禁止数码管十位亮


sbit key1=P3^2;	 	 //摇杆A按键
sbit key2=P3^3;      //摇杆B按键
	if(key1==0)		     //检测摇杆A按键是否按下
	{	
		delay(1000);     //消除抖动 一般大约10ms
			if(key1==0)	 //再次判断按键是否按下
			{			
			  LED=~LED;	 //每按下一次,P1口状态求反一次
			}
		while(!key1);	 //等待按键松开				
	}

sbit beep=P2^4;	   	   //该口接蜂鸣器驱动三极管b极,1导通,0截断
beep=1;		//蜂鸣器响

#define SEG P1					//将P1口定义为SEG 后面就可以使用SEG代替P1口  数码管段选



/*口袋板OLED电路引脚定义*/
sbit OLED_SCL=P4^3;//SCL-D0
sbit OLED_SDA=P4^1;//SDA-D1
sbit OLED_RES =P3^6;//RES
sbit OLED_DC =P3^7;//DC
sbit OLED_CS=P2^7; //CS



sbit CLOCK=P3^5; 	/*2543时钟*/ 
sbit D_IN=P4^0; 	/*2543输入*/ //【注意:此处是口袋实验室连接引脚】
//sbit D_IN=P1^7; 	/*2543输入*/ //【注意:此处是仿真连接引脚,仿真时请使用本行定义并注释掉上一行】
sbit D_OUT=P0^2; 	/*2543输出*/ 
sbit _CS=P3^4; 		/*2543片选*/ 



sbit  DIN=P2^0;
sbit  SCLK=P1^6; 
sbit  CS=P1^7;
`

``

数码管显示程序:

```go
/**************************************************************************************
——晨启科技——
实验现象:两位数码管的个位数位(或十位数位,由学员自己选择)显示数字

***************************************************************************************/

#include "STC89C5xRC.h"		    //STC89C52RC的头文件
typedef unsigned int u16;	 	//对数据类型进行声明定义
typedef unsigned char u8;


sbit beep = P2^4;			 	//蜂鸣器引脚
sbit DIG1=P0^0;					//数码管位选1
sbit DIG2=P0^1;					//数码管位选2

u8 seg7_table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};	  //共阳数码管0~9段码
#define SEG P1					//将P1口定义为SEG 后面就可以使用SEG代替P1口

/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 大致延时函数
* 输    入         : ms		(ms=1时,大约延时了1ms)
* 输    出         : 无
*******************************************************************************/
void delay(int ms)
{
    int ii,jj;
    if (ms<1) ms=1;
    for(ii=0;ii<ms;ii++)
        for(jj=0;jj<500;jj++);

}

/*******************************************************************************
* 函 数 名         : Seg_Display_Left()
* 函数功能		   : 数码管显示函数。数码管十位数位置显示一个数字
* 输    入         : x		(x为0~9任何一个整数,它会显示在数码管上)
* 输    出         : 无
*******************************************************************************/
void Seg_Display_Left(u8 x)
{

    DIG2=0;			  		 //个位数 数位 位选禁止(共阳数码管的共阳供电脚)
    DIG1=1;					 //十位数 数位 位选允许
    SEG=seg7_table[x];	     //【举例】例如个位数需要显示4,seg7_table[4]对应0x99,数码管会显示“4”
    //事实上每个时刻只有一位数码管会亮,利用人眼视觉残留效果
    delay(4);					 //给一个合适的延时,人眼看不出闪动即可

}

/*******************************************************************************
* 函 数 名         : Seg_Display_Right()
* 函数功能		   : 数码管显示函数。数码管个位数位置显示一个数字
* 输    入         : y      (y为0~9任何一个整数,它会显示在数码管上)
* 输    出         : 无
*******************************************************************************/
void Seg_Display_Right(u8 y)
{
    DIG2=1;					 //个位数数位位选允许
    DIG1=0;					 //十位数数位位选禁止
    SEG=seg7_table[y];	     //【举例】例如个位数需要显示4,seg7_table[4]对应0x99,数码管会显示“4”
    delay(4);					 //事实上每个时刻只有一位数码管会亮,利用人眼视觉残留效果
}							 //



/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{
    beep=0;		   //不允许蜂鸣器蜂鸣
    delay(500);    //等待上电稳定
    while(1)
    {
        /*方法一:数码管左边那一位(十位)显示数字6*/
        //Seg_Display_Left(6);
        /*方法二:数码管右边那一位(个位)显示数字8*/
        Seg_Display_Right(7);
        //方法一和方法二任选一种。另一种请屏蔽掉。否则就是显示两位数了
    }
}

你可能感兴趣的:(单片机,单片机,51单片机)