AT89C51单片机设计的音乐倒数计数器Word格式.doc
《AT89C51单片机设计的音乐倒数计数器Word格式.doc》由会员分享,可在线阅读,更多相关《AT89C51单片机设计的音乐倒数计数器Word格式.doc(17页珍藏版)》请在冰豆网上搜索。
用4个按键操作来设置当前想要倒计数的时间。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
应用Proteus的ISIS软件和KeiluVision3来实现该计数器的设计与仿真。
该方法仿真效果真实、准确,节省了硬件资源。
该多功能计数器可以应用于一般的生活和工作中,也可以通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。
关键词:
AT89C51,计数器,键盘控制,LCD显示,protues,Keil。
目录
1绪论 3
1.1课题背景及研究意义 3
1.2国内外现状 3
1.3课题的设计目的 3
1.4课题的主要工作 3
2系统概述 4
2.1方案论证 4
2.2系统设计原理 4
3系统硬件设计 5
3.1主控电路设计 5
3.2LCD液晶显示器接口电路设计 6
4系统软件设计 7
4.1主程序设计 7
4.2硬件调试 8
4.3仿真结果 9
结论 10
参考文献 11
系统整体电路 11
全部程序清单 12
-III-
1绪论
1.1课题背景及研究意义
近年来单片机发展十分迅速,单片机的应用已经渗透到电力、冶金、化工、建材、机械、食品、石油等各个行业[1]。
本设计使用单片机作为核心进行控制。
单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途[2]。
1.2国内外现状
单片机是指一个集成在一块芯片上的完整计算机系统。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上[3][4]。
单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
1.3课题的设计目的
利用STC89C52单片机结合字符型LCD显示器设计一个简易的倒数计数器。
1.4课题的主要工作
1.字符型LCD(16×
2)显示器,显示格式为“TIME分分:
秒秒”。
2.用4个按键操作来设置当前想要倒计数的时间。
3.一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
4.程序执行后工作指示灯LCD闪动,表示程序开始执行,按下操作键K1~K4动作如下:
lK1---可调整倒计数的时间1~60分钟。
lK2---设置倒计数的时间为5分钟,显示“0500”。
lK2---设置倒计数的时间为10分钟,显示“1000”。
lK2---设置倒计数的时间为20分钟,显示“2000”。
5.复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD上显示出设置画面。
此时,若:
n按K2键---增加倒计数的时间1分钟。
n按K2键---减少倒计数的时间1分钟。
n按K4键---设置完成。
2系统概述
2.1方案论证
方案一:
采用花样显示,花样显示是指LCD显示某一屏字符时,采取从左到右或者是从右到左的整屏移动的显示方式。
在这种显示方式下,给人的感觉就是程序是在执行的,同时如果控制好了移动一屏的时间间隔的话,在整体视觉上可以达到很好的效果。
方案二:
采用静态显示,静态显示是指LCD显示某一屏字符时,时钟保持当前字符的显示,不使用移屏显示。
便于控制,同时能够满足正常的显示效果。
由于在显示中存在播放时间的动态变化,这样的话,即使是不产生整屏移动,也能给人动态感,也易于控制。
基于以上各种特点,我选择了方案二
2.2系统设计原理
本课程设计是利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
作品先接受用户输入的倒数计数时间,然后由用户启动作品工作(可用一个闪烁的LED灯指示),当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
定时闹钟的基本功能如下:
1、字符型LCD(16
´
2)显示器。
2、显示格式为“TIME分分:
3、用5个按键操作来设置当前想要倒计数的时间。
4、一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声
5、程序执行后工作指示灯LCD闪动,表示程序开始执行,按下操作键K1~K4动作如下:
K1---可调整倒计数的时间1~60分钟。
K2---设置倒计数的时间为5分钟,显示“0500”。
K3---设置倒计数的时间为10分钟,显示“1000”。
K4---设置倒计数的时间为20分钟,显示“2000”。
6、复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD上显示出设置画面。
按K2键---增加倒计数的时间1分钟。
按K3键---减少倒计数的时间1分钟。
按K4键---设置完成。
3系统硬件设计
3.1主控电路设计
AT89C51为ATMEL所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。
在本系统中,AT89C51单片机内部的功能单元已经能够满足系统设计需要,不需要系统扩展。
主要特性:
与MCS-51兼容、4K字节可编程闪烁存储器、寿命:
1000写/擦循环、数据保留时间:
10年、全静态工作:
0Hz-24MHz、三级程序存储器锁定、128×
8位内部RAM、32可编程I/O线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。
3.2LCD液晶显示器接口电路设计
LCD1602显示方式的方案比较。
基于以上各种特点,我选择了方案二。
图2-5按键控制模块图
4系统软件设计
4.1主程序设计
主程序开始初始化,然后扫描键盘、复位电路和计数器。
当键盘按键有按下时,调整计数器值,LCD显示新值。
当复位键有按下时,计数器复位为开机画面,当计数器值倒计为0时,蜂鸣器发出声音,计数器停止倒计,程序结束。
主程序流程图、lcd显示流程图和按键流程图分别如下图3-1、图3-2和图3-3所示。
开始
初始化
按键扫描
有键按下
按键处理,确定模式
时间显示模式
根据按键状态显示相应时间段
时间修改模式
根据按键状态修改时间
NO
YES
图3-3按键流程图
红灯亮
绿灯亮
灯灭
结束
显示温度
MCBU初始化
BS18B20初始化
判定温度是否在范围内
图4-1主程序流程图
源代码
全部程序清单
#include<
reg51.h>
intrins.h>
sbitrs=P2^4;
sbitrw=P2^5;
sbitep=P2^6;
sbitk1=P1^4;
sbitk2=P1^5;
sbitk3=P1^6;
sbitk4=P1^7;
sbitk5=P1^3;
sbitspeaker=P3^0;
unsignedcharcodedis1[]={"
605"
};
unsignedcharcodedis2[]={"
TIME00:
00"
unsignedcharcodedis3[]={"
0123456789"
unsignedintnum=0;
unsignedintmiaogw=0;
unsignedintmiaosw=0;
unsignedintfengw=0;
unsignedintfensw=0;
unsignedcharflag=1;
unsignedchartimer0h,timer0l,time;
//世上只有妈妈好数据表
codeunsignedcharsszymmh[]={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
};
//音阶频率表高八位
codeunsignedcharFREQH[]={
0x