標(biāo)題: 單片機(jī)LED點(diǎn)陣程序看不明白了 [打印本頁(yè)]

作者: 黃油蝴蝶    時(shí)間: 2024-1-27 10:00
標(biāo)題: 單片機(jī)LED點(diǎn)陣程序看不明白了
如圖的4個(gè)8*8拼成的16*16點(diǎn)陣,我想讓這個(gè)點(diǎn)陣的箭頭從左下角向左上角移動(dòng),但不知為什么,最上面一排LED會(huì)跟隨著亮,求解答
  1. #include<reg51.h>

  2. sbit LE1=P3^6;
  3. sbit LE2=P3^7;

  4. typedef unsigned char uint8_t;
  5. typedef unsigned char bool;
  6. typedef unsigned short int uint16_t;
  7. typedef unsigned  int uint32_t;
  8. typedef unsigned long int uint64_t;

  9. uint64_t pattern[]={
  10. 0x7f000000,0x3f000000,0x1f000000,0x3f000000,
  11. 0x7f000000,0xfb000000,0x71000000,0x20000000
  12. };

  13. void delay(uint16_t n)
  14. {
  15.         while(n--);
  16. }

  17. int main (void)
  18. {
  19.         char Startpos,Endpos;
  20.         char abovesign;
  21.         uint8_t loop;
  22.         uint8_t times;
  23.         uint16_t dat;
  24.         while(1)
  25.         {
  26.                 for(abovesign=-1;abovesign<=22;abovesign++)
  27.         {
  28.                 Startpos=0x10-(uint8_t)abovesign;
  29.                 Endpos=Startpos+7;
  30.                 for(times=0;times<=50;times++)
  31.                 {
  32.                         for(loop=0x00;loop<=0x0f;loop++)
  33.                         {                                
  34.                                 
  35.                         if(loop>=Startpos&&loop<=Endpos)
  36.                                 {
  37.                                         dat=(pattern[loop-Startpos]>>abovesign)>>8;
  38.                                 }
  39.                         else
  40.                                 {
  41.                                         dat=0x0000;
  42.                                 }                                
  43.                                         P2&=0x00;
  44.                                        
  45.                                         P3&=0xf0;
  46.                                         delay(2);
  47.                                         P3|=loop;
  48.                                        
  49.                                        
  50.                                 
  51.                                        
  52.                                         P2&=0x00;
  53.                                        
  54.                                         LE1=1;                                
  55.                                         P2|=(uint8_t)(dat);
  56.                                         delay(3);
  57.                                         LE1=0;
  58.                                 delay(2);
  59.                                 
  60.                                         P2&=0x00;
  61.                                        
  62.                                         LE2=1;
  63.                                         P2|=(uint8_t)(dat>>8);
  64.                                         delay(3);
  65.                                         LE2=0;
  66.                                         delay(2);
  67.                                                                                                                
  68.                         }
  69.                 }
  70.                 delay(10);
  71.         }        
  72. }
  73.         return 0;
  74. }
復(fù)制代碼


作者: joyb    時(shí)間: 2024-1-28 08:46
abovesign=-1;時(shí),
(uint8_t)abovesign是多少?
作者: cedtek    時(shí)間: 2024-1-28 20:46
圖片在哪里?硬件連線圖麻煩補(bǔ)一個(gè)唄
作者: 黃油蝴蝶    時(shí)間: 2024-1-30 12:29
不好意思,忘貼硬件圖了

屏幕截圖 2024-01-27 095458.png (55.06 KB, 下載次數(shù): 67)

屏幕截圖 2024-01-27 095458.png





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