-
用C51做一個24秒計數(shù)器
原理圖如下:
24秒計數(shù)器.png
代碼如下:
#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];
//延時不準(zhǔn),可以用定時器做
delay500ms();
//delay500ms();
}
}
}
- 運用定時器做 從00計數(shù)到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;
}
}
}