51单片机演示<世上只有妈妈好>音乐

发布者:ph49635359最新更新时间:2021-04-29 来源: eefocus关键字:51单片机  世上只有妈妈好  音乐 手机看文章 扫描二维码
随时随地手机看文章

//《世上只有妈妈好》51单片机C语言程序和音乐采灯程序

//此程序在硬件上调试通过

//本程序的单片机晶振采用11.0592MHZ

//此程序的流水灯随音乐的节拍的快慢而动


#include

sbit speaker=P2^0;         //接音频放大电路,

//sbit   speaker=P3^2;

sbit sw=P3^0;             //电后位后,sw合上后就开始放音乐,灯开始闪动,sw断开,音乐停止,灯也同时停止闪动

unsigned char timer0h,timer0l,time,led=1,j=0;

unsigned char           flagd=0;

//世上只有妈妈好数据表

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;

sw=1;                             

while(time)

{  

    if(sw)

      {P1=0;i=0;continue;}

    if(j==8)

  {

       //led=1;

       j=0;flagd=~flagd;

       if(flagd)

          {

           led=0x80;

          }

           else

          {

           led=1;

          }

    } 

  else

       {

        P1=~led;

        if(flagd)

          {

            led=led>>1;

          }

       else

          {

            led=le d<<1;

          }

        j++;                                     

       }                                  

         k=sszymmh[i]+7*sszymmh[i+1]-1;

       timer0h=FREQH[k];

       timer0l=FREQL[k];

       time=sszymmh[i+2];

       i=i+3;

       song();

     }

}

关键字:51单片机  世上只有妈妈好  音乐 引用地址:51单片机演示<世上只有妈妈好>音乐

上一篇:大电流变流装置过电压智能保护模块设计
下一篇:8051单片机教程第十八课:中断系统

推荐阅读最新更新时间:2024-11-09 09:23

C51单片机对抽油机的智能功率控制电路设计
为了实现抽油机能自动根据负载需要实时进行Δ/Y双向切换和间歇定时控制的目标,采用嵌入式控制技术设计了如图1所示的控制电路。 智能功率控制器的硬件系统以新华龙电子公司为C8051F206配套的实验板为基础,新增输出电路和键盘显示电路后形成。直接利用实验板上的C8051F206MCU、JTAG接口、晶振、复位及电源电路,大大降低了硬件设计工作量。 (1)输出电路 本系统的被控对象是电机的开关。为满足星角切换和开机/停机要求,需要对3只交流接触器(C1~C3)按一定组合关系进行控制,其电路原理和控制真值表如图2(a)和图2(b)所示。考虑到现场抗干扰的需要,在输出端口P0.1,P0.3和P0.5后采用了光电隔离电路(图2(c)),其
[单片机]
C<font color='red'>51单片机</font>对抽油机的智能功率控制电路设计
51单片机编程:双路计数器详解
利用 51 单片机构成计数器,计数的上限,做的大一些,也不难,几千几万都可以。 下面的电路,小了一点,是个两路两位的计数器。 用来记录乒乓球比赛,还算可以,用于篮球比赛,分数超过 99,这个电路就不够用了。 电路图中,用的是共阳数码管;还设置了六个按键,用途,都已经标出。 用 C 语言编写驱动程序,是比较简单的,全部代码如下: #include《reg51.h》 unsigned char n1, n2; //----------------------------------------------- void delay(unsigned int i) //1ms延时程序 { unsigned char j; whil
[单片机]
89C51单片机的步进电动机用于玻璃管加热系统的设计
1 前言 步进电机是一种将电脉冲信号转换成相应的角位移或线位移的电磁机械装置,是一种输出与输入数字脉冲对应的增量驱动元件,具有快速启动和停止的能力。但大多数设计人员常常习惯于用逻辑电路实现复杂的步进电机的控制,虽然已经取得很大成效,但实现起来成本高、费时多,而且一旦组成了电路,就很难再改动,因此不得不完全重新设计控制器。微处理器与微计算机的先进技术和低廉的价格,给步进电机的控制开创了一个新的局面[1]。人们完全可以借助于软件来对步进电机实施控制,从而实现复杂而成本又不高的控制系统,同时还可以很灵活地通过改变程序来改变控制方案。为此,我们基于89C51单片机设计了步进电机控制器用于玻璃管加热系统。该控制器具有线路简洁、性能良好、成本
[单片机]
89C<font color='red'>51单片机</font>的步进电动机用于玻璃管加热系统的设计
51单片机——中断系统结构
1 什么是中断 在生活中经常会遇到这样的情况:正在书房看书时,突然客厅的电话响了,人们往往会停止看书,转而去接电话,接完电话后又回书房接着看书。这种停止当前工作,转而去做其他工作,做完后又返回来做先前工作的现象称为中断。 单片机也有类似的中断现象,当单片机正在执行某程序时,如果突然出现意外情况,它就需要停止当前正在执行的程序,转而去执行处理意外情况的程序(又称中断子程序),执行处理完后又接着执行原来的程序。 2 中断的基本概念 2.1 中断源 要让单片机的CPU中断当前正在执行的程序转而去执行中断子程序,需要向CPU发出中断请求信号。让CPU产生中断的信号源称为中断源(又称中断请求源)。 8051单片机有5个中断源,分
[单片机]
<font color='red'>51单片机</font>——中断系统结构
80C51单片机内部定时器和计数器的结构及原理解析
80C51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。 定时器/计数器的结构: 图片1 从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过
[单片机]
80C<font color='red'>51单片机</font>内部定时器和计数器的结构及原理解析
51单片机引脚的详细资料介绍
AT89C2051是精简版的51单片机,精简掉了P0口和P2口,只有20引脚,但其内部集成了一个很实用的模拟比较器,特别适合开发精简的51应用系统,毕竟很多时候我们开发简单的产品时用不了全部32个I/O口,用AT89C2051更合适,芯片体积更小,而且AT89C2051的工作电压最低为2.7V,因此可以用来开发两节5号电池供电的便携式产品。 本文以ATMEL公司生产的51系列家族的AT89S51和AT89C2051两种单片机来讲解,两种单片机是目前最常用的单片机,其中AT89S51为标准51单片机,当然其功能比早期的51单片机更强大,支持ISP在系统编程技术,内置硬件看门狗。。。 一、AT89S51单片机引脚介绍 AT89
[单片机]
<font color='red'>51单片机</font>引脚的详细资料介绍
51单片机,点亮LED灯和闪烁
1.关键字sfr与sbit的区别 sfr是定义寄存器的字节地址,sbit是定义可位寻址的位地址 例如:sfr P1 =0x90; sbit A = P1^0 sbit B = P1^1; 2. 单片机引脚有:电源引脚、晶振引脚、复位引脚、下载引脚、GPIO引脚 其中晶振引脚主要是用来提供外部时钟,驱动指令执行,GPIO引脚包含P0、P1、P2、P3 四个端口 3.点亮一个LED灯 从电路图可以得知,LED是P2端口,我们给P2.0针脚一个低电压,也就是0V,就会点亮第一个,程序如下 #include reg52.h //引用头文件 int main() { P2
[单片机]
<font color='red'>51单片机</font>,点亮LED灯和闪烁
51单片机-74HC595移位寄存器
1.74HC595芯片介绍 74HC595芯片是一个串行输入,并行输出设备。其内部包括一个8位移位寄存器、一个存储器以及三态输出门电路,其中移位寄存器和存储器都有相互独立的时钟,每当移位寄存器输入时钟SHCP上升沿来临之时,数据被移出。 1.1.引脚定义 引脚定义,怎么命名,并没有个统一的规则,所以每个人在绘制芯片引脚图时,根据个人习惯命名可能都不一样(如:14号引脚(DS/SER),10号引脚(MR/SCLR),11号引脚(SHCP/SCK),12号引脚(STCP/RCK)等);虽然命名可能不一样,但引脚的功能确是一样; 1.2.工作原理 工作方式1:将DS的数据,通过SHCP产生上升沿,一位位的移入移
[单片机]
<font color='red'>51单片机</font>-74HC595移位寄存器
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved