-
用C51做一个24秒计数器
原理图如下:
代码如下:
#include <reg52.h>
void delay500ms()
{
int i,j,k;
for( i=0;i<10/2;i++)
{
for(j=0;j<180;j++)
{
for(k=0;k<200;k++)
{
}
}
}
}
void main()
{
char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int i;
int time=0;
while(1)
{
for(i=1;i<=60;i++)
{
if(i==60 | (i%10 == 5 && i/10 == 2))
{
i=0;
continue;
}
P2=table[i%10];
P1=table[i/10];
//延时不准,可以用定时器做
delay500ms();
//delay500ms();
}
}
}
- 运用定时器做 从00计数到99 原理图一样
代码如下:
#include <reg52.h>
#define uint unsigned int;
uint num = 0,num1 = 0;
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
while(1);
}
char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main()
{
init();
}
void T0_time() interrupt 1
{
TMOD=0x01;
TH0=(65536-50000)/256;
num++;//
if(num==20)//
{
num1++;
P2=table[num1%10];
P1=table[num1/10];
num=0;//
if (num1/10 == 9 && num1%10 == 9)
{
num1 = 0;
}
}
}