找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 887|回复: 3
打印 上一主题 下一主题
收起左侧

单片机设计把led灯的代码加到主函数后数码管就不亮了

[复制链接]
跳转到指定楼层
楼主
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
char s;
uchar num=0;
char time=20;
char datitime=30;
uint tt,t1;
bit flag,s_flag=1,b_flag,fall_flag,fw_flag;

sbit K0=P3^0;
sbit beep=P3^7;        

sbit K1=P1^0;       
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit D1=P1^4;
sbit D2=P1^5;
sbit D3=P1^6;
sbit D4=P1^7;

sbit K_fw=P3^2;       
sbit K_Time=P3^5;
void delay(uchar ms)
{
        uchar y;
        for(;ms>0;ms--)
                for(y=120;y>0;y--);
}
uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code tablewe[]={0XFE,0XFD,0XFB,0XF7};
void T0_Init(void)
{
        TMOD=0X01;
        TH0=(65536-2000)/256;
        TL0=(65536-2000)%256;
        TH1=(65536-2000)/256;
        TL1=(65536-2000)%256;
        ET0=1;
        ET1=1;
        EX0=1;
        EA=1;
        IT0=1;
        P0=0;
}
void Key_Scan(void)       
{
        if(K0==0)
        {
                delay(10);
                if(K0==0)
                {
                        while(!K0);
                        TR0=1;
                        s=time;
                        tt=0;
                        flag=1;
                        s_flag=1;
                        b_flag=1;
                        num=0;
                        beep=1;
                        fall_flag=0;

                }
        }
}
void Scan(void)       
{
        if(K1==0)
        {
                delay(10);
                if(K1==0)
                {
                        while(!K1);
                        num=1;       
                        TR0=0;       
                        TR1=1;               
                        s_flag=0;
                }
        }
        if(K2==0)               
        {
                delay(10);
                if(K2==0)
                {
                        while(!K2);
                        num=2;               
                        TR0=0;
                        TR1=1;
                        s_flag=0;
                }
        }
        if(K3==0)
        {
                delay(10);
                if(K3==0)
                {
                        while(!K3);
                        num=3;
                        TR0=0;
                        TR1=1;
                        s_flag=0;
                }
        }
        if(K4==0)
        {
                delay(10);
                if(K4==0)
                {
                        while(!K4);
                        num=4;
                        TR0=0;
                        TR1=1;
                        s_flag=0;
                }
        }

}
void display(void)
{
        if(flag==1)               
        {
                if(num!=0)       
                {
                        P0=tabledu[num];       
                        P2=tablewe[0];
                        delay(2);
                        P0=0;
                        P2=0XFF;
                }
                else       
                {
                        P0=0;               
                        P2=0XFF;
                }
                P0=tabledu[s/10];               
                P2=tablewe[2];
                delay(2);
                P0=0;
                P2=0XFF;
                P0=tabledu[s%10];
                P2=tablewe[3];
                delay(2);
                P2=0XFF;
                P0=0;
        }
        else       
        {
                if(fall_flag==1)       
                {
                        if(num!=0)
                        {
                                P0=tabledu[num];       
                                P2=tablewe[0];
                                delay(2);
                                P0=0;
                                P2=0XFF;
                                P0=tabledu[15];       
                                P2=tablewe[2];
                                delay(2);
                                P0=0;       
                                P2=0XFF;
                                P0=tabledu[15];
                                P2=tablewe[3];
                                delay(2);
                                P0=0;
                                P2=0XFF;
                        }
                        else               
                        {
                                P0=0;               
                                P2=0XFF;
                        }
                }
                        else       
                        {
                                P0=tabledu[15];
                                P2=tablewe[0];
                                delay(2);
                                P0=0;
                                P0=tabledu[15];
                                P2=tablewe[2];
                                delay(2);
                                P0=0;       
                                P2=0XFF;
                                P0=tabledu[15];
                                P2=tablewe[3];
                                delay(2);
                                P0=0;
                                P2=0XFF;
                        }       
                }       
}


void main(void)
{
        T0_Init();
        while(1)
        {
           if(K0==0)
           {
              D1=0;
                }
        }
        {
                Key_Scan();       
                if((flag==0)&(s_flag==1))       

                if((flag==1)&(s_flag==0))
                {
                        if(K_Time==0)
                        {
                                delay(10);
                                if(K_Time==0)
                                {
                                        while(!K_Time);
                                        s=datitime;
                                        TR0=1;
                                        tt=0;
                                        TR1=1;
                                }
                        }
                }       
                if((flag==0)&(s_flag==1))
                {
                        Scan();
                        if(num!=0)               
                        {
                                fall_flag=1;

                        }
                }
                if((flag==1)&(s_flag==1))
                {
                        Scan();
                }       
                display();       
        }
}

void int0(void) interrupt 0
{
        if(K_fw==0)
        {       
        while(!K_fw)
        {
                   while(K0==1)
                {P0=tabledu[15];
                P2=tablewe[0];
                delay(2);
                P0=0;
                P0=tabledu[15];
                P2=tablewe[2];
                delay(2);
                P0=0;
                P2=0xFF;
                P0=tabledu[15];
                P2=tablewe[3];
                delay(2);
                P0=0;
                P2=0xFF;}       
        }
        }
}
void timer0(void) interrupt 1
{
        TH0=(65536-2000)/256;        //2ms
        TL0=(65536-2000)%256;
        if(b_flag)
        {
                beep=~beep;
        }
        else
        beep=1;
        if(s<5)       
        {
                if(s%2==0)
                {
                        b_flag=1;
       
                }
                else
                {
                        b_flag=0;

                }
        }
        tt++;       
        if(tt==500)               
        {
                tt=0;
                s--;
                b_flag=0;
                if(s==-1)
                {
                        s=20;       
                        TR0=0;
                        flag=0;       
                        s_flag=1;
                        num=0;

                }
        }
}
void timer1(void) interrupt 3       
{
        TH1=(65536-2000)/256;
        TL1=(65536-2000)%256;
        beep=~beep;
        t1++;
        if(t1==500)
        {
                t1=0;
                TR1=0;
        }
}
单片机设计把led灯的代码加到主函数后数码管就不亮了,但是把led灯的拿掉后又出来了.

{)8{`A0WIR3NAU$CK5`V52E.png (59.32 KB, 下载次数: 10)

{)8{`A0WIR3NAU$CK5`V52E.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2022-6-2 09:23 | 只看该作者
这是什么缝合怪代码?
如果你说的led灯代码是下面箭嘴所指的那段
你的C 语言要补一补课了
  1. void main(void)
  2. {
  3.         T0_Init();
  4.         while(1)
  5.         {//<<<<<<<<<<<<<<<
  6.                 if(K0==0)
  7.                 {
  8.                         D1=0;
  9.                 }
  10.         }//<<<<<<<<<<<<<<<
  11.         {
  12.                 Key_Scan();
  13.                 if((flag==0)&(s_flag==1))

  14.                         if((flag==1)&(s_flag==0))
  15.                         {
  16.                                 if(K_Time==0)
  17.                                 {
  18.                                         delay(10);
  19.                                         if(K_Time==0)
  20.                                         {
  21.                                                 while(!K_Time);
  22.                                                 s=datitime;
  23.                                                 TR0=1;
  24.                                                 tt=0;
  25.                                                 TR1=1;
  26.                                         }
  27.                                 }
  28.                         }
  29.                 if((flag==0)&(s_flag==1))
  30.                 {
  31.                         Scan();
  32.                         if(num!=0)
  33.                         {
  34.                                 fall_flag=1;

  35.                         }
  36.                 }
  37.                 if((flag==1)&(s_flag==1))
  38.                 {
  39.                         Scan();
  40.                 }
  41.                 display();
  42.         }
  43. }
复制代码
回复

使用道具 举报

板凳
ID:979299 发表于 2022-6-2 10:38 | 只看该作者
void main(void)
{
         T0_Init();
         while(1)
         {
            if(K0==0)
            {
               D1=0;
                 }
         }《《《《《《《《《《程序到此不再往下,要么改复合方式,要么加控制语句,要看你想要同时运行还是分时运行
         {
                 Key_Scan();        
回复

使用道具 举报

地板
ID:735831 发表于 2022-6-2 11:44 | 只看该作者
死循环,跑不出去理所应当,不跑出去哪来的数码管亮灭
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表