標(biāo)題: C51單片機(jī)程序595一位共陽(yáng)數(shù)碼管顯示0-9代碼問(wèn)題,求指教 [打印本頁(yè)]

作者: wjsyjh    時(shí)間: 2022-9-5 16:35
標(biāo)題: C51單片機(jī)程序595一位共陽(yáng)數(shù)碼管顯示0-9代碼問(wèn)題,求指教
/*程序主要功能:通過(guò)按開(kāi)關(guān)K1來(lái)實(shí)現(xiàn)一位7段共陽(yáng)數(shù)碼管從0-9循環(huán)顯示,每看一下數(shù)字加1*/
//程序里有一個(gè)變量i沒(méi)有使用,編譯時(shí)候有一個(gè)警告,但刪掉程序運(yùn)行就不對(duì)了  不報(bào)錯(cuò)。  求大神指點(diǎn)
#include<reg51.h>
#define  u16  unsigned int
#define  u8  unsigned char
sbit SH_CP=P2^0;          //595_11腳
sbit DS=P2^1;         //595_14腳
sbit ST_CP=P2^2;          //595_12腳
sbit K1=P1^0;

unsigned char shengduan[10]={0x02,0x9F,0x24,0x0C,0x98,0x48,0x40,0x1E,0x00,0x08};



void delay(u8 y)
{        
    u8 i;
        u16 j;
        for(i=0;i<y;i++)
        {
                for(j=0;j<1;j++);
        }
}

void HC595SendByte(u8 dat)
{
        unsigned char a;
        SH_CP=0;
        ST_CP=0;
        DS=0;
        for(a=0;a<8;a++)
        {
                DS=dat<<7;
                dat>>=1;

                SH_CP=1;
                delay(1);//延時(shí)
                SH_CP=0;        
                delay(1);//延時(shí)
        }

        ST_CP=1;
        delay(1);
        ST_CP=0;

}

void main(void) //主函數(shù)
{

        u8 num;
                u8 i; //沒(méi)有使用的變量,還不能刪

            if(K1==0)
        
                {        
                          num++;
                          if(num==10)
                          num=0;

            }
                        while(!K1);        
            HC595SendByte(shengduan[num]);
            delay(1);//延時(shí)      
}


捕獲.JPG (150.7 KB, 下載次數(shù): 18)

捕獲.JPG

作者: wulin    時(shí)間: 2022-9-5 22:01
樓主主函數(shù)寫(xiě)法不規(guī)范導(dǎo)致的異常。
  1. #include<reg51.h>
  2. #define  u16  unsigned int
  3. #define  u8  unsigned char
  4. sbit SH_CP=P2^0;      //595_11腳
  5. sbit DS=P2^1;         //595_14腳
  6. sbit ST_CP=P2^2;      //595_12腳
  7. sbit K1=P1^0;

  8. unsigned char shengduan[10]={0x02,0x9F,0x24,0x0C,0x98,0x48,0x40,0x1E,0x00,0x08};

  9. void delay(u16 y)
  10. {        
  11.         u16 i,j;
  12.         for(i=0;i<y;i++)
  13.         {
  14.                 for(j=0;j<120;j++);
  15.         }
  16. }

  17. void HC595SendByte(u8 dat)
  18. {
  19.         unsigned char a;
  20.         SH_CP=0;
  21.         ST_CP=0;
  22.         DS=0;
  23.         for(a=0;a<8;a++)
  24.         {
  25.                 DS=dat<<7;
  26.                 dat>>=1;
  27.                
  28.                 SH_CP=1;
  29.                 delay(1);//延時(shí)
  30.                 SH_CP=0;        
  31.                 delay(1);//延時(shí)
  32.         }
  33.         ST_CP=1;
  34.         delay(1);
  35.         ST_CP=0;
  36. }

  37. void main(void) //主函數(shù)
  38. {
  39.         u8 num;
  40. //        u8 i; //沒(méi)有使用的變量,還不能刪
  41.         while(1)
  42.         {
  43.                 if(K1==0)
  44.                 {        
  45.                         delay(10);
  46.                         if(K1==0)
  47.                         {
  48.                                 num++;
  49.                                 if(num==10)
  50.                                 num=0;
  51.                                 while(!K1);      
  52.                         }
  53.                 }
  54. //                while(!K1);        
  55.                 HC595SendByte(shengduan[num]);
  56. //                delay(1);//延時(shí)      
  57.         }
  58. }
復(fù)制代碼

作者: 188610329    時(shí)間: 2022-9-5 22:23
void main(void) //主函數(shù)
{

        u8 num;
while(1)                  // 問(wèn)題的關(guān)鍵 是缺少這個(gè),不是那個(gè)i
{
            if(K1==0)
      
                {      
                          num++;
                          if(num==10)
                          num=0;

            }
                        while(!K1);      
            HC595SendByte(shengduan[num]);
            delay(1);//延時(shí)      
}
}
作者: wjsyjh    時(shí)間: 2022-9-6 08:07
wulin 發(fā)表于 2022-9-5 22:01
樓主主函數(shù)寫(xiě)法不規(guī)范導(dǎo)致的異常。

謝謝 問(wèn)題解決了   少了主循環(huán)
作者: wjsyjh    時(shí)間: 2022-9-6 08:09
188610329 發(fā)表于 2022-9-5 22:23
void main(void) //主函數(shù)
{

謝謝  問(wèn)題解決了   主循環(huán)忘寫(xiě)了  




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1