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

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

QQ登錄

只需一步,快速開始

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

基于51單片機(jī)的電子琴設(shè)計(jì)全套資料分享(PCB原理圖+仿真+源碼+文檔)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:414264 發(fā)表于 2018-10-24 15:17 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
設(shè)計(jì)內(nèi)容是電子琴設(shè)計(jì),分為高中低三個(gè)音域
有哆唻咪發(fā)嗖拉嘻七個(gè)音符
有仿真圖,文檔,原理圖,源程序,PCB圖
希望幫助到大家!


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



Altium Designer畫的單片機(jī)電子琴設(shè)計(jì)原理圖和PCB圖如下:(51hei附件中可下載工程文件)





單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. typedef unsigned int  uint;   
  4. typedef unsigned char uchar;
  5. sbit SDA1=P0^2;//串行數(shù)據(jù)輸入,對(duì)應(yīng)595的14腳SER
  6. sbit SCL1=P0^1;//移位寄存器時(shí)鐘輸入,對(duì)應(yīng)595的11腳SCK
  7. sbit SCL2=P0^0;//存儲(chǔ)寄存器時(shí)鐘輸入,對(duì)應(yīng)595的12腳RCK
  8. sbit W1=P0^3;
  9. sbit W2=P0^4;
  10. sbit k1=P1^0;
  11. sbit k2=P1^1;
  12. sbit k3=P1^2;
  13. sbit k4=P1^3;
  14. sbit k5=P1^4;
  15. sbit k6=P1^5;
  16. sbit k7=P1^6;
  17. sbit D1=P2^6;//播放音樂模式
  18. sbit D2=P2^7;//彈奏模式
  19. sbit k8=P3^2;//功能切換鍵
  20. sbit k9=P3^3;//低音
  21. sbit k10=P3^4;//中音
  22. sbit k11=P3^5;//高音
  23. sbit beep=P2^2;//蜂鳴器接口
  24. uchar code table1[]={   
  25.                                                 0x3F,/*0*/
  26.                                                 0x06,/*1*/
  27.                                                 0x5B,/*2*/
  28.                                                 0x4F,/*3*/
  29.                                                 0x66,/*4*/
  30.                                                 0x6D,/*5*/
  31.                                                 0x7D,/*6*/
  32.                                                 0x07,/*7*/
  33.                                                 0x7F,/*8*/
  34.                                                 0x6F,/*9*/
  35.                                                 0x37,/*N*///中音        
  36.                                                 0x38,/*L*///低音
  37.                                                 0x76,/*H*///高音
  38.                                                 0x79 /*E*/
  39.                                         };//共陰極數(shù)碼管
  40. uchar code table2[]={                 
  41.                                                 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//中音
  42.                                                 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,//低音的高8位
  43.                                                 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
  44.                         };//音階頻率表 低八位
  45. uchar code table3[]={               
  46.                                                 0x8E,0xED,0x44,0x6B,0xB4,0xF4,0x2D,//中音
  47.                                                 0x21,0xDB,0x87,0xD7,0x68,0xE8,0x5B,//低音的低8位
  48.                                                 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
  49.                                         };
  50. uchar code table4[]={
  51.                                                 1,2,3,1,      
  52.                                                 1,2,3,1,      
  53.                                                 3,4,5,   
  54.                                                 3,4,5,     
  55.                                                 5,6,5,4,3,1,   
  56.                                                 5,6,5,4,3,1,   
  57.                                                 1,12/*低音5*/,1,     
  58.                                                 1,12,1
  59.                                         };
  60. uchar code table5[]={
  61.                                                 4,4,4,4,   
  62.                                                 4,4,4,4,     
  63.                                                 4,4,8,   
  64.                                                 4,4,8,     
  65.                                                 2,1,2,1,4,4,   
  66.                                                 2,1,2,1,4,4,   
  67.                                                 4,4,6,      
  68.                                                 4,4,6
  69.                                         };
  70. uchar i;
  71. uchar key,aa=0;
  72. uchar bb,cc;
  73. bit flag=0;
  74. //延時(shí)子函數(shù)
  75. void delay(uint z)
  76. {
  77.         uint x,y;
  78.         for(x=z;x>0;x--)
  79.                 for(y=340;y>0;y--);               
  80. }
  81. void in(uchar Data)
  82. {
  83.         uchar i;
  84.         for(i=0;i<8;i++)   //循環(huán)8次,剛好移完8位
  85.         {
  86.               Data<<=1;
  87.                   SCL1=CY;
  88.                   SDA1=1;        //先將移位寄存器控制引腳置為低   
  89.               _nop_();
  90.                   _nop_();
  91.               SDA1=0;
  92.         }
  93. }
  94. void out()
  95. {
  96.         SCL2=0;   //先將存儲(chǔ)寄存器引腳置為低
  97.         _nop_();
  98.         SCL2=1;    //再置為高,產(chǎn)生移位時(shí)鐘上升沿,上升沿時(shí)移位寄存器的數(shù)據(jù)進(jìn)入數(shù)據(jù)存儲(chǔ)寄存器,更新顯示數(shù)據(jù)。
  99.         _nop_();
  100.         SCL2=0;
  101. }
  102. //初始化子函數(shù)
  103. void init()
  104. {
  105.         beep=0;
  106.         D1=1;
  107.         D2=0;
  108.         EA=1;//開總中斷
  109.         TCON=0x01;//外部中斷0設(shè)置為邊沿觸發(fā)
  110.         EX0=1;//開外部中斷0
  111.         ET0=1;
  112.         ET1=1;
  113.         TMOD=0x11;//定時(shí)器0,1工作在定時(shí)狀態(tài),均為方式1
  114. }
  115. //數(shù)碼管顯示子函數(shù)
  116. void display1()
  117. {
  118.         in(table1[aa]);  //再傳段碼
  119.         out();
  120.         W1=0;;
  121.         delay(1);             //延遲時(shí)間2ms以內(nèi)
  122.         W1=1;
  123.         in(table1[cc+1]);  //再傳段碼
  124.         out();
  125.         W2=0;
  126.         delay(1);             //延遲時(shí)間2ms以內(nèi)
  127.         W2=1;
  128. }
  129. //高低音選擇子函數(shù)
  130. void yinjie()
  131. {
  132.         if(k10==0)
  133.         {        
  134.                 delay(5);
  135.                 if(k10==0)
  136.                 {   
  137.                         aa=10;
  138.                         bb=0;//返回10為seg[10]顯示C
  139.                 }
  140.         }
  141.         if(k9==0)
  142.         {        
  143.                 delay(5);
  144.                 if(k9==0)
  145.                 {        
  146.                         aa=11;
  147.                         bb=1;//返回11為seg[11]顯示L
  148.                 }
  149.         }
  150.         if(k11==0)
  151.         {        
  152.                 delay(5);
  153.                 if(k11==0)
  154.                 {        
  155.                         aa=12;
  156.                         bb=2;//返回12為seg[12]顯示H
  157.                 }
  158.         }
  159.         if(aa==0)
  160.         {
  161.                 aa=13;
  162.         }
  163. }
  164. //播放音樂子函數(shù)
  165. void display_music()
  166. {        
  167.         TH0=table2[table4[i]-1];
  168.         TL0=table3[table4[i]-1];
  169.         while(flag==0)
  170.         {        
  171.                 if(i<32)
  172.                 {
  173.                         TR0=1;
  174.                         delay(57*table5[i]);
  175.                         i++;
  176.                 }
  177.                 if(i==32)
  178.                 {
  179.                         i=0;
  180.                 }
  181.         }        
  182. }
  183. //演奏模式子函數(shù)
  184. void display_play()
  185. {
  186.         TR0=0;
  187.         TR1=0;
  188.         yinjie();
  189.         in(table1[aa]);  //再傳段碼
  190.         out();
  191.         W1=0;;
  192.         delay(1);             //延遲時(shí)間2ms以內(nèi)
  193.         W1=1;
  194.         if(aa!=13&&flag==1)
  195.         {        
  196.                 if(k1==0)
  197.                 {        
  198.                         TH1=table2[7*bb+cc];
  199.                         TL1=table3[7*bb+cc];
  200.                         TR1=1;        
  201.                         while(k1==0)
  202.                         {        
  203.                                 cc=0;
  204.                                 display1();
  205.                         }
  206.                 }
  207.                 if(k2==0)
  208.                 {        
  209.                         TH1=table2[7*bb+cc];
  210.                         TL1=table3[7*bb+cc];
  211.                         TR1=1;
  212.                         while(k2==0)
  213.                         {        
  214.                                 cc=1;
  215.                                 display1();
  216.                         }
  217.                 }        
  218.                 if(k3==0)
  219.                 {               
  220.                         TH1=table2[7*bb+cc];
  221.                         TL1=table3[7*bb+cc];
  222.                         TR1=1;
  223.                         while(k3==0)
  224.                         {        
  225.                                 cc=2;
  226.                                 display1();
  227.                         }
  228.                 }
  229.                 if(k4==0)
  230.                 {
  231.                         TH1=table2[7*bb+cc];
  232.                         TL1=table3[7*bb+cc];
  233.                         TR1=1;
  234.                         while(k4==0)
  235.                         {        
  236.                                 cc=3;
  237.                                 display1();               
  238.                         }
  239.                 }
  240.                 if(k5==0)
  241.                 {        
  242.                         TH1=table2[7*bb+cc];
  243.                         TL1=table3[7*bb+cc];
  244.                         TR1=1;
  245.                         while(k5==0)
  246.                         {
  247.                                 cc=4;
  248.                                 display1();
  249.                         }
  250.                 }
  251.                 if(k6==0)
  252.                 {        
  253.                         TH1=table2[7*bb+cc];
  254.                         TL1=table3[7*bb+cc];
  255.                         TR1=1;
  256.                         while(k6==0)
  257.                         {
  258.                                 cc=5;
  259.                                 display1();                                                        
  260.                         }
  261.                 }
  262.                 if(k7==0)
  263.                 {               
  264.                         TH1=table2[7*bb+cc];
  265.                         TL1=table3[7*bb+cc];
  266.                         TR1=1;        
  267.                         while(k7==0)
  268.                         {
  269.                                 cc=6;
  270.                                 display1();        
  271.                         }
  272.                 }               
  273.         }
  274. }
  275. //主函數(shù)
  276. void main()
  277. {
  278.         init();
  279.         while(1)
  280.         {        
  281.                 if(flag==0)
  282.                         display_music();
  283.                 else
  284.                         display_play();
  285.         }
  286. }
  287. //外部0中斷子函數(shù)
  288. void wb0() interrupt 0
  289. {
  290.         if(k8==0)
  291.         {
  292.                 delay(5);
  293.                 while(k8==0);
  294.                 flag=~flag;
  295.                 D1=~D1;
  296.                 D2=~D2;
  297.         }               
  298. }
  299. //定時(shí)器0中斷子函數(shù)
  300. void t0() interrupt 1
  301. {        
  302.         TR0=0;
  303.         TH0=table2[table4[i]-1];
  304.         TL0=table3[table4[i]-1];
  305.         beep=~beep;
  306.         TR0=1;
  307. }
  308. //定時(shí)器1中斷子函數(shù)
  309. void t1() interrupt 3
  310. {        
  311.         TR1=0;
  312.         TH1=table2[7*bb+cc];
  313.         TL1=table3[7*bb+cc];
  314.         beep=~beep;
  315.         TR1=1;
  316. }
復(fù)制代碼
Keil代碼與Proteus8.8 7.5仿真和文檔下載:
電子琴仿真程序.7z (418.25 KB, 下載次數(shù): 713)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏37 分享淘帖 頂4 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:233745 發(fā)表于 2018-10-24 19:07 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:340039 發(fā)表于 2018-10-27 16:43 | 只看該作者
再研究中
回復(fù)

使用道具 舉報(bào)

地板
ID:416511 發(fā)表于 2018-10-30 23:50 來自手機(jī) | 只看該作者
這里面得仿真可以直接用軟件打開使用么
回復(fù)

使用道具 舉報(bào)

5#
ID:416511 發(fā)表于 2018-10-30 23:51 來自手機(jī) | 只看該作者
anying 發(fā)表于 2018-10-24 19:07
兄弟,你是大家的救星!

你好   你下載了嗎?這里面包含仿真和程序么?
回復(fù)

使用道具 舉報(bào)

6#
ID:548614 發(fā)表于 2019-5-27 18:12 來自手機(jī) | 只看該作者
右邊的元件怎么連接
回復(fù)

使用道具 舉報(bào)

7#
ID:541054 發(fā)表于 2019-6-10 13:04 來自手機(jī) | 只看該作者
可以聯(lián)系一下您嗎,做實(shí)物的時(shí)候怎么上電?74hc595驅(qū)動(dòng)數(shù)碼管有十個(gè)引腳,但原理圖只有5個(gè)
回復(fù)

使用道具 舉報(bào)

8#
ID:541054 發(fā)表于 2019-6-10 14:48 來自手機(jī) | 只看該作者
WQ5201314 發(fā)表于 2019-5-27 18:12
右邊的元件怎么連接

你弄好了嗎
回復(fù)

使用道具 舉報(bào)

9#
ID:429171 發(fā)表于 2019-6-10 15:27 | 只看該作者
keyi非常好
回復(fù)

使用道具 舉報(bào)

10#
ID:649099 發(fā)表于 2019-11-25 17:28 | 只看該作者
非常非常全面
回復(fù)

使用道具 舉報(bào)

11#
ID:666092 發(fā)表于 2019-12-17 21:27 | 只看該作者
咋弄的?
回復(fù)

使用道具 舉報(bào)

12#
ID:725013 發(fā)表于 2020-4-8 20:18 | 只看該作者
能發(fā)出不同音色嗎?
回復(fù)

使用道具 舉報(bào)

13#
ID:747955 發(fā)表于 2020-5-10 21:18 | 只看該作者
瘋狂學(xué)習(xí)中,膜拜
回復(fù)

使用道具 舉報(bào)

14#
ID:786781 發(fā)表于 2020-6-22 15:57 | 只看該作者
如果需要實(shí)現(xiàn)上位機(jī)通訊的話應(yīng)該從哪個(gè)思路擴(kuò)展呢
回復(fù)

使用道具 舉報(bào)

15#
ID:788495 發(fā)表于 2020-6-27 09:11 | 只看該作者
感謝分享,正在努力學(xué)習(xí)中
回復(fù)

使用道具 舉報(bào)

16#
ID:971835 發(fā)表于 2021-11-4 02:39 來自手機(jī) | 只看該作者
可以做實(shí)物嗎?
回復(fù)

使用道具 舉報(bào)

17#
ID:1022888 發(fā)表于 2022-4-30 11:18 | 只看該作者
可以直接用軟件打開嗎
回復(fù)

使用道具 舉報(bào)

18#
ID:1028830 發(fā)表于 2022-5-24 18:25 | 只看該作者
晨曦826 發(fā)表于 2018-10-30 23:50
這里面得仿真可以直接用軟件打開使用么

dsn文件是Proteus7.5版本的工程文件,只能用Proteus7.5打開
回復(fù)

使用道具 舉報(bào)

19#
ID:1015893 發(fā)表于 2022-6-16 16:20 來自手機(jī) | 只看該作者
想問一下aa,bb,cc是什么意思
回復(fù)

使用道具 舉報(bào)

20#
ID:88606 發(fā)表于 2022-7-11 11:29 | 只看該作者
試試看看好不好用?
回復(fù)

使用道具 舉報(bào)

21#
ID:88606 發(fā)表于 2022-7-11 14:21 | 只看該作者
都說內(nèi)容有誤,我來看看
回復(fù)

使用道具 舉報(bào)

22#
ID:88606 發(fā)表于 2022-7-11 14:30 | 只看該作者
剛才試過了,仿真正常,文件都正常。謝謝樓主!!!
回復(fù)

使用道具 舉報(bào)

23#
ID:1083350 發(fā)表于 2023-6-19 20:20 | 只看該作者
是一份好資料,解決了我的燃眉之急,點(diǎn)贊,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

24#
ID:1076950 發(fā)表于 2023-9-13 15:06 | 只看該作者
Jacoky 發(fā)表于 2019-6-10 13:04
可以聯(lián)系一下您嗎,做實(shí)物的時(shí)候怎么上電?74hc595驅(qū)動(dòng)數(shù)碼管有十個(gè)引腳,但原理圖只有5個(gè)

可以給他接排針,然后利用燒入器供電,我做了實(shí)物,感覺樓主的作品有些小問題
回復(fù)

使用道具 舉報(bào)

25#
ID:281040 發(fā)表于 2023-9-16 09:26 | 只看該作者
好資料點(diǎn)贊,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

26#
ID:1106402 發(fā)表于 2024-1-3 00:31 | 只看該作者
青桐與藍(lán)桉 發(fā)表于 2023-9-13 15:06
可以給他接排針,然后利用燒入器供電,我做了實(shí)物,感覺樓主的作品有些小問題

大佬,蜂鳴器是有源的還是無源的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 岛国av免费观看 | 狠狠色香婷婷久久亚洲精品 | 国产成人精品久久 | www.亚洲一区二区三区 | 成人午夜免费在线视频 | 九一国产精品 | 色婷婷一区二区三区四区 | 免费视频色| 最新国产精品 | 久久久久久国产精品mv | 国产一区二区免费 | 一区二区三区日本 | 日韩成人精品在线观看 | 成人精品一区亚洲午夜久久久 | 99精品久久 | 欧美精品首页 | 高清18麻豆| 免费观看成人性生生活片 | 在线欧美视频 | 欧美日韩视频在线 | 亚洲精品一级 | 精品一区国产 | 资源首页二三区 | 国产永久免费 | 国产成人99久久亚洲综合精品 | 成年女人免费v片 | 中文字幕爱爱视频 | 精品国产一区二区三区免费 | 精品视频一区二区三区 | 国产一区二区三区色淫影院 | 久综合 | 日韩精品 电影一区 亚洲 | 国产精品久久久久久久久久 | 亚洲444kkkk在线观看最新 | 天堂久久天堂综合色 | 91精品成人久久 | 九九免费在线视频 | 日韩精品在线一区二区 | 久久久久久久综合 | 91精品久久久久久久久中文字幕 | 久草视频在线播放 |