音乐倒数计数器内含完整代码_第1页
音乐倒数计数器内含完整代码_第2页
音乐倒数计数器内含完整代码_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、询l此仰孤客佗HUBEI NORMAL UNIVERSITY单片机课程设计MCU Curriculum Design所在院系教育信息与技术学院专业名称电子信息工程班级1005题目音乐倒数计数器指导教师梁赫西成员X杨完成时间一、设计任务与要求:设计任务:利用数字AT89C51单片机实现倒数计数器的功能。要 求:字符型LCD(16X 2)显示器,显示格式为“ TIME分分:秒秒。 用4个按键操作来设置当前想要倒计数的时间。一旦按下键如此开始倒计数,当计数为 0时,发出一阵音乐声。程序执行后工作指示灯LCD闪动。指导教师签名:2012 年12月30日二、指导教师评语:指导教师签名:2012 年12月

2、30日三、成绩验收盖章2012年12月30日音乐倒数计数器的设计摘要:随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它给人带来的方便也是不可置否的,人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便 的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向开展。本设计利用AT89C51单片机结合字符型 LCD显示器设计一个简易的倒数计数器,可用来煮方便 面、煮开水或小睡片刻等。做一小段时间倒计数,当倒计数为0时,如此发出一段音乐声响,通知倒计数终了,该做应当做的事。关键词:单片机 ;AT89C51;倒数计数器,音乐,proteus。利用数字AT89C

3、5单片机实现倒数计数器的功能,设定时间后在LED数码管上显示相 应的时间。其功能和性能指标如下:字符型LCD(16X 2)显示器,显示格式为“ TIME分分:秒秒。 用4个按键操作来设置当前想要倒计数的时间。一旦按下键如此开始倒计数,当计数为 0时,发出一阵音乐声。 程序执行后工作指示灯LCD闪动,表示程序开始执行,按下操作键 K1K4动作如下: K1-可调整倒计数的时间160分钟。 K2-设置倒计数的时间为5分钟,显示“ 0500。 K3-设置倒计数的时间为10分钟,显示“ 1000。 K4-设置倒计数的时间为20分钟,显示“ 2000复位后LCD的画面应能显示倒计时的分钟和秒数,此时按 K

4、1键,如此在LCD上显示 出设置画面。此时,假如:按K2键-增加倒计数的时间1分钟。按K2键-减少倒计数的时间1分钟。按K4键-设置完成。音乐倒数计数器所倒数的时间由数字显示,控制器使用单片机AT89C51本设计基于单片机技术原理,以单片机芯片 AT89C51作为核心控制器,通过硬件电路的制作以与 软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计 时,并将时间显示在LCD1602显示器上。当倒计数为0时,蜂鸣器就发出音乐声响等等。 该计数器系统主要由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块 等局部组成。本设计利用 Keil uVisi on4作为

5、编程软件进展源程序设计与调试,同时使用PROTEUS7.进展硬件电路的搭建仿真。以AT89C52单片机作为主控制器,外加按键、复位电路、LCD显示和蜂鸣器组成图2-1总体设计方框图主程序开始初始化,然后扫描键盘、复位电路和计数器。当键盘按键有按下时,调整计数器值,LCD显示新值。当复位键有按下时,计数器复位为初值,重新倒计数。当计数器值倒计为0时,蜂鸣器发出声音,计数器停止倒计,程序完毕。3.1.1 AT89C51 单片机AT89C5是一个低电压,高性能CMOS位单片机,片内含8k bytes的可反复擦写的 Flash只读程序存储器和128 bytes的随机存取数据存储器RAMI,器件采用AT

6、ME公司 的高密度、非易失性存储技术生产,兼容标准 MCS-5指令系统,片内置通用8位中央处 理器和Flash存储单元,AT89C5单片机在电子行业中有着广泛的应用。图3-1 AT89C51单片机U1d XTAL2丄RSTPSENALE EA士亠|-±丄P1 M2P1.1/T2EXM.2P1.3P1.4M.SPI .6FM.7AT69C5257丄*13丄_LlPO.OMDOP0.1UD1 P02MD2P0.3MD3P0.4MD4P0.5MD5PD.BUD6P0.7MD7P2.O/ABP2.I/A9 P2.2fAlO P2.3/A11P2.4/A12P2 5/A13 P2J6TA14P

7、2.7<A15P3.0/RXDP3.1HXD 円也NTD P33/1NTFP3.-4ZTQP3.5H13.1.2 LCD1602液晶显示电路设计与原理工业字符型液晶,能够同时显示16x02即32个字符16列2行。1602字符型LCDS常 有14条引脚线或16条引脚线的LCD多出来的2条线是背光电源。VCC(15却)和地线GND(16 脚),其控制原理与14脚的LC眈全一样。1602液晶模块内部的字符发生存储器CGROM) 已经存储了 160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、 常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A 的代

8、码是01000001B41H,显示时模块把地址41H中的点阵字符图形显示出来,我们就 能看到字母“ A"。图 3-2 LCD1602液 晶显AAA IX IX LUo C'jggzQQQQCjQiQQ-1c 二co m当MCS -5l系列单片机的复位引脚RST全称RESET出现2个机器周期以上的高电平时,单片机就执行复位操作。如果 RST寺续为高电平,单片机就处于循环复位状态。上 电复位要求接通电源后,自动实现复位操作。当单片机已在运行当中时,按下复位键后 松开,也能使RS为一段时间的高电平,从而实现上电或开关复位的操作。按键用于控制数码显示、LCD显示、扬声器等模块的工作。

9、通过扫描键盘来判断是 否有按键按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进展 工作。设计中使用单个按键实现单个功能,属于较为简单的控制方式。在多功能系统设计的试验中我们使用五个按键分别与单片机的pl.O、p1.1、p1.2、p1.3、p1.4相连。通过按下相应的按键来处理相应的程序。如如下图:图3-4按键电路模块PI.QPJ.IP1.2KI .3PTF-1.5P1.6Pl.TAT89C51蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H或“ HA表示。单片机驱动他激蜂鸣器的方式有两种:一种是

10、PWM俞出口直接驱动,另一种是利 用I/O定时翻转电平产生驱动波形对蜂鸣器进展驱动。 比如为2500Hz的蜂鸣器的驱动, 可以知道周期为400卩s,这样只需要驱动蜂鸣器的I/O 口每200卩s翻转一次电平就可 以产生一个频率为2500Hz占空比为1/2duty的方波。如如下图:图3-5 蜂鸣器解释一下按键代码的工作原理(以局部代码为例,其他按键类似):if(key2=0)delay(time);延时,用于按键去抖;if(key2=0)flag0=0;状态标志位:假如flog0=0,如此执行下面代码;if(minu te>0)minu te=mi nu te-1;write_time(7,

11、mi nu te);if(sec on d=0)k=1;second=60;设置成60秒,也就是按一下加1min; 其实,难点不在按键问题上;而是如何蜂鸣器发音的问题上;其计数值的求法如下:T=65536-N=65536-Fi 2 Fr例如:设 K=65536, F=1000000=Fi=1MHz 球低音 D0 261Hz中音 D0523Hz 高音的DO 1046Hz的计算值T=65536-N=65536-Fi 2 Fr=65536-1000000 2 Fr=65536-500000/Fr低音 DO的 T=65536-500000/262=63627低音 DO的 T=65536-500000/

12、523=64580低音 DO的 T=65536-500000/1047=65059 table1=64580,64684,64777,64820,64898,64968,65030;这就是不同频率的,DO的发音,当然本设计中没有考虑这么复杂,而是直接最简单的 do re mi fa so la si ,这 7 种根本发音。举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18。举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x224、系统仿真图4-1硬件图仿真4.结论经过这次的的课程设计,简单带有 LCD显示的音乐倒数计数器根本完成,系统根本 功能根本实现,测试运行也根本正

13、常。在实际的操作中,还是遇到了许多问题。例如:最小系统的有和无,对程序也没有 影响;复位键的复位功能,不能实现;虽然在电路上搭建起来了。还有就是延时去抖, 和不加延时去抖代码效果一样。所以这个系统还存在许多有待完善的地方。整个电路图 的搭建并不难,主要是代码局部。所以,主要是代码局部,而代码局部可以用汇编和C语言来进展编写。本次设计主要是用 C编写的,参考了网上的一局部代码。最后也完成 了设计。主要是代码的理解,吃透代码与 AT89S51相对应的各个局部代码的功能。通过本次课程设计,我更深刻的认识到了教学实践在大学课程中的重要性,同时也 觉察到了自己在学习方面存在的许多不足之处,在以后的学习中

14、我会努力改良这些不 足,不断提高自己的动手实践能力。参考文献1 谭浩强.C程序设计M.:清华大学20082 郭天祥.51单片机C语言教程M.:电子工业20113 X毅刚.单片机原理与应用M.:高等教育2011附录:程序源代码#in clude<reg52.h>#i nclude<i ntri ns.h>#define time 100#defi ne uint un sig ned int#defi ne uchar un sig ned char uintt,flag,flag0,flag1,flag2,flag3,fl ag4,flag5,mi nu te,sec

15、on d=60; uchar nu m,j,i,k=0;uchar code table="TIME 00:00" uintRS=0;P3=; delay(5);E=1;delay(10);E=0;/1602写数据函数 /void write_date(uchar date) code RS=1;P3=date;delay(5);E=1;delay(10);E=0;/ 按键1处理函数/ void KEY1()while(flagl)if(key2=0)delay(time);if(key2=0)if(mi nute<=60) minu te=minu te+1; wr

16、ite_time(7,mi nute); _ if(key3=0)delay(time);if(key3=0)if(minu te>0)mi nu te=mi nute-1; write_time(7,mi nute); _ if(key4=0|key5=0) table1=64580,64684,64777,64820,64898,64968,65030;sbit key 1= P1A0;sbit key2=P1Al;sbit key3=P1A2;sbit key4=P1A3;sbit key5=P1A4;sbit P1_5=P1A5;sbit RS=P2A0;sbit RW=P2A1

17、;sbit E=P2A2;sbit led_red=P2A3;void write_time( uintaddr,u intdate);/ 延时函数 /void delay( uint z)uint x,y;for(x=z;x>0;x_) for(y=110;y>0;y-);/ 延时 1S/void delayl(void)uchar a,b,c;for(c=13;c>0;c-)for(b=247;b>0;b-)for(a=142;a>0;a-);_nop_;/1602写命令函数 /void write_(uchar )delay(150);if(key4=0|k

18、ey5=0)flag 仁0;flag =1;TR0=1;/ 按键2处理函数/void KEY2()minu te=5;write_time(7,mi nute); while(flag2)if(key5=0)delay(time);if(key5=0)flag2=0;flag =1;TR0=1;/ 按键3处理函数/void KEY3()minu te=10;write_time(7,mi nute); while(flag3)if(key5=0)delay(time);if(key5=0)flag3=0;flag =1;TR0=1;/ 按键4处理函数/void KEY4()minu te=20

19、;write_time(7,mi nute); while(flag4) if(key5=0)delay(150);if(key5=0)flag4=0;flag =1;TR0=1;voidwrite_time( uintaddr,u intdate)uint ge,shi;ge=date%10; shi=date/10;write_(0x80+addr); write_date(0x30+shi); write_date(0x30+ge); if(addr=7&&date=0)j=1;if(j=1 &&addr=10&&date=0)flag0=

20、1;TR0=0;TR1=1;flag5=1;flag0=0;flag2=1;KEY2();if(key3=0) delay(time); if(key3=0)flag0=0;flag3=1;KEY3();if(key4=0)delay(150);if(key4=0)flag0=0;flag4=1;KEY4();void write_time0() _mi nute=mi nute-1; write_time(7,mi nu te); write_time(10,59); flag=0;void coun ter()if(t=20) led_red=led_redA1; if(flag=1) write_time0();t=0;sec on d=sec on d-1;write_time(10,seco nd);llllll 初始化函数llllllvoid ini t()P仁Oxff;RW=0;write_(0x38);write_(0x0c);write_(0x06);write_(0x80);TMOD=0x11;TH0=(65536-5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论