单片机怎么写才能让led灯每隔5秒亮下一个并且数码管一直从5到0显示倒计时? 200

题目要求就是每隔5秒变换下一个led灯亮,而且数码管有5到0这样的循环倒计时。板子电路图如下还有型号都在下面... 题目要求就是每隔5秒变换下一个led灯亮,而且数码管有5到0这样的循环倒计时。板子电路图如下还有型号都在下面 展开
 我来答
无畏无知者

2021-06-18 · TA获得超过4.5万个赞
知道大有可为答主
回答量:2.1万
采纳率:86%
帮助的人:5195万
展开全部

设为共阳极七段数码管;

char  segCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} //共阳极七段码

 char  bitCode[]={0x01,0x02,0x04,0x08,0x10,0x20} //共阳极6位位码,高电平有效

/***在指定位显示数据***/

// m为待显示的七段码数据

// k为指定的位显示数据

void show(char m,char k)

{  char dat;

   dat = segCode[m];  // m=0,1,2,3,4,5,6,7,8,9

   HC573(dat,1);      //输出段码

   dat = bitCode[k];  // k=0,1,2,3,4,5

   HC573(dat,2);      //输出位码

}

sbit segm = P2^6;  //段锁存

sbit bitc = P2^7;  //位锁存

/*** HC573 接收锁存数据***/

void HC573(char dat,char nub)

{

    P0=dat;

    if(nub==1)

    { segm=1;segm=0;}      //输出段锁存信号

    if(nub==2)

    { bitc = 1;bitc = 0;}  //输出位锁存信号

}

bit intflag;

void main()

{   char times;
intflag=0;  times=5;

    P1=0xff;

   initime0() ;   //初始化定时器0

    while(1)

   {  if(intflag) 

      {   intflag=0 ;  

          show(times,0) ;   // 因为仅有一位显示,不考虑位扫描问题

          times--;

          if(times==0) { times=5; P1=~P1; }

      }

   }

}

小灰狼Y
2021-06-18 · TA获得超过266个赞
知道小有建树答主
回答量:557
采纳率:81%
帮助的人:74.4万
展开全部
题目不难,作业还是自己做比较好。

可以用定时器做倒计时,数码管显示倒计时;
倒计时结束,就更改LED状态。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式