没有电路图,没法写。
给你一个在我开发板上实现的程序吧
#include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
sbit ENLED = P1^4; //这是一个3-8译码器
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
void refresh();
void time0_ini();
void ini_ini();
uint16 count = 0;
uint8 s[2]; //十位与个位
code uint8 num[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83
,0xa7,0xa1,0x86,0x8e};
main()
{
ENLED = 0;
ADDR3 = 1;
time0_ini();
ini_ini();
while (1);
}
void refresh()
{
static uint8 j = 0;
switch (j)
{
case 0:{ADDR0 = 0;ADDR1 = 0;ADDR2 = 0;P0 = num[s[0]];break;}
case 1:{ADDR0 = 1;ADDR1 = 0;ADDR2 = 0;P0 = num[s[1]];break;}
}
j++;
if (j == 2)
j = 0;
}
void time0_ini()
{
TMOD |= 0x01; //定时器0 定时1ms
TMOD &= 0xfd;
TH0 = 0xfc;
TL0 = 0x67;
TR0 = 1;
}
void ini_ini()
{
EA = 1;
ET0 = 1;
}
void interrupt_time0() interrupt 1
{
static uint32 sec = 0;
TF0 = 0; // 可写可不写
TH0 = 0xfc;
TL0 = 0x67;
count++;
if (count == 1000)
{
sec++;
count = 0;
s[0] = sec/1%10;
s[1] = sec/10%10;
}
if (s[0] == 9 && s[1] == 5)
{
s[0] = 0;
s[1] = 0;
}
refresh();
}
追问请问狮子自己写的还是上网找的?