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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自己做的單片機(jī)音樂盒,外加LED做數(shù)碼管顯示數(shù)字,附程序視頻

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:851329 發(fā)表于 2020-12-17 19:56 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
制作出來的實物圖如下(附件內(nèi)附視頻):


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit speaker=P1^4;//喇叭接30腳
  5. sbit key1=P1^0;//流水燈按鍵(暫時)
  6. sbit key2=P1^1;//播放音樂按鍵(暫定)
  7. uchar a,b,num1,s1num,n1,n2;
  8. uchar qushu=0;
  9. char num;//定義num為可以負(fù)數(shù)
  10. uchar code yinfu[]={0xfb,0xe9,      //Do
  11.                    0xfc,0x5c,      //Re
  12.                    0xfc,0xc1,      //Mi
  13.                    0xfc,0xef,      //Fa
  14.                    0xfd,0x45,      //So
  15.                    0xfd,0x92,      //La
  16.                    0xfd,0xd0,      //Si
  17.                    0xfd,0xee,      //Do#
  18.                                    0x00,0x00,           //間隔
  19. };
  20. uchar code shengri_tone[]={   1,0,1,2,1,4,3,0, //生日快樂音調(diào)
  21.                                    1,0,1,2,1,5,4,0,
  22.                                    1,0,1,8,6,4,3,2,0,
  23.                                    7,0,7,6,4,5,4,0       //0代表不發(fā)聲,即停頓;數(shù)字即為音調(diào)
  24. };
  25. uchar code laohu_tone[]={1,2,3,1,0,1,2,        //兩只老虎樂譜 40個音符
  26.                                         3,1,0,3,4,5,0,3,
  27.                                         4,5,0,5,6,5,4,3,
  28.                                         1,0,5,6,5,4,3,1,
  29.                                         0,3,2,1,0,3,2,1,0

  30. };
  31. uchar code yishan_tone[]={1,1,5,5,6,6,5,        //星星樂譜  54個音符
  32.                                                 0,4,4,3,3,2,2,
  33.                                                 1,0,5,5,4,4,3,
  34.                                                 3,2,0,5,5,4,4,
  35.                                                 3,3,2,0,1,1,5,5,
  36.                                                 6,6,5,0,4,4,3,
  37.                                                 3,2,2,1,0
  38. };
  39. uchar code shengri_beat[]={   24,1,24,48,48,48,72,5,//節(jié)拍
  40.                                    24,1,24,48,48,48,72,5,
  41.                                    24,1,24,48,48,48,48,72,5,
  42.                                    24,1,24,48,48,48,72,5    //節(jié)拍,即tone表各音調(diào)的延時
  43. };
  44. uchar code laohu_beat[]={   24,24,24,48,5,24,24,//節(jié)拍
  45.                                    24,48,5,24,24,48,5,24,
  46.                                     24,72,5,24,24,24,24,//節(jié)拍
  47.                                    24,48,5,24,24,24,24,24,72,
  48.                                                                      5,24,24,48,5,24,24,//節(jié)拍
  49.                                    72,5//節(jié)拍  //節(jié)拍,即tone表各音調(diào)的延時
  50. };
  51. uchar code yishan_beat[]={   24,24,24,24,24,24,48,//節(jié)拍
  52.                                    5,24,24,24,24,24,24,72,
  53.                                     5,24,24,24,24,24,24,//節(jié)拍
  54.                                    48,5,24,24,24,24,24,24,72,
  55.                                                                      5,24,24,24,24,24,24,//節(jié)拍
  56.                                    48,5,24,24,24,24,24,24,72,5//節(jié)拍,即tone表各音調(diào)的延時
  57. };
  58. uchar code ledtable[]={0x7f,0xbf,0xdf,0xef, //取反
  59. 0xf7,0xfb,0xfd,0xfe};//P0組口的發(fā)光二極管代碼(焊接過程可能會相反,具體更改)
  60. uchar code ledtable2[]={0x7f,0xbf,0xdf,0xef, //取反
  61. 0xf7,0xfb,0xfd,0xfe};//P2組口發(fā)光二極管代碼,相反!
  62. void check_key();//改為P3組為按鍵
  63. void keyscan();
  64. void turn();//順時針流動
  65. void back();
  66. void qianhou();
  67. void dangshuang();
  68. void delay(uint z);//延時函數(shù)聲明
  69. void delay1(void);//聲明第二個延時函數(shù)
  70. void play1(void);//播放生日快樂

  71. void main()
  72. {
  73.         s1num=0;//流水燈種類標(biāo)志
  74.         key1=1;
  75.         key2=1;
  76.         TMOD=0x01;
  77.         TH0=a;
  78.         TL0=b;
  79.         ET0=1;//打開定時器,但是未允許中斷
  80.         TR0=1;
  81.         while(1)
  82.         {
  83.         check_key();
  84.         keyscan();

  85.         }

  86. }

  87. void time0() interrupt 1
  88. {
  89.         TH0=a;
  90.         TL0=b;
  91.         speaker=~speaker;
  92. }
  93. void check_key()
  94. {
  95.         P3=0xff;//先賦給P2組口高電平
  96.         switch(P3)//按下一個鍵相應(yīng)4個燈亮
  97.         {
  98.                 case 0xfd:P0=0xff;P2=0x92;a=0xfb;b=0xe9;EA=1;break;//P0,P2組為發(fā)光二極管組
  99.                 case 0xfb:P0=0xe2;P2=0x20;a=0xfc;b=0x5c;EA=1;break;//注意:EA不能改為TR0
  100.                 case 0xef:P0=0xea;P2=0x00;a=0xfc;b=0xc1;EA=1;break;
  101.                 case 0x7f:P0=0xf8;P2=0x82;a=0xfc;b=0xef;EA=1;break;
  102.                 case 0xfe:P0=0xe8;P2=0x4;a=0xfd;b=0x45;EA=1;break;
  103.                 case 0xf7:P0=0xe0;P2=0x4;a=0xfd;b=0x92;EA=1;break;
  104.                 case 0xdf:P0=0xfe;P2=0x90;a=0xfd;b=0xd0;EA=1;break;
  105.                 case 0xbf:P0=0xe0;P2=0x00;a=0xfd;b=0xee;EA=1;break;
  106.                 default:EA=0;speaker=0;//P0=0xff;P2=0xff ;
  107.         }
  108. }
  109. void delay(uint z)
  110. {
  111.         uint x,y;
  112.         for(x=z;x>0;x--)
  113.         for(y=110;y>0;y--);
  114. }
  115. void keyscan()
  116. {
  117.           if(key1==0)
  118.           {
  119.                   delay(5);
  120.                 if(key1==0)
  121.                 {
  122.                         s1num++;
  123.                         while(!key1);
  124.                         if(s1num==1)
  125.                         {
  126.                                 turn();
  127.                         }
  128.                 }
  129.                 if(s1num==2)
  130.                 {
  131.                         back();
  132.                 }
  133.                 if(s1num==3)
  134.                 {
  135.                         qianhou();
  136.                 }
  137.                 if(s1num==4)
  138.                 {
  139.                         dangshuang();
  140.                 }
  141.                 if(s1num==5)
  142.                         s1num=1;
  143.           }
  144.                 if(key2==0)
  145.                 {
  146.                         delay(5);
  147.                         if(key2==0)
  148.                         {
  149.                                    qushu++;
  150.                                  if(qushu==4)
  151.                                 {
  152.                                          qushu=1;
  153.                             }
  154.                                  while(~key2);
  155.                                  play1();
  156.                         }                                         
  157.                
  158.                 }
  159. }

  160. void delay1(void)//第二個延時函數(shù)
  161. {
  162.        uchar n=15;
  163.        while(n--)
  164.        {
  165.               uchar i;
  166.               for(i=0;i<125;i++);
  167.        }
  168. }
  169. void play1(void)//播放生日快樂
  170. {

  171.        uchar m=0;
  172.        uchar s;     
  173.        uchar c=1;
  174.            P0=0xaa;
  175.            P2=0x55;
  176.            if(qushu==1)
  177.            {
  178.                while(1)
  179.                {
  180.                       EA=0;
  181.                       c=shengri_tone[m];                            //取音符
  182.                       s=shengri_beat[m];                      //取節(jié)拍
  183.                       a=yinfu[2*c-2];                           
  184.                       b=yinfu[2*c-1];                           
  185.                       EA=1;
  186.                       while(s--)
  187.                       {
  188.                              delay1();
  189.                                                  P0=~P0;
  190.                                                  P2=~P2;
  191.                       }
  192.                       m++;
  193.                       if(m>=33) return;                      //數(shù)值是shengri相關(guān)表中的元素數(shù)量  
  194.                }
  195.           }
  196.           else if(qushu==2)
  197.           {
  198.                    while(1)
  199.                {
  200.                       EA=0;
  201.                       c=laohu_tone[m];                            //取音符
  202.                       s=laohu_beat[m];                      //取節(jié)拍
  203.                       a=yinfu[2*c-2];                           
  204.                       b=yinfu[2*c-1];                           
  205.                       EA=1;
  206.                       while(s--)
  207.                       {
  208.                              delay1();
  209.                                                  P0=~P0;
  210.                                                  P2=~P2;
  211.                       }
  212.                       m++;
  213.                       if(m>=40) return;                      //數(shù)值是shengri相關(guān)表中的元素數(shù)量  
  214.                }
  215.           }  
  216.                     else if(qushu==3)
  217.           {
  218.                    while(1)
  219.                {
  220.                       EA=0;
  221.                       c=yishan_tone[m];                            //取音符
  222.                       s=yishan_beat[m];                      //取節(jié)拍
  223.                       a=yinfu[2*c-2];                           
  224.                       b=yinfu[2*c-1];                           
  225.                       EA=1;
  226.                       while(s--)
  227.                       {
  228.                              delay1();
  229.                                                  P0=~P0;
  230.                                                  P2=~P2;
  231.                       }
  232.                       m++;
  233.                       if(m>=48) return;                      //數(shù)值是shengri相關(guān)表中的元素數(shù)量  
  234.                }
  235.           }   
  236. }


  237. /*以下為N種流水燈流動花式*/
  238. void turn()//流水燈順時針走動(5次)
  239. {

  240.          for(num1=0;num1<8;num1++)
  241.          {
  242.          for(num=0;num<8;num++)
  243.          {
  244.                    P0=ledtable[num];
  245.                   delay(30);//時間暫定
  246.          }
  247.          P0=0xff;//之后關(guān)閉P1組
  248.          for(num=7;num>-1;num--)
  249.          {
  250.                  P2=ledtable2[num];
  251.                 delay(30);
  252.          }
  253.          P2=0xff;//之后關(guān)閉P2組
  254.          }
  255. }
  256. void back()//逆時針流動
  257. {
  258.         for(num1=0;num1<8;num1++)
  259.         {
  260.         for(num=0;num<8;num++)
  261.         {
  262.                 P2=ledtable[num];
  263.                 delay(30);
  264.         }
  265.         P2=0xff;
  266.         for(num=7;num>-1;num--)
  267.         {
  268.                 P0=ledtable2[num];
  269.                 delay(30);
  270.         }
  271.         P0=0xff;
  272.         }
  273. ……………………

  274. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

內(nèi)含視頻
所有資料51hei提供下載:
keil4版 - 副本.zip (12.87 MB, 下載次數(shù): 39)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:451500 發(fā)表于 2020-12-17 21:43 | 只看該作者
手工能焊那么漂亮嗎?太牛了
回復(fù)

使用道具 舉報

板凳
ID:775739 發(fā)表于 2020-12-18 00:17 來自手機(jī) | 只看該作者
求問用的什么焊錫絲這么亮
回復(fù)

使用道具 舉報

地板
ID:775739 發(fā)表于 2020-12-18 00:18 來自手機(jī) | 只看該作者
大佬焊的相當(dāng)漂亮啊,錫里面拉了銅絲嗎
回復(fù)

使用道具 舉報

5#
ID:833307 發(fā)表于 2020-12-18 08:38 | 只看該作者
電子廠維修工程師的焊接工藝
回復(fù)

使用道具 舉報

6#
ID:226055 發(fā)表于 2020-12-18 14:54 | 只看該作者

雖然現(xiàn)在PCB打樣很便宜,甚至免費。但看到這樣的杰作,必須要贊!這是一種工匠精神!
回復(fù)

使用道具 舉報

7#
ID:739972 發(fā)表于 2020-12-18 15:53 | 只看該作者
錫里面拉了銅絲嗎,怎么這么板正?
回復(fù)

使用道具 舉報

8#
ID:851329 發(fā)表于 2020-12-19 17:31 | 只看該作者
抱書人人 發(fā)表于 2020-12-17 21:43
手工能焊那么漂亮嗎?太牛了

自己手工焊的。
回復(fù)

使用道具 舉報

9#
ID:851329 發(fā)表于 2020-12-19 17:34 | 只看該作者
瀨某人 發(fā)表于 2020-12-18 00:17
求問用的什么焊錫絲這么亮

用的高亮度63A 0.5mm 或0.8mm 看自己夏歡用粗的還是細(xì)的選一下就可以。
回復(fù)

使用道具 舉報

10#
ID:851329 發(fā)表于 2020-12-19 17:35 | 只看該作者
瀨某人 發(fā)表于 2020-12-18 00:18
大佬焊的相當(dāng)漂亮啊,錫里面拉了銅絲嗎

沒有拉銅絲,用的就是高亮度63A 0.5的錫絲。
回復(fù)

使用道具 舉報

11#
ID:851329 發(fā)表于 2020-12-19 17:36 | 只看該作者
wenhuixinxi3 發(fā)表于 2020-12-18 08:38
電子廠維修工程師的焊接工藝

過獎過獎,我只是一個剛學(xué)了2個月的小白。嘿嘿。
回復(fù)

使用道具 舉報

12#
ID:851329 發(fā)表于 2020-12-19 17:36 | 只看該作者
ccx123 發(fā)表于 2020-12-18 15:53
錫里面拉了銅絲嗎,怎么這么板正?

沒有,完全是一個點一個點焊完再自己連得線。
回復(fù)

使用道具 舉報

13#
ID:851329 發(fā)表于 2020-12-19 17:38 | 只看該作者
cocolala 發(fā)表于 2020-12-18 14:54

雖然現(xiàn)在PCB打樣很便宜,甚至免費。但看到這樣的杰作,必須要贊!這是一種工匠精神!

謝謝贊美,你可以以后關(guān)注一下我別的帖子,目前我的所有做的東西都是自己焊,不是PCB板雖然還沒有發(fā)布出來(主要是還沒有做完),弄完的話我會發(fā)出來的。謝謝啊。
回復(fù)

使用道具 舉報

14#
ID:851329 發(fā)表于 2020-12-19 17:41 | 只看該作者
抱書人人 發(fā)表于 2020-12-17 21:43
手工能焊那么漂亮嗎?太牛了

我就是手工焊的,這個只要練習(xí)練習(xí)就可以實現(xiàn),我也焊的一般,嘿嘿。
回復(fù)

使用道具 舉報

15#
ID:863695 發(fā)表于 2020-12-19 21:53 | 只看該作者
N種流水燈流動花式
回復(fù)

使用道具 舉報

16#
ID:851329 發(fā)表于 2020-12-20 10:38 | 只看該作者
fgheba 發(fā)表于 2020-12-19 21:53
N種流水燈流動花式

您說的是哪方面?可以描述的詳細(xì)點么?是我的代碼?還是什么?我沒有搞太懂。
回復(fù)

使用道具 舉報

17#
ID:863412 發(fā)表于 2020-12-21 10:07 | 只看該作者
樓主辛苦,謝謝了!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一本综合久久 | 亚洲成人网在线播放 | 中文字幕黄色大片 | 亚洲综合区| 九九在线视频 | 97超碰在线播放 | 色片在线观看 | 视频一区二区在线观看 | 欧美激情久久久久久 | 欧美高清一级片 | 美国a级毛片免费视频 | 超碰在线播 | 国产片一区二区三区 | 精品一区二区三区在线视频 | 欧美精品一区二区三区四区五区 | 精品久久香蕉国产线看观看亚洲 | 欧美精品一区二区三区在线播放 | a国产视频 | 色综合av | 午夜视频在线免费观看 | 久久久久国产精品 | 中文字幕在线免费 | 婷婷色国产偷v国产偷v小说 | 日皮视频免费 | 羞羞在线视频 | 久久久久久久综合色一本 | 精品国产乱码一区二区三区 | 欧美一区二区久久 | 成年人在线观看视频 | 久久久久久国产精品三区 | chengrenzaixian | 99爱国产 | 日本精品久久 | 精品不卡 | 在线视频国产一区 | 欧美成人一区二免费视频软件 | 国产真实精品久久二三区 | 成年人在线视频 | 国产日韩久久 | 欧美黄色网络 | 欧美一区2区三区3区公司 |