买的是普中的板子,控制数码管位数的芯片是74ls138。
#include <regx52.H>
#include <INTRINS.H>
//延时函数,xms等于1,此函数延时一毫米
void DelayMs(unsigned int xms)
{
unsigned char i, j;
while(xms){
i=2;
j=239;
do{
while(--j);
}while(--i);
xms--;
}
}
//Location输入需要显示的第几位数码管,Number输入显示此数码管显示的数字
void smg(unsigned char Location,Number){
unsigned char smgWeiShu[] = {0xe3,0xe7,0xeb,0xef,0xf3,0xf7,0xfb,0xff};
unsigned char smgNumber[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
P2=smgWeiShu[Location];
P0=smgNumber[Number];
//数码管消影
DelayMs(1);
P0=0x00;
}
void main(){
unsigned int i =0;
while(1){
//当按键1按下,数码管加一
if(P3_1==0){
DelayMs(20);
while(P3_1==0);
DelayMs(20);
//当数码管数等于9时,不能再加
if(i<9){
i++;
}
smg(0,i);
}
//当按键2按下,数码管减一
else if(P3_0==0){
DelayMs(20);
while(P3_0==0);
DelayMs(20);
//当数码管数等于0时,不能再减
if(i>0){
i--;
}
DelayMs(20);
smg(0,i);
}
//当没有按键按下的时候,数码管原来是什么就是什么
else{
smg(0,i);
}
}
}