关于计数器的问题。
怎样让计数器计到规定的数,然后控制开关开闭?比如说计数器计到10,然后控制这个电路断开。。大神求解啊~
最佳答案:
#include<reg51.h> // 试试 10 开灯 36 关灯 图片传不上
unsigned char code LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit D1=P3^2;
sbit D2=P3^3;
sbit D3=P3^4;
sbit D4=P3^5;
sbit D7=P3^7;
char n=0,m=0;
int a=0;
void init()
{
TMOD=0x11;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=(65535-3000)/256;
TL1=(65535-3000)%256;
EA=1;
ET0=1;
ET1=1;
TR1=1;
TR0=1;
D1=0;
D2=0;
D3=0;
D4=0;
}
void main()
{
init();
while(1)
{
if( a == 10 ) { D7=0; } // 开灯
if( a == 36 ) { D7=1; } // 关灯
}
}
void time1() interrupt 3
{
TH1=(65535-3000)/256;
TL1=(65535-3000)%256;
m++;m%=4;
D4=1;D3=1;D2=1;D1=1;
switch(m)
{
case 0:P1=0xff;D4=0;P1=~LED[a/1000];break;
case 1:P1=0xff;D3=0;P1=~LED[(a/100)%10];break;
case 2:P1=0xff;D2=0;P1=~LED[(a/10)%10];break;
case 3:P1=0xff;D1=0;P1=~LED[a%10];break;
default:m=0;break;
}
}
void time0() interrupt 1 using 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
n++;
if(n>=10)
{
n=0;
a++;
a%=10000;
}
}
其 他 回 答: (共3条)
1楼
你这只要求断开,那什么数接通啊。而且这个计数值真是到10吗,再具体一点,才好给你确定一个具体的电路。是想用单片机控制呢,这个比较容易,还是只想用数字集成电路控制呢,这要同时考虑什么时候开关接通的。只断开,好办了,如计到10,二进制数是1010,则A3=1,A1=1,A3,A1接到与非门上,这样计到10时就输出一个低电平了,去断开开关。可是什么时候再接通啊?
2楼
用触发器做一个10进制计数器就可以了
查看更多相关问题 >>