欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開(kāi)始

搜索

分散I/O口驅(qū)動(dòng)4位數(shù)碼管顯示只能顯示0,是什么原因?

查看數(shù): 3236 | 評(píng)論數(shù): 27 | 收藏 2
關(guān)燈 | 提示:支持鍵盤翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2025-1-15 22:43

正文摘要:

/**本程序用于測(cè)試分散I/O口驅(qū)動(dòng)4位數(shù)碼管顯示**/ #include <STC12C5A60S2.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char //----I/O口位功能定義---------------- ...

回復(fù)

ID:123917 發(fā)表于 2025-1-26 10:18
你確定首發(fā)的圖正確?CPU處是P0口輸出數(shù)據(jù),數(shù)碼管處是用了p0;p1????
ID:1133081 發(fā)表于 2025-1-24 21:23
hjx5548 發(fā)表于 2025-1-24 05:11
#include "STC8G.h"
#include
#define uint unsigned int

//====主函數(shù)==============================================
void main()
{      
        P1M0 = 0x00; P1M1 = 0x00;
        P3M0 = 0x00; P3M1 = 0x00;
        P5M0 = 0x00; P5M1 = 0x00;
        while(1)
        {
                display_out(34);
                Delay5ms();
        }
}
ID:1133081 發(fā)表于 2025-1-24 21:18
hjx5548 發(fā)表于 2025-1-24 05:11
#include "STC8G.h"
#include
#define uint unsigned int
  1. #include "STC8G.h"
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5.       
  6. //----I/O口段定義-----------------------------------
  7. sbit da=P3^7;
  8. sbit db=P3^2;
  9. sbit dc=P3^3;
  10. sbit dd=P3^5;
  11. sbit de=P3^4;
  12. sbit df=P3^6;
  13. sbit dg=P1^1;
  14. sbit dp=P1^0;

  15. //不含小數(shù)點(diǎn)8段LED字形碼0-9+黑屏碼、共陽(yáng)極驅(qū)動(dòng)0亮1熄
  16. uchar duan_ma[11]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
  17. uchar date[2];//顯示數(shù)據(jù)暫存

  18. void Delay5ms(void)        //@11.0592MHz
  19. {
  20.         unsigned char data i, j;

  21.         _nop_();
  22.         _nop_();
  23.         i = 72;
  24.         j = 205;
  25.         do
  26.         {
  27.                 while (--j);
  28.         } while (--i);
  29. }

  30. //=======================================================
  31. //將LED字形的8個(gè)筆段控制I/O引腳映射到變量的8個(gè)位上
  32. void segment_out(uchar dat)
  33. {
  34.     da=(bit)(dat&0x01);
  35.     db=(bit)(dat&0x02);
  36.     dc=(bit)(dat&0x04);
  37.     dd=(bit)(dat&0x08);
  38.     de=(bit)(dat&0x10);
  39.     df=(bit)(dat&0x20);
  40.     dg=(bit)(dat&0x40);
  41.     dp=(bit)(dat&0x80);
  42. }
  43. //====數(shù)據(jù)拆分函數(shù)=======================================
  44. //提取出數(shù)據(jù)的千、百、十、個(gè)位的數(shù)值存入數(shù)組中
  45. void digits_obtain(uint dat)
  46. {
  47.     date[0]=dat/10;
  48.     date[1]=dat%10;
  49. }
  50. //====顯示輸出函數(shù)=======================================
  51. void display_out(uint dat)
  52. {
  53.         static uchar i=0;
  54.         digits_obtain(dat);//拆分?jǐn)?shù)據(jù)
  55.         segment_out(0xff);//段碼清除(消隱)       
  56.         if(i==0)
  57.         {P55=0;P12=1;}//十位       
  58.         else
  59.         {P55=1;P12=0;}//個(gè)位
  60.         segment_out(duan_ma[date[i]]);//發(fā)送段顯示碼
  61.         if(++i>=2) i=0;                        
  62. }

  63. //====主函數(shù)==============================================
  64. void main()
  65. {      
  66.         P1M0 = 0x00; P1M1 = 0x00;
  67.         P3M0 = 0x00; P3M1 = 0x00;
  68.         P5M0 = 0x00; P5M1 = 0x00;
  69.         while(1)
  70.         {
  71.                 display_out(34);
  72.                 Delay1ms(500);
  73.         }
  74. }
復(fù)制代碼
ID:1109793 發(fā)表于 2025-1-24 20:25
hjx5548 發(fā)表于 2025-1-24 05:11
#include "STC8G.h"
#include
#define uint unsigned int

為何要做定時(shí)器中斷里面調(diào)用display_out(34);?
ID:1133081 發(fā)表于 2025-1-24 15:42
hjx5548 發(fā)表于 2025-1-24 05:11
#include "STC8G.h"
#include
#define uint unsigned int

發(fā)原理圖全圖
ID:1109793 發(fā)表于 2025-1-24 09:38
hjx5548 發(fā)表于 2025-1-24 07:55
segment_out(duan_ma[date]);//上傳怎么沒(méi)有了

上傳代碼要用代碼功能,就是上邊的那個(gè)中括弧
ID:72649 發(fā)表于 2025-1-24 07:55
segment_out(duan_ma[date[i]]);//上傳怎么沒(méi)有了
ID:72649 發(fā)表于 2025-1-24 05:11
WL0123 發(fā)表于 2025-1-23 14:55
如果MCU采用的還是STC12C5A60S2不需要設(shè)置端口模式,默認(rèn)是準(zhǔn)雙向。沒(méi)有P55,就在P50~53選一個(gè)空閑腳或其 ...

#include "STC8G.h"
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
       
//----I/O口段定義-----------------------------------
sbit da=P3^7;
sbit db=P3^2;
sbit dc=P3^3;
sbit dd=P3^5;
sbit de=P3^4;
sbit df=P3^6;
sbit dg=P1^1;
sbit dp=P1^0;

//不含小數(shù)點(diǎn)8段LED字形碼0-9+黑屏碼、共陽(yáng)極驅(qū)動(dòng)0亮1熄
uchar duan_ma[11]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar date[4];//顯示數(shù)據(jù)暫存
bit flag;

void Delay1ms(void)        //@11.0592MHz
{
        unsigned char data i, j;

        i = 15;
        j = 90;
        do
        {
                while (--j);
        } while (--i);
}




void Timer0_Init(void)                //1毫秒@12.000MHz
{
        AUXR |= 0x80;                        //定時(shí)器時(shí)鐘1T模式
        TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
        TL0 = 0x20;                                //設(shè)置定時(shí)初始值
        TH0 = 0xD1;                                //設(shè)置定時(shí)初始值
        TF0 = 0;                                //清除TF0標(biāo)志
        TR0 = 1;                                //定時(shí)器0開(kāi)始計(jì)時(shí)
        ET0=1;
        EA=1;
}

//=======================================================
//將LED字形的8個(gè)筆段控制I/O引腳映射到變量的8個(gè)位上
void segment_out(uchar dat)
{
    da=(bit)(dat&0x01);
    db=(bit)(dat&0x02);
    dc=(bit)(dat&0x04);
    dd=(bit)(dat&0x08);
    de=(bit)(dat&0x10);
    df=(bit)(dat&0x20);
    dg=(bit)(dat&0x40);
    dp=(bit)(dat&0x80);
}
//====數(shù)據(jù)拆分函數(shù)=======================================
//提取出數(shù)據(jù)的千、百、十、個(gè)位的數(shù)值存入數(shù)組中
void digits_obtain(uint dat)
{
    date[0]=dat/10;
    date[1]=dat%10;
}
//====顯示輸出函數(shù)=======================================
void display_out(uint dat)
{
        static uchar i;
        digits_obtain(dat);//拆分?jǐn)?shù)據(jù)
        segment_out(0xff);//段碼清除(消隱)

        if(i==0)
        {P55=0;P12=1;}//十位
                                  
        else
        {P55=1;P12=0;}//個(gè)位
        segment_out(duan_ma[date]);//發(fā)送段顯示碼
//        i=++i%2;
                                if (++i>=2) i=0;
                               
}

//====主函數(shù)==============================================
void main()
{
       
    P1M0 = 0x00; P1M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;

        Timer0_Init();
        Delay1ms();
        while(1)
        {
                if(flag)//5ms
                {
                        flag=0;
//                        display_out(34);                                                               
                }
        }
}

void Timer0Interrupt(void) interrupt 1
{
              display_out(34);       
        flag=1;
                               
}


還是顯示9
ID:72649 發(fā)表于 2025-1-24 04:35
WL0123 發(fā)表于 2025-1-23 14:55
如果MCU采用的還是STC12C5A60S2不需要設(shè)置端口模式,默認(rèn)是準(zhǔn)雙向。沒(méi)有P55,就在P50~53選一個(gè)空閑腳或其 ...

端口模式已經(jīng)設(shè)置void main()
{
      
    P1M0 = 0x00; P1M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;
ID:72649 發(fā)表于 2025-1-23 22:35

//====顯示輸出函數(shù)=======================================
void display_out(uint dat)
{
        static uchar i;
        digits_obtain(dat);//拆分?jǐn)?shù)據(jù)
        segment_out(0xff);//段碼清除(消隱)
       
        if(i==0)
        {P55=0;P12=1;}//十位
                               
        else
        {P55=1;P12=0;}//個(gè)位
        segment_out(duan_ma[date]);//發(fā)送段顯示碼
        i=++i%2;
}
還是一樣
ID:1133081 發(fā)表于 2025-1-23 14:55
hjx5548 發(fā)表于 2025-1-23 07:04
修改一下,十位顯示9,個(gè)位無(wú)顯示。
/*hjx5548 發(fā)表于 2025-1-21 22:13
如果這樣怎么修改

如果MCU采用的還是STC12C5A60S2不需要設(shè)置端口模式,默認(rèn)是準(zhǔn)雙向。沒(méi)有P55,就在P50~53選一個(gè)空閑腳或其它空閑腳。你那十位顯示9其實(shí)是3和4的疊加。換芯片STC8G1K08,需要設(shè)置端口模式,因?yàn)槟J(rèn)是高阻。定時(shí)器用自動(dòng)重裝模式為好。上述兩款單片機(jī)可以直接驅(qū)動(dòng)數(shù)碼管,不需要加晶體管放大。數(shù)碼管段驅(qū)動(dòng)要加8個(gè)限流電阻。
ID:1109793 發(fā)表于 2025-1-23 08:44

ID:72649 發(fā)表于 2025-1-23 07:04
WL0123 發(fā)表于 2025-1-22 11:30
如果MCU采用的還是STC12C5A60S2那就沒(méi)有P55,只有P50~53。示例程序:

修改一下,十位顯示9,個(gè)位無(wú)顯示。
/*hjx5548 發(fā)表于 2025-1-21 22:13
如果這樣怎么修改

如果MCU采用的還是STC12C5A60S2那就沒(méi)有P55,只有P50~53。示例程序:*/

//#include <STC12C5A60S2.h>
#include "STC8G.h"
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
       
//----I/O口段定義-----------------------------------
sbit da=P3^7;
sbit db=P3^2;
sbit dc=P3^3;
sbit dd=P3^5;
sbit de=P3^4;
sbit df=P3^6;
sbit dg=P1^1;
sbit dp=P1^0;

//不含小數(shù)點(diǎn)8段LED字形碼0-9+黑屏碼、共陽(yáng)極驅(qū)動(dòng)0亮1熄
uchar duan_ma[11]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar date[4];//顯示數(shù)據(jù)暫存
bit flag;

void Timer0_Init(void)                //5毫秒@11.0592MHz
{
        AUXR |= 0x80;                        //定時(shí)器時(shí)鐘1T模式
        TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
        TL0 = 0x00;                                //設(shè)置定時(shí)初始值
        TH0 = 0x28;                                //設(shè)置定時(shí)初始值
        TF0 = 0;                                //清除TF0標(biāo)志
        TR0 = 1;                                //定時(shí)器0開(kāi)始計(jì)時(shí)
        ET0=1;
        EA=1;
}

//=======================================================
//將LED字形的8個(gè)筆段控制I/O引腳映射到變量的8個(gè)位上
void segment_out(uchar dat)
{
    da=(bit)(dat&0x01);
    db=(bit)(dat&0x02);
    dc=(bit)(dat&0x04);
    dd=(bit)(dat&0x08);
    de=(bit)(dat&0x10);
    df=(bit)(dat&0x20);
    dg=(bit)(dat&0x40);
    dp=(bit)(dat&0x80);
}
//====數(shù)據(jù)拆分函數(shù)=======================================
//提取出數(shù)據(jù)的千、百、十、個(gè)位的數(shù)值存入數(shù)組中
void digits_obtain(uint dat)
{
    date[0]=dat/10;
    date[1]=dat%10;
}
//====顯示輸出函數(shù)=======================================
void display_out(uint dat)
{
        static uchar i;
        digits_obtain(dat);//拆分?jǐn)?shù)據(jù)
        segment_out(0xff);//段碼清除(消隱)
       
        if(i==0)
        {P55=0;P12=1;}//十位
                               
        else
        {P55=1;P12=0;}//個(gè)位
        segment_out(duan_ma[date]);//發(fā)送段顯示碼
        i=++i%2;
}

//====主函數(shù)==============================================
void main()
{
       
    P1M0 = 0x00; P1M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;

        Timer0_Init();
        while(1)
        {
                if(flag)//5ms
                {
                        flag=0;
                        display_out(34);                                                               
                }
        }
}

void Timer0Interrupt(void) interrupt 1
{
              TL0 = 0x00;                                //設(shè)置定時(shí)初始值
              TH0 = 0x28;                                //設(shè)置定時(shí)初始值
        flag=1;
}
ID:72649 發(fā)表于 2025-1-23 06:41
WL0123 發(fā)表于 2025-1-22 11:30
如果MCU采用的還是STC12C5A60S2那就沒(méi)有P55,只有P50~53。示例程序:

芯片是STC8G1K08
ID:1133081 發(fā)表于 2025-1-22 11:30

如果MCU采用的還是STC12C5A60S2那就沒(méi)有P55,只有P50~53。示例程序:
  1. #include <STC12C5A60S2.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. //----I/O口段定義-----------------------------------
  6. sbit da=P3^7;
  7. sbit db=P3^2;
  8. sbit dc=P3^3;
  9. sbit dd=P3^5;
  10. sbit de=P3^4;
  11. sbit df=P3^6;
  12. sbit dg=P1^1;
  13. sbit dp=P1^0;
  14. //不含小數(shù)點(diǎn)8段LED字形碼0-9+黑屏碼、共陽(yáng)極驅(qū)動(dòng)0亮1熄
  15. uchar duan_ma[11]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
  16. uchar date[4];//顯示數(shù)據(jù)暫存
  17. bit flag;

  18. void Timer0_Init(void)                //5毫秒@12.000MHz
  19. {
  20.         TMOD= 0x01;                                //設(shè)置定時(shí)器模式
  21.         TL0 = 0x78;                                //設(shè)置定時(shí)初始值
  22.         TH0 = 0xEC;                                //設(shè)置定時(shí)初始值
  23.         TF0 = 0;                                //清除TF0標(biāo)志
  24.         TR0 = 1;                                //定時(shí)器0開(kāi)始計(jì)時(shí)
  25.         EA = 1;                                        //開(kāi)總中斷
  26.         ET0 = 1;                                //開(kāi)T0中斷
  27. }
  28. //=======================================================
  29. //將LED字形的8個(gè)筆段控制I/O引腳映射到變量的8個(gè)位上
  30. void segment_out(uchar dat)
  31. {
  32.     da=(bit)(dat&0x01);
  33.     db=(bit)(dat&0x02);
  34.     dc=(bit)(dat&0x04);
  35.     dd=(bit)(dat&0x08);
  36.     de=(bit)(dat&0x10);
  37.     df=(bit)(dat&0x20);
  38.     dg=(bit)(dat&0x40);
  39.     dp=(bit)(dat&0x80);
  40. }
  41. //====數(shù)據(jù)拆分函數(shù)=======================================
  42. //提取出數(shù)據(jù)的千、百、十、個(gè)位的數(shù)值存入數(shù)組中
  43. void digits_obtain(uint dat)
  44. {
  45.     date[0]=dat/10;
  46.     date[1]=dat%10;
  47. }
  48. //====顯示輸出函數(shù)=======================================
  49. void display_out(uint dat)
  50. {
  51.         static uchar i;
  52.         digits_obtain(dat);//拆分?jǐn)?shù)據(jù)
  53.         segment_out(0xff);//段碼清除(消隱)
  54.         if(i==0){P50=0;P12=1;}//十位
  55.         else {P50=1;P12=0;}//個(gè)位
  56.         segment_out(duan_ma[date[i]]);//發(fā)送段顯示碼
  57.         i=++i%2;
  58. }

  59. //====主函數(shù)==============================================
  60. void main()
  61. {
  62.         Timer0_Init();
  63.         while(1)
  64.         {
  65.                 if(flag)//5ms
  66.                 {
  67.                         flag=0;
  68.                         display_out(34);
  69.                 }
  70.         }
  71. }

  72. void Timer0Interrupt(void) interrupt 1
  73. {
  74.         TL0 = 0x78;                                //設(shè)置定時(shí)初始值
  75.         TH0 = 0xEC;                                //設(shè)置定時(shí)初始值
  76.     flag=1;
  77. }


復(fù)制代碼
ID:92781 發(fā)表于 2025-1-17 08:32
xiaobendan001 發(fā)表于 2025-1-16 12:46
有沒(méi)有試過(guò)?軟件模擬也能看到的

這個(gè)我試了,你是對(duì)的,沒(méi)有錯(cuò)
ID:1133081 發(fā)表于 2025-1-16 16:32
數(shù)碼管顯示異常是樓主的數(shù)碼管位驅(qū)動(dòng)碼錯(cuò)誤所致。修改如下:
  1. /**本程序用于測(cè)試分散I/O口驅(qū)動(dòng)4位數(shù)碼管顯示**/
  2. #include <STC12C5A60S2.h>
  3. #include <intrins.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. //----I/O口位功能定義-----------------------------------
  7. sbit da=P1^2;
  8. sbit db=P1^1;
  9. sbit dc=P0^1;
  10. sbit dd=P0^2;
  11. sbit de=P0^3;
  12. sbit df=P1^3;
  13. sbit dg=P1^4;
  14. sbit dp=P0^0;
  15. sbit w1=P0^4;
  16. sbit w2=P0^5;
  17. sbit w3=P0^6;
  18. sbit w4=P0^7;
  19. //不含小數(shù)點(diǎn)8段LED字形碼0-9+黑屏碼、共陽(yáng)極驅(qū)動(dòng)0亮1熄
  20. uchar duan_ma[11]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
  21. uchar wei_ma[4]= {0x07,0x0b,0x0d,0x0e}; //字位碼
  22. uchar date[4];//顯示數(shù)據(jù)暫存
  23. //====熄屏延時(shí)a*1ms延時(shí)函數(shù)===============================
  24. void delay_1ms (uchar a)        //@12.000MHz
  25. {
  26.     uchar i, j;
  27.     while(a--)
  28.     {
  29.         _nop_();
  30.         _nop_();
  31.         i = 12;
  32.         j = 168;
  33.         do
  34.         {
  35.             while (--j);
  36.         }
  37.         while (--i);
  38.     }
  39. }
  40. /*
  41. //====顯示顏色a*10us=====================================
  42. void delay_10us(uchar a)                //@12.000MHz
  43. {
  44.     uchar i;
  45.     while(a--)
  46.     {
  47.         i = 27;
  48.         while (--i);
  49.     }
  50. }*/
  51. //=======================================================
  52. //將LED字形的8個(gè)筆段控制I/O引腳映射到變量的8個(gè)位上
  53. void segment_out(uchar dat)
  54. {
  55.     da=(bit)(dat&0x01);
  56.     db=(bit)(dat&0x02);
  57.     dc=(bit)(dat&0x04);
  58.     dd=(bit)(dat&0x08);
  59.     de=(bit)(dat&0x10);
  60.     df=(bit)(dat&0x20);
  61.     dg=(bit)(dat&0x40);
  62.     dp=(bit)(dat&0x80);
  63. }
  64. //=======================================================
  65. /*
  66. //將4個(gè)數(shù)位控制I/O引腳映射到變量的4個(gè)位上
  67. void position_out(uchar dat)
  68. {
  69.     w1=(bit)(dat&0x08);
  70.     w2=(bit)(dat&0x04);
  71.     w3=(bit)(dat&0x02);
  72.     w4=(bit)(dat&0x01);
  73. }*/
  74. //====數(shù)據(jù)拆分函數(shù)=======================================
  75. //提取出數(shù)據(jù)的千、百、十、個(gè)位的數(shù)值存入數(shù)組中
  76. void digits_obtain(uint dat)
  77. {
  78.     date[0]=dat/1000;
  79.     date[1]=dat%1000/100;
  80.     date[2]=dat%100/10;
  81.     date[3]=dat%10;
  82. }
  83. //====顯示輸出函數(shù)=======================================
  84. void display_out(uint dat)
  85. {
  86.     uchar i;
  87.     digits_obtain(dat);                //拆分?jǐn)?shù)據(jù)
  88.     for(i=0; i<4; i++)
  89.     {
  90.         if(date[0]==0)                //如果第一位為0則屏蔽掉
  91.         {
  92.             date[0]=10;
  93.         }
  94.         else
  95.         {
  96.             segment_out(0xff);//段碼清除(消隱)
  97.                                 P0&=0x0f;//位碼清除
  98.                                 P0|=~(0x10<<i);//送位碼
  99.             segment_out(duan_ma[date[i]]);        //發(fā)送段顯示碼
  100. //          position_out(wei_ma[i]);                //發(fā)送位顯示碼
  101.             if(i==1)                                                //點(diǎn)亮百位與十位中間的小數(shù)點(diǎn)、最大顯示數(shù)據(jù)為99.99
  102.             {
  103.                 dp=0;
  104.             }
  105.             else
  106.             {
  107.                 dp=1;
  108.             }
  109.                                 delay_1ms(5);
  110.        }
  111. //以下為消隱及顯示亮度調(diào)整部分
  112. //       delay_10us(20);                                //顯示時(shí)間、賦值變化可以改變顯示亮度
  113. //       segment_out(duan_ma[10]);        //送黑屏碼
  114. //       delay_1ms(5);                                //熄屏?xí)r間
  115.     }
  116. }
  117. //====主函數(shù)==============================================
  118. main()
  119. {
  120.     P0M1=0x00;
  121.     P0M0=0xff;                //P0口的8個(gè)引腳設(shè)定為推挽輸出
  122.     P1M1=0x00;
  123.     P1M0=0x1e;                //P1.1、P1.2、P1.3、P1.4設(shè)定為推挽輸出
  124.     while(1)
  125.     {
  126.         display_out(1234);
  127.     }
  128. }


復(fù)制代碼
ID:1109793 發(fā)表于 2025-1-16 12:46
jjy1039 發(fā)表于 2025-1-16 08:59
54行大概是不對(duì)的
  • void segment_out(uchar dat)
  • {

  • 有沒(méi)有試過(guò)?軟件模擬也能看到的
    ID:23606 發(fā)表于 2025-1-16 11:23
    da=(bit)(duan_ma[dat]&0x01);
    .......
    ID:1109793 發(fā)表于 2025-1-16 10:39
    單片機(jī)研究協(xié)會(huì) 發(fā)表于 2025-1-16 01:10
    有兩點(diǎn)可以優(yōu)化
    1:改用共陰數(shù)碼管,可以省三極管
    2:改用位域操作

    位域怎么寫,請(qǐng)大俠指點(diǎn)一二
    ID:291668 發(fā)表于 2025-1-16 09:46
    1、先排除掉硬件問(wèn)題,接線問(wèn)題。2、直接用高低電平試試每一段是不是都能點(diǎn)亮。然后用程序控制。邏輯上不要有沖突。
    ID:68189 發(fā)表于 2025-1-16 09:45
    新愛(ài)的壇友,你確定你的代碼沒(méi)有問(wèn)題嗎!你確定你已經(jīng)編譯通過(guò)了嗎!
    LINE 96  segment_out(duan_ma[date]);        //發(fā)送段顯示碼
    LINE 97 position_out(wei_ma);                //發(fā)送位顯示碼
    這兩行代碼重點(diǎn)檢查一下......
    ID:342197 發(fā)表于 2025-1-16 09:32
    segment_out(duan_ma[date]);        //發(fā)送段顯示碼
    [date] 默認(rèn)是地址 0 ,所以只顯示0
    修改:date[i]
    ID:92781 發(fā)表于 2025-1-16 09:05
    96行, segment_out(duan_ma[date]);      其中date是數(shù)組類型,改為segment_out(duan_ma[i ])
    ID:1109793 發(fā)表于 2025-1-16 07:36
    DATE是個(gè)數(shù)組,你把它當(dāng)做下標(biāo)是幾個(gè)意思。你是不是應(yīng)該這樣duan_ma[date[i]];
    還有wei_ma也有問(wèn)題。是不是也應(yīng)該寫成wei_ma[i];,
    ID:828160 發(fā)表于 2025-1-16 01:10
    有兩點(diǎn)可以優(yōu)化
    1:改用共陰數(shù)碼管,可以省三極管
    2:改用位域操作

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

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

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