久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2551|回復: 1
打印 上一主題 下一主題
收起左側

單片機+三色點陣的測試 附源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:977804 發(fā)表于 2022-1-11 19:54 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
淘到一個三色點陣,首先網(wǎng)上找引腳圖,沒有找到,然后就是自己測試。
圖123是單獨測顏色 ,圖4是匯總。
圖5是接線圖,直接32個IO口全上,沒有74hc595,
圖6是點亮單色
圖7是三色都點亮。
后續(xù)有時間再做個動態(tài)。


附件里是代碼和三色動態(tài)測試視頻

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


  2. //rotuse可以做到的 8*8點陣陽極接P2口,陰極接P1口,用下面的代碼就可以實現(xiàn)!
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. void Init_int();
  6. void Init_time();
  7. void display(int yin,int yang);
  8. uint num_num[33][8]={
  9.                                  {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, //上電先全滅  
  10.                                 {0x99,0x00,0x00,0x00,0x81,0xc3,0xe7,0xff,},  //大愛心
  11.                   {0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF,0xFF,},  //小愛心                                //1
  12.                                  {0x99,0x66,0x7E,0x7E,0xBD,0xDB,0xE7,0xFF,},   //環(huán)心 中空外圈
  13.                                                                
  14.                  {0x99,0x81,0x81,0xC3,0xE7,0xFF,0xFF,0xFF,},   // 小心上                              //4
  15.                {0xFF,0x99,0x81,0x81,0xC3,0xE7,0xFF,0xFF,},      //   小心下                         //5
  16.                             {0x99,0x81,0x81,0xC3,0xE7,0xFF,0xFF,0xFF,},   // 小心上                              //4
  17.                {0xFF,0x99,0x81,0x81,0xC3,0xE7,0xFF,0xFF,},      //   小心下                         //5

  18.                                  {0x99,0x66,0x7E,0x7E,0xBD,0xDB,0xE7,0xFF,},   //環(huán)心 中空外圈
  19.                                   {0x99,0x00,0x00,0x00,0x81,0xc3,0xe7,0xff,},  //大愛心
  20.                                           //10
  21.                                            //注意:數(shù)組第一個要移到最后


  22.                                    {0xE7,0xE7,0x81,0x99,0x99,0xFF,0xFF,0xFF,},  //坦克
  23.                                          {0xFF,0xE7,0xE7,0x81,0x99,0x99,0xFF,0xFF,},   //坦克下移一位
  24.                                              {0xFF,0xFF,0xE7,0xE7,0x81,0x99,0x99,0xFF,},   // 坦克再下移一位  
  25.                                                  //13
  26.                                                                    
  27.                {0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,},      // 中間亮4點                       //5
  28.                             {0xEF,0xEF,0xE0,0x7,0xF7,0xF7,0xF7,0xEF,},   // 四點加翅膀                           //4
  29.               {0xF7,0x6F,0xA3,0xC5,0xF6,0xEF,0xDF,0xFB,},      //  翅膀轉一度
  30.                            {0xBD,0xDB,0xE7,0xE7,0xD3,0xBD,0x7E,0x7E,},         //  翅膀打直
  31.                                           //17
  32.                                 {0xBD,0xDB,0xE7,0xE7,0xDB,0xBD,0xFF,0xFF,},   //   翅膀收一格
  33.                                 {0xFF,0xDB,0xE7,0xE7,0xDB,0xFF,0xFF,0xFF,},           //   翅膀再收格
  34.                                 {0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,},            //   翅膀收完  只亮中間四點
  35.                                            //20         //注意:數(shù)組第一個要移到最后


  36.                             {0x7E,0x7E,0x66,0x66,0x7E,0x7E,0x0,0x0,},         //中間四點,  外面一圈
  37.                                  {0x81,0xBD,0xA5,0xA5,0xBD,0x81,0xFF,0xFF,}, //中間四點, 第二圈
  38.                                  {0xFF,0xC3,0xDB,0xDB,0xC3,0xFF,0xFF,0xFF,},   //小內圈
  39.                                                   //23
  40.                                         {0xBD,0xFF,0xE7,0xE7,0xFF,0xBD,0xFF,0xFF,},        //中間四點  中圈四點
  41.                                    {0x9D,0xFD,0xE7,0xE7,0xBF,0xB9,0xFF,0xFF,},         //中間四點  中圈8點
  42.                                    {0xCF,0xFD,0xE5,0xA7,0xBF,0xF3,0xFF,0xFF,},           //中間四點  中圈8點移動一位
  43.                                    {0xE7,0xFF,0xA5,0xA5,0xFF,0xE7,0xFF,0xFF,} ,            //中間四點  中圈8點再移動一位
  44.                                    {0xFF,0xE7,0xC3,0xC3,0xE7,0xFF,0xFF,0xFF,},                 //中間四點   中圈向中聚攏
  45.                                                    //28
  46.                                     {0xFF,0xE7,0xDB,0xDB,0xE7,0xFF,0xFF,0xFF,},           //顯示空心小圓
  47.                                         {0xC3,0xBD,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,}, //顯示空心中圓
  48.                                         {0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x81,0x81,},    //顯示空心大圓
  49.                                                                         {0x99,0x00,0x00,0x00,0x81,0xc3,0xe7,0xff,},  //大愛心
  50.                  // {0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF,0xFF,},  //小愛心                                //1
  51.                                  {0x99,0x66,0x7E,0x7E,0xBD,0xDB,0xE7,0xFF,},   //環(huán)心 中空外圈
  52.                                         //33
  53.                                          };                                  //9

  54. unsigned int count,i=1,weiyi,timer,shu,n=1;
  55. unsigned int YS,YS2;

  56. void main()
  57. {
  58.         Init_time();
  59.       
  60.         while(1)
  61.         {}
  62. }

  63. void Init_time()                                   //定時器初始化
  64. {
  65.         TMOD|=0x01;
  66.         TH0=0xff;
  67.         TL0=0x1F;
  68.         TR0=1;
  69.         ET0=1;
  70.         EA=1;      
  71. }



  72. void time() interrupt 1                          //定時器函數(shù)
  73. {        //        uchar xx;
  74.         TH0=0xfE;                     //50微秒
  75.         TL0=0xFF;
  76.         count++;
  77.         if(count>8)
  78.         {        //        i=0;
  79.                 count=0;
  80.                // if(xx==0){display(i,i);}
  81.                                 //if(xx!=1){ display(i-1,i);}
  82.                                  display(i-1,i);
  83.                 i++;  
  84.                 if(i>8)        //改變的是右邊顯示的亮滅
  85.                 i=1;  // xx=1;
  86.         }  
  87.         timer++;
  88.         if(timer>1250)
  89.         {
  90.                 timer=0;
  91.                 //weiyi++;
  92.                                 weiyi=3; //讓位停在5,字就不會變了
  93.                                      shu++;
  94.                         if(shu>32)
  95.                                                  shu=0; //此行反饋的數(shù),就是顯示的信息,讓SHU=0,就是一直顯示0
  96.                                
  97.                                                     if((shu>=0)&&(shu<12))YS=0;
  98.                                                         if((shu>=12)&&(shu<23))YS=1;
  99.                                                         if((shu>=23)&&(shu<40))YS=2;
  100.                        
  101.         }
  102. }
  103. void display(int yin,int yang)                   //顯示函數(shù)
  104. {
  105. switch (YS)
  106. {
  107.                 case(0): //初次顏色值
  108.                   {
  109.                           P1=P3=0XFF;//亮此色時,其他色關閉
  110.                 P2 = ~(~num_num[shu][yin]<<weiyi);
  111.                 if(weiyi<3)
  112.                 {
  113.                         P2 = ~(~num_num[shu][yin]>>3-weiyi);               
  114.                 }
  115.                 else
  116.                 {
  117.                         P2 = ~(~num_num[shu][yin]<<weiyi-3);
  118.                 }
  119.                 switch(yang)
  120.                 {
  121.                         case 0 : P0 = 0x01;break;
  122.                         case 1 : P0 = 0x02;break;
  123.                         case 2 : P0 = 0x04;break;
  124.                         case 3 : P0 = 0x08;break;
  125.                         case 4 : P0 = 0x10;break;
  126.                         case 5 : P0 = 0x20;break;
  127.                         case 6 : P0 = 0x40;break;
  128.                         case 7 : P0 = 0x80;break;
  129.                         default : P0 = 0x01; break;
  130.                 }
  131.                         }          break;//顯示第0位               
  132.                
  133.                
  134.                
  135.                 case(1):       
  136.                   {
  137.                                                      P2=P3=0XFF;//亮此色時,其他色關閉
  138.                                         P1 = ~(~num_num[shu][yin]<<weiyi);
  139.                 if(weiyi<3)
  140.                 {
  141.                         P1 = ~(~num_num[shu][yin]>>3-weiyi);               
  142.                 }
  143.                 else
  144.                 {
  145.                         P1 = ~(~num_num[shu][yin]<<weiyi-3);
  146.                 }
  147.                 switch(yang)
  148.                 {
  149.                         case 0 : P0 = 0x01;break;
  150.                         case 1 : P0 = 0x02;break;
  151.                         case 2 : P0 = 0x04;break;
  152.                         case 3 : P0 = 0x08;break;
  153.                         case 4 : P0 = 0x10;break;
  154.                         case 5 : P0 = 0x20;break;
  155.                         case 6 : P0 = 0x40;break;
  156.                         case 7 : P0 = 0x80;break;
  157.                         default : P0 = 0x01; break;
  158.                         }          
  159.                   
  160.                   }        break;//顯示第0位


  161.                 case(2):        //亮紅燈,P3紅燈
  162.                   {
  163.                                                      P1=P2=0Xff;//亮此色時,其他色關閉
  164.                                         //        P0=0X00;//COM口重新打開
  165.                                         P3 = ~(~num_num[shu][yin]<<weiyi);
  166.                 if(weiyi<3)
  167.                 {
  168.                         P3 = ~(~num_num[shu][yin]>>3-weiyi);               
  169.                 }
  170.                 else
  171.                 {
  172.                         P3 = ~(~num_num[shu][yin]<<weiyi-3);
  173.                 }
  174.                 switch(yang)
  175.                 {
  176.                         case 0 : P0 = 0x01;break;
  177.                         case 1 : P0 = 0x02;break;
  178.                         case 2 : P0 = 0x04;break;
  179.                         case 3 : P0 = 0x08;break;
  180.                         case 4 : P0 = 0x10;break;
  181.                         case 5 : P0 = 0x20;break;
  182.                         case 6 : P0 = 0x40;break;
  183.                         case 7 : P0 = 0x80;break;
  184.                         default : P0 = 0x01; break;
  185.                         }          
  186.                   
  187.                   }        break;//顯示第0位








  188. }
  189. }
復制代碼
Keil代碼下載,以及實物的視頻:
Desktop.rar (3.31 MB, 下載次數(shù): 7)

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:977804 發(fā)表于 2022-1-11 19:56 | 只看該作者
不小心復制了東西進去,怎么修改呀,
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久不卡 | 亚洲精色| 色婷婷综合在线观看 | 成人三级av | 亚洲日产精品 | 国产精品成人品 | 久久tv在线观看 | 欧美成人a∨高清免费观看 色999日韩 | 天堂一区在线 | 综合五月 | 日韩精品 电影一区 亚洲 | 中文字幕免费观看 | av在线一区二区三区 | 超碰人人插 | 国产精品一区二区电影 | www日本在线播放 | 国产午夜av片 | av中文字幕在线观看 | 亚洲人成网站777色婷婷 | 日本欧美在线 | 亚洲人在线 | www中文字幕 | www网站在线观看 | 国产在线一区二区三区 | 亚洲欧洲中文日韩 | 久久成人高清视频 | 中文字幕免费中文 | 亚洲欧美在线一区 | 爱爱免费视频网站 | 日韩在线观看中文字幕 | av黄在线观看 | 中文字幕国产精品视频 | 精品亚洲一区二区 | 日韩在线免费视频 | 日韩av免费在线观看 | 国产在线对白 | 日韩中文在线视频 | 欧美综合久久久 | 日韩精品成人 | 成人免费在线观看 | 欧美国产91 |