c语言,51单片机控制四位数码管从0000按秒计数到9999.外加一个按键控制暂停和开始。另一个按键控制按两秒计一次数。
自己编写的程序仿真不了,希望朋友们帮助一下。
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define smg P0
sbit button_1=P3^0;
sbit button_2=P3^1;
u16 k = 0;
u16 smgduan[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if (button_1 == 0)
{
delay(500);
if (button_1 == 0)
{
if (k>=9999)
{
k=0;
}
else
{
k = k + 1;
}
}
while(!button_1);
}
if (button_2 == 0)
{
delay(500);
if (button_2 == 0)
{
if (k<=0)
{
k=9999;
}
else
{
k = k-1;
}
}
while(!button_2);
}
}
void main()
{
int q,b,s,g;
while(1)
{
keypros();
q = k/1000;
b = k%1000/100;
s = k%100/10;
g = k%10;
delay(100);
P2 = 0x07;
smg = ~smgduan[q];
delay(5);
P2 = 0x0e;
smg = ~smgduan[b];
delay(5);
P2 = 0x0d;
smg = ~smgduan[s];
delay(5);
P2 = 0x0b;
smg = ~smgduan[g];
delay(5);
}
}