音乐倒数计数器单片机课程设计_第1页
音乐倒数计数器单片机课程设计_第2页
音乐倒数计数器单片机课程设计_第3页
音乐倒数计数器单片机课程设计_第4页
音乐倒数计数器单片机课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

音乐倒数计数器单片机课程设计目录第1章概述 11.1发展前景 11.2设计要求 11.3设计方案 1第2章系统结构及主要元器件 22.1AT89C51单片机 22.2LCD显示器 3第3章硬件设计 43.1显示电路 43.2输入电路 43.3复位电路 53.4报警电路 5第4章软件设计 64.1程序流程图 64.2程序源代码 6第5章系统仿真及调试 155.1软件调试 155.2软硬件调试 155.3系统仿真 17参考文献 19音乐倒数计数器单片机课程设计全文共21页,当前为第1页。音乐倒数计数器单片机课程设计全文共21页,当前为第1页。第1章概述1.1发展前景随着人们生活水平的不断提高单片机控制无疑是人们追求的目标之一,它给人带来的方便也是不可置否的,人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。1.2设计要求利用数字AT89C51单片机实现倒数计数器的功能,设定时间后在LED数码管上显示相应的时间。其功能和性能指标如下:1、字符型LCD(16

2)显示器,显示格式为“TIME分分:秒秒”。2、用4个按键操作来设置当前想要倒计数的时间。3、一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。4、程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1~K4动作如下:(1)K1—可调整倒计数的时间1~60分钟。(2)K2—设置倒计数的时间为5分钟,显示“0500”。(3)K3—设置倒计数的时间为10分钟,显示“1000”。(4)K4—设置倒计数的时间为20分钟,显示“2000”。5、复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD上显示出设置画面。此时,若:(1)按操作键K2—增加倒计数的时间1分钟。(2)按操作键K3—减少倒计数的时间1分钟。(3)按操作键K4—设置完成。1.3设计方案音乐倒数计数器单片机课程设计全文共21页,当前为第2页。音乐倒数计数器所倒数的时间由数字显示,控制器使用单片机AT89C51。本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LCD1602显示器上。当倒计数为0时,蜂鸣器就发出音乐声响等等。该计数器系统主要由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成。总体设计方框图如图1-1所示。音乐倒数计数器单片机课程设计全文共21页,当前为第2页。LCD1602LCD1602复位电路AT89C51键盘蜂鸣器 图1-1总体设计方框图第2章系统结构及主要元器件2.1AT89C51单片机AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。音乐倒数计数器单片机课程设计全文共21页,当前为第3页。图2-1AT89C51单片机引脚音乐倒数计数器单片机课程设计全文共21页,当前为第3页。2.2LCD显示器1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5×7或者5×11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。 图2-2LCD1602引脚图表2-1LCD1602各引脚功能表引脚符号功能说明1VSS一般接地2VDD接电源+5V3V0液晶显示器对比度调整4RS高电平1时选择数据寄存器、低电平0时选择指令寄存器5R/W高电平1时进行读操作、低电平0时进行写操作6E使能端,下降沿使能7DB0低4位三态、双向数据总线0位8DB1低4位三态、双向数据总线1位9DB2低4位三态、双向数据总线2位10DB3低4位三态、双向数据总线3位11DB4高4位三态、双向数据总线4位12DB5高4位三态、双向数据总线5位13DB6高4位三态、双向数据总线6位14DB7高4位三态、双向数据总线7位15BLA背光电源正级16BLK背光电源负极第3章硬件设计3.1显示电路音乐倒数计数器单片机课程设计全文共21页,当前为第4页。显示电路硬件连接如图3-1所示,有单片机和一个LCD1602液晶显示器组成,P0为输入口,P2为片选口。音乐倒数计数器单片机课程设计全文共21页,当前为第4页。 图3-1显示电路连接图3.2输入电路按键用于控制数码显示、LCD显示、扬声器等模块的工作。通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。设计中使用单个按键实现单个功能,属于较为简单的控制方式。在多功能系统设计的试验中我们使用五个按键分别与单片机的P1.0、P1.1、P1.2、P1.3、P1.4相连。通过按下相应的按键来处理相应的程序。输入电路连接图如图3-2所示。图3-2输入电路连接图3.3复位电路音乐倒数计数器单片机课程设计全文共21页,当前为第5页。当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。上电复位要求接通电源后,自动实现复位操作。当单片机已在运行当中时,按下复位键后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。复位电路连接如3-4所示。音乐倒数计数器单片机课程设计全文共21页,当前为第5页。 图3-3复位电路连接图3.4报警电路利用I/O定时翻转电平来产生驱动波形的方式必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。比如为2500Hz的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O口每200μs翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty的方波,再通过三极管放大就可以驱动这个蜂鸣器了。本设计中用单片机的P1.5引脚控制蜂鸣器。报警电路连接图如图3-4所示。 图3-4报警电路连接图第4章软件设计4.1程序流程图音乐倒数计数器单片机课程设计全文共21页,当前为第6页。主程序开始初始化,然后扫描键盘、复位电路和计数器。当键盘按键有按下时,调整计数器值,LCD显示新值。当K5键按下时开始计时,当计数器值倒计为0时,蜂鸣器发出声音,计数器停止倒计,程序结束。主程序流程图如图4-1所示。音乐倒数计数器单片机课程设计全文共21页,当前为第6页。否开始否开始初始化扫描键盘是否按下调整计时器是hiLCD显示计数值扫描计数器蜂鸣器发声计数器停止计数K5是否按下否是否为零结束是是否 图4-1主程序流程图4.2程序源代码#include<reg51.h>#include<intrins.h>#definetime100#defineuintunsignedint#defineucharunsignedcharuintt,flag,flag0,flag1,flag2,flag3,flag4,flag5,minute,second=60;音乐倒数计数器单片机课程设计全文共21页,当前为第7页。ucharnum,j,i,k=0;音乐倒数计数器单片机课程设计全文共21页,当前为第7页。ucharcodetable[]="TIME00:00";uintcodetable1[]={64580,64684,64777,64820,64898,64968,65030};sbitkey1=P1^0;sbitkey2=P1^1;sbitkey3=P1^2;sbitkey4=P1^3;sbitkey5=P1^4;sbitP1_5=P1^5;sbitRS=P2^6; sbitRW=P2^5;sbitLcdE=P2^7;sbitled_green=P2^0;voidwrite_time(uintaddr,uintdate);voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddelay1(void){uchara,b,c;for(c=13;c>0;c--)for(b=247;b>0;b--)for(a=142;a>0;a--);_nop_();}voidwrite_com(ucharcom){RS=0;RW=0;P0=com;delay(5);LcdE=1;delay(10);LcdE=0;音乐倒数计数器单片机课程设计全文共21页,当前为第8页。}音乐倒数计数器单片机课程设计全文共21页,当前为第8页。voidwrite_date(uchardate){RS=1;RW=0;P0=date;delay(5);LcdE=1;delay(10);LcdE=0;}voidKEY1(){while(flag1){if(key2==0){delay(time);if(key2==0){if(minute<60)minute=minute+1;write_time(7,minute);}}if(key3==0){delay(time);if(key3==0){if(minute>0)minute=minute-1;write_time(7,minute);}}if(key4==0||key5==0)音乐倒数计数器单片机课程设计全文共21页,当前为第9页。{音乐倒数计数器单片机课程设计全文共21页,当前为第9页。delay(150);if(key4==0||key5==0){flag1=0;flag=1;TR0=1;}}}}voidKEY2(){minute=5;write_time(7,minute);while(flag2){if(key5==0){delay(time);if(key5==0){flag2=0;flag=1;TR0=1;}}}}voidKEY3(){minute=10;write_time(7,minute);while(flag3){if(key5==0)音乐倒数计数器单片机课程设计全文共21页,当前为第10页。{音乐倒数计数器单片机课程设计全文共21页,当前为第10页。delay(time);if(key5==0){flag3=0;flag=1;TR0=1;}}}}voidKEY4(){minute=20;write_time(7,minute);while(flag4){if(key5==0){delay(150);if(key5==0){flag4=0;flag=1;TR0=1;}}}}voidwrite_time(uintaddr,uintdate){uintge,shi;ge=date%10;shi=date/10;write_com(0x80+addr);write_date(0x30+shi);音乐倒数计数器单片机课程设计全文共21页,当前为第11页。write_date(0x30+ge);音乐倒数计数器单片机课程设计全文共21页,当前为第11页。if(addr==7&&date==0)j=1;if(j==1&&addr==10&&date==0){flag0=1;TR0=0;TR1=1;flag5=1;}}voidinit(){P1=0xff;RW=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);TMOD=0x11;TH1=(65536-50000)/256;TL1=(65536-50000)%256;TH0=0xff;TL0=0xff;ET0=1;ET1=1;TR0=0;TR1=0;EA=1;flag0=1;for(num=0;num<12;num++){write_date(table[num]);delay(20);}音乐倒数计数器单片机课程设计全文共21页,当前为第12页。}音乐倒数计数器单片机课程设计全文共21页,当前为第12页。voidstart(){if(key1==0){delay(time);if(key1==0){flag0=0;flag1=1;KEY1();}}if(key2==0){delay(time);if(key2==0){flag0=0;flag2=1;KEY2();}}if(key3==0){delay(time);if(key3==0){flag0=0;flag3=1;KEY3();}}if(key4==0){delay(150);音乐倒数计数器单片机课程设计全文共21页,当前为第13页。音乐倒数计数器单片机课程设计全文共21页,当前为第13页。{flag0=0;flag4=1;KEY4();}}}voidwrite_time0(){minute=minute-1;write_time(7,minute);write_time(10,59);flag=0;}voidcounter(){if(t==20){led_green=led_green^1;if(flag==1)write_time0();t=0;second=second-1;write_time(10,second);if(k==1&&second==59){if(minute>0)minute=minute-1;write_time(7,minute);}if(second==0){k=1;second=60;}音乐倒数计数器单片机课程设计全文共21页,当前为第14页。}音乐倒数计数器单片机课程设计全文共21页,当前为第14页。}intmain(){init();while(1){while(flag0)start();counter();while(flag5){delay1();i++;if(i>7)i=0;}}return0;}voidTimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;}voidTimer1()interrupt3{TH1=table1[i]/256;TL1=table1[i]%256;P1_5=~P1_5;if(key5==0){delay(100);if(key5==0){音乐倒数计数器单片机课程设计全文共21页,当前为第15页。TR1=0;音乐倒数计数器单片机课程设计全文共21页,当前为第15页。flag5=0;k=0;j=0;}}}第5章系统仿真及调试5.1软件调试软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。通过反复调试修改找出了程序中的语法与逻辑错误,并加以改正,最后调试成功。5.2软硬件调试软硬件联调是指把调试无误的软件程序烧制进单片机芯片内部,通上电源后,检查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。若有错误,通过改写软件来调试,直至达到预期效果,则设计圆满成功。本程序在调试时发现k1键未达到预期效果,通过反复试验,不断修改最后达到了预期效果。修改后的部分程序如下。voidKEY1(){while(flag1){if(key2==0){delay(time);if(key2==0){if(minute<60)minute=minute+1;write_time(7,minute);}}音乐倒数计数器单片机课程设计全文共21页,当前为第16页。if(key3==0)音乐倒数计数器单片机课程设计全文共21页,当前为第16页。{delay(time);if(key3==0){if(minute>0)minute=minute-1;write_time(7,minute);}}if(key4==0||key5==0){delay(150);if(key4==0||key5==0){flag1=0;flag=1;TR0=1;}}}}5.3系统仿真音乐倒数计数器单片机课程设计全文共21页,当前为第17页。音乐倒数计数器单片机课程设计全文共21页,当前为第17页。

温馨提示

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

评论

0/150

提交评论