yuhang_yayahei 2019-05-10 15:35 采纳率: 0%
浏览 385

单片机求教,倒计时的时候十位每次中断的时候闪烁一次,怎么改啊?谢谢各位老哥,毕设急。

图片说明

#include <reg51.h> 
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit dy_R=P2^0;
sbit dy_Y=P2^1;
sbit dy_G=P2^2;
sbit dy_Z=P2^3;

sbit dx_R=P2^4;
sbit dx_Y=P2^5;
sbit dx_G=P2^6;
sbit dx_Z=P2^7;

sbit led_A=P3^4;//ge
sbit led_B=P3^5;//shi

void Q();
void W();
void E();
void R();
void T();
void Y();
void U();
void I();

uchar N,num,shi,ge;
uchar tab_disp[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6f};

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
 for(y=110;y>0;y--);
}

void display(char shi,char ge)
{   
    led_A=0;      
    P1=tab_disp[shi];   
  if(shi)led_B=1;
    delay(50);

    led_B=0; 
    P1=tab_disp[ge]; 
    led_A=1;
    delay(50);


}

void main() 
{ 

        TMOD = 0x01;
    TH0 = (65536 - 45872) / 256;   
    TL0 = (65536 - 45872) % 256;      
    EA = 1;                           
    ET0 = 1; 
    TR0 =1;

   while(1) 
 {       
     Q();
     W();
     E();
     R();
     T();
     Y();
     U();
     I();
 }
}
void Q()
{   
  uint N;
  N=60;
  while(N<=60&&N>0)    
        if(num==20)
     {
        num=0;

        shi=N/10;
        ge=N%10;
        N--;
        display(shi,ge); 
        dx_R=0;dx_Y=0;dx_G=1;dx_Z=0;
        dy_R=1;dy_Y=0;dy_G=0;dy_Z=0; 
     }  
}
void W()     
{   
  uint N;
  N=5; 
  while(N<=5&&N>0)
    if(num==20)
     {
        num=0;             
        shi=N/10;
        ge=N%10;
        N--;
        display(shi,ge);
        dx_R=0;dx_Y=1;dx_G=0;dx_Z=0;
        dy_R=0;dy_Y=1;dy_G=0;dy_Z=0;
          {
            delay(50);
                dx_Y=1;dy_Y=1;
      delay(50);
                dx_Y=0;dy_Y=0;
            }
     }  
}
void E()
{   
  uint N;
  N=20;
  while(N<=20&&N>0)    
        if(num==20)
     {
        num=0;             
        shi=N/10;
        ge=N%10;
        N--;
        display(shi,ge);
        dx_R=0;dx_Y=0;dx_G=0;dx_Z=1;
        dy_R=1;dy_Y=0;dy_G=0;dy_Z=0; 
     }  
}  
void R()     
{   
  uint N;
  N=5; 
  while(N<=5&&N>0)
    if(num==20)
     {
        num=0;             
        shi=N/10;
        ge=N%10;
        N--;
        display(shi,ge);
        dx_R=0;dx_Y=1;dx_G=0;dx_Z=0;
        dy_R=0;dy_Y=1;dy_G=0;dy_Z=0;
          {
                delay(50);
                dx_Y=1;dy_Y=1;
      delay(50);
                dx_Y=0;dy_Y=0;
            }
     }  
}
void T()
{   
  uint N;
  N=60;
  while(N<=60&&N>0)    
        if(num==20)
     {
        num=0;             
        shi=N/10;
        ge=N%10;
        N--;
        display(shi,ge);
        dx_R=1;dx_Y=0;dx_G=0;dx_Z=0;
        dy_R=0;dy_Y=0;dy_G=1;dy_Z=0; 
     }  
}
void Y()     
{   
  uint N;
  N=5; 
  while(N<=5&&N>0)
    if(num==20)
     {
        num=0;             
        shi=N/10;
        ge=N%10;
        N--;
        display(shi,ge);
        dx_R=0;dx_Y=1;dx_G=0;dx_Z=0;
        dy_R=0;dy_Y=1;dy_G=0;dy_Z=0;
          {
                delay(50);
                dx_Y=1;dy_Y=1;
      delay(50);
                dx_Y=0;dy_Y=0;
            }
     }  
}
void U()
{   
  uint N;
  N=20;
  while(N<=20&&N>0)    
        if(num==20)
     {
        num=0;             
        shi=N/10;
        ge=N%10;
        N--;
        display(shi,ge);
        dx_R=1;dx_Y=0;dx_G=0;dx_Z=0;
        dy_R=0;dy_Y=0;dy_G=1;dy_Z=1; 
     }  
}
void I()     
{   
  uint N;
  N=5; 
  while(N<=5&&N>0)
    if(num==20)
     {
        num=0;             
        shi=N/10;
        ge=N%10;
        N--;
        display(shi,ge);
        dx_R=0;dx_Y=1;dx_G=0;dx_Z=0;
        dy_R=0;dy_Y=1;dy_G=0;dy_Z=0;
          {
                delay(50);
                dx_Y=1;dy_Y=1;
      delay(50);
                dx_Y=0;dy_Y=0;
            }
     }  
}
void time_() interrupt 1
{
 TH0 = (65536 - 45872) / 256;
 TL0 = (65536 - 45872) % 256;   
 num++; 
}   








  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥30 用arduino开发esp32控制ps2手柄一直报错
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题
    • ¥15 Visual Studio问题
    • ¥20 求一个html代码,有偿