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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機8鍵電子琴源程序+PCB工程+Proteus仿真

  [復制鏈接]
跳轉到指定樓層
樓主
ID:675778 發表于 2019-12-27 23:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
制作出來的實物圖如下:


Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機電子琴仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg52.H>
  2. unsigned char temp;
  3. unsigned char key;
  4. unsigned char i,j;
  5. unsigned char STH0;
  6. unsigned char STL0;
  7. unsigned int code tab[]=  {64820,64898,64968,65030,65058,65110,65157,65178};  //音符表 do re mi fa sol la xi duo

  8. sbit K1=P1^0;  //音符按鍵
  9. sbit K2=P1^1;
  10. sbit K3=P1^2;
  11. sbit K4=P1^3;
  12. sbit K5=P1^4;
  13. sbit K6=P1^5;
  14. sbit K7=P1^6;
  15. sbit K8=P1^7;

  16. sbit Speak=P2^0; //喇叭
  17. /***********************1ms*****************************/
  18. void delay_1ms(unsigned int q)
  19. {
  20.         unsigned int i,j;
  21.         for(i=0;i<q;i++)
  22.                 for(j=0;j<120;j++);
  23. }

  24. void main(void)   //主程序
  25. {                         
  26.   TMOD=0x01;
  27.         ET0=1;
  28.         EA=1;
  29.         while(1)
  30.                 {
  31.        
  32.       if(!K1)               
  33.                     {
  34.                            delay_1ms(20);//延時去抖
  35.                                   if(!K1)
  36.                                   {
  37.            key=0;//將音樂的值賦值給定時器以便發出對應的聲音
  38.                                          P0=0xC0;//顯示0
  39.            STH0=tab[key]/256;        //計算音符對應的定時器計數值
  40.                                    STL0=tab[key]%256;
  41.                                    TR0=1;
  42.                                    while(!K1)
  43.                                    ;
  44.           }
  45.         }
  46.                                
  47.                          if(!K2)               
  48.                     {
  49.                            delay_1ms(20);//延時去抖
  50.                                   if(!K2)
  51.                                   {
  52.            key=1;
  53.                                          P0=0xF9;//顯示1
  54.            STH0=tab[key]/256;        //計算音符對應的定時器計數值
  55.                                    STL0=tab[key]%256;
  56.                                    TR0=1;
  57.                                    while(!K2)
  58.                                    ;
  59.           }
  60.         }
  61.                                
  62.                         if(!K3)               
  63.                     {
  64.                            delay_1ms(20);//延時去抖
  65.                                   if(!K3)
  66.                                   {
  67.            key=2;
  68.                                          P0=0xA4;//顯示2
  69.            STH0=tab[key]/256;        //計算音符對應的定時器計數值
  70.                                    STL0=tab[key]%256;
  71.                                    TR0=1;
  72.                                    while(!K3)
  73.                                    ;
  74.           }
  75.         }
  76.                                
  77.                         if(!K4)               
  78.                     {
  79.                            delay_1ms(20);//延時去抖
  80.                                   if(!K4)
  81.                                   {
  82.            key=3;
  83.                                          P0=0xB0;//顯示3
  84.            STH0=tab[key]/256;        //計算音符對應的定時器計數值
  85.                                    STL0=tab[key]%256;
  86.                                    TR0=1;
  87.                                    while(!K4)
  88.                                    ;
  89.           }
  90.         }
  91.                                
  92.                         if(!K5)               
  93.                     {
  94.                            delay_1ms(20);//延時去抖
  95.                                   if(!K5)
  96.                                   {
  97.            key=4;
  98.                                          P0=0x99;//顯示4
  99.            STH0=tab[key]/256;        //計算音符對應的定時器計數值
  100.                                    STL0=tab[key]%256;
  101.                                    TR0=1;
  102.                                    while(!K5)
  103.                                    ;
  104.           }
  105.         }
  106.                                
  107.                         if(!K6)               
  108.                     {
  109.                            delay_1ms(20);//延時去抖
  110.                                   if(!K6)
  111.                                   {
  112.            key=5;
  113.                                          P0=0x92;//顯示5
  114.            STH0=tab[key]/256;        //計算音符對應的定時器計數值
  115.                                    STL0=tab[key]%256;
  116.                                    TR0=1;
  117.                                    while(!K6)
  118.                                    ;
  119.           }
  120.         }
  121.                                
  122.                         if(!K7)               
  123.                     {
  124.                            delay_1ms(20);//延時去抖
  125.                                   if(!K7)
  126.                                   {
  127.            key=6;
  128.                                          P0=0x82;//顯示6
  129.            STH0=tab[key]/256;        //計算音符對應的定時器計數值
  130.                                    STL0=tab[key]%256;
  131.                                    TR0=1;
  132.                                    while(!K7)
  133.                                    ;
  134.           }
  135.         }
  136.                                
  137.                 if(!K8)               
  138.                     {
  139.                            delay_1ms(20);//延時去抖
  140.                                   if(!K8)
  141.                                   {
  142.            key=7;
  143.                                          P0=0xF8;//顯示7
  144.            STH0=tab[key]/256;        //計算音符對應的定時器計數值
  145.                                    STL0=tab[key]%256;
  146.                                    TR0=1;
  147.                                    while(!K8)
  148.                                    ;
  149.           }
  150.         }
  151.                                
  152.                        
  153.                           delay_1ms(20);
  154.                                 TR0=0;
  155.                           Speak=1;//當按鍵彈起的時候,蜂鳴器停止發音
  156.                                
  157. }                       


  158. }

  159. void t0(void) interrupt 1 using 0 {     //定時器T0中斷服務函數
  160.         TH0=STH0;
  161.         TL0=STL0;
  162.         Speak=~Speak;                                  //產生方波
  163. }
復制代碼

所有資料51hei提供下載:
電子琴(8鍵).7z (414.72 KB, 下載次數: 259)

評分

參與人數 2黑幣 +62 收起 理由
3333大賽的 + 12 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:732282 發表于 2020-4-19 15:20 | 只看該作者
真的能夠發聲?
回復

使用道具 舉報

板凳
ID:599032 發表于 2020-5-20 08:33 | 只看該作者
樓主借下您的貼我做個eagle軟件的使用教學
回復

使用道具 舉報

地板
ID:775452 發表于 2020-6-10 20:48 | 只看該作者
請問樓主實物是自己焊接的嗎????有沒有什么地方可以焊接???
回復

使用道具 舉報

5#
ID:790142 發表于 2020-6-29 19:39 | 只看該作者
能解釋一下 原理圖 那個電源部分是什么嗎
回復

使用道具 舉報

6#
ID:793527 發表于 2020-6-30 10:03 | 只看該作者
這個電子琴的21種音調嘛?
回復

使用道具 舉報

7#
ID:1039225 發表于 2022-7-12 10:13 | 只看該作者
我需要這個文檔,有沒有性價比更高的?》
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 激情影院久久 | 成人午夜视频在线观看 | 中国毛片免费 | 天天看天天爽 | 日韩成人中文字幕 | 欧美不卡视频一区发布 | 久草综合在线 | 亚洲 中文 欧美 日韩 在线观看 | 在线精品国产 | 在线免费观看a级片 | 国产精品亚洲精品久久 | 国产精品国产三级国产aⅴ中文 | 中文字幕亚洲欧美 | 欧美一区二区免费 | 久久网一区二区 | 色网站视频 | 精品国产一区二区三区久久 | 日韩电影一区 | 国产1区2区在线观看 | 性一区| 天天干狠狠干 | 成人免费观看男女羞羞视频 | 九九热久久免费视频 | 四季久久免费一区二区三区四区 | 国产精品久久久久久久久久久免费看 | 欧美综合久久 | 国产精品久久久久久中文字 | 亚洲成av人片在线观看 | 夜色www国产精品资源站 | 欧美在线a| 亚洲精品视频一区 | 国产一区二区欧美 | 亚洲国产一区二区三区在线观看 | 日韩在线观看 | 国产精品高清在线 | 国产精品国产馆在线真实露脸 | 成人精品一区二区三区中文字幕 | 欧美在线a | 日韩在线观看一区 | 国产福利精品一区 | 91免费入口|