标题: 生日快乐歌单片机C语言程序 [打印本页]

作者: 在清晨    时间: 2016-4-26 10:23
标题: 生日快乐歌单片机C语言程序


  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit BEEP=P2^3;//接喇叭或蜂鸣器的接口
  5. uint h,i;
  6. uint hz;
  7. uchar jiep;
  8. bit flag;
  9. uint code fre[]={ 64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217};
  10. uchar code song[]={6,9, 6,3, 7,12, 6,12, 9,12, 8,24, 6,9, 6,3, 7,12,
  11. 6,12, 10,12, 9,24, 6,9, 6,3, 13,12, 11,12, 8,12, 7,12,
  12. 12,9, 12,3, 11,12, 9,12, 10,12, 9,24}; //歌谱 2个一组(0,0)(音调,节拍)

  13. void init () //初始化
  14. {
  15.         EA=1;
  16.         TMOD=0x11;
  17.         ET0=1;
  18.         ET1=1;
  19.         i=0;
  20.         flag=1;
  21. }

  22. void sing()
  23. {
  24.         if(flag==1)
  25.         {
  26.         h=song[i];
  27.         jiep=song[i+1];
  28.         i=i+2;
  29.         if(i>46)
  30.                 i=0;
  31.         hz=fre[h];
  32.         TH0=(hz)/256;
  33.         TL0=(hz)%256;
  34.         flag=0;
  35.         TR0=1;
  36.         TR1=1;
  37.         }
  38. }

  39. void main()
  40. {
  41.         init();
  42.         while(1)
  43.         {
  44.         sing();
  45.         }
  46. }

  47. void time0() interrupt 1 //定时器0
  48. {
  49.         TH0=(hz)/256;
  50.         TL0=(hz)%256;
  51.         if(!flag)
  52.                 BEEP=!BEEP;
  53.         else
  54.                 TR0=0;
  55. }

  56. void time1() interrupt 3
  57. {
  58.         TH1=(15536)/256;
  59.         TL1=(15536)%256;
  60.         --jiep;
  61.         if(jiep==0)
  62.         flag=1;
  63. }

复制代码

作者: WANGCHONG    时间: 2016-4-26 12:47
谢谢楼主的分享
作者: WANGCHONG    时间: 2016-4-26 12:48
谢谢楼主




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1