51单片机的程序(c语言版),用数码管进行倒计时。
#include<reg51.h>unsignedcharled_table[]={0x40,0x79,0x24,0x30,0x19,0x12,0x2,0x78,0,0x...
#include<reg51.h>
unsigned char led_table[]={0x40,0x79,0x24,0x30,0x19,0x12,0x2,0x78,0,0x10};
sbit led_ten=P3^0;
sbit led_single=P3^1;
main()
{
char count;
unsigned char ten,single;
int displaycount;
count=30;
led_ten=0;
led_single=0;
while(1)
{
while(count>=0)
{
count--;
ten=count/10;
single=count%10;
for(displaycount=20000;displaycount>0;displaycount--)
{
P2=led_table[ten];
led_ten=1;
led_ten=0;
P2=led_table[single];
led_single=1;
led_single=0;
}
}
count=30;
}
}
中
for(displaycount=20000;displaycount>0;displaycount--)
{
P2=led_table[ten];
led_ten=1;
led_ten=0;
P2=led_table[single];
led_single=1;
led_single=0;
}
这一段表示什么意思? 展开
unsigned char led_table[]={0x40,0x79,0x24,0x30,0x19,0x12,0x2,0x78,0,0x10};
sbit led_ten=P3^0;
sbit led_single=P3^1;
main()
{
char count;
unsigned char ten,single;
int displaycount;
count=30;
led_ten=0;
led_single=0;
while(1)
{
while(count>=0)
{
count--;
ten=count/10;
single=count%10;
for(displaycount=20000;displaycount>0;displaycount--)
{
P2=led_table[ten];
led_ten=1;
led_ten=0;
P2=led_table[single];
led_single=1;
led_single=0;
}
}
count=30;
}
}
中
for(displaycount=20000;displaycount>0;displaycount--)
{
P2=led_table[ten];
led_ten=1;
led_ten=0;
P2=led_table[single];
led_single=1;
led_single=0;
}
这一段表示什么意思? 展开
4个回答
展开全部
你是不是用2了锁存器啊。
P2=led_table[ten];
led_ten=1;//打开锁存器
led_ten=0;//关闭锁存期
存储10位
P2=led_table[single];
led_single=1;//打开锁存器
led_single=0;//关闭锁存器
存储个位
另外led_ten,led_single 你要先定义一下吧
P2=led_table[ten];
led_ten=1;//打开锁存器
led_ten=0;//关闭锁存期
存储10位
P2=led_table[single];
led_single=1;//打开锁存器
led_single=0;//关闭锁存器
存储个位
另外led_ten,led_single 你要先定义一下吧
更多追问追答
追问
模拟一个红绿灯路口的交替通行功能,每个路口通行30秒。
即:红数码管从30秒开始,逐一减到0,红数码管停止显示。蓝色数码管从30秒开始逐一减到0,蓝色数码管停止显示,红色数码管重新开始,并交替轮流
这个我弄不懂让数码管停止显示,display不是显示数据的意思么?我在想怎么让数码管30秒不显示?所以看不懂那段。
追答
错了 刚看到图 不是锁存器,你的那个液晶在Proteus名字是什么?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很简单,就是循环扫描两万次,要是扫描的次数少了,你的眼睛是看不到亮的,
led_single=1;//
led_single=0;//
这两句就是控制显示的=1者亮,0者关
显示两万次,
30的减一计数器,每减一就显示两万次,这个两万次也可能就一秒或几秒,看你单片机的时钟频率。
led_single=1;//
led_single=0;//
这两句就是控制显示的=1者亮,0者关
显示两万次,
30的减一计数器,每减一就显示两万次,这个两万次也可能就一秒或几秒,看你单片机的时钟频率。
追问
哦,明白了,谢谢。不过,我发现扫描的次数少,眼睛仍然看到亮啊,不过数字显示不规则。怎样才能让他不显示啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数码管显示2个数字,共显示2万次。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Led_ten ,Led_single 你要设置用来控制谁的信号?
追问
模拟一个红绿灯路口的交替通行功能,每个路口通行30秒。
即:红数码管从30秒开始,逐一减到0,红数码管停止显示。蓝色数码管从30秒开始逐一减到0,蓝色数码管停止显示,红色数码管重新开始,并交替轮流
这个我弄不懂让数码管停止显示,display不是显示数据的意思么?我在想怎么让数码管30秒不显示?所以看不懂那段。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询