⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.lst

📁 利用MCU51控制蜂鸣器播放乐曲
💻 LST
字号:
C51 COMPILER V7.50   MUSIC                                                                 05/22/2008 17:07:16 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MUSIC
OBJECT MODULE PLACED IN Music.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Music.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**************Copyright********************************
   2          **                      单位:南京工业大学信息学院电子系
   3          **                      网址:http://cise.njut.edu.cn
   4          **                      日期:2008.5.21
   5          **                      实验内容:通过蜂鸣器播放音乐
   6          **************Copyright*********************************/
   7          
   8          /*****以下是单片机与8155控制线的接线说明******
   9                                                  8155            MCU(1)          
  10          数据口:                        D0~D7           P10~P17 
  11          IO口与RAM选择口:       8155IO/M        P20             
  12          片选端:                        CE                      P27     
  13          *****以上是单片机与8155控制线的接线说明******/
  14          
  15          /*****以下是单片机与蜂鸣器的接线说明******
  16                                                  蜂鸣器          MCU(1)          
  17                  :                       1                      P10                                             
  18          *****以上是单片机与蜂鸣器的接线说明******/
  19          #include<reg51.h>
  20          #include<absacc.h>
  21          #include <intrins.h>
  22          #include<math.h>
  23          
  24          #define uint  unsigned int
  25          #define uchar unsigned char
  26          
  27          //定义8155端口地址
  28          #define PA8155 XBYTE[0x7101]
  29          #define PB8155 XBYTE[0x7102]
  30          #define COM8155 XBYTE[0x7100]
  31          
  32          /************************段码说明***********************
  33          段码  D7  D6  D5  D4  D3  D2  D1  D0
  34          段名  a   b   c   d   e   f   g   dp
  35          *************************段码说明**********************/
  36          unsigned char code  Table1[16]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e
             -,0x8e};  //0~F的段码
  37          unsigned char Dis_BUF[4]={1,0,0,0};//显存
  38          
  39          //定义蜂鸣器的管脚
  40          sbit bell=P1^0;
  41          //乐曲数据://格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,
  42          unsigned char code music_tab[] ={
  43          0x18, 0x30, 0x1C , 0x10,0x20, 0x40, 0x1C , 0x10,
  44          0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,
  45          0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,
  46          0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x10 , 0x18,
  47          0x20, 0x15, 0x20 , 0x1C,0x20, 0x20, 0x20 , 0x26,
  48          0x40, 0x20, 0x20 , 0x2B,0x20, 0x26, 0x20 , 0x20,
  49          0x20, 0x30, 0x80 , 0xFF,0x20, 0x20, 0x1C , 0x10,
  50          0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,
  51          0x30, 0x20, 0x2B , 0x40,0x20, 0x20, 0x1C , 0x10,
  52          0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,
  53          0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,
  54          0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,
C51 COMPILER V7.50   MUSIC                                                                 05/22/2008 17:07:16 PAGE 2   

  55          0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,
  56          0x20, 0x20, 0x30 , 0x80,0x20, 0x30, 0x1C , 0x10,
  57          0x20, 0x10, 0x1C , 0x10,0x20, 0x20, 0x26 , 0x20,
  58          0x2B, 0x20, 0x30 , 0x20,0x2B, 0x40, 0x20 , 0x15,
  59          0x1F, 0x05, 0x20 , 0x10,0x1C, 0x10, 0x20 , 0x20,
  60          0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,
  61          0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,
  62          0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,
  63          0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x30,
  64          0x20, 0x30, 0x1C , 0x10,0x18, 0x40, 0x1C , 0x20,
  65          0x20, 0x20, 0x26 , 0x40,0x13, 0x60, 0x18 , 0x20,
  66          0x15, 0x40, 0x13 , 0x40,0x18, 0x80, 0x00
  67          };
  68          
  69          
  70          /****************************************************
  71          函数名称:
  72          功能: 延时函数
  73          参数: unsigned int i(四位数组显存)
  74          返回值:无
  75          ****************************************************/
  76          void delay(unsigned int itime)                                                  //延时函数
  77          {   
  78   1              while(itime--);  
  79   1      } 
  80          
  81          unsigned char TenMS_Num;   //延时10MS的次数
  82          //定义定时器初值//for(10ms)
  83          #define STH0 0xD8   
  84          #define STL0 0xF0 
  85          /****************************************************
  86          函数名称:
  87          功能: 定时器0中断函数,产生10MS精确定时
  88          参数: 
  89          返回值:无
  90          ****************************************************/
  91          void Int_Time0(void)  interrupt 1 using 1  
  92          {  
  93   1              TH0=STH0;
  94   1              TL0=STL0;
  95   1              TenMS_Num--;
  96   1      }
  97          
  98          /****************************************************
  99          函数名称:
 100          功能: 播放音乐
 101          参数: unsigned char *Pt_Music(音乐数据组)
 102          返回值:无
 103          ****************************************************/
 104          void Play_Music(unsigned char *Pt_Music)
 105          {
 106   1              unsigned char Overflag=1;
 107   1              unsigned char Music_Freq;//Music_Freq为频率常数
 108   1              unsigned char Music_Time;//Music_Time为节拍常数 
 109   1              while(Overflag)
 110   1              {
 111   2                      switch(*Pt_Music)
 112   2                      {
 113   3                              case 0x00:// 曲终停顿一定时间,并设置结束标志位
 114   3                                              Overflag=0;
 115   3                                              delay(60000); 
 116   3                                              delay(60000);  
C51 COMPILER V7.50   MUSIC                                                                 05/22/2008 17:07:16 PAGE 3   

 117   3                                              break;
 118   3                              case 0xff://遇到休止符停顿一定时间100微秒,再取下一个频率
 119   3                                              Pt_Music++;
 120   3                                              delay(50);      
 121   3                                              break;
 122   3                              default:
 123   3                                              Music_Freq=*Pt_Music++;
 124   3                                              Music_Time=*Pt_Music++;//取频率到m,取节拍到n  
 125   3                                              TenMS_Num=Music_Time;
 126   3                                      TR0=1;
 127   3                              while(TenMS_Num!=0)
 128   3                              {
 129   4                                      P1=bell;
 130   4                                      delay(2*Music_Freq);//调整产生的频率,可以通过在m前的值来修正音调的高低
 131   4                                              bell=!bell;
 132   4                              }
 133   3                                      TR0=0;
 134   3                                              break;
 135   3                      }
 136   2              }
 137   1      }
 138          
 139          
 140          /****************************************************
 141          函数名称:
 142          功能: 显示函数,将温度显示在数码管上
 143          参数: *Bufptr(四位数组显存)
 144          返回值:无
 145          ****************************************************/
 146          void Disp_lED(unsigned char *Bufptr)                           
 147          {
 148   1              unsigned char disi;
 149   1              unsigned char BitCT=0X10;
 150   1              for(disi=0;disi<4;disi++)
 151   1              {
 152   2                      PA8155=BitCT;                                           //选中个位数码管
 153   2                      PB8155=Table1[*Bufptr++];                               //取段码
 154   2                      BitCT=_crol_(BitCT,1);                                                          //左移一位
 155   2                      delay(500);
 156   2              } 
 157   1      }
 158          
 159          //主函数
 160          void main()
 161          {
 162   1              
 163   1              COM8155=0x03;                         //初始化8155控制口
 164   1              Disp_lED(Dis_BUF);
 165   1              
 166   1              //初始化定时器
 167   1              TMOD=(TMOD&0xf0)|0x01;
 168   1              TH0=STH0;
 169   1              TL0=STL0;
 170   1              EA=1;
 171   1              ET0=1;
 172   1              TR0=0;        
 173   1              while(1)                                
 174   1              {   
 175   2                      Play_Music(music_tab);
 176   2              }   
 177   1      }

C51 COMPILER V7.50   MUSIC                                                                 05/22/2008 17:07:16 PAGE 4   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    266    ----
   CONSTANT SIZE    =    207    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -