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

標題: 單片機演奏音樂(F調(diào)3個8度7音階)程序+Proteus仿真 [打印本頁]

作者: 帥哥輝    時間: 2019-3-1 21:46
標題: 單片機演奏音樂(F調(diào)3個8度7音階)程序+Proteus仿真
單片機演奏音樂仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. /********本程序中,F(xiàn)OSC=11.0592M*********/
  2. #include<reg51.h>

  3. #include<intrins.h>

  4. #define uchar unsigned char
  5. #define uint  unsigned int

  6. struct music_type{
  7.         uchar tone;
  8.         uchar delay;
  9. };



  10. /**********F調(diào)3個8度7音階的音高參數(shù)**********/
  11. uint code tonetab[]={  
  12.     64216,64360,64489,64603,64654,64752,64837, //低音1~7
  13.     64876,64948,65012,65042,65095,65144,65186, //中音1~7
  14.     65206,65242,65274,65289,65315,65340,65361  //高音1~7
  15. };
  16. //曲譜,每個音符含兩項數(shù)據(jù),第1項為音高,第2項為節(jié)拍(以1/4拍為單位)
  17. /**************康定情歌樂譜***************/
  18. struct music_type code  songtab[]={  
  19.         3+7,0x02,5+7,0x02,6+7,0x02,6+7,0x01,5+7,0x01,6+7,0x03,3+7,0x01,2+7,0x04,
  20.         3+7,0x02,5+7,0x02,6+7,0x02,6+7,0x01,5+7,0x01,6+7,0x03,3+7,0x06,
  21.         3+7,0x02,5+7,0x02,6+7,0x02,6+7,0x01,5+7,0x01,6+7,0x03,3+7,0x01,2+7,0x04,
  22.         5+7,0x02,3+7,0x02,2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,2+7,0x02,6+0,0x06,
  23.         6+0,0x02,2+7,0x06,5+7,0x02,3+7,0x06,2+7,0x01,1+7,0x01,6+0,0x06,
  24.         5+7,0x02,3+7,0x02,2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,2+7,0x02,6+0,0x06,
  25.         //
  26.         3+7,0x01,2+7,0x01,3+7,0x01,5+7,0x01,6+7,0x01,5+7,0x01,1+14,0x01,6+7,0x01,
  27.         5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,
  28.         1+14,0x02,2+14,0x01,3+14,0x01,2+14,0x01,1+14,0x01,6+7,0x01,1+14,0x01,
  29.         5+7,0x08,
  30.         5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,
  31.         1+14,0x02,2+14,0x01,3+14,0x01,1+14,0x01,6+7,0x01,5+7,0x02,
  32.         5+7,0x02,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,
  33.         1+7,0x01,6,0x01,1+7,0x06,
  34.         3+7,0x01,2+7,0x01,1+7,0x02,2+7,0x03,3+7,0x01,
  35.         5+7,0x02,6+7,0x01,1+14,0x01,6+7,0x02,5+7,0x02,
  36.         5+7,0x01,3+7,0x01,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,
  37.         1+7,0x01,2+7,0x01,6,0x04,1+7,0x02,
  38.         2+7,0x03,3+7,0x01,1+7,0x01,2+7,0x01,1+7,0x02,6,0x01,
  39.         1+7,0x01,6,0x01,5,0x05,
  40.         //
  41.         3+7,0x01,2+7,0x01,3+7,0x01,5+7,0x01,6+7,0x01,5+7,0x01,1+14,0x01,6+7,0x01,
  42.         5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,
  43.         1+14,0x02,2+14,0x01,3+14,0x01,2+14,0x01,1+14,0x01,6+7,0x01,1+14,0x01,
  44.         5+7,0x08,
  45.         5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,
  46.         1+14,0x02,2+14,0x01,3+14,0x01,1+14,0x01,6+7,0x01,5+7,0x02,
  47.         5+7,0x02,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,
  48.         1+7,0x01,6,0x01,1+7,0x06,
  49.         3+7,0x01,2+7,0x01,1+7,0x02,2+7,0x03,3+7,0x01,
  50.         5+7,0x02,6+7,0x01,1+14,0x01,6+7,0x02,5+7,0x02,
  51.         5+7,0x01,3+7,0x01,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,
  52.         1+7,0x01,2+7,0x01,6,0x04,1+7,0x02,
  53.         2+7,0x03,3+7,0x01,1+7,0x01,2+7,0x01,1+7,0x02,6,0x01,
  54.         1+7,0x01,6,0x01,5,0x05,

  55.         0,0x00
  56. };
  57. /*********端口及變量定義**********/
  58. sbit SPEAKER = P3^7;

  59. uchar tlow1,thig1;

  60. /*******軟件延時,約n*10us******/
  61. void delay10us(unsigned char n){
  62.         do{
  63.         _nop_();
  64.         _nop_();
  65.         _nop_();
  66.         _nop_();
  67.         _nop_();
  68.         }while(--n);
  69. }
  70. /*******軟件延時,約n ms******/
  71. void delayms(unsigned int n){
  72.         do {
  73.                 delay10us(131);
  74.         }while(--n);
  75. }


  76. main () {
  77.         uchar i,j;
  78.         EA=1;ET0=1;
  79.         TMOD=0X01;
  80.         while(1){
  81.                 i=0;
  82.                 while(songtab[i].delay!=0){
  83.                         if(songtab[i].tone==0)TR0=0;  //音高數(shù)據(jù)為0
  84.                         else{     //音高數(shù)據(jù)不為0
  85.                                 //用定時器參數(shù)控制T1的振蕩頻率,即音高
  86.                                 thig1=TH0=tonetab[songtab[i].tone-1]/256;
  87.                                 tlow1=TL0=tonetab[songtab[i].tone-1]%256;
  88.                                 TR0=1;
  89.                         }
  90.                         //控制音符的持續(xù)時間,即節(jié)拍
  91.                         for(j=0;j<songtab[i].delay;j++){

  92.                                 delayms(200);
  93.                         }
  94.                         i++; //下一個音符
  95.                 }
  96.                 TR0=0;  //停止演奏
  97.                 delayms(1000);  //一遍完成后等待
  98.         }
  99. }

  100. /*******定時器1中斷,控制蜂鳴器發(fā)聲頻率*******/
  101. void  t0 () interrupt 1{
  102.         TH0=thig1;TL0=tlow1;
  103.         SPEAKER = !SPEAKER;  //蜂鳴器發(fā)聲
  104. }
復制代碼

所有資料51hei提供下載:
單片機演奏音樂.rar (54.52 KB, 下載次數(shù): 43)







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: h视频在线免费看 | 黑人精品欧美一区二区蜜桃 | 在线欧美a| 欧美精品一区二区三区蜜桃视频 | 欧美综合在线视频 | 91看片在线观看 | 毛片在线看片 | 日韩精品视频网 | 91精品国产日韩91久久久久久 | 国产精品久久久久久一级毛片 | 狠狠天天| 祝你幸福电影在线观看 | 欧美淫片| 国产精品色婷婷久久58 | 精品久久久久久久久久久久 | 日韩中出| 亚洲综合精品 | 日韩免费一区二区 | 一级在线观看 | 亚洲高清在线观看 | 久久99视频 | 老司机成人在线 | av看片网站 | 久久久久久久91 | 国产 日韩 欧美 中文 在线播放 | 国产精品1区2区 | 99国产精品久久久 | 亚洲一区二区视频 | 亚洲97 | 国产精品欧美一区喷水 | 人人爽日日躁夜夜躁尤物 | 精品免费视频 | 国产成人精品999在线观看 | 国产电影一区二区三区爱妃记 | 极情综合网 | 中文字幕日韩欧美 | 久久综合888 | 国产精品国产精品国产专区不片 | 久久成人一区 | 美国a级毛片免费视频 | av电影一区二区 |