标题:
51单片机:从00到99,自动计数+蜂鸣器
[打印本页]
作者:
51黑芯片
时间:
2016-1-17 01:16
标题:
51单片机:从00到99,自动计数+蜂鸣器
//从0到99计数
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^5;
sbit wei=P2^6;
sbit FM=P2^3;
uchar bai,shi,ge,tt=0,temp;
const unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void disp(uchar shi,uchar ge)
{
duan=1;
P0=table[shi];
duan=0;
wei=1;
P0=0x4;
wei=0;
delay(1);
duan=1;
P0=table[ge];
duan=0;
wei=1;
P0=0x08;
wei=0;
delay(1);
}
void didi(di_num)
{
uchar d;
for(d=di_num;d>0;d--)
{
FM=0;
delay(300);
FM=1;
delay(70);
}
}
void main()
{
init();
while(1)
{
if(tt==20)
{
tt=0; //清零,以便之后再次累计
temp++;
shi=temp/10;
ge=temp%10;
if(temp==100){didi(1);temp=0; }
}
disp(shi,ge); //这句放在上面的括号内会出现只显法个位,十位百位均显不出来
}
}
void tming0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1