
51单片机写一个两位数码管的静态秒表
我就会写一个的,不会写了。。。各位朋友用C写一个两位数码管秒表我写到这里不知道那个口怎么写了。#include<reg51.h>#defineucharunsignedc...
我就会写一个的,不会写了。。。
各位朋友 用C写一个两位数码管秒表 我写到这里不知道那个口怎么写了。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay ()
{
uchar i;
uint j;
for(i=0;i<200;i++)
for(j=0;j<1000;j++);
}
void main()
{
uchar i,j;
while(1)
{
for(i=0;i<10;i++)
{
P2=seg[i];
delay();
}
if (P2==0)
for(j=0;j<10;j++)
{P2=seg[j];
delay();}
}
} 展开
各位朋友 用C写一个两位数码管秒表 我写到这里不知道那个口怎么写了。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay ()
{
uchar i;
uint j;
for(i=0;i<200;i++)
for(j=0;j<1000;j++);
}
void main()
{
uchar i,j;
while(1)
{
for(i=0;i<10;i++)
{
P2=seg[i];
delay();
}
if (P2==0)
for(j=0;j<10;j++)
{P2=seg[j];
delay();}
}
} 展开
展开全部
两位跟一位电路不一样,一位时不必位选引脚,两位则必需指明位选的两个引脚,
两位时要轮询动态刷两个位,你这个delay方法不好使,要用时间中断处理
两位时要轮询动态刷两个位,你这个delay方法不好使,要用时间中断处理
更多追问追答
追问
我说的是静态的方式
追答
静态方式多个位就得多个锁存器,加在你的硬件成本的情况下你当然可以继续用静态方法来处理,那也得指明位选引脚啊,如个位,十位等,你都没有电路图,一个8段数码管和多个8段数码管是如何接的,你得先弄明白了,然后才能设计程序去操作它们
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两重循环,一重循环0到9显示个位,另外重循环显示10位
for(j=0;j<10;j++)
{
P0=seg[j];
for(i=0;i<10;i++)
{P2=seg[i];delay();}
}
for(j=0;j<10;j++)
{
P0=seg[j];
for(i=0;i<10;i++)
{P2=seg[i];delay();}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我给你个程序参考一下,用的是定时器定时,是六位动态显示。发你的邮箱过来
追问
我说的是静态的方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询