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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5271|回復: 3
打印 上一主題 下一主題
收起左側(cè)

51單片機8*8LED點陣翻頁 閃爍 靜止 平移顯示(仿真+程序)有模式切換按鈕

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:409906 發(fā)表于 2020-6-11 15:41 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
基于單片機的LED點陣設計
基本要求:利用單片機AT89C51設計LED點陣,顯示器能顯示不同的字符、圖形,能夠用獨立鍵控制不同字符的切換效果。
創(chuàng)新:顯示效果可以是閃爍;靜止;平移等。
任務區(qū)分:A——每隔1s閃爍1次
B——循環(huán)平移,速度自定

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg52.h>

  2. sbit ADDR0 = P1^0;
  3. sbit ADDR1 = P1^1;
  4. sbit ADDR2 = P1^2;
  5. sbit ADDR3 = P1^3;
  6. sbit KEY   = P3^5;

  7. unsigned int cnt,m,stage,sec=1000;

  8. unsigned char code image[][8] = {  
  9.                 {0xFF,0xE7,0xDB,0xDB,0xDB,0xDB,0xE7,0xFF},     //0
  10.                 {0xFF,0xE7,0xEF,0xEF,0xEF,0xEF,0xC3,0xFF},     //1
  11.     {0xFF,0xE3,0xDF,0xDF,0xE7,0xFB,0xC3,0xFF},     //2
  12.                 {0xE3,0xDF,0xDF,0xE7,0xDF,0xDF,0xE3,0xFF},     //3
  13.                 {0xFF,0xEF,0xE7,0xEB,0xC3,0xEF,0xEF,0xFF},          //4
  14.                 {0xFB,0xC3,0xFB,0xE3,0xDF,0xDF,0xE3,0xFF},                //5
  15.                 {0xE7,0xFB,0xFB,0xE3,0xDB,0xDB,0xE7,0xFF},    //6
  16.                 {0xFF,0xC3,0xDF,0xDF,0xDF,0xDF,0xDF,0xFF},    //7
  17.                 {0xE7,0xDB,0xDB,0xE7,0xDB,0xDB,0xE7,0xFF},    //8
  18.                 {0xE7,0xDB,0xDB,0xC7,0xDF,0xDF,0xE7,0xFF}     //9
  19. };
  20. unsigned char code image1[][8] = {              //心跳
  21.                 {0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7},  //大心
  22.                 {0xFF,0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF},  //中心
  23.                 {0xFF,0xFF,0xFF,0xDB,0xC3,0xE7,0xFF,0xFF},         //小心
  24. };

  25. unsigned char code image3[][8] = {              //小坦克
  26.         {0xFE,0xFF,0xE3,0xE3,0xF7,0xFF,0xFF,0xFF},
  27. {0xFE,0xFF,0xFF,0xE3,0xE3,0xF7,0xFF,0xFF},
  28. {0xFE,0xFF,0xFF,0xFF,0xE3,0xE3,0xF7,0xFF},
  29. {0xFE,0xFF,0xFF,0xFF,0xF3,0xE3,0xF3,0xFF},
  30. {0xFE,0xFF,0xFF,0xFF,0xE7,0xC7,0xE7,0xFF},
  31. {0xFE,0xFF,0xFF,0xFF,0xCF,0x8F,0xCF,0xFF},
  32. {0xFE,0xFF,0xFF,0xFF,0xDF,0x8F,0x8F,0xFF},
  33. {0xFE,0xFF,0xFF,0xDF,0x8F,0x8F,0xFF,0xFF},
  34. {0xFE,0xFF,0xDF,0x8F,0x8F,0xFF,0xFF,0xFF},
  35. {0xFE,0xDF,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF},
  36. };

  37. unsigned char code image2[] = {                  //0-->9平移
  38.                 0xFF,0xE7,0xDB,0x5A,0x5A,0xDB,0xE7,0xFF,0xFF,0xE7,0xEF,0x6E,0x6E,0xEF,0xC3,0xFF,
  39.                 0xFF,0xE3,0xDF,0x5E,0x66,0xFB,0xC3,0xFF,0xE3,0xDF,0xDF,0x66,0x5E,0xDF,0xE3,0xFF,
  40.                 0xFF,0xEF,0xE7,0x6A,0x42,0xEF,0xEF,0xFF,0xFB,0xC3,0xFB,0x62,0x5E,0xDF,0xE3,0xFF,
  41.                 0xE7,0xFB,0xFB,0x62,0x5A,0xDB,0xE7,0xFF,0xFF,0xC3,0xDF,0x5E,0x5E,0xDF,0xDF,0xFF,
  42.                 0xE7,0xDB,0xDB,0x66,0x5A,0xDB,0xE7,0xFF,0xE7,0xDB,0xDB,0x46,0x5E,0xDF,0xE7,0xFF,
  43. };



  44. void Delay10ms()               
  45. {
  46.         unsigned char i, j;

  47.         i = 20;
  48.         j = 113;
  49.         do
  50.         {
  51.                 while (--j);
  52.         } while (--i);
  53. }


  54. void main()
  55. {
  56.     EA = 1;       //使能總中斷
  57.     ADDR3 = 0;
  58.     TMOD = 0x01;  //設置T0為模式1
  59.     TH0  = 0xFC;  //為T0賦初值0xFC67,定時1ms
  60.     TL0  = 0x67;
  61.     ET0  = 1;     //使能T0中斷
  62.     TR0  = 1;     //啟動T0
  63.     while (1)
  64.                 {
  65.                         if(stage>3)stage=0;
  66.                         if(KEY==0)  
  67.                 {
  68.                         Delay10ms();
  69.                         if(KEY==1)stage++;
  70.                         
  71.                 }
  72.                         if(cnt >= sec)
  73.                         {
  74.                                 cnt = 0;
  75.                                 m++;
  76.                                 
  77.                         }
  78.                 }
  79. }
  80. /* 定時器0中斷服務函數(shù) */
  81. void InterruptTimer0() interrupt 1
  82. {
  83.     static unsigned char i = 0;  //動態(tài)掃描的索引
  84.           static unsigned char tmr = 0;  //250ms軟件定時器
  85.     static unsigned char index = 0;  //圖片刷新索引

  86.     TH0 = 0xFC;  //重新加載初值
  87.     TL0 = 0x67;
  88.     P0 = 0xFF;   //顯示消隱
  89.                 cnt++;
  90.         /***********************模式一:數(shù)字閃出***********************************/
  91.                 if(stage==0)                    
  92.                 {
  93.                         sec = 1000;
  94.                         if(m>=10)m=0;
  95.                         switch (i)
  96.                         {
  97.                                         case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[m][0]; break;
  98.                                         case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[m][1]; break;
  99.                                         case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[m][2]; break;
  100.                                         case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[m][3]; break;
  101.                                         case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[m][4]; break;
  102.                                         case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[m][5]; break;
  103.                                         case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[m][6]; break;
  104.                                         case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[m][7]; break;
  105.                                         default: break;
  106.                         }
  107.                 }
  108.         /**********************模式二:動態(tài)愛心************************************/
  109.                 else if(stage==1)
  110.                 {
  111.                         sec = 150;
  112.                         if(m>=3)m=0;
  113.                         switch (i)
  114.                         {
  115.                                         case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image1[m][0]; break;
  116.                                         case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image1[m][1]; break;
  117.                                         case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image1[m][2]; break;
  118.                                         case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image1[m][3]; break;
  119.                                         case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image1[m][4]; break;
  120.                                         case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image1[m][5]; break;
  121.                                         case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image1[m][6]; break;
  122.                                         case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image1[m][7]; break;
  123.                                         default: break;
  124.                         }
  125.                 }
  126.         /**********************模式三:坦克走動**************************************/
  127.                 else if(stage==2)
  128.                 {
  129.                         sec = 800;
  130.                         if(m>=10)m=0;
  131.                         switch (i)
  132.                         {
  133.                                         case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image3[m][0]; break;
  134.                                         case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image3[m][1]; break;
  135.                                         case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image3[m][2]; break;
  136.                                         case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image3[m][3]; break;
  137.                                         case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image3[m][4]; break;
  138.                                         case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image3[m][5]; break;
  139.                                         case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image3[m][6]; break;
  140.                                         case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image3[m][7]; break;
  141.                                         default: break;
  142.                         }
  143.                 }
  144.         /**********************模式四:數(shù)字平移****************************************/
  145.                 else if(stage==3)
  146.                 {
  147.                         switch (i)
  148.                                 {
  149.                                                 case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image2[index+0]; break;
  150.                                                 case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image2[index+1]; break;
  151.                                                 case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image2[index+2]; break;
  152.                                                 case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image2[index+3]; break;
  153.                                                 case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image2[index+4]; break;
  154.                                                 case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image2[index+5]; break;
  155.                                                 case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image2[index+6]; break;
  156.                                                 case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image2[index+7]; break;
  157.                                                 default: break;
  158.                                 }
  159.                         //以下代碼完成每250ms改變一幀圖像
  160.                         tmr++;
  161.                         if (tmr >= 250)  //達到250ms時改變一次圖片索引
  162.                         {
  163.                                         tmr = 0;
  164.                                         index++;
  165.                                         if (index >= 72)  //圖片索引達到32后歸零
  166.                                         {
  167.                                                         index = 0;
  168.                                         }
  169.                         }
  170.                 }

  171. }
復制代碼

所有資料51hei提供下載:
點陣顯示.zip (112.3 KB, 下載次數(shù): 155)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
板凳
ID:105782 發(fā)表于 2020-6-27 21:51 | 只看該作者
樓主電路圖好像不全哦
回復

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
5#
ID:88256 發(fā)表于 2020-12-3 21:53 | 只看該作者
自己寫的一個翻頁感覺不是滿意,下載一個參考一下思路,謝謝了!
回復

使用道具 舉報

6#
ID:830316 發(fā)表于 2021-10-23 15:50 | 只看該作者
取模格式是咋樣的吖
回復

使用道具 舉報

7#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表