基于单片机音乐倒数定时器的设计
- 格式:doc
- 大小:156.35 KB
- 文档页数:28
单片机设计24秒倒计时1.引言倒计时器是一种常见的电子设备,被广泛应用于体育比赛、倒计时游戏、厨房计时等场景中。
本文介绍了使用单片机设计一个24秒倒计时器的方法和过程。
2.设计原理本设计使用的单片机为51系列单片机,采用倒计时的方式进行计时,显示剩余时间,并发出声音提示时间结束。
具体实现主要包括以下几个步骤:-初始化单片机的定时器和功能引脚;-设置定时器的工作模式和计时时间;-编写程序控制定时器开始计时;-显示剩余时间并发出声音提示;-定时器到达设定时间后,停止计时并显示时间结束。
3.硬件设计硬件设计主要包括51系列单片机、LED数码管和蜂鸣器。
-单片机需要通过引脚连接LED数码管,用于显示剩余时间;-单片机通过一个GPIO引脚连接蜂鸣器,用于发出时间结束的提示声音。
4.软件设计软件设计主要包括初始化、计时、显示和提示等功能。
-初始化函数主要用于设置单片机的定时器和GPIO引脚;-计时函数用于设定倒计时的时间,并开始计时;-显示函数用于将剩余时间显示在LED数码管上;-提示函数用于判断是否到达设定时间,如果是则停止计时并发出提示声音。
5.实验结果经过调试和测试,实验结果表明该24秒倒计时器可以正常工作。
在开始计时后,数码管上会显示剩余时间,同时蜂鸣器会发出定时器结束的提示音。
6.结论本文介绍了使用单片机设计24秒倒计时器的方法和过程。
该设计通过初始化、计时、显示和提示等功能,实现了24秒倒计时的功能要求。
同时,该设计可以在实际中进行必要的优化和改进,以满足具体的应用需求。
7.致谢感谢本文参考的相关文献和资料,以及为本文提供实验设备和技术支持的相关人员。
[1]《51单片机原理与应用》[2]《C语言微机原理与接口技术》总结:本文主要介绍了使用单片机设计24秒倒计时器的方法和过程。
通过初始化、计时、显示和提示等功能,实现了24秒倒计时的功能要求。
同时,该设计可以在实际中进行必要的优化和改进,以满足具体的应用需求。
设计要求利用A T89C51单片机结合字符型LCD 显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
定时闹钟的基本功能如下。
字符型LCD (16 * 2)显示器。
显示格式为“TIME 分分:秒秒”。
用4个按键操作来设置当前想要倒计数的时间。
一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
程序执行后工作指示灯LED 闪动,表示程序开始执行,按下操作键K1~K4动作如下。
K1—可调整倒计数的时间1~60分钟。
K2—设置倒计数的时间为5分钟,显示“0500”。
K3—设置倒计数的时间为10分钟,显示“1000”。
K4—设置倒计数的时间为20分钟,显示“2000”。
复位后LCD 的画面应能显示倒计时的分钟和秒数,此时按K1键 则在LCD 上显示出设置画面。
此时,若: a. 按操作键K2—增加倒计数的时间1分钟。
b. 按操作键K3—减少倒计数的时间1分钟。
c. 按操作键K4—设置完成。
VCCXTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC133uFC233uF234567891RP1RESPACK-8LS1SOUNDERK2K3K4K1D1LED-GREENR2200D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LQ1NPNR110kC31nFR310k源程序:#include<reg51.h>//头文件 #define uint unsigned int #define uchar unsigned char#define busy 0x80sbit k1=P1^0;//按键位定义sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit RS=P2^0;//LCD位定义sbit RW=P2^1;sbit E=P2^2;sbit led=P3^6;sbit sound=P3^7;uchar code table[]={'0','1','2','3','4','5','6','7','8','9'};uchar code table1[]={"105090440037 "};uchar code table2[]={" 10 dian zi "};uchar code table3[]={"TIME 00:00 "};uchar code table4[]={"TIME 05:00 "};uchar code table5[]={"TIME 10:00 "};uchar code table6[]={"TIME 20:00 "};uchar code table7[]={" TIME OUT! "};uchar d,e,num,t,shishi,shige,fenshi,fenge,miaoshi,miaoge, b,b1,count,aa,s1,s2,s3,s4;uint counter=0;//乐谱简表uchar code array[]={0x18, 0x30, 0x1C, 0x10,0x20, 0x40, 0x1C, 0x10,0x18, 0x10, 0x20, 0x10,0x1C, 0x10, 0x18, 0x40,0x1C, 0x20, 0x20, 0x20,0x1C, 0x20, 0x18, 0x20,0x20, 0x80, 0xFF, 0x20,0x30, 0x1C, 0x10, 0x18,0x20, 0x15, 0x20, 0x1C,0x20, 0x20, 0x20, 0x26,0x40, 0x20, 0x20, 0x2B,0x20, 0x26, 0x20, 0x20,0x20, 0x30, 0x80, 0xFF,0x20, 0x20, 0x1C, 0x10,0x18, 0x10, 0x20, 0x20,0x26, 0x20, 0x2B, 0x20,0x30, 0x20, 0x2B, 0x40,0x20, 0x20, 0x1C, 0x10,0x18, 0x10, 0x20, 0x20,0x26, 0x20, 0x2B, 0x20,0x30, 0x20, 0x2B, 0x40,0x20, 0x30, 0x1C, 0x10,0x18, 0x20, 0x15, 0x20,0x1C, 0x20, 0x20, 0x20,0x26, 0x40, 0x20, 0x20,0x2B, 0x20, 0x26, 0x20,0x20, 0x20, 0x30, 0x80,0x20, 0x30, 0x1C, 0x10,0x20, 0x10, 0x1C, 0x10,0x20, 0x20, 0x26, 0x20,0x2B, 0x20, 0x30, 0x20,0x2B, 0x40, 0x20, 0x15,0x1F, 0x05, 0x20, 0x10,0x1C, 0x10, 0x20, 0x20,0x26, 0x20, 0x2B, 0x20,0x30, 0x20, 0x2B, 0x40,0x20, 0x30, 0x1C, 0x10,0x18, 0x20, 0x15, 0x20,0x1C, 0x20, 0x20, 0x20,0x26, 0x40, 0x20, 0x20,0x2B, 0x20, 0x26, 0x20,0x20, 0x20, 0x30, 0x30,0x20, 0x30, 0x1C, 0x10,0x18, 0x40, 0x1C, 0x20,0x20, 0x20, 0x26, 0x40,0x13, 0x60, 0x18, 0x20,0x15, 0x40, 0x13, 0x40,0x18, 0x80, 0x00};char shi,fen,miao;//*****************1秒延时程序********************* void delay(uchar z){uchar x,y;for(x=z;x>0;x--)for(y=200;y>0;y--);}bit lcd_busy()//测试LCD忙碌状态{bit result;E=0;RS=0;//指令RW=1;//读出E=1;delay(4);//高电平读出1usresult=(bit)(P0&busy);E=0;return result;}//**********************LCD写命令程序****************void write_com(uchar com)//写命令{while(lcd_busy());RS=0;delay(5);RW=0;delay(5);E=0;delay(5);P0=com;E=1;delay(10);E=0;}//***************************LCD写数据程序******************** void write_Data(uchar Data)//写数据{while(lcd_busy());RS=1;delay(5);RW=0;delay(5);E=0;P0=Data;delay(5);E=1;delay(10);E=0;}//**********************LCD初始化程序************************* void LCD_init()//lcd初始化{write_com(0x01);//清屏delay(5);write_com(0x38);//功能设定delay(5);write_com(0x0c);//光标不闪烁delay(5);write_com(0x06);//lcd模式设定i/d=1//计数地址加1delay(5);}//********************LCD全局初始化程序********************* void init()//全局出初始化{{t=0;s1=0;s2=0;s3=0;s4=0;led=1;TMOD=0X11;//设置定时器1在工作方式1TH0=0xff;TL0=0xff;TH1=(65536-50000)/256;//给定时器1装初值TL1=(65536-50000)%256;EA=1;//开启总中断ET0=1;//开启外部中断0中断ET1=1;//开启定时器1中断TR0=0;TR1=0;}LCD_init();//初始化显示屏write_com(0x80+2);for(num=0;num<16;num++){write_Data(table1[num]);delay(5);}write_com(0x80+0x40);for(num=0;num<16;num++){write_Data(table2[num]);delay(5);}}//**********************按键扫描程序****************** void key_check(){if(k1==0){delay(200);if(k1==0){s1++;if(s1==2){s1=0;}if(s1==1){TR1=0;//中断计时1write_com(0x80+0x42);for(num=0;num<16;num++)//显示00:00{write_Data(table3[num]);delay(5);}write_com(0x80+0x4a);write_com(0x0f);//打开光标闪烁fen=0;miao=0;//设定时间为00:00}}}{delay(200);if(k2==0){s2++;delay(200);if(s1==1&&s4!=1){fen++;//设置分加1s2=0;if(fen==61){fen=0;}fenge=fen%10;fenshi=fen/10;write_com(0x80+0x4a);write_Data(table[fenge]);write_com(0x80+0x49);write_Data(table[fenshi]);}if(s1==0){TR1=0;//中断计时1write_com(0x0c);//关闭光标闪烁write_com(0x80+0x42);for(num=0;num<16;num++)//显示05:00{write_Data(table4[num]);delay(5);}fen=5;miao=0;//设定时间为05:00TR1=1;}}}if(k3==0){delay(200);if(k3==0){s3++;if(s1==1&&s4!=1)fen--;//设置分减1if(fen==-1){fen=60;}fenge=fen%10;fenshi=fen/10;write_com(0x80+0x4a);write_Data(table[fenge]);write_com(0x80+0x49);write_Data(table[fenshi]);}if(s1==0){TR1=0;//中断计时1write_com(0x0c);//关闭光标闪烁write_com(0x80+0x42);for(num=0;num<16;num++){write_Data(table5[num]);//显示10:00delay(5);}fen=10,miao=0;//设定时间为10:00TR1=1;}}}if(k4==0){delay(200);if(k4==0){if(s1==1||s2==1||s3==1||s4==1){write_com(0x0b);//关闭光标闪烁TR1=1;//完成设置,释放中断1}if(s1!=1&&s2!=1&&s3!=1&&s4!=1){TR1=0;//中断计时1write_com(0x0b);//关闭光标闪烁write_com(0x80+0x42);for(num=0;num<16;num++)//显示20:00{write_Data(table6[num]);delay(5);}fen=20;miao=0;//设定时间为20:00TR1=1;}s1=0;s2=0;s3=0;//k1,k2,k3计数清0s4++;if(s4==3){s4=1;}}}}void sound_delay(uchar n)//音乐延时程序{uint i,j;for(i=0;i<n;i++){for(j=0;j<3;j++);}}//*****************音乐播放程序****************void playmusic()//音乐程序{uint i;uchar sound_signal;//定义音符大小uchar sound_pace;while(1){i=0;while(array[i]!=0x00){if(array[i]==0xff)//如果是休止符,延时100ms,进入下一个循环{TR0=0;i++;delay(100);continue;}sound_signal=array[i];//从表中取得音符大小i=i+1;sound_pace=array[i];//从表中取得节拍大小TR0=1;while(counter!=sound_pace)//节拍数未到时,继续产生该音调{sound=~sound;sound_delay(sound_signal);}i++;counter=0;//节拍计数器置0 进入下一个音调}delay(10);//歌曲演唱完毕后,延时一段时间}}//************主程序**********void main()//主函数{count=0,aa=0;sound=0;init();//初始化数据delay(10);while(1){key_check();//进入按键检测if(TR1==0&&TR0==1)//判断是否满足条件,是则播放音乐{playmusic();//播放音乐TR0=0;//播放结束中断计时0}}}//*****************************************void time1() interrupt 3//定时器1中断{TH1=(65536-50000)/256;TL1=(65536-50000)%256;write_com(0x0c);//关闭光标闪烁count++;aa++;if(count==20)//定时1s{count=0;if(miao==-1){miao=59;fen--;//分减1fenge=fen%10;write_com(0x80+0x40+10);write_Data(table[fenge]);fenshi=fen/10;write_com(0x80+0x40+9);write_Data(table[fenshi]);}miaoge=miao%10;write_com(0x80+0x40+13);write_Data(table[miaoge]);miaoshi=miao/10;write_com(0x80+0x40+12);write_Data(table[miaoshi]);if(fen==0&&miao==0)//判断时间是否为0{TR1=0;TR0=1;led=0;write_com(0x80+0x40);for(num=0;num<16;num++){write_Data(table7[num]);delay(5);}}miao--;//秒减1}if(aa==10)//开启流水灯 让它随时间闪动{aa=0;led=~led;}}void time0()interrupt 1//定时器0中断{counter++;//节拍次数计数TH0=0xd8;//定义单位节拍的延时大小TL0=0xef;}。
单片机应用系统设计安装与调试课程设计说明书(论文)设计题目:课程设计所属学院:电气工程学院专业:电气自动化姓名:王洋学号:01班级:电气自动化试点班起讫时间:2012.06.06指导教师:田浩鹏XX职业学院目录摘要 (I)1 项目概述和要求11.1 单片机基础知识11.2 单片机的发展趋势21.3 项目设计任务与要求32 系统设计52.1 框图设计52.2部分硬件方案论述62.3电路原理图62.4元件清单72.4.1AT89C51芯片72.4.2字符型LCD160282.4.3按键控制模块82.4.4其它元件113软件设计93.1 程序流程图93.2 程序关键问题的部分代码114 系统的仿真与调试184.1 硬件调试184.2 软件调试184.3 软硬件调试185总结19参考文献201 项目概述和要求1.1 单片机基础知识单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机了解计算机原理与结构的最佳选择。
现在,这种单片机的使用领域已十分广泛。
彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。
单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。
单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。
MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS- 48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。
塔里木大学《单片机原理与外围电路》课程论文基于单片机设计的音乐倒数计数器姓名:古再丽努尔·阿卜来提学号: **********班级:通信工程16-1摘要:单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。
近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。
单片机由CPU、一定容量的RAM和ROM构成,定时、计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习、应用,从而达到学习、设计、开发软、硬的能力。
本设计利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器。
用4个按键操作来设置当前想要倒计数的时间。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
应用Proteus的ISIS软件和Keil uVision3来实现该计数器的设计与仿真。
该方法仿真效果真实、准确,节省了硬件资源。
该多功能计数器可以应用于一般的生活和工作中,也可以通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。
关键词:AT89C51,计数器,键盘控制,LCD显示,protues,Keil 。
目录1绪论 (4)1.1课题背景及研究意义 (4)1.2国内外现状 (4)1.3课题的设计目的 (4)1.4课题的主要工作 (4)2系统概述 (5)2.1方案论证 (5)2.2系统设计原理 (5)3系统硬件设计 (5)3.1主控电路设计 (5)3.2LCD液晶显示器接口电路设计 (6)4系统软件设计 (6)4.1主程序设计 (6)4.2硬件调试 (8)4.3仿真结果 (16)结论 (16)参考文献 (17)系统整体电路.............................................................................................错误!未定义书签。
单片机课程设计题目:基于AT89C51单片机的倒计时学院:机械与电气工程学院专业:电气工程及其自动化学号:101401010205目录1、设计要求 (3)2. 工作原理 (3)2.1硬件设计 (4)2.1.1 单片机AT89S51 (4)2.1.2 显示器件选择 (5)2.1.3复位电路 (7)2.1.4 时钟电路 (7)2.1.6 蜂鸣器 (9)3、软件设计 (10)3.1 按键流程图: (10)3.2 定时器流程图: (11)3.3蜂鸣器发出音乐流程图: (12)3.4主程序流程图: (13)4、电路仿真 (14)参考文献 (15)附录1 电路图 (16)附录2 程序 (16)附录3 元件清单 (21)1、设计要求利用AT89C51单片机结合LED显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,红色LED灯闪烁,通知倒计数终了,该做应当做的事。
定时闹钟的基本功能如下。
●显示格式为“分分:秒秒”。
用4个按键操作来设置当前想要倒计数的时间。
一旦按下键则开始倒计数,当计数为0时,发出一阵利用AT89C51单片机结合LED显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,红色LED灯闪烁,通知倒计数终了,该做应当做的事。
音乐声。
程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1~K4动作如下。
●K1—可调整倒计数的时间1~60分钟。
●K2—设置倒计数的时间为5分钟,显示“0500”。
●K3—设置倒计数的时间为10分钟,显示“1000”。
●K4—设置倒计数的时间为20分钟,显示“2000”。
按K1键则在LED上显示出设置画面。
此时,若:a. 按操作键K2—增加倒计数的时间1分钟。
b. 按操作键K3—减少倒计数的时间1分钟。
c. 按操作键K4—设置完成。
附加功能:K5—计数开始按钮。
物理与电子工程学院《综合电子系统》课程设计报告音乐倒计时班级 2013级电工1班成员王宏胡旷龚婕妤指导教师杨丽蓉提交日期 2016 年 6 月 10 日目录一.设计概述和要求1.1 设计概述1.2设计要求二.系统设计2.1框图设计2.2元件清单三.软件设计3.1程序流程图3.1.1主程序流程图3.1.2蜂鸣器发声程序流程图3.2蜂鸣器发声电路原理图3.3蜂鸣器发声程序的关键代码四.PROTEUS仿真结果4.1总体电路仿真结果4.2假设倒计时为5秒时的仿真结果五. 实物图六.总结七.参考文献一、课程设计要求利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计时器,可用来煮方便面、烧开水和小睡片刻等。
计时器先接受用户输入的倒数计时时间,然后由用户启动工作,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
定时闹钟的基本功能如下:1.字符型LCD(16*2)显示器。
2.显示格式为“TIME 分分:秒秒”。
3.用四个按键操作来设置当前想要倒计数的时间,一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
二、系统设计框图设计本项目的系统设计框图如图2-1所示:由系统框图可看出,本设计由单片机AT89C51、LCD液晶显示器、控制键盘、蜂鸣器、复位电路和定时器几大模块组成。
1.主控芯片AT89C51AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。
主要性能:与MCS-51兼容、4K字节可编程闪烁存储器。
寿命:1000写/擦循环。
数据保留时间:10年。
全静态工作:0HZ-24MHZ,二级程序存储器锁定,128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。
黄河科技学院课程设计报告书题目: 音乐倒数计数器课程:单片机课程设计专业:数控技术班级:学号:学生:指导教师:何春霞2013年01 月 6 日摘要本设计是基于AT89C52单片机的音乐倒数计数器,根据单片机技术原理,通过硬件电路设计与软件设计,制作出的音乐倒数计数器能稳定运行,并能正常播放音乐。
该设计硬件部分主要包括按键电路、复位电路、LCD显示电路以及蜂鸣器组成,其中K1键作为第二功能键加入外部中断0,用以切换时间选择模式。
计数值为零时,通过定时器T1调节音频,是蜂鸣器发出不同的音调。
本设计利用Keil uVision4作为编程软件进行源程序设计及调试,同时使用PROTEUS7.7进行硬件电路的搭建仿真。
关键字:单片机音乐计数器proteus 蜂鸣器目录1 任务提出与方案论证 (7)1.1 采用555定时器 (7)1.2 采用单片机控制............. . (7)2 总体设计 (8)2.1 系统硬件设计 (8)2.2 系统软件设计 (8)3 详细设计及仿真 (9)3.1硬件电路详细设计 (9)3.2软件详细设计 (12)3.3 系统仿真 (14)4 总结 (16)参考文献 (17)附录 (18)1 任务提出与方案论证21世纪电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,而作为创新的倒数计数器更是在普通家庭中广泛应用。
1.1采用555定时器555定时器是一种模拟和数字功能相结合的中规模集成器件。
555定时器的功能主要由两个电压比较器决定。
两个电压比较器的输出电压控制RS触发器和放电管的状态。
在电源与地之间加上电压,当5脚悬空时,则电压比较器A1的反相输入端的电压为2VCC/3,A2的同相输入端的电压为VCC/3.若触发输入端TR的电压小于VCC/3,则比较器A2的输出为1,可使RS触发器置1,使输出端OUT=1.如果阈值输入端TH的电压大于2VCC/3,同时TR端的电压大于VCC/3,则A1的输出为1,A2的输出为0,可将RS触发器置0,使输出为0电平。
目录第1章设计要求及方案确定 (2)1.1 设计内容及要求 (2)1.2设计方案及思路 (2)第2章系统硬件设计 (3)2.1 硬件电路的总体设计方案及框图 (3)2.2 各单元硬件设计 (3)2.2.1 显示电路设计 (3)2.2.2 音乐播放电路设计 (4)2.3主要硬件元器件的介绍 (5)2.3.1 单片机8051芯片 (5)2.3.2 LED数码管 (6)第3章软件设计与说明 (9)3.1 程序设计流程图 (9)3.2 软件电路的总体设计方案及框图 (10)3.3 软件模块设计 (10)3.3.1 主程序模块 (10)3.3.2 按键扫描模块 (11)3.3.3 音乐播放模块 (11)第4章使用说明 (12)第5章设计总结 (13)参考文献 (15)附录: (16)A系统电路原理图 (16)B系统程序清单 (17)第1章设计要求及方案确定1.1 设计内容及要求本课题要求以单片机为核心设计一个音乐提示定时器,具备倒数计时、时间修改、音乐演奏等功能。
可作为微电脑倒数计数器,做一小段时间计时,放在家中使用,例如煮泡面、煮开水或小睡片刻等;用于全自动洗衣机洗涤完毕音乐提示定时器。
音乐提示定时器设计4个按键设置现在想要倒数的时间:K1——可调整时间为1-60分钟;K2——设置倒数计时时间为5分钟,显示为“0500”;K3——设置倒数计时时间为10分钟,显示为“1000”;K4——设置倒数计时时间为20分钟,显示为“2000”;一旦按键后则开始倒计时,当计时为0时则演奏一曲音乐;内定倒数计时时间为5分钟,显示为“0500”。
1.2设计方案及思路根据设计要求,本系统初步设定由单片机系统、A-D键、LED显示和音乐播放系统组成。
系统能完成定时、倒计时、定时到播放音乐提醒等功能。
1)按键的输入:A、B、C、D四个键作为时间设定的控制键,可由P1口输入。
2)倒计时的显示电路:8051显示电路由4位共阴极数码管显示,显示为动态扫描显示,其LED数码管的段码输入接8051P0口,而位码则接8051P3口,输入码由共阴极字型码确定,此点必须在软件设计时注意,以免输出显示有误。
东北石油大学课程设计2014年7 月7 日东北石油大学课程设计任务书课程单片机课程设计题目音乐倒数计数器专业自动化姓名罗宏星学号110601140121(2)显示主要内容:利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响。
基本要求:定时闹钟的基本功能如下。
(1)字符型LCD(16 2)显示器。
格式为“TIME 分分:秒秒”。
用4个按键操作来设置当前想要倒计数的时间。
当计数为0时,发出一阵音乐声。
程序执行后工作指示灯LED闪动,表示程序开始执行。
主要参考资料:[1] 张毅刚. 单片机原理及应用[M]. 北京: 高等教育出版社, 2003.[2] 李广第. 单片机基础[M]. 北京: 北京航空航天打学出版社, 2009.[3] 吴金戎. 8051单片机实践与应用[M]. 北京: 清华大学出版社, 2003.[4] 杨文龙. 单片机技术及其应用[M]. 北京: 电子工业出版社, 2008.[5] 王德彪. MCS-51单片机原理及接口技术[M]. 北京: 电子工业出版社, 2005.完成期限2014.6.30-2014.7.4指导教师李艳辉邵克勇专业负责人目录第1章概述 (1)1.1 发展前景 (1)1.2 设计要求 (1)1.3 设计方案 (1)第2章系统结构及主要元器件 (2)2.1 AT89C51单片机 (2)2.2 LCD显示器 (3)第3章硬件设计 (4)3.1 显示电路 (4)3.2 输入电路 (4)3.3 复位电路 (5)3.4 报警电路 (5)第4章软件设计 (6)4.1 程序流程图 (6)4.2程序源代码 (6)第5章系统仿真及调试 (15)5.1 软件调试 (15)5.2软硬件调试 (15)5.3系统仿真 (17)参考文献 (19)第1章概述1.1 发展前景随着人们生活水平的不断提高单片机控制无疑是人们追求的目标之一,它给人带来的方便也是不可置否的,人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
信息工程学院课程设计报告书题目: 带有LCD显示的音乐倒数计时器专业:计算机科学与技术日近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制系统日新月益更新。
单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本次课程设计的项目是带有LED显示的音乐倒数计时器。
主体使用89C52,通过几个开关进行控制,其中开关K1用于切换时间设置状态和时钟运行状态;开关K2用于切换修改时间数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定倒计时时间,并且设定好后到时间通过实验箱音频放出一段乐曲作为闹铃。
选做增加项目:还可增加秒表功能(精确到0.01s)或年月日设定功能关键词:单片机课程项目计时器 89C52摘要 (I)1前言 (1)1.1课题开发背景 (1)1.2课题研究的目的和意义 (1)1.3课题的主要研究工作 (1)2 系统硬件设计及说明 (3)2.1系统组成及总体框图 (3)2.2部分硬件方案论述 (3)2.3硬件电路图 (4)2.4元件清单 (4)2.4.1 AT89C52 (4)2.4.2 LCD1602 (5)2.4.3按键控制单元 (6)2.4.4 SPEAKER (7)3系统软件设计 (8)3.1系统总体功能流程图 (8)3.2使用单片机实现音乐节拍 (10)3.3使用单片机产生音频脉冲 (11)3.4使用定时器实现定时功能 (12)3.5程序描述 (12)4总结与展望 (15)参考文献 (16)1.1 课题开发背景随着单片机技术的成熟,单片机已经渗透到我们的学习、生活、生产和工作各个领域中, 凡是有自动控制要求的地方一般都会有单片机的身影出现:从简单到复杂,从空中、地面到地下,凡是能想象到的地方几乎都有使用单片机的需求。
单片机的应用有利于铲平的小型化、多功能化和智能化。
有利于提高生产、生活效率,保证安全。
目录 一、设计要求„„„„„„„„„„„„„„„„„1 二、设计目的„„„„„„„„„„„„„„„„„1 三、设计的具体实现„„„„„„„„„„„„„„2 1系统概述„„„„„„„„„„„„„„„„2 2单元电路设计„„„„„„„„„„„„„„3 3软件程设计和调试„„„„„„„„„„„„„7 四、结论和展望„„„„„„„„„„„„„„„„24 五、心得体会及建议„„„„„„„„„„„„„„25 六、附录„„„„„„„„„„„„„„„„„„„26 七、参考文献„„„„„„„„„„„„„„„„„27 第1页
基于单片机音乐倒数定时器的设计报告 一、 设计要求 利用单片机结合LCD显示器设计一个倒数计时器,可以放在家中使用,例如煮方便面、煮开水或小睡片刻等,做一小段时间计时。当倒数计时为0时,则发出一段音乐,通知倒数终了,该做重要的事情了。 具体要求: ①文字型LCD(16*2)显示目前倒数的时间;显示格式为“TIME 分分:秒秒”;具有4个按键操作来设置现在想要倒数的时间;一旦按键后则开始倒数计时,当计时为零则发出一阵音乐声响,②程序执行后工作指示灯LED闪动,表示程序开始执行,七段显示器显示“0500”,按下操作键K1~K4动作如下:操作键K1,可调整倒数时间1min~60min;操作键K2,设置倒数计时时间为5min,显示“0500”;操作键K3,设置倒数计时时间为10min,显示“1000”;操作键K4,设置倒数计时时间为20min,显示“2000”, ③RESET后按下K1显示如下: UP DOWN OK TIME 04:59倒数时间 操作键K2:增加倒数计时1min;操作键K3,减少倒数计时1min,操作键K4:设置完成。④一旦按键后则开始倒数计时,当计时为0时则发出一段音乐,同时继电器启动
二、 设计目的 1、通过该设计能提高学生分析解决问题的能力。 2、了解模拟电路及数字电路的相关知识。 3、学习单片机定时器时间计时处理、按键扫描、LCD显示及音乐旋律演奏的设计方法。
第2页
三、设计的具体实现 1.系统概述 1.1 总体方案论证 要实现音乐倒数定时器可以用两种方案实现。 方案一:利用PROG-110可编程控制器 PROG-110 可编程器,是一种用《数字简码》控制的产品,它的特点是:自带一套用于输入数码的按键和显示程序的数码管,只要我们现场输入一列2位数码,编制的程序即能完成,即编,即用。每一种《数字简码》控制器,它都自带一套系统软件,每一套系统软件都有一套相对应的指令表,配套的指令表表明,只要输入什么样的数,程序将去做什么事,输入一列数,它就会按次序去完成你要求它做的所有的事。 但是首先PROG-110模块总共只有6个I/O端口,这就必须扩展模块端口,用两部以上模块串联,但花钱要多;其次是程序过长,PROG-110模块的E2PROM存储器24C01只可输入128步程序;第三是受PROG-110模块跳转指令步数的限制。 方案二:利用单片机、LCD显示器和压电喇叭 单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。它在硬件结构、指令系统、I/O端口、功率消耗及可靠性等方面均有其独特之处,其最显著的特点之一就是具有非常有效的控制功能。而LCD显示器具有体积小、重量轻、工作电压低、功耗极低、显示内容丰富、稳定可靠、成本低、控制驱动方便、接口简单易用、模块化结构紧凑等特点。 综上所述,按照设计要求我选择第二种方案,即利用单片机和LCD显示器来实现定时倒数,通过压电喇叭来发出音乐。 1.2 单片机选择方案 采用8051单片机 8051单片机内部包含一个8位CPU、一个片内振荡器及时钟电路、ROM程序存储器、RAM数据存储器、两个16位定时器/计数器、可分别寻址64KB的程序存储器空间和64KB的数据存储器空间、32条可编程的I/O口线(4个8位并行I/O端口)、一个可编程全双工串行口、具有5个中断源和2个优先级的中断结构。可以有效实现本次设计中要求的各项功能。 具体的设计流程可见图1: 2.单元电路设计 2.1控制电路 第3页
图1 设计流程图 2.单元电路设计 2.1控制电路
主程序开始 继电器OFF 初始化变量及LCD接口 初始化定时器 LCD闪动表示程序开始执行
LCD扫描显示器更新倒数时间数据,检查闹铃时间是否到了
是否按K1,K2,K3,K4键
K1:调整倒数时间 K2:倒数计时时间为5MIN K3:倒数计时时间为10MIN K4:倒数计时时间为20MIN
Y
N 第4页
倒数计数器的控制电路可以见附图,其中主要分为以下几部分 ⑴单片机8051 8051 基本资料如下:
图2 8051引脚图 8051主要使用引脚功能说明如下: 8051的引脚40接+5V电源,引脚20接电源地线。 传统8051工作时钟的最高为12MHz。 EA引脚低电平动作用来存取外部程序ROM控制。 EA接地,由外部程序ROM来执行程序。 EA接高电平,由内部ROM来执行程序。 开机时必须加入芯片重置信号。(RESET) RESET信号高电平动作,高电平时产生芯片重置。 RESET信号低电平时,由程序ROM地址0开始执行程序。 在本次设计中采用的8051外接电路如图3所示: 第5页
EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD108051RESETR21kΩ1kΩR1VCCC130pFC230pFC310uFVCCVCCVCCD1LEDK1K2K3K4
P0.0P0.1
P0.4P0.5P0.6P0.7
P3.4
P3.7
P3.5
12MHz 图3 8051外接电路图 8051系列的单片机的时钟方式分为内部方式和外部方式。内部方式就是在单片机的引脚18、19外接晶振,就够成了自激振荡器在单片机内部产生时钟脉冲信号。外部时钟方式是把外部已经有的时钟信号引入到单片机内部。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。 用一个12MHz晶振和两个30Pf瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容可以增加电路的稳定性,可以抗噪声增加稳定性,不容易死机。 在8051中之所以采用高性能的振荡电路,因为: 1.单片机电子钟的计时脉冲基准是由外部晶振的频率经过12分频后提供,采用内部的定时/计数器来实现计时功能。所以,外接晶振频率精确度直接影响电子钟计时的准确性。 2.单片机电子钟利用内部定时/计数器溢出产生中断(12M晶振一般为50ms)再乘以相应的倍率来实现秒、分、时的转换。大家都知道从定时/计数器产生中断请求到响 应中断需要3-8个机器周期,定时中断子程序中的数据入栈和重装定时/计数器的初值还需要占用数个机器周期,还有从中断入口转到中断子程序也要占用一定的机器周期。 工作指示灯LED,送出低电平时,LED点亮,高电平时则使第6页
LED熄灭。即 程序执行中有情况产生时,LED闪动一下。 用于状态区分,如状态1闪动一下,状态2闪动两下。 程序执行中遇到特殊错误时,持续闪动。 ⑵LCD显示器
1234567891011121314
SDEC LCD 16*2
HEADER 7X2VCC
D4 P0.4D6 P0.6P0.0 RSP0.1 ENP0.5 D5P0.7 D7
VOR/W
图4 LCD芯片接线图 本次设计使用的倒数计时LCD控制,使用的是16字*2行设计。图4中为4位控制电路,以8051 P0的6调输出控制线来实现控制,P0还有提升电阻以增强其驱动能力,控制信号如下:R/W=0,LCD执行写入的动作,RS寄存器选择控制线。EN启用控制线。VO亮度调整控制引脚。D0~D7双向的数据总线。必须在有亮度照明的地方,才能看见时间,若使用LCD,选择有背光显示的模块,则在夜晚或黑暗的场合也可以使用,有背光显示的LCD模块在引脚上,与无背光显示的模块兼容,指示价格较贵,一般显示的背光颜色为黄光,与手机的背光颜色相似。 ⑶按键控制 按键控制室控制程序执行时数据的输入或是特殊功能的设置及操作,使用8051端口2的4条输入口,由程序来控制,平时输入端为高电平,当有按键按下则相对位会呈现低电平,进过轮流扫描判断输入端是否为低电平,便可知道按下的是哪一个按钮。 ⑷压电喇叭
C945BUZZERR310kΩ
R4100Ω
VCCVCCECB
底视图 图5 压电喇叭接线图