#include <reg52.h>
#define Dataport P0
sbit key_add=P3^2;
sbit key_dec=P3^3;
sbit wei_latch=P2^3;
sbit duan_latch=P2^2;
unsigned char code duan_ma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段码1~9显示
unsigned char code wei_ma[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//维玛第一个数码管到最后一个
unsigned char temp[8];
//函数申明
void display(unsigned char firstbit,unsigned char Num);
void delay2x(unsigned char t);
void delayMs(unsigned char t);
main()
{unsigned int num=0;
key_add=1; //按键输入端口电平置高
key_dec=1;
while(1)
{
if(!key_add)
{delayMs(10);
if(!key_add)
{
while(!key_add)
{
if(num<99)
num++;
}
}
}
if(!key_dec)
{
delayMs(10);
if(!key_dec)
{
while(!key_dec)
{
if(num>0)
num--;
}
}
}
temp[0]=duan_ma[num/10];
temp[1]=duan_ma[num%10];
display(0,8);
}
}
void display(unsigned char firstbit,unsigned char Num)
{
unsigned int i;
for(i=0;i<Num;i++)
{
Dataport=0;
duan_latch=1;
duan_latch=0;
Dataport=wei_ma[i+firstbit];
wei_latch=1;
wei_latch=0;
Dataport=temp[i];
duan_latch=1;
duan_latch=0;
delay2x(200);
//delayMs(1);
}
}
void delay2x(unsigned char t)
{
while(--t);
}
void delayMs(unsigned char t)
{
while(t--);
{
delay2x(245);
delay2x(245);
}
}
以上是我仿照例子写的按键来实现数字的加减。但是按一下加号键就直接跳到99,减号键就直接跳到00.
|