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 私信 关注