蓝桥杯——数码管

1.数码管原理图说明

        首先从官方原理图中找到DS1和DS2数码管原理图,如下:

蓝桥杯——数码管

从原理图上可以看出,二极管显示和具体位置都受到P0端口的控制;在数码管初始化时,可以通过改变P0具体数值来进行具体位置数字显示,如:P0=0X01时,对应与DS1第一位置上显示数字;对于单个二极管当值为0时亮。

注释:单个二极管数字0—9显示表:0—0XC0;1—0XF9;2—0XA4;3—0XB0;4—0X99;5—0X92;6—0X82;7—0XF8;

8—0X80;9—0X90;

2.按键对于二极管控制原理图

蓝桥杯——数码管

        如果要用按键P30—P36时,J5要接2和3,要用P37时,J5要接1和2;对于P30对应于S7,当S7按下去时,P30=0;

同理可知:P31与S6、P32与S5、P33与S4;

3.实现功能的具体例子

3.1 实现具体位置数字显示

#include<stc15f2k60s2.h>
void main(){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF; //初始化,第一个P0=0X01对应DS1第一个位置显示数字;
while(1){
P0=0xA4; //	显示数字2;
}
}

3.2 通过按键控制数码管

#include<stc15f2k60s2.h>
void keycan();//按键函数声明;
void delay();  //延迟函数声明;
void main(){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;	// 初始化,DS1第一个位置显示数字;
while(1){
keycan();
}
}
 //通过按键控制显示的数字
void keycan(){
if(P30==0){
     delay();
	 if(P30==0){
	 P0=0XF8;  //数字7
	 }
   while(!P30);
}
else if(P31==0){
     delay();
	 if(P31==0){
	 P0=0X82;	//数字6;
	 }
	 while(!P31);
	 }
else if(P32==0){
     delay();
	 if(P32==0){
	 P0=0X92;	//数字5;
	 }
	 while(!P32);
	 }
else if(P33==0){
     delay();
	 if(P33==0){
	 P0=0X99;	 //数字4;
	 }
	 while(!P33);
	 }
}
//定义延时函数delay
void delay(){
unsigned int i,j;
for(i=0;i<80;i++)
for(j=0;j<600;j++);
}


也可以通过数组的方式实现按键控制数码管,此处省略。

4.结论与要求

        1、数码管部分也比较简单,熟练掌握原理图,知道每个接口的用处;

        2、实现数码管在具体位置显示具体数字的例子(如;在DS2第三个数码管显示9);

        

蓝桥杯——数码管蓝桥杯——数码管 范飓飞 发布了14 篇原创文章 · 获赞 11 · 访问量 3024 私信 关注
上一篇:蓝桥杯单片机综合练习7


下一篇:Keil报错: C275: expression with possibly no effect和error C141: syntax error near '='