单片机音乐倒数计时器c语言,音乐倒数计时器单片机课程设计报告.doc

WORD格式 整理分享

范文范例 参考指导

音乐倒是计时器

一、设计要求

利用STC89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。同时输出控制一个继电器吸合,继电器驱动一个3W的大功率LED灯,亮度可以由单片机控制从50%~100%连续可调。

定时闹钟的基本功能如下。

字符型LCD(16???2)显示器。

显示格式为“TIME 分分:秒秒”。

用4个按键操作来设置当前想要倒计数的时间。一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。

1、程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1~K4动作如下。

K1—可调整倒计数的时间1~60分钟。

K2—设置倒计数的时间为5分钟,显示“0500”。

K3—设置倒计数的时间为10分钟,显示“1000”。

K4—设置倒计数的时间为20分钟,显示“2000”。

2、复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键则在LCD上显示出设置画面。此时,若:

a. 按操作键K2—增加倒计数的时间1分钟。

b. 按操作键K3—减少倒计数的时间1分钟。

c. 按操作键K4—设置完成。

二、系统硬件说明

2.1:音乐倒是计时器要实现一种由单片机控制的带LCD显示的倒数计时器,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,改变计数值TH0和TL0可以产生不同频率的脉冲信号。该设计具有5个功能按键,用户可以通过这些按键设置定时时间和选择控制定时,倒计数为零时,可通过扬声器将音乐播放出来。

系统结构图如下图所示。

振荡电路复位电路

振荡电路

复位电路

蜂鸣器输出电路

89C52芯片

LCD显示电路

按键控制电路

2.2 AT89C52

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

主要特性:

· 兼容MCS51指令系统 · 8k可反复擦写(>1000次)Flash ROM

· 32个双向I/O口 · 256x8bit内部RAM

· 3个16位可编程定时/计数器中断 · 时钟频率0-24MHz

· 2个串行中断 · 可编程UART串行通道

· 2个外部中断源 · 共8个中断源

· 2个读写中断口线 · 3级加密位

· 低功耗空闲和掉电模式

2.3电路原理图如下:

2.4电路仿真图如下:

三、系统软件设计

音乐倒数计时器软件设计关键是实现音乐的播放。利用定时计数器,通过载入不同的计数初值,产生频率不同的方波,输入到蜂鸣器(SOUNER)中,使其发出频率不同的声音。本设计中单片机晶振为11.0592MHz,通过计算各音阶频率,可得1、2、3、4、5、6、7共7个音应赋给定时器的初值为64580、64684、64777、64820、64898、64968、65030。通过K1~K5开关进行控制时间设置来完成其基本功能,当倒计时为零时,通过通过蜂鸣器放出一段音乐。

3.1系统基本流程图如下:

3.2 部分程序如下:

#include

#include

#define time 100

#define uint unsigned int

#define uchar unsigned char

uint flag,flag0,flag1,flag2,flag3,flag4,flag5,minute,second=60;

int t=0,flag6=0;

uchar num,j,i,k=0,time_H,time_L,times,m,n,p;

uchar code table[]="TIME 00:00";

uchar code FREQH[]={

0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,//低音1234567

0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,!

0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//高音1234567

0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF};//超高音123

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值