/***************************************************************************

程序名称:program4-1.c

程序功能:单片机控制的音乐盒

****************************************************************************/

#include "reg51.h"                                        //包含头文件reg51.h

#define  uchar unsigned char

#include

#define  uint unsigned int

sbit  BEEP=P3^7;                                        //蜂鸣器控制接口

uchar note;                                                //音符下标

uchar code music[]={0xFC,0x44,0xFC,0xAC, 0xFD,0x09, 0xFD,0x34, 0xFD,0x82, 0xFD,0xC8};

//T值

uchar code tiger[ ]=                             //两只老虎音符数组

{

0x14,0x24,0x34,0x14,0x14,0x24,0x34,0x14,0x34,0x44,0x58,0x34,0x44,

0x58,0x53,0x61,0x53,0x41,0x34,0x14,0x53,0x61,0x53,0x41,0x34,0x14,

0x14,0x54,0x18,0x14,0x54,0x18,0x00,0x00

};

/***************************************************************************

函数名称:delay_125ms

函数功能:实现125ms延时函数

形式参数:无

返回值:无

****************************************************************************/

void delay_125ms()

{

uchar counter=0;                         //计数器初始化

TR0=1;                                 //启动T0

for(;counter!=5;)                         //判断计数器值是否等于5

{

if(TF0==1)                                 //T0溢出判断

{

TF0 = 0;                                //定时器0溢出位清零

TH0=0xa6;                    //恢复计数器初值(可采用stc-isp软件计算)

TL0=0x00;

counter++;                         //循环次数标志位加1

}

}

counter = 0;                                 //计数5次,计数器清零

}

/***************************************************************************

函数名称:palay_music

函数功能:单片机控制蜂鸣器播放音乐

****************************************************************************/

void paly_music()                                        //音乐播放函数

{

uchar i,j,k;

j=0;

while( tiger[j]!=0x00)       //一直播放到休止符0x00为止

{

k= tiger[j]&0x0F;                         //从音符数组中得到节拍

note=tiger[j]>>4;             //从音符数组中得到音符

TH1=music[2*note];                                //定时器1赋初值

TL1=music[2*note+1];

TR1=1;                                                        // 启动T1

if((music[2*note]==0x00)&&(music[2*note+1]==0x00))//判断是否停止

{

TR1=0;                                //当播放到停止符时关闭T1

BEEP=1;                                //关闭蜂鸣器

}

for(i=k;i>0;--i)                //延时,产生相应的节拍

{

delay_125ms();

}

TR1=0;

j++;                                            //取数组中的下一个数据

}

}

/***************************************************************************

函数名称:init

函数功能:定时器T0、T1初始化

****************************************************************************/

void  init ()

{

TMOD=0x11;                                        //T0工作定时工作方式

TH0=0xa6;                                        //赋T0计数器初值(25ms)

TL0=0x00;

ET1=1;                                        //允许T1中断

EA=1;                                                //中断允许

}

/***************************************************************************

函数名称:main

函数功能:单片机控制蜂鸣器播放音乐

****************************************************************************/

void main( )                                 //主函数

{

init();

while(1)

{

paly_music( );                        // 播放音乐

}

}

/***************************************************************************

函数名称:timer1

函数功能:T1产生音符脉冲

****************************************************************************/

void timer1( ) interrupt 3

{

TH1=music[2*note];                        //恢复计数器初始值

TL1=music[2*note+1];

BEEP=~BEEP;

}

51单片机两只老虎c语言程序,51单片机两只老虎仿真加代码相关推荐

  1. 单片机交通灯灯c语言程序,51单片机用C语言实现交通灯(红绿灯)源程序

    51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-29 23:00 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: /* 1.程序目的:使用 ...

  2. 单片机外部中断实验C语言程序,STC89C52单片机外部中断0实验

    原标题:STC89C52单片机外部中断0实验 / 实现功能: 设置,然后通过点亮与P1口第一个引脚相连的D1来 显示系统进入了外部中断0 实验板型号:BS-XYD-C52 实验名称: 外部中断0测试 ...

  3. pic单片机ccp脉冲捕捉c语言程序,pic单片机CCP脉冲(PWM)输出

    #include //该程序用于使CCP1模块产生分辨率为10位的PWM波形,占空比为50%,根据PWM_WIDE计算频率.proteus仿真通过 //CCP1(CCP2相同设置)模块的PWM工作方式 ...

  4. 单片机测周法c语言程序,基于单片机的数字频率计设计(附原理图及源程序).doc...

    四川理工学院毕业设计 四川理工学院毕业设计 PAGE \* MERGEFORMAT4 PAGE \* MERGEFORMAT5 四川理工学院毕业设计 基于单片机的数字频率计设计 (创新的自动选当功能) ...

  5. 单片机控制灯光亮度c语言程序,STC89C52RC单片机按键控制PWM输出LED灯亮度C语言程序...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //以下是源程序,只需修改定义IO口就可以使用, #include < reg52.h > #include < intrins.h & ...

  6. 单片机实现跑马灯c语言程序,用单片机编写几种跑马灯程序

    任务: 1.在电路板上实现跑马灯,一次1匹 2.在电路板上实现跑马灯,一次2匹 3.在电路板上实现4个二极管的同时闪烁 源程序1: /********************************* ...

  7. 89c51c语言程序,89C51单片机计算器C语言程序.doc

    89C51单片机计算器C语言程序 89C51单片机[计算器]C语言程序 89C51单片机[计算器]C语言程序2010-12-15 16:54/*89C51单片机[计算器]C语言程序*/ /*P2位选P ...

  8. 超声波c语言程序,51单片机超声波模块的C语言程序.doc

    51单片机超声波模块的C语言程序.doc 超声波模块程序 超声波模块程序 Trig P20 Echo P32 include define uchar unsigned char define uin ...

  9. c语言打铃器单片机程序,51单片机自动打铃C语言程序

    51单片机自动打铃C语言程序: #include "reg51.h" #include "intrins.h" #define uchar unsigned c ...

最新文章

  1. 强化学习在机器人装配工艺中的应用
  2. 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。...
  3. error_reporting()
  4. hibernate中的PO持久化对象及PO三种状态
  5. linux-IO之copy的实现
  6. 001Python路--入门
  7. wpf绑定treeview 带查找_如何查找,修复和避免C#.NET中内存泄漏的8个最佳实践
  8. 学习日报 7-10(验证码)
  9. python opencv天空提取_python利用opencv实现印章的提取
  10. ADO.NET 3.5 同SQL 2008的新的存储过程保存方式
  11. 1006 A+B问题
  12. 简单说 CSS滤镜 filter属性
  13. SketchUp 7 linux,SketchUp各版本有哪些兼容性更改?
  14. 解决steam无法启动gta5报错msvcp140.dll丢失
  15. 手机拍摄的身份证怎么制作为复印件?
  16. Jupyter Notebook:内核似乎挂掉
  17. UE 在场景或UMG中播放视频
  18. NGFW中数据包转发流程
  19. 码元、码元速率、波特率、比特率理解
  20. 免费不限速跨平台文件传输神器—文件疯巢

热门文章

  1. Java利用dom4j解析XML任意节点和属性
  2. bpm java_bpm完全解读
  3. 服务器bcd配置损坏怎么修复,引导记录损坏修复方法详解
  4. 第7关:求解一元二次方程
  5. 男人必学的几样家常炒菜,尤其是面对一个不会做饭的媳妇。
  6. 推荐系统 | 威尔逊区间法
  7. 解决localhost打不开的情况
  8. 201871010104-陈园园 《面向对象程序设计(java)》第二周学习总结
  9. linux用户名不在sudoers,Ubuntu 用户名 不在 sudoers文件中,此事将被报告。
  10. 关于数据挖掘的something