共阳极数码管、共阴极七段数码管显示代码。数码管和按键与单片机的连接接法如下:
三、按键处理与显示程序设计
任务:按下按键,显示对应的键值0、1、2、3、4、5、6、7。
程序设计思路:判断连接在P3口的按键按下,根据按键按下端口对应的值,对P2口输出相应的共阳极数码管显示段码。
1、if语句编写程序
/************************************************
按键显示程序
设计:黄有全
2010年10月7日
关键词:if语句、switch-case语句应用
单片机硬件连接:P3口接按键,P2口接共阳极数码管,静态显示。
************************************************/
#include<at89x52.h>
unsigned char duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0xc7,0x8c,0xbf,0xff};
//数组,定义共阳极数码管显示段码:0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,H,L,P,-,熄灭。
void delay(int i) //延时函数,带参数i。
{ //在调用函数时通过设置参数,改变延时时间。
int j=0,k=0;
for(j=0;j<i;j++)
for(k=0;k<164;k++);
}
main()
{
while(1)
{
P3=0xff; //按键接口P3置1。
if(P3==0xfe){P2=0xc0 ;delay(500);} //P3.0按键按下,显示0
else if(P3==0xfd){P2=0xf9 ;delay(500);} //P3.1按键按下,显示1
else if(P3==0xfb){P2=0xa4 ;delay(500);} //P3.2按键按下,显示2
else if(P3==0xf7){P2=0xb0 ;delay(500);} //P3.3按键按下,显示3
else if(P3==0xef){P2=0x99 ;delay(500);} //P3.4按键按下,显示4
else if(P3==0xdf){P2=0x92 ;delay(500);} //P3.5按键按下,显示5
else if(P3==0xbf){P2=0x82 ;delay(500);} //P3.6按键按下,显示6
else if(P3==0x7f){P2=0xf8 ;delay(500);} //P3.7按键按下,显示7
}
}
2、switch-case语句程序设计
/************************************************
按键显示程序
设计:黄有全
2010年10月7日
关键词:if语句、switch-case语句应用
单片机硬件连接:P3口接按键,P2口接共阳极数码管,静态显示。
************************************************/
#include<at89x52.h>
unsigned char duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0xc7,0x8c,0xbf,0xff};
//数组,定义共阳极数码管显示段码:0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,H,L,P,-,熄灭。
void delay(int i) //延时函数,带参数i。
{ //在调用函数时通过设置参数,改变延时时间。
int j=0,k=0;
for(j=0;j<i;j++)
for(k=0;k<164;k++);
}
main()
{
while(1)
{
P3=0xff; //按键接口P3置1
switch(P3)
{
case 0xfe: P2=0xc0;delay(500);break; //P3.0按键按下,显示0。
case 0xfd: P2=0xf9;delay(500);break; //P3.1按键按下,显示1
case 0xfb: P2=0xa4;delay(500);break; //P3.2按键按下,显示2
case 0xf7: P2=0xb0;delay(500);break; //P3.3按键按下,显示3
case 0xef: P2=0x99;delay(500);break; //P3.4按键按下,显示4
case 0xdf: P2=0x92;delay(500);break; //P3.5按键按下,显示5
case 0xbf: P2=0x82;delay(500);break; //P3.6按键按下,显示6
case 0x7f: P2=0xf8;delay(500);break; //P3.7按键按下,显示7
}
}
}
四、课堂任务:
按键名称用字母定义,按下按键,显示A、b、C、d、E、F、g、H。分别用if语句和switch-case语句编写程序,实现这个功能。