找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2397|回復(fù): 23
收起左側(cè)

99分鐘倒計(jì)時(shí)為什么顯示00?附單片機(jī)程序

[復(fù)制鏈接]
ID:72649 發(fā)表于 2023-9-21 04:36 | 顯示全部樓層 |閱讀模式
//99分倒計(jì)時(shí)
#include"stc8.h"
#include"intrins.h"

#define  uint unsigned int
#define  uchar unsigned char        
uchar A1,A2,count,second,min;

sbit ge = P1^1;            
sbit shi = P1^0;   

sbit LIGHT_JDQ = P3^7;   

uchar code table[]={        
        0x03,/*0*/
        0x9F,/*1*/
        0x25,/*2*/
        0x0D,/*3*/
        0x99,/*4*/
        0x49,/*5*/
        0x41,/*6*/
        0x1F,/*7*/
        0x01,/*8*/
        0x09,/*9*/};

//sbit a = P2^7;
//sbit b = P2^6;
//sbit c = P2^5;
//sbit d = P2^4;
//sbit e = P2^3;
//sbit f = P2^2;
//sbit g = P2^1;
//sbit h = P2^0;
//sbit LED_com = P3^1;
        
void IO_init();        
void delay(uchar i);
void T0_init();
void display(uchar sh_c,uchar g_c);        
        
void IO_init()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
}

void delay(uchar n)
{
        uchar j,k;
  for(j=n;j>0;j--)
    for(k=125;k>0;k--);
}

void T0_init()
{
                AUXR |= 0x80;                        //定時(shí)器時(shí)鐘1T模式
                TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
                TL0 = 0xD7;                                //設(shè)置定時(shí)初始值50us
                TH0 = 0xFD;                                //設(shè)置定時(shí)初始值
    TR0 = 1;                                    //啟動(dòng)定時(shí)器
    ET0 = 1;                                    //使能定時(shí)器中斷
    EA = 1;
}

void display(uchar sh_c,uchar g_c)
{
   P2=0;
   P2=table[sh_c];
   ge = 0;
         shi = 1;
   delay(5);
        
   P2=0;
   P2=table[g_c];   
   shi = 0;
         ge = 1;
   delay(5);
}

void main()
  {
                 IO_init();
                 T0_init();
               
     while(1)
       {
                                         if(count = 0)
                      count = 20;
        
                second--;
                if(second = 0)
                      second = 60;
                                        min--;
                                        if(min = 0)
                                        min=99;
                                       
         A1=min/10;
         A2=min%10;
                                 display(A1,A2);
                         }
    }
        
void TM0_Isr() interrupt 1
{
                  TL0 = 0xD7;                                //設(shè)置定時(shí)初始值50us
            TH0 = 0xFD;                                //設(shè)置定時(shí)初始值
            count--;
}        

回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2023-9-21 09:12 | 顯示全部樓層
每次進(jìn)中斷都會(huì)進(jìn)行初始化
回復(fù)

使用道具 舉報(bào)

ID:466505 發(fā)表于 2023-9-21 09:23 | 顯示全部樓層
if(count = 0)  后面還有一個(gè)  if(second = 0)
回復(fù)

使用道具 舉報(bào)

ID:1064915 發(fā)表于 2023-9-21 09:57 | 顯示全部樓層
設(shè)置定時(shí)初始值50us
count = 20;
50us×20=1000us=1ms

TL0 = 0x00;                                //設(shè)置定時(shí)初始值5ms
TH0 = 0x28;                                //設(shè)置定時(shí)初始值
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-9-21 11:35 | 顯示全部樓層
問(wèn)題比較多,給你改了。
  1. //99分倒計(jì)時(shí)
  2. #include"stc8.h"
  3. #include "intrins.h"

  4. #define  uint unsigned int
  5. #define  uchar unsigned char      

  6. sbit ge = P1^1;            
  7. sbit shi = P1^0;   
  8. sbit LIGHT_JDQ = P3^7;   

  9. uchar count;
  10. char sec,min;
  11. bit flag;

  12. uchar code table[]={      
  13.         0x03,/*0*/
  14.         0x9F,/*1*/
  15.         0x25,/*2*/
  16.         0x0D,/*3*/
  17.         0x99,/*4*/
  18.         0x49,/*5*/
  19.         0x41,/*6*/
  20.         0x1F,/*7*/
  21.         0x01,/*8*/
  22.         0x09,/*9*/};

  23. //sbit a = P2^7;
  24. //sbit b = P2^6;
  25. //sbit c = P2^5;
  26. //sbit d = P2^4;
  27. //sbit e = P2^3;
  28. //sbit f = P2^2;
  29. //sbit g = P2^1;
  30. //sbit h = P2^0;
  31. //sbit LED_com = P3^1;
  32.       
  33. void IO_init();      
  34. //void delay(uchar i);
  35. void T0_init();
  36. void display();      
  37.       
  38. void IO_init()
  39. {
  40.         P0M0 = 0x00;
  41.         P0M1 = 0x00;
  42.         P1M0 = 0x00;
  43.         P1M1 = 0x00;
  44.         P2M0 = 0x00;
  45.         P2M1 = 0x00;
  46.         P3M0 = 0x00;
  47.         P3M1 = 0x00;
  48.         P4M0 = 0x00;
  49.         P4M1 = 0x00;
  50.         P5M0 = 0x00;
  51.         P5M1 = 0x00;
  52. }
  53. /*
  54. void delay(uchar n)
  55. {
  56.         uchar j,k;
  57.         for(j=n;j>0;j--)
  58.                 for(k=125;k>0;k--);
  59. }*/


  60. void T0_init()                                //5毫秒@11.0592MHz
  61. {
  62.         AUXR &= 0x7F;                        //定時(shí)器時(shí)鐘12T模式
  63.         TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
  64.         TMOD |= 0x01;                        //設(shè)置定時(shí)器模式
  65.         TL0 = 0x00;                                //設(shè)置定時(shí)初始值
  66.         TH0 = 0xEE;                                //設(shè)置定時(shí)初始值
  67.         TF0 = 0;                                //清除TF0標(biāo)志
  68.         TR0 = 1;                                //定時(shí)器0開始計(jì)時(shí)
  69.         ET0 = 1;                                //使能定時(shí)器0中斷
  70.         EA = 1;
  71. }

  72. void display()
  73. {
  74.         static bit i=0;
  75.         static uchar temp=0;
  76.         P2=0xff;
  77.         i=~i;
  78.         if(++temp>=200)temp=0;
  79.         if(i==1)
  80.         {
  81.                 ge  = 0;
  82.                 shi = 1;
  83.                 P2=table[min/10];
  84.         }
  85.         else
  86.         {
  87.                 ge  = 1;
  88.                 shi = 0;
  89.                 if(temp<100)
  90.                         P2=table[min%10]&0xfe;//閃秒
  91.                 else P2=table[min%10];
  92.         }
  93.         
  94. }

  95. void main()
  96. {
  97.         IO_init();
  98.         T0_init();
  99.         
  100.         while(1)
  101.         {
  102.                 if(flag)
  103.                 {
  104.                         flag=0;
  105.                         if(++count >= 200)
  106.                         {
  107.                                 count = 0;
  108.                                 sec--;
  109.                                 if(sec < 0)
  110.                                 {
  111.                                         sec = 59;
  112.                                         min--;
  113.                                         if(min < 0)
  114.                                                 min=99;
  115.                                 }
  116.                         }
  117.                         display();
  118.                 }
  119.         }
  120. }
  121.       
  122. void TM0_Isr() interrupt 1 //5毫秒
  123. {
  124.         TL0 = 0x00;                                //設(shè)置定時(shí)初始值
  125.         TH0 = 0xEE;                                //設(shè)置定時(shí)初始值
  126.         flag=1;
  127. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-9-21 12:31 | 顯示全部樓層
joyb 發(fā)表于 2023-9-21 09:57
設(shè)置定時(shí)初始值50us
count = 20;
50us×20=1000us=1ms

    TL0 = 0x66;                                 //65536-11.0592M/12/1000
    TH0 = 0xfc;
這樣設(shè)置也不行啊
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-9-21 12:31 | 顯示全部樓層
man1234567 發(fā)表于 2023-9-21 09:12
每次進(jìn)中斷都會(huì)進(jìn)行初始化

應(yīng)該怎樣修改
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-9-21 12:33 | 顯示全部樓層
hcfat51h 發(fā)表于 2023-9-21 09:23
if(count = 0)  后面還有一個(gè)  if(second = 0)

中斷計(jì)數(shù)到了一秒,秒繼續(xù)計(jì)數(shù)到一分鐘啊。怎樣修改?
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-9-21 12:47 | 顯示全部樓層
man1234567 發(fā)表于 2023-9-21 09:12
每次進(jìn)中斷都會(huì)進(jìn)行初始化

void TM0_Isr() interrupt 1
{
//    TL0 = 0x66;                                 //65536-11.0592M/12/1000
//    TH0 = 0xfc;                               //設(shè)置定時(shí)初始值
            count--;
}  屏蔽了也不行
回復(fù)

使用道具 舉報(bào)

ID:466505 發(fā)表于 2023-9-21 14:35 | 顯示全部樓層
hjx5548 發(fā)表于 2023-9-21 12:33
中斷計(jì)數(shù)到了一秒,秒繼續(xù)計(jì)數(shù)到一分鐘啊。怎樣修改?

你if后面括號(hào)里是賦值不是比較啊,,相當(dāng)每個(gè)循環(huán)執(zhí)行一次,定時(shí)器壓根沒(méi)用
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-9-25 06:32 來(lái)自觸屏版 | 顯示全部樓層
wulin 發(fā)表于 2023-9-21 11:35
問(wèn)題比較多,給你改了。

測(cè)試了你的代碼,應(yīng)該是9分鐘倒計(jì)時(shí),怎么改為99分鐘倒計(jì)時(shí)。
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-11-23 22:09 | 顯示全部樓層
wulin 發(fā)表于 2023-9-21 11:35
問(wèn)題比較多,給你改了。

參考你的代碼修改為四位倒計(jì)時(shí)(99:59倒計(jì)時(shí)),哪里不對(duì)?下面是代碼:
//99:59分倒計(jì)時(shí)
#include"stc8H.h"
#include "intrins.h"

#define  uint unsigned int
#define  uchar unsigned char

uchar count;
char sec,min;
bit flag,flag1,flag2,flag3;

sbit time_ge  = P1^3;
sbit time_shi  = P1^2;
sbit time_bai  = P1^1;
sbit time_qian  = P1^0;

sbit temp_ge  = P3^3;
sbit temp_shi  = P1^5;
sbit temp_bai  = P1^4;


uchar code table[]={      
        0x03,/*0*/
        0x9F,/*1*/
        0x25,/*2*/
        0x0D,/*3*/
        0x99,/*4*/
        0x49,/*5*/
        0x41,/*6*/
        0x1F,/*7*/
        0x01,/*8*/
        0x09,/*9*/};

void GPIO_init();
void T0_init() ;
void time_display();
void time_daojishi();

void GPIO_init()
{
    P0M0 = 0x00; P0M1 = 0x00;
    P1M0 = 0x00; P1M1 = 0x00;
    P2M0 = 0x00; P2M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;
}

void T0_init()                                //5毫秒@11.0592MHz
{
        AUXR &= 0x7F;                        //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
        TL0 = 0x00;                                //設(shè)置定時(shí)初始值
        TH0 = 0xEE;                                //設(shè)置定時(shí)初始值
        TF0 = 0;                                //清除TF0標(biāo)志
        TR0 = 1;                                //定時(shí)器0開始計(jì)時(shí)
        ET0 = 1;                                //使能定時(shí)器0中斷
        
}


void time_display()
{
        static bit i=0;
        static uchar temp=0;
        P2=0xff;
        i=~i;
        if(++temp>=200)temp=0;
        if(i==1)
        {
                time_ge  = 0;
                time_shi = 1;
                                              time_bai  = 1;
                time_qian  = 1;
                P2=table[min/10];
        }
                               

         else if(i==2)
        {
                time_ge  = 1;
                time_shi = 0;
                                              time_bai  = 1;
                time_qian  = 1;
                if(temp<100)
                P2=table[min%10]&0xfe;//閃秒
//                else P2=table[min%10];
        }
                               
                                else if(i==3)
        {
                time_ge  = 1;
                time_shi = 1;
                                              time_bai  = 0;
                time_qian  = 1;
                if(temp<60)
                P2=table[sec/10];
        }
                               
                                else if(i==4)
        {
                time_ge  = 1;
                time_shi = 1;
                                              time_bai  = 0;
                time_qian  = 1;
                if(temp<60)
                P2=table[sec%10]&0xfe;//閃秒
                else P2=table[min%10];
        }       
        
}

void main()
{
                GPIO_init();
                T0_init();
                       
                P2=table[8];       
                temp_ge  = 0;
                temp_shi  = 0;
                //temp_bai  = 0;
                       
                                                while(1)
                                                {
                                                                                if(flag)
                                                                                {
                                                                                                                flag=0;
                                                                                                                if(++count >= 200)
                                                                                                                {
                                                                                                                                                count = 0;
                                                                                                                                                sec--;
                                                                                                                                                if(sec < 0)
                                                                                                                                                {
                                                                                                                                                                                sec = 59;
                                                                                                                                                                                min--;
                                                                                                                                                                                if(min < 0)
                                                                                                                                                                                                                min=99;
                                                                                                                                                }
                                                                                                                }
                                                                                                                display();
                                                                                }
                }
}

void TM0_Isr() interrupt 1 //5毫秒定時(shí)器0
{
        TL0 = 0x00;                                //設(shè)置定時(shí)初始值
        TH0 = 0xEE;                                //設(shè)置定時(shí)初始值
        flag=1;
}
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2023-11-24 09:12 | 顯示全部樓層
hjx5548 發(fā)表于 2023-11-23 22:09
參考你的代碼修改為四位倒計(jì)時(shí)(99:59倒計(jì)時(shí)),哪里不對(duì)?下面是代碼:
//99:59分倒計(jì)時(shí)
#include"stc ...

為啥把顯示函數(shù)名改了?
STC8的定時(shí)器模式0是16位自動(dòng)重裝的
中斷函數(shù)里那兩句設(shè)置定時(shí)初始值可以不要
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-11-24 09:28 | 顯示全部樓層
hjx5548 發(fā)表于 2023-11-23 22:09
參考你的代碼修改為四位倒計(jì)時(shí)(99:59倒計(jì)時(shí)),哪里不對(duì)?下面是代碼:
//99:59分倒計(jì)時(shí)
#include"stc ...

無(wú)標(biāo)題.jpg
  1. #include"stc8H.h"
  2. #include "intrins.h"

  3. #define  uint unsigned int
  4. #define  uchar unsigned char

  5. uchar count;
  6. char sec,min;
  7. bit flag;

  8. uchar code table[]={      
  9. 0x03,/*0*/
  10. 0x9F,/*1*/
  11. 0x25,/*2*/
  12. 0x0D,/*3*/
  13. 0x99,/*4*/
  14. 0x49,/*5*/
  15. 0x41,/*6*/
  16. 0x1F,/*7*/
  17. 0x01,/*8*/
  18. 0x09,/*9*/};

  19. void GPIO_init();
  20. void T0_init() ;
  21. void time_display();

  22. void GPIO_init()
  23. {
  24.         P0M0 = 0x00; P0M1 = 0x00;
  25.         P1M0 = 0x00; P1M1 = 0x00;
  26.         P2M0 = 0x00; P2M1 = 0x00;
  27.         P3M0 = 0x00; P3M1 = 0x00;
  28.         P5M0 = 0x00; P5M1 = 0x00;
  29. }

  30. void T0_init(void)                //5毫秒@11.0592MHz
  31. {
  32.         AUXR &= 0x7F;                        //定時(shí)器時(shí)鐘12T模式
  33.         TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
  34.         TMOD |= 0x01;                        //設(shè)置定時(shí)器模式
  35.         TL0 = 0x00;                                //設(shè)置定時(shí)初始值
  36.         TH0 = 0xEE;                                //設(shè)置定時(shí)初始值
  37.         TF0 = 0;                                //清除TF0標(biāo)志
  38.         TR0 = 1;                                //定時(shí)器0開始計(jì)時(shí)
  39.         ET0 = 1;                                //使能定時(shí)器0中斷
  40.         EA  = 1;                                //使能總中斷
  41. }

  42. void time_display()
  43. {
  44.         static uchar i=0;
  45.         P1&=0xf0;
  46.         switch(i)
  47.         {
  48.                 case 0: P2=table[min/10]; break;
  49.                 case 1: P2=table[min%10]&0xfe; break;
  50.                 case 2: P2=table[sec/10]; break;
  51.                 case 3: P2=table[sec%10]; break;
  52.         }       
  53.         P1|=0x01<<i;
  54.         i=++i%4;
  55. }

  56. void main()
  57. {
  58.         GPIO_init();
  59.         T0_init();
  60.         while(1)
  61.         {
  62.                 if(flag)
  63.                 {
  64.                         flag=0;
  65.                         time_display();
  66.                         if(++count >= 200)
  67.                         {
  68.                                 count = 0;
  69.                                 if(--sec < 0)
  70.                                 {
  71.                                         sec = 59;
  72.                                         if(--min < 0)
  73.                                                 min=99;
  74.                                 }
  75.                         }
  76.                 }
  77.         }
  78. }

  79. void TM0_Isr() interrupt 1 //5毫秒定時(shí)器0
  80. {
  81.         TL0 = 0x00;  //設(shè)置定時(shí)初始值
  82.         TH0 = 0xEE;  //設(shè)置定時(shí)初始值
  83.         flag=1;
  84. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-11-24 11:52 | 顯示全部樓層
lkc8210 發(fā)表于 2023-11-24 09:12
為啥把顯示函數(shù)名改了?
STC8的定時(shí)器模式0是16位自動(dòng)重裝的
中斷函數(shù)里那兩句設(shè)置定時(shí)初始值可以不要

//99:59分倒計(jì)時(shí)
#include"stc8H.h"
#include "intrins.h"

#define  uint unsigned int
#define  uchar unsigned char

uchar count;
char sec,min;
bit flag,flag1,flag2,flag3;

sbit time_ge  = P1^3;
sbit time_shi  = P1^2;
sbit time_bai  = P1^1;
sbit time_qian  = P1^0;

sbit temp_ge  = P3^3;
sbit temp_shi  = P1^5;
sbit temp_bai  = P1^4;


uchar code table[]={      
        0x03,/*0*/
        0x9F,/*1*/
        0x25,/*2*/
        0x0D,/*3*/
        0x99,/*4*/
        0x49,/*5*/
        0x41,/*6*/
        0x1F,/*7*/
        0x01,/*8*/
        0x09,/*9*/};

void GPIO_init();
void T0_init() ;
void time_display();
void time_daojishi();

void GPIO_init()
{
    P0M0 = 0x00; P0M1 = 0x00;
    P1M0 = 0x00; P1M1 = 0x00;
    P2M0 = 0x00; P2M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;
}

void T0_init()                                //5毫秒@11.0592MHz
{
        AUXR &= 0x7F;                        //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
        TL0 = 0x00;                                //設(shè)置定時(shí)初始值
        TH0 = 0xEE;                                //設(shè)置定時(shí)初始值
        TF0 = 0;                                //清除TF0標(biāo)志
        TR0 = 1;                                //定時(shí)器0開始計(jì)時(shí)
        ET0 = 1;                                //使能定時(shí)器0中斷
        
}


void time_display()
{
        static bit i=0;
        static uchar temp=0;
        P2=0xff;
        i=~i;
        if(++temp>=200)temp=0;
        if(i==1)
        {
                time_ge  = 0;
                time_shi = 1;
                time_bai  = 1;
                time_qian  = 1;
                P2=table[min/10];
        }
         else if(i==2)
        {
                time_ge  = 1;
                time_shi = 0;
                 time_bai  = 1;
                time_qian  = 1;
                if(temp<100)
                P2=table[min%10]&0xfe;//閃秒
                else P2=table[min%10];
        }                          
         else if(i==3)
        {
                time_ge  = 1;
                time_shi = 1;
                time_bai  = 0;
                time_qian  = 1;
                if(temp<60)
                P2=table[sec/10];
        }                     
         else if(i==4)
        {
                time_ge  = 1;
                time_shi = 1;
                 time_bai  = 0;
                time_qian  = 1;
                if(temp<60)
                P2=table[sec%10]&0xfe;//閃秒
                else P2=table[min%10];
        }        
}

void main()
{
            EA = 1;
      GPIO_init();
      T0_init();                     
     while(1)
         {
          if(flag)
                                                 {
                                                         flag=0;
                                                         if(++count >= 200)
                                                                 {count = 0;
                                                                        sec--;
                                                                         if(sec < 0)
                                                                                        {
                                                                                         sec = 59;
                                                                                         min--;
                                                                                        if(min < 0)
                                                                                         min=99;
                                                                                        }
                                                                 }
                                                                time_display();
                                                 }
         }
}

void TM0_Isr() interrupt 1 //5毫秒定時(shí)器0
{
        flag=1;
}
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-11-24 12:24 | 顯示全部樓層

這個(gè)代碼9999和8888交替顯示
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-11-24 12:33 | 顯示全部樓層

       這里這樣修改對(duì)嗎?
        P1|=0xfe<<i;
        i=++i%4;

P1|=0xfe<<i; i=++i%4;

        P1|=0xfe<<i;         i=++i%4;
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-11-24 12:36 | 顯示全部樓層
hjx5548 發(fā)表于 2023-11-24 12:24
這個(gè)代碼9999和8888交替顯示

應(yīng)該這樣的
111.png
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-11-24 13:02 | 顯示全部樓層
數(shù)碼管顯示亂碼
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-11-24 13:11 | 顯示全部樓層

這樣改
void time_display()
{
        static uchar i=0;
        P1|=0xff;
        switch(i)
        {
                case 0: P2=table[min/10]; break;
                case 1: P2=table[min%10]&0xfe; break;
                case 2: P2=table[sec/10]; break;
                case 3: P2=table[sec%10]; break;
        }       
        P1&=~(0x01<<i);
        i=++i%4;
}
回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-11-24 21:26 | 顯示全部樓層
wulin 發(fā)表于 2023-11-24 13:11
這樣改
void time_display()
{

分鐘十位數(shù)不能顯示
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-11-25 06:49 | 顯示全部樓層
hjx5548 發(fā)表于 2023-11-24 21:26
分鐘十位數(shù)不能顯示

檢查軟件端口定義與實(shí)際電路是否相符
無(wú)標(biāo)題.jpg

回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-11-25 08:11 | 顯示全部樓層
hjx5548 發(fā)表于 2023-11-24 12:33
這里這樣修改對(duì)嗎?
        P1|=0xfe

123212pwm1eeufm6ykh31e.png
你提供的兩個(gè)圖不一樣。如果按這個(gè)圖的接線,數(shù)碼管程序應(yīng)該這樣寫
void time_display()
{
        static uchar i=0;
        P1|=0xff;
        switch(i)
        {
                case 0: P2=table[min/10];     P1&=0xfe; break;
                case 1: P2=table[min%10]&0xfe;P1&=0xfd; break;
                case 2: P2=table[sec/10];     P1&=0xf7; break;
                case 3: P2=table[sec%10];     P1&=0xfb; break;
        }              
        i=++i%4;
}

回復(fù)

使用道具 舉報(bào)

ID:72649 發(fā)表于 2023-11-25 10:24 | 顯示全部樓層
wulin 發(fā)表于 2023-11-25 08:11
你提供的兩個(gè)圖不一樣。如果按這個(gè)圖的接線,數(shù)碼管程序應(yīng)該這樣寫
void time_display()
{

顯示正常了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表