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

QQ登錄

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

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

單片機(jī)8*8點(diǎn)陣程序的警告找不出來(lái),麻煩各位大佬幫忙看一看

[復(fù)制鏈接]
ID:939657 發(fā)表于 2021-6-20 14:55 | 顯示全部樓層 |閱讀模式
8*8點(diǎn)陣程序,我檢查很多次,都看不出程序的問(wèn)題,可還是會(huì)有一個(gè)警告,麻煩各位大佬幫忙看一下,這到底是哪里出問(wèn)題了
1624171934(1).png
單片機(jī)源程序如下:
  1.         //          ***************************************************************************************/

  2. #include "reg51.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器
  3. #include<intrins.h>

  4. typedef unsigned int u16;          //對(duì)數(shù)據(jù)類(lèi)型進(jìn)行聲明定義
  5. typedef unsigned char u8;

  6. sbit SRCLK=P3^6;
  7. sbit RCLK=P3^5;
  8. sbit SER=P3^4;
  9. sbit buzzer=P1^5;

  10.   unsigned char code ledduan[17][8]={
  11.                      {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},
  12.                                         {0x00,0x00,0x24,0x7C,0x04,0x00,0x00,0x00},
  13.                                          {0x00,0x00,0x26,0x4A,0x52,0x22,0x00,0x00},
  14.                                          {0x00,0x00,0x2A,0x2A,0x2A,0x3E,0x00,0x00},
  15.                                          {0x00,0x08,0x18,0x28,0x7E,0x08,0x00,0x00},
  16.                                          {0x00,0x00,0x7A,0x4A,0x4E,0x00,0x00,0x00},
  17.                                          {0x00,0x00,0x7E,0x4A,0x4E,0x00,0x00,0x00},
  18.                                          {0x00,0x40,0x40,0x40,0x7E,0x00,0x00,0x00},
  19.                                          {0x00,0x7E,0x4A,0x4A,0x7E,0x00,0x00,0x00},
  20.                                          {0x00,0x7A,0x4A,0x4A,0x7E,0x00,0x00,0x00},
  21.                                          {0x00,0x7A,0x4A,0x4A,0x7E,0x00,0x00,0x00},
  22.                                          {0x00,0x00,0x7E,0x48,0x78,0x00,0x00,0x00},
  23.                                          {0x00,0x00,0x7E,0x48,0x48,0x00,0x00,0x00},
  24.                                          {0x40,0x40,0x7E,0x40,0x40,0x00,0x00,0x00},
  25.                                          {0x00,0x00,0x3E,0x02,0x02,0x00,0x00,0x00},
  26.                                          {0x00,0x00,0x3E,0x02,0x3E,0x00,0x00,0x00},
  27.                                          {0x00,0x30,0x48,0x24,0x24,0x48,0x30,0x00}
  28.                           } ;
  29. unsigned char code ledwei[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  30.   void delay1(u16 i)
  31.   {
  32.         while(i--);
  33.   }
  34.   void beep()
  35. {
  36. u16 i;
  37. for(i=0;i<100;i++)
  38. {
  39. delay1(100);
  40. buzzer=~buzzer;
  41. }}
  42.   void delay(unsigned int time)
  43.   {
  44.           unsigned int i,j;
  45.         for (i=0;i<time;i++)
  46.           for (j=0;j<121;j++);
  47.   
  48.   }
  49. /*******************************************************************************
  50. * 函數(shù)名         : Hc595SendByte(u8 dat)
  51. * 函數(shù)功能                   : 向74HC595發(fā)送一個(gè)字節(jié)的數(shù)據(jù),從高位開(kāi)始到低位
  52. * 輸入           : 無(wú)
  53. * 輸出                  : 無(wú)
  54. *******************************************************************************/
  55. void Hc595SendByte(u8 dat)
  56. {
  57.         u8 a;
  58.         SRCLK=0;
  59.         RCLK=0;
  60.         for(a=0;a<8;a++)
  61.         {
  62.                 SER=dat>>7;//運(yùn)算時(shí),先將dat的值復(fù)制到一個(gè)臨時(shí)單元,向右移位運(yùn)算的是臨時(shí)單元的值,而不是dat,所以移位后, dat的值不變。
  63.                 dat<<=1;

  64.                 SRCLK=1;
  65.                 _nop_();
  66.                 _nop_();
  67.                 SRCLK=0;        
  68.         }

  69.         RCLK=1;
  70.         _nop_();
  71.         _nop_();
  72.         RCLK=0;
  73. }

  74. /*******************************************************************************
  75. * 函 數(shù) 名       : main
  76. * 函數(shù)功能                 : 主函數(shù)
  77. * 輸    入       : 無(wú)
  78. * 輸    出             : 無(wú)
  79. *******************************************************************************/
  80. void main()
  81. {        
  82.         unsigned char tab,j;
  83.         unsigned int i;        
  84.         while(1)
  85.         {
  86.                   
  87.                           for (i=0;i<50;i++)
  88.                     { for(tab=0;tab<8;tab++)
  89.                    {          Hc595SendByte(0x00);//消隱,去掉重影
  90.                     P0=ledwei[tab];
  91.                     Hc595SendByte(ledduan[j][tab]);
  92.                     delay(2);
  93.                     
  94.          }
  95.               }
  96.         }
  97.         j++;
  98.         beep();
  99.         if(j==17)
  100.         {
  101.         j=0;
  102.         }        
  103. }

復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2021-6-20 16:02 | 顯示全部樓層
你定義了一個(gè)BEEP的函數(shù),卻沒(méi)有調(diào)用過(guò)它。。。就是這個(gè)意思,,
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2021-6-20 16:24 | 顯示全部樓層
main 程序有問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:939657 發(fā)表于 2021-6-20 19:13 | 顯示全部樓層
名字不是重點(diǎn) 發(fā)表于 2021-6-20 16:02
你定義了一個(gè)BEEP的函數(shù),卻沒(méi)有調(diào)用過(guò)它。。。就是這個(gè)意思,,

用了,主程序j++下面的程序
回復(fù)

使用道具 舉報(bào)

ID:939657 發(fā)表于 2021-6-20 19:14 | 顯示全部樓層
xuyaqi 發(fā)表于 2021-6-20 16:24
main 程序有問(wèn)題

請(qǐng)問(wèn)是主程序哪里有問(wèn)題呢?
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2021-6-20 19:41 | 顯示全部樓層
tyq666 發(fā)表于 2021-6-20 19:14
請(qǐng)問(wèn)是主程序哪里有問(wèn)題呢?

你發(fā)的程序,你編譯通過(guò)了嗎?
回復(fù)

使用道具 舉報(bào)

ID:939657 發(fā)表于 2021-6-20 19:44 | 顯示全部樓層
xuyaqi 發(fā)表于 2021-6-20 19:41
你發(fā)的程序,你編譯通過(guò)了嗎?

編譯過(guò)了,上面的圖片就是編譯后出現(xiàn)的問(wèn)題,有一個(gè)警告
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2021-6-20 20:04 | 顯示全部樓層
tyq666 發(fā)表于 2021-6-20 19:44
編譯過(guò)了,上面的圖片就是編譯后出現(xiàn)的問(wèn)題,有一個(gè)警告

警告c294看到了嗎?
警告c294.png

回復(fù)

使用道具 舉報(bào)

ID:922355 發(fā)表于 2021-6-20 20:22 | 顯示全部樓層
這個(gè)警告我教你怎么看?梢圆挥霉埽瑂egment那里PR?后面那個(gè)BEEP意思是提醒你可能有聲明了BEEP函數(shù)但是你沒(méi)有用它。如果要用到它,調(diào)用它,不用他就注掉,或者你不用管那個(gè)警告不會(huì)影響編譯運(yùn)行。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:941075 發(fā)表于 2021-6-20 21:48 | 顯示全部樓層
謝謝樓主也謝謝51黑平臺(tái)!
回復(fù)

使用道具 舉報(bào)

ID:878061 發(fā)表于 2021-6-20 22:29 | 顯示全部樓層
你把beep()函數(shù)放在了死循環(huán)while(1)的大括號(hào)外面,永遠(yuǎn)執(zhí)行不到beep(),所以警告
回復(fù)

使用道具 舉報(bào)

ID:939657 發(fā)表于 2021-6-21 22:50 | 顯示全部樓層
Carose 發(fā)表于 2021-6-20 20:22
這個(gè)警告我教你怎么看?梢圆挥霉埽瑂egment那里PR?后面那個(gè)BEEP意思是提醒你可能有聲明了BEEP函數(shù)但是你沒(méi) ...

要用的,我就在j++下面加了
回復(fù)

使用道具 舉報(bào)

ID:939657 發(fā)表于 2021-6-21 22:52 | 顯示全部樓層
xuyaqi 發(fā)表于 2021-6-20 20:04
警告c294看到了嗎?

這個(gè)沒(méi)問(wèn)題吧,我用keil4編譯,它只出現(xiàn)一個(gè)警告
回復(fù)

使用道具 舉報(bào)

ID:811711 發(fā)表于 2021-6-22 08:58 | 顯示全部樓層
說(shuō)的很清楚啊 有個(gè)函數(shù)你沒(méi)有調(diào)用
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2021-6-22 10:13 | 顯示全部樓層
給你改了,對(duì)比一下就知道哪里錯(cuò)了。

  1. //  ***************************************************************************************/

  2. #include "reg51.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器
  3. #include<intrins.h>

  4. typedef unsigned int u16;          //對(duì)數(shù)據(jù)類(lèi)型進(jìn)行聲明定義
  5. typedef unsigned char u8;

  6. sbit SRCLK=P3^6;
  7. sbit RCLK=P3^5;
  8. sbit SER=P3^4;
  9. sbit buzzer=P1^5;

  10. unsigned char code ledduan[17][8]={
  11.         {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},
  12.         {0x00,0x00,0x24,0x7C,0x04,0x00,0x00,0x00},
  13.         {0x00,0x00,0x26,0x4A,0x52,0x22,0x00,0x00},
  14.         {0x00,0x00,0x2A,0x2A,0x2A,0x3E,0x00,0x00},
  15.         {0x00,0x08,0x18,0x28,0x7E,0x08,0x00,0x00},
  16.         {0x00,0x00,0x7A,0x4A,0x4E,0x00,0x00,0x00},
  17.         {0x00,0x00,0x7E,0x4A,0x4E,0x00,0x00,0x00},
  18.         {0x00,0x40,0x40,0x40,0x7E,0x00,0x00,0x00},
  19.         {0x00,0x7E,0x4A,0x4A,0x7E,0x00,0x00,0x00},
  20.         {0x00,0x7A,0x4A,0x4A,0x7E,0x00,0x00,0x00},
  21.         {0x00,0x7A,0x4A,0x4A,0x7E,0x00,0x00,0x00},
  22.         {0x00,0x00,0x7E,0x48,0x78,0x00,0x00,0x00},
  23.         {0x00,0x00,0x7E,0x48,0x48,0x00,0x00,0x00},
  24.         {0x40,0x40,0x7E,0x40,0x40,0x00,0x00,0x00},
  25.         {0x00,0x00,0x3E,0x02,0x02,0x00,0x00,0x00},
  26.         {0x00,0x00,0x3E,0x02,0x3E,0x00,0x00,0x00},
  27.         {0x00,0x30,0x48,0x24,0x24,0x48,0x30,0x00}
  28. } ;
  29. unsigned char code ledwei[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  30. void delay1(u16 i)
  31. {
  32.         while(i--);
  33. }
  34. void beep()
  35. {
  36.         u16 i;
  37.         for(i=0;i<100;i++)
  38.         {
  39.                 delay1(100);
  40.                 buzzer=~buzzer;
  41.         }}
  42. void delay(unsigned int time)
  43. {
  44.         unsigned int i,j;
  45.         for (i=0;i<time;i++)
  46.         for (j=0;j<121;j++);

  47. }
  48. /*******************************************************************************
  49. * 函數(shù)名         : Hc595SendByte(u8 dat)
  50. * 函數(shù)功能                   : 向74HC595發(fā)送一個(gè)字節(jié)的數(shù)據(jù),從高位開(kāi)始到低位
  51. * 輸入           : 無(wú)
  52. * 輸出                  : 無(wú)
  53. *******************************************************************************/
  54. void Hc595SendByte(u8 dat)
  55. {
  56.         u8 a;
  57.         SRCLK=0;
  58.         RCLK=0;
  59.         for(a=0;a<8;a++)
  60.         {
  61.                 SER=dat>>7;//運(yùn)算時(shí),先將dat的值復(fù)制到一個(gè)臨時(shí)單元,向右移位運(yùn)算的是臨時(shí)單元的值,而不是dat,所以移位后, dat的值不變。
  62.                 dat<<=1;

  63.                 SRCLK=1;
  64.                 _nop_();
  65.                 _nop_();
  66.                 SRCLK=0;        
  67.         }

  68.         RCLK=1;
  69.         _nop_();
  70.         _nop_();
  71.         RCLK=0;
  72. }

  73. /*******************************************************************************
  74. * 函 數(shù) 名       : main
  75. * 函數(shù)功能                 : 主函數(shù)
  76. * 輸    入       : 無(wú)
  77. * 輸    出             : 無(wú)
  78. *******************************************************************************/
  79. void main()
  80. {        
  81.         unsigned char tab,j;
  82.         unsigned int i;        
  83.         while(1)
  84.         {
  85.                
  86.                 for (i=0;i<50;i++)
  87.                 { for(tab=0;tab<8;tab++)
  88.                         {          Hc595SendByte(0x00);//消隱,去掉重影
  89.                                 P0=ledwei[tab];
  90.                                 Hc595SendByte(ledduan[j][tab]);
  91.                                 delay(2);
  92.                                
  93.                         }
  94.                 }
  95.             //} <-------
  96.                 j++;
  97.                 beep();
  98.                 if(j==17)
  99.                 {
  100.                         j=0;
  101.                 }        
  102.         }
  103. } //<-----


復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:934353 發(fā)表于 2021-6-29 17:27 | 顯示全部樓層
很簡(jiǎn)單,就是你定義了beep函數(shù),卻沒(méi)有調(diào)用過(guò)它,因?yàn)槟惆裝eep函數(shù)放在while(1)死循環(huán)后面了,而且你的死循環(huán)里也沒(méi)有跳出的條件,所以你跳不出死循環(huán)就執(zhí)行不到beep函數(shù),包括j++那些都執(zhí)行不到的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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