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

QQ登錄

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

搜索
查看: 1843|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

C51單片機(jī)程序595一位共陽(yáng)數(shù)碼管顯示0-9代碼問(wèn)題,求指教

[復(fù)制鏈接]
跳轉(zhuǎ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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

5#
ID:440585 發(fā)表于 2022-9-6 08:09 | 只看該作者
188610329 發(fā)表于 2022-9-5 22:23
void main(void) //主函數(shù)
{

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

使用道具 舉報(bào)

地板
ID:440585 發(fā)表于 2022-9-6 08:07 | 只看該作者
wulin 發(fā)表于 2022-9-5 22:01
樓主主函數(shù)寫(xiě)法不規(guī)范導(dǎo)致的異常。

謝謝 問(wèn)題解決了   少了主循環(huán)
回復(fù)

使用道具 舉報(bào)

板凳
ID:624769 發(fā)表于 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í)      
}
}
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 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ù)制代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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