物联网221 第一次测试代码 ZW
环境:proteus 15.0、keil 5
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define SEG P1
#define WEI P2
sbit k11=P3^2;
sbit k22=P3^3;
sbit k0=P0^0;
sbit k1=P0^1;
sbit k2=P0^2;
sbit k3=P0^3;
sbit k4=P0^4;
sbit k5=P0^5;
sbit k6=P0^6;
sbit k7=P0^7;
char num1[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
char num2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
char num3[]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x09};//0.
uint a,b,i,j;
uint s1,s2,f1,f2,m1,m2,jishu=0,count=0;
int s=22;
int f=59;
int m=55;
void delay(int x);
void init();
void jisuan();
void display();
void judge();
void xianshi();
void fanfu();
main()
{
init();
while(1)
{
xianshi();
jishu++;
judge();
jisuan();
display();
}
}
void delay(int x)//1ms
{
for(i=0;i<x;i++)
for(j=0;j<=120;j++);//12000
}
void fanfu()
{
m=m+1;
if(m==60)
{
m=0;
f=f+1;
if(f==60)
{
f=0;
s=s+1;
}
if(s==24)
{
s=0;
}
}
}
void xianshi()
{
if(count==1)
{
if(jishu==50)
{
jishu=0;
fanfu();
}
}
}
void judge()
{
if(k0==0)
{
delay(20);
if(k0==1)
{
s=s+1;
if(s==24)
s=0;
}
}
if(k1==0)
{
delay(20);
if(k1==1)
{
s=s-1;
if(s<0)
s=23;
}
}
if(k2==0)
{
delay(20);
if(k2==1)
{
f=f+1;
if(f==60)
f=0;
}
}
if(k3==0)
{
delay(20);
if(k3==1)
{
f=f-1;
if(f<0)
f=59;
}
}
if(k4==0)
{
delay(20);
if(k4==1)
{
m=m+1;
if(m==60)
m=0;
}
}
if(k5==0)
{
delay(20);
if(k5==1)
{
m=m-1;
if(m<0)
m=59;
}
}
if(k6==0)
{
delay(20);
if(k6==1)
{
jishu=0;
if(count==0)
{
count=1;
k7=0;
}
else if(count==1)
{
count=0;
k7=1;
}
}
}
}
void jisuan()
{
s1=s/10;
s2=s-(s1*10);
f1=f/10;
f2=f-(f1*10);
m1=m/10;
m2=m-(m1*10);
}
void display()
{
SEG = num1[s1];
WEI = num2[0];
delay(2);
WEI = 0x00;
delay(1);
SEG = num1[s2];
WEI = num2[1];
delay(2);
WEI = 0x00;
delay(1);
SEG = 0xfd;
WEI = num2[2];
delay(2);
WEI = 0x00;
delay(1);
SEG = num1[f1];
WEI = num2[3];
delay(2);
WEI = 0x00;
delay(1);
SEG = num1[f2];
WEI = num2[4];
delay(2);
WEI = 0x00;
delay(1);
SEG = 0xfd;
WEI = num2[5];
delay(2);
WEI = 0x00;
delay(1);
SEG = num1[m1];
WEI = num2[6];
delay(2);
WEI = 0x00;
delay(1);
SEG = num1[m2];
WEI = num2[7];
delay(2);
WEI = 0x00;
delay(1);
}
void init()
{
EA = 1;
EX0 = 1;
IT0 = 1;
EX1 = 1;
IT1 = 1;
}
void ex0_intr() interrupt 0
{
if(k11==0)
{
fanfu();
}
}
void ex1_intr() interrupt 2
{
if(k22==0)
{
m=m-1;
}
}
电路图:
该设计代码与电路还未进行优化,只可实现基本功能。