当前位置:首页 > 单片机 > 单片机
[导读]//----------------------------------------------------- //<<12*12点阵+音乐产生>> // MCU:89C51 晶振:12M //编写日期:2010。12。25 //编写人:李春起 #include <REG51.H> #define uchar unsigned char

//-----------------------------------------------------
//<<12*12点阵+音乐产生>>
// MCU:89C51  晶振:12M
//编写日期:2010。12。25
//编写人:李春起
#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int
uint a=0,a1=0,a2=0;
uint miusfla,miust,mius=64536;
uint disfla1,sta=0;
char flag=0,mdflag=0;
sbit k1=P3^2;
sbit k2=P3^3;
sbit YY=P3^1;

uchar code tabfas[]={
//==============笑脸===================================
//P0口
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
//P1口
0x8E,0x4D,0xAB,0x57,0x5F,0x9F,0x9F,0x5F,0x5F,0xAF,0x4F,0x8F,
0x8E,0x4D,0xAB,0x97,0x9F,0x9F,0x9F,0x9F,0x9F,0xAF,0x4F,0x8F,
//P2口
0x87,0x88,0x50,0x20,0xA4,0x68,0x68,0xA4,0x20,0x50,0x88,0x87,
0x87,0x88,0x50,0x20,0xA4,0x68,0x68,0xA4,0x20,0x50,0x88,0x87,  
//P0口
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
//P1口
0x8E,0x8D,0xEB,0x87,0x8F,0xCF,0x4F,0x4F,0x4F,0xCF,0x0F,0x0F, //祝
0x0E,0x0D,0x8B,0xE7,0x8F,0x8F,0x0F,0x0F,0xEF,0x0F,0x0F,0x0F,  //钟
0x0E,0x0D,0x0B,0x87,0x4F,0x0F,0x0F,0xCF,0x0F,0x0F,0x0F,0x0F, //仕
0x0e,0xed,0xab,0xa7,0xef,0xaf,0xbf,0xaf,0xef,0xaf,0xaf,0x0f,//廉
0x0E,0x0D,0x8B,0xE7,0x8F,0x8F,0xEF,0x8F,0x8F,0x8F,0x0F,0x0F, //生
0x0E,0x0D,0x0B,0xE7,0x2F,0x2F,0x2F,0x2F,0xEF,0x0F,0x0F,0x0F, //日
//0x0E,0x4D,0xDB,0x67,0xCF,0x4F,0x0F,0x8F,0x4F,0x4F,0x2F,0x0F,    //新
//0x0E,0x0D,0x8B,0x47,0x7F,0x4F,0xCF,0x4F,0x4F,0x4F,0x4F,0x0F,    //年
0x0E,0x0D,0xEB,0x07,0x8F,0x8F,0xEF,0x8F,0x8F,0x8F,0x0F,0x0F, //快
0x0E,0x8D,0x4B,0x47,0x4F,0xAF,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F, //乐
0xCE,0x2D,0x2B,0x27,0x4F,0x8F,0x8F,0x4F,0x2F,0x2F,0x2F,0xCF, //心形
0x0F,0x0F,0x2B,0x27,0xAF,0x6F,0xFF,0x6F,0xAF,0x2F,0x2F,0x0F, //李
0x0E,0x0D,0x2B,0xA7,0xAF,0xFF,0xAF,0xAF,0x2F,0x0F,0x0F,0x0F, //春
0x0E,0x0D,0x4B,0x47,0xEF,0x4F,0x4F,0x8F,0x8F,0x8F,0x0F,0x0F,  //起
//0x0E,0xFD,0x5B,0x57,0x5F,0xFF,0x0F,0x4F,0x4F,0xCF,0x4F,0x0F, //题
0xCE,0x2D,0x2B,0x27,0x4F,0x8F,0x8F,0x4F,0x2F,0x2F,0x2F,0xCF, //心形
//P2口
0x08,0x04,0xFE,0x05,0x08,0x43,0x3E,0x02,0x3E,0x23,0x30,0x00, //祝
0x00,0x09,0x0A,0x7F,0x2A,0x08,0x0F,0x09,0x7F,0x09,0x0F,0x00,  //钟
0x00,0x02,0x01,0x7F,0x02,0x22,0x22,0x3F,0x22,0x22,0x02,0x00,   //仕
0xc0,0x3f,0x88,0x6a,0x2a,0xff,0x2a,0xff,0x2a,0x6a,0xde,0x88,//廉
0x00,0x21,0x20,0x20,0x24,0x24,0x3F,0x24,0x24,0x20,0x20,0x00, //生
0x00,0x00,0x00,0x3F,0x22,0x22,0x22,0x22,0x3F,0x00,0x00,0x00,  //日
//0x00,0x2A,0x5A,0xFF,0x1A,0x2A,0x40,0x3F,0x02,0x7E,0x02,0x00,   //新
//0x08,0x09,0x0F,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x08,0x00,    //看
0x01,0x06,0x7F,0x22,0x14,0x0C,0x07,0x0C,0x14,0x27,0x24,0x00, //快
0x00,0x23,0x12,0x0E,0x22,0x7F,0x06,0x0A,0x13,0x22,0x00,0x00, //乐
0x03,0x04,0x08,0x10,0x20,0x60,0x20,0x10,0x08,0x04,0x02,0x01,  //心形
0x00,0x00,0x11,0x11,0x12,0x52,0xFB,0x1A,0x16,0x11,0x11,0x00, //李
0x00,0x12,0x0A,0xFE,0xAB,0xAA,0xAA,0xFE,0x0A,0x12,0x00,0x00, //春
0x40,0x21,0x1D,0x09,0x1F,0x25,0x41,0x5D,0x54,0x53,0x58,0x00,   //起
//0x84,0x45,0x35,0x3D,0x55,0x95,0x84,0xAF,0x9D,0x91,0xAF,0x80, //题
0x03,0x04,0x08,0x10,0x20,0x60,0x20,0x10,0x08,0x04,0x02,0x01,  //心形
};
//----------------音符----------------------
uint code miusdata[]={
//祝你生日快乐
64260,64260,64399,64260,64579,64524,64260,64260,
64399,64260,64684,64580,64260,64260,64898,64777,
64580,64524,64399,64819,64819,64777,64580,64777,
64684,0,
64260,64260,64399,64260,64579,64524,64260,64260,
64399,64260,64684,64580,64260,64260,64898,64777,
64580,64524,64399,64819,64819,64777,64580,64684,
64580,0,  
64580,64580,64684,64580,64819,64777,64580,64580,
64684,64580,64898,64819,64580,64580,65058,64968,
64819,64777,64684,65000,65000,64960,64819,64967,
64898,0,
64580,64580,64684,64580,64819,64777,64580,64580,
64684,64580,64898,64819,64580,64580,65058,64968,
64819,64777,64684,65000,65000,64960,64819,64898,
64819,0
};
//---------------节拍-----------------------
uchar code miustime[]={
40,40,80,80,80,160,40,40,80,80,80,160,40,40,
80,80,80,80,80,40,40,80,80,80,160,80,
40,40,80,80,80,160,40,40,80,80,80,160,40,40,
80,80,80,80,80,40,40,80,80,80,160,80,
40,40,80,80,80,160,40,40,80,80,80,160,40,40,
70,75,80,80,80,40,40,80,80,80,160,80,
40,40,80,80,80,160,40,40,80,80,80,160,40,40,
70,75,80,80,80,40,40,80,80,80,160,80,
};
void delay500();

//==========按键==========================================
void kk()
{
   if(!k1){delay500();if(++flag>1)flag=0;else {a=72;a2=0;}sta=1;}
   if(!k2){delay500();if(++mdflag>1)mdflag=0;sta=1;}
}
//=========延时===========================================
void delay(uint m)
{
   uint i,j;
   for(i=0;i<m;i++)
   {
     for(j=0;j<300;j++)
  {kk();if(sta){sta=0;goto abc;}}
   }
   abc:;
}
//------按键消拉动用----------------
void delay500()
{
  uint i1;
  P0=0XFF;
  P1=0X0F;
  P2=0X00;
  for(i1=0;i1<32000;i1++);
}
//=========定时器T0用于频率产生和显示======================
void time0() interrupt 1
{
  P0=0XFF;
  P1=0X0F;
  P2=0X00;
  TH0=mius>>8;
  TL0=mius&0xff;
  YY=~YY;
  switch(flag)
  {
    case 0:{ //笑脸
           P0=tabfas[a];
              P1=tabfas[a+24];
              P2=tabfas[a+48];
              if(++disfla1<700){if(++a>11)a=0;}
              if(disfla1>=700){if(++a>23)a=11;}
              if(disfla1>800){a=0;disfla1=0;}
         }break;
case 1:{ //汉字
           P0=tabfas[a];
           P1=tabfas[a+192];
     P2=tabfas[a+348];
     if(++disfla1<500){if(++a>(a2+83))a=(a2+72);}
       else{if(++a>(a2+83))a=(a2+72);}
     if(disfla1>1000){a2+=12;disfla1=0;}
     if(a2>144){a2=0;}
         }break;
default:break;
  }
}
//========定时器T1只用于显示================================
void time1() interrupt 3
{
  P0=0XFF;
  P1=0X0F;
  P2=0X00;
  TH1=0xf8;
  TL1=0x30;
  switch(flag)
  {
    case 0:{ //笑脸
           P0=tabfas[a];
              P1=tabfas[a+24];
              P2=tabfas[a+48];
              if(++disfla1<700){if(++a>11)a=0;}
              if(disfla1>=700){if(++a>23)a=11;}
              if(disfla1>800){a=0;disfla1=0;}
         }break;
case 1:{ //汉字
           P0=tabfas[a];
           P1=tabfas[a+192];
     P2=tabfas[a+348];
     if(++disfla1<500){if(++a>(a2+83))a=(a2+72);}
       else{if(++a>(a2+83))a=(a2+72);}
     if(disfla1>1000){a2+=12;disfla1=0;}
     if(a2>144){a2=0;}
         }break;
default:break;
  }
}
/////////////////////////////////////////////////////////////
//=========================================================//
//----------------主程序-----------------------------------//
//=========================================================//
/////////////////////////////////////////////////////////////
void main()
{
  P0=0XFF;
  P1=0X0F;
  P2=0X00;
  P3=0XFD;
  TMOD=0X11;
  TH0=mius>>8;
  TL0=mius&0xff;
  TH1=0xf8;
  TL1=0x30;
  TR0=1;
  ET0=1;
  TR1=0;
  ET1=1;
  EA=1;
  while(1)
  {
    switch(mdflag)
    {
      case 0:{//音乐暂停
      TR0=0;TR1=1;kk();sta=0;
           }break;
     case 1:{ //音乐继续
       TR0=0;
       delay(1);
                TR0=1;  
                mius=miusdata[a1];
                if(mius==0){TR0=0;TR1=1;}
      else {TR1=0;TR0=1;}
                delay(miustime[a1]);
                if(++a1>=104)a1=0;
           }break;
   default:break;
    }
  }
}   
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘要:群星闪耀,亚洲科技FF盛宴 澳门2024年6月12日 /美通社/ -- 5月25日,第四届BEYOND国际科技创新博览会(BEYOND Expo 2024)以"Embracing the Uncertaintie...

关键字: 创始人 AN STAGE BSP

其中囊括迈阿密站和摩纳哥赛车史上首次双赛 英国伦敦2024年6月11日 /美通社/ -- FE 今天宣布了ABB 国际汽联电动方程式世界锦标赛第11赛季的暂定赛历,这将是其历史上首次完成17场比赛,跨越几个大洲在11个...

关键字: 电动 BSP ABB GEN

北京2024年6月11日 /美通社/ -- 6月6日-8日,2024中国汽车重庆论坛举行。论坛以"在变革的时代 塑造行业的未来"为主题,吸引全球行业精英,重点关注新能源、智能...

关键字: 中国汽车 数字化 BSP AN

柏林2024年6月11日 /美通社/ -- 据德国汽车行业协会(VDA)的最新消息,去年德国生产了127万量电动汽车(BEV和PHEV),其中95.5万辆是纯电动汽车。这使得德国成为欧洲生产电动汽车最多的国家。预计今年德...

关键字: 电动汽车 BSP 纯电动汽车 AI

作者 Mohamad Ali| IBM咨询首席运营官 北京2024年5月24日 /美通社/ -- 生成式AI的兴起几乎在所有面向上给业务带来改变。根据 IBM 商业价值研究院最新的年度 CEO 研究,近60%...

关键字: IBM AI BSP 模型

台北2024年5月21日 /美通社/ -- 提供针对AMD WRX90和TRX50主板优化的DDR5 OC R-DIMM 提供容量128GB(16GBx8)到768GB(96GBx8),速度5600MHz到8...

关键字: AMD 内存 BSP GB

上海2024年5月20日 /美通社/ -- 2024年5月16日,世界知名的生命科学公司 Eppendorf 集团于第二十三届生物制品年会上成功举办了"疫路超越 推流出新"的产品发布会,正式推出大规模...

关键字: RF PEN BSP IMAC

北京2024年5月20日 /美通社/ -- 过去五年里,支付和收款方式日新月异,其发展和变化比过去五十年都要迅猛。从嵌入式数字商务的出现,到"一拍即付"的...

关键字: VI BSP PAY COM

华钦科技集团(纳斯达克代码: CLPS ,以下简称"华钦科技"或"集团")近日宣布致敬 IBM 大型机 60 载辉煌历程,并将继续实施集团大型机人才培养计划。

关键字: IBM BSP 研发中心 PS

助力科研与检测新突破 上海2024年5月15日 /美通社/ -- 全球知名的科学仪器和服务提供商珀金埃尔默公司今日在上海举办了主题为"创新不止,探索无界"的新品发布会,集中展示了其在分析仪器领域的最...

关键字: 质谱仪 BSP DSC 气相色谱
关闭
关闭