×
单片机 > 单片机程序设计 > 详情

《世上只有妈妈好》51单片机C语言程序

发布时间:2020-05-23 发布时间:
|
//《世上只有妈妈好》51单片机C语言程序
       //2007-5-22      作者:徐学军
       //注意有一个51单片机汇编语言程序与之对应
       //此程序在硬件上调试通过
       //本程序的单片机晶振采用11.0592MHZ
       #include
       sbit      speaker=P1^7;   
       unsigned char timer0h,timer0l,time;
        //世上只有妈妈好数据表
       code unsigned char sszymmh[]={ 6,2,3,      5,2,1,      3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
                                      6,2,4,      3,2,2,      5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
                                      6,1,1,      5,2,1,      3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
                                      5,2,1,      6,2,1,      3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
                                      2,2,1,      1,2,1,      6,1,1, 1,2,1, 5,1,6, 0,0,0
                                      }      ;
       // 音阶频率表 高八位
code unsigned char FREQH[]={
                                0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
                                0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
                                     0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
                                0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
                               } ;
         // 音阶频率表 低八位
code unsigned char FREQL[]={
                                 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
                                 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
                                      0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
                                 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
                                };
             void delay(unsigned char t)
                       {
                             unsigned char t1;
                             unsigned long t2;
                             for(t1=0;t1                                 {
                                  for(t2=0;t2<8000;t2++)
                                      {
                                       ;
                                      }
                                }
                          TR0=0;
                        }
              void t0int() interrupt 1
                          {
                           TR0=0;
                           speaker=!speaker;
                           TH0=timer0h;
                           TL0=timer0l;
                           TR0=1;
                          }
               void song()
                          {
                           TH0=timer0h;
                           TL0=timer0l;
                           TR0=1;
                           delay(time);                       
                          }
              void main(void)
                             {
                              unsigned char k,i;
                              TMOD=1; //置CT0定时工作方式1
                             EA=1;ET0=1;//IE=0x82 //CPU开中断,CT0开中断
                             while(1)
                                {
                                  i=0;
                                  time=1;                             
                                  while(time)
                                     {
                                      k=sszymmh[i]+7*sszymmh[i+1]-1;
                                      timer0h=FREQH[k];
                                      timer0l=FREQL[k];
                                      time=sszymmh[i+2];
                                      i=i+3;
                                      song();
                                     }
                                 }
                             }

关键字:51单片机  C语言程序 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会