一般引脚:
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; //数码管位选2P1=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); //消除抖动 一般大约10msif(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; //CSsbit 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; //数码管位选2u8 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);//方法一和方法二任选一种。另一种请屏蔽掉。否则就是显示两位数了}
}