直接给你写一个吧
#include
void delay(unsigned int i); //这个函数自己写出来
int key = 0;
sbit key1 = P?? ;//哪个管教不知道
sbit key2 = P/?;
sbit ge = P??;
sbit shi = P??;
//此表为 LED 的字模, 共阴数码管 0-9 -
unsigned char code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
void keykey()
{
if(key1 == 1)//默认高电平是按键按下
{
delay(5);
if(key1 == 1)
{
key++;
}
}
else if(key2 == 1)//默认高电平是按键按下
{
delay(5);
if(key2 == 1)
{
key--;
}
}
if(key >99) //防止越界 也可以用与的方式写 key &= 0x63;这句话就能顶了下面俩判断
key = 0;
else if(key < 0)
key = 99;
}
void display(int x)
{
P0 = tap[x%10];
ge = 1;
delay(10);
ge = 0;
delay(10);
P0 =tap[x/10];
shi = 1;
delay(10);
shi = 0;
delay(10);
}
void main(void)
{
while(1)
{
display(key);
keykey();
}
}
直接手打的,没有验证,根据以前写过的随便给你写了一个,你自己看看吧
# include
# define uint unsigned int
# define uchar unsigned char
sbit K2 = P3^7; //按键
sbit K3 = P3^6;
sbit W1 = P3^2; //位选
sbit W2 = P3^1;
uint num, shi, ge;
uchar code table[]={0xc0,0xf9,0xa4,0xb0, // 数码管 共阳
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
void delay();
void display();
void key();
void K();
void main()
{
shi = 0;
ge = 0;
num = 10;
while (1)
{
K();
display();
key();
K();
}
}
void delay(xms) //延时程序
{
uchar x, y;
for (x=xms; x>0; x--)
for (y=110; y>0; y--);
}
void display() //数码管显示
{
shi = num / 10;
ge = num % 10;
W1 = 0;
P1 = table[shi];
delay(10);
W1 = 1;
W2 = 0;
P1 = table[ge];
delay(10);
W2 = 1;
}
void key()
{
if (0 == K2) // 低电平 按下键
{
delay(10); //去抖
if (0 == K2)
{
num++;
if (99 == num) // 控制范围
{
num = 0;
}
}
while (!K2); // 松手检测
}
}
void K()
{
if (0 == K3) // 低电平 按下键
{
delay(10); //去抖
if (0 == K3)
{
num--;
if (num < 0) // 控制范围
{
num = 0;
}
}
while (!K3); // 松手检测
}
}
这我开发板写的 刚刚试了能用; 根据你的开发板原理图 改下
你硬件我都不知到怎么给你写,是用数码管显示还是液晶显示。
你还是把程序贴上来我给你找找错误吧