




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书设计题目:遥控MP3的设计学 院:专 业:机械设计制造及其自动化班 级:学 号:姓 名: 指导教师:课 程 设 计 说 明 书目 录1. 课程设计要求12. 系统功能分析与方案确定1红外遥控方案确定1单片机的选择方案确定13. 系统主要硬件电路模块设计33.1液晶屏显示模块33.2蜂鸣器电路模块43.3红外遥控模块43.4单片机CPU最小系统53.5 单片机硬件端口分配54. 程序软件设计与分析64.1系统软件分析及详细技术文件设计64.2系统软件主程序设计64.3外部中断程序设计94.按键检测及处理模块程序设计105. 后续有待完善和提高的工作106结语11参考文献12附录13II课 程 设 计 说 明 书1. 课程设计要求设计一个音乐盒,要求具有以下具体功能:1.可以通过键盘实现音乐的输入;2.通过遥控器对已存的音乐进行播放控制(包括停止、播放、快进、快退、数字选歌);3. 多种模式(如睡眠模式、野外模式等)。2. 系统功能分析与方案确定红外遥控方案确定根据设计要求的功能,结合单片机课程所学知识,分析如下:系统要求能够实现用红外遥控实现音乐盒的停止、播放、快进、快退、数字选歌以及音乐的输入,那就需要用到红外遥控模块,根据任务书的要求,利用单片机设计一个遥控开关电路,可以拟定以下的方案。在不需要多路控制的应用场合,可以使用由常规集成电路组成的单通道红外遥控电路。这种遥控电路不需要使用较贵的专用编译码器,因此成本较低。考虑到本方案电路是简单的单通道遥控器,可直接产生一个控制功能的震荡频率,再通过红外发光二极管发射出去。当红外接收头接收到控制频率时,由一个电路对其进行解调并产生相应的控制功能。红外线发射/接收控制电路采用单片机来实现,电路简单,可控制多个电器,实用性强。且本设计用到的元器件较少,电路相对简单实用。单片机的选择方案确定根据设计要求的功能,结合单片机课程所学知识,做如下分析:单片机的选择 本设计所用的单片机可以用 C31,AT89C51,羚羊单片机等多种单片机来实现。但是 C31 没有内部存储器,本设计需要编写程序,那么就要用外部扩展,比较麻烦。本设计所编写的程序比较简单,功能也比较少,如用羚羊单片机过于麻烦,大材小用,本设计所用到的输入输出端口也不是很多,所以我们决定用 AT89C51单片机来完成本设计,及方便也很实用。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微 处理器,俗称单片机。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与 工业标准的 MCS-51 ? 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁 存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,为很多嵌入 式控制系统提供了一种灵活性高且价廉的方案。系统要求实现通过键盘实现音乐的输入,可以通过AT89c51单片机所带的红外遥控器来实现这功能。遥控板上有3*7个键,满足七个音的输出。采用红外解码的方法,来遥控一块MP3模块。具有播放,暂停,下一曲,上一曲,音量加和音量减的功能。由于MP3模块输出的音频信号比较若,于是需要连接在功放上方可听见MP3音乐。红外接收,采用红外一体化接收头,遥控板随便选取了一个,通过调试获取了各个按键的码值,于是可以写入控制。在整个系统中,采用一个简单的12864来显示播放的情况,利用一块51单片机来做主控制器。该系统还要实现已存音乐的相互切换,因此用遥控器上的两个键来控制两首已存歌曲的播放。用一个键来控制音乐的停止、播放,两个键分别实现音乐的快进、快退。为便于人机交互,播放的音乐需要在液晶显示屏上直观的显示出来,显示的内容包括播放歌曲名称,播放模式,歌曲的播放状态,由于显示的内容比较简单,所以我采用12864液晶显示屏来实现输出显示。作为一个音乐盒,最重要的部分当然是音乐的播放。我采用蜂鸣器频率的变化实现不同的音调的输出。根据上述分析,由硬件功能可以将本系统分解为以下四个模块:1.蜂鸣器发音软硬件模块,采用蜂鸣器及其接口电路;2.液晶显示软硬件模块,采用12864液晶显示屏及其接口电路;3.红外遥控软硬件模块,采用红外线发射/接收控制电路4.系统CPU模块,采用AT89C51最小系统。3. 系统主要硬件电路模块设计根据上述分析确定的设计方案,本系统主要设计和使用了蜂鸣器电路模块、液晶屏显示模块、红外遥控模块。3.1液晶屏显示模块QC12864B中文字库型液晶显示模块可以显示字母、数字、中文字型及图形,具有绘图及文字画面混合显示功能。可显示128(列) 64(行)点阵。可完成图形显示,也可显示84个(1616点阵)中文汉字。提供三种控制接口:8位微处理器接口、4位微处理器接口、串行接口。模块内置2M-位元中文字型ROM (CGROM) 总共提供8192 个中文字型(1616点阵),16K-位元半宽字型ROM (HCGROM)总共提供126个符号字型(168点阵),6416-位元显示RAM (DDRAM),另外绘图显示画面提供一个64256点的绘图区域(GDRAM),可以和文字画面混和显示。提供多功能指令:画面清除(Display clear)、光标归位(Return home)、显示打开/关闭(Display on/off)、光标显示/隐藏(Cursor on/off)、显示字符闪烁(Display character blink)、光标移位(Cursor shift)、显示移位(Display shift)、垂直画面卷动(Vertical line scroll)、反白显示(reverse display)。12864液晶接口如图3.2。 图3.1红外接收电路模块3.2蜂鸣器电路模块 本系统的音乐播放通过蜂鸣器发出不同的音调从而来实现的,蜂鸣器控制电路如图3.1所示。图3.2蜂鸣器接口电路图3.3红外遥控模块红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。红外遥控键值表如图3.3所示,红外接收器接口如图3.4所示。 图3.3红外遥控键值表 图3.4 红外遥控线路图3.4单片机CPU最小系统本系统CPU采用宏晶科技推出的STC89S52RC,它是一款高速、低功率、超强抗干扰的单片机,指定代码完全兼容传统5051单片机,有E2PROM功能,内部集成MAX810专用复位电路,外部晶体20M以下时可以省略外部复位电路,本系统便充分利用该CPU的特点,省去了传统的晶振和复位电路。具有为便于后续端口的扩展和使用,本系统已对全部的I/O端口做了上拉电阻设计,考虑到程序代码总量不超过2K字节,完全可以使用片内ROM空间,故而将EA引脚接高位点。如图3.4所示。图表 3.5单片机最小系统3.5 单片机硬件端口分配 为合理利用单片机的端口资源,并且兼顾程序设计的便利,将系统的输出和输入端口作如表3.1配置。表3.1 单片机端口配置表单片机端口外围接口电路硬件模块P2.0-P2.2,P0.0-P0.7液晶显示集成电路模块P3.6蜂鸣器电路模块P3.2红外遥控模块4. 程序软件设计与分析4.1系统软件分析及详细技术文件设计不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。两个音之间的距离有两个“半音”,就叫“全音”。在钢琴等键盘乐器上,CD、DE、FG、GA、AB两音之间隔着一个黑键,他们之间的距离就是全音;EF、BC两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上号或者b号的叫变化音。叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266 Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍。4.2系统软件主程序设计 系统软件主程序包括初始化、主循环。初始化主要针对红外遥控模块、液晶显示模块等引荐进行初始化。初始化液晶显示模块通过调用”12864Lcd.h”头文件的初始化函数完成。与此同时,还要对系统工作的标志位和全局变量做初始化,部分标志位和变量的设置及其功能将在个软件模块中详细说明;系统设置的全局变量和标志位如表4.1所示。表4.1全局变量和标志位全局变量及标志位属性功能说明IRDIS2;uchar输出红外信号IRCOM4;uchar显示红外信号code dis1 = 模式:;uchar液晶显示第一行code dis2 = 歌曲:; uchar液晶显示第二行code dis3 = 状态:;uchar液晶显示第三行iichar数组序号jjchar时长cuchar停止时序号flaguchar标记位Flag1uchar标记位Flag2uchar标记位countuchar标志位time=100uchar延时时长大小本系统主要完成液晶模块及蜂鸣器的输出动作,以供操作者观察运行状态。主循环完成上述分析中述及的三个方面的工作,即两首歌的点播,相互切换,歌曲的暂停、播放,以及你快退。具体流程图如图4.1所示,该模块程序键附录main()函数。NNNY开始终断初始化jj=0;jjtime;jj+ii=0;ii34;ii+初始化LCDbreakFlag=9Flag=1Flag=8Break;c=ii;flag2=1Delay(aii);beep=!beepFlag=9ii=0;ii34;ii+jj=0;jjtime;jj+breakFlag1=1Break;c=ii;flag2=2Break;c=ii;flag2=1Flag1=2&flag2=2ii=c;ii34;ii+jj=0;jjtime;jj+Flag1=2&flag2=1ii=c;ii34;ii+jj=0;jjtime;jj+Flag=8Delay(aii);beep=!beep结束YYYYYNNYNNNYN图4.1主程序流程图4.3外部中断程序设计具体流程图如图4.2所示,该模块程序见附录IR_IN()函数。Flag1=2;显示“on”count=1Count+计算高电平时长IRCOM2=0x44中断入口j=1;j100;j+Flag=1Flag=1计算高电平时长IR信号出现IRCOM2=0x0c中断入口NNIR信号出现count=2中断结束Delay100us(19);flag=0Flag1=1;显示“off”;count=0IRCOM2=0x0cFlag=1Flag=1j=1;j100;j+beep=!beepDelay100us(19);flag=0NYNYYNNYNY图4.2中断程序流程图系统使用外部中断子程序来接受红外线发射的信号。扫键过程:首先判断控制键是否按下,若有控制键按下则进行逐行扫描,按照P口值查找键号。最后按照键号转至相应的发射程序。红外信号发射过程:首先装入发射脉冲个数(发射时为3ms脉冲,停发时为1ms脉冲),此时若发射脉冲个数为1则返回主程序,若不为1则发1ms脉冲,然后停发1ms脉冲,这样便结束整个发射过程。在实践中,采用红外线遥控方式时,由于受遥控距离,角度等影响,使用效果不是很好,如采用调频或调幅发射接收码,可提高遥控距离,并且没有角度影响。遥控接收部分的主程序及初始化及延时过程如上:首先初始化,然后按照显示亮度数据设定调光脉冲延时值,看P3.0口的脉冲是否为0,若不为0则调入延时程序,此时P2.7口输出调光脉冲然后返回;若为0则直接返回。4.按键检测及处理模块程序设计对照键位码该程序需要对以下14个按键进行设计:按下0x0c蜂鸣器发出声音“Do”; 按下0x18蜂鸣器发出声音“Ru”; 按下0x5e蜂鸣器发出声音“mi”; 按下0x08蜂鸣器发出声音“fa”; 按下0x1c蜂鸣器发出声音“so”; 按下0x52蜂鸣器发出声音“la”; 按下0x4a蜂鸣器发出声音“si”; 按下0x44音乐进行停止、播放切换,在液晶屏上状态显示分别显示“on”、“off”; 按下0x40音乐播放速度变快,液晶屏上状态显示“fast”; 按下0x43音乐播放速度变慢,液晶屏上状态显示“last”; 按下0x15液晶屏上模式显示“sleep”; 按下0x09液晶屏上模式显示“out”; 按下0x19蜂鸣器播放歌曲1,并在液晶屏上歌曲显示“1”; 按下0x0d蜂鸣器播放歌曲2,并在液晶屏上歌曲显示“2”。5. 后续有待完善和提高的工作本系统设计了一套音乐播放系统,完成了本次课程设计给出的基本要求,随着设计的逐步推进,我对系统的功能也有了更加深入的理解,我认为可以在以下几个方面更进一步提高和完善:.音乐输入几首歌改为通过USB将电脑上的歌曲直接在音乐盒中播放,使得该音乐盒更贴近使用者的要求;.外接一个播放音乐装置,使得单片机能放出歌声来。6结语经过三个礼拜的努力, 我在金老师的耐心帮助和自己的努力下终于完成了此次设计,并按设计要求实现了音乐盒的各项功能。通过这次设计使我们从中学到到了很多课本上学不到的知识,了解了红外遥控器的现状和发展趋势,并学会了用单片机开发产品的完整的过程,明白了设计的概念。通过自己亲自去动手和调试我明白的实践的重要性,明白了理论结合实践的含义,同时也大大的提高了自 己的动手能力和团队合作能力,这在我以后的工作中都是非常有用的。 在这次设计中,金老师不厌其烦的给我讲解问题和修正错误,在此表示衷心 的感谢!参考文献1 刘祖京. 实用接口技术M. 北京:北京工业大学出版社,1999.2 王彤. C语言在测量与控制中的应用M. 北京:机械工业出版社,2009.3 闫玉德,俞虹. MCS-51单片机原理与应用(C语言版)M. 北京:机械工业出版社,2002.4 谢维成,杨加国. 单片机原理及应用及C51程序设计. 北京:清华大学出版社,2009.附录/*系统软件源程序*/#include #include #define uchar unsigned char #define uint unsigned int /*TS12864A-3 端口定义*/ #define LCD_data P0 /数据口 sbit LCD_RS = P20; /寄存器选择输入 sbit LCD_RW = P21; /液晶读/写控制 sbit LCD_EN = P22; /液晶使能控制 sbit LCD_PSB = P23; /串/并方式控制 sbit LCD_RST = P25; /液晶复位端口 void delay100us(unsigned int us);sbit IRIN = P32; /红外遥控 sbit beep= P36; /蜂鸣器 /sbit RELAY = P13; /继电器 uchar c,flag,flag1,flag2,count,time=100;uchar code dis1 = 模式:; uchar code dis2 = 歌曲:; uchar code dis3 = 状态:; unsigned char code a =12,13,15,13,11,12,13,12,15,13,12,13,15,17,19,12,13,15,17,17,15,13,13,12,15,17,19,13,15,17,19,12,19,13;unsigned char code b =8,8,8,12,4,8,8,8,8,12,4,8,8,8,8,24,16,4,4,8,8,8,16,4,4,8,8,8,4,4,8,8,24 ; unsigned char ii,jj;#define delayNOP(); _nop_();_nop_();_nop_();_nop_(); uchar IRDIS2; uchar IRCOM4; void delay0(uchar x); /x*0.14MS void lcd_pos(uchar X,uchar Y); /确定显示位置 /*/ /* */ /* 延时函数 */ /* */ /*/ void delay(int ms) while(ms-) uchar i; for(i=0;i250;i+) _nop_(); _nop_(); _nop_(); _nop_(); /*/ /* */ /*检查LCD忙状态 */ /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */ /* */ /*/ bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /*/ /* */ /*写指令数据到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ /* */ /*/ void lcd_wcmd(uchar cmd) while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/ /* */ /*写显示数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */ /* */ /*/ void lcd_wdat(uchar dat) while(lcd_busy(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/ /* */ /* LCD初始化设定 */ /* */ /*/ void lcd_init() LCD_RST = 0; /液晶复位 delay(30); LCD_RST = 1; delay(5); LCD_PSB = 1; /并口方式 lcd_wcmd(0x34); /扩充指令操作 delay(5); lcd_wcmd(0x30); /基本指令操作 delay(5); lcd_wcmd(0x0C); /显示开,关光标 delay(5); lcd_wcmd(0x01); /清除LCD的显示内容 delay(5); /*/ /* */ /* 主程序 */ /* */ /*/ main() uchar i; IE = 0x81; /允许总中断中断,使能 INT0 外部中断 TCON = 0x01; /触发方式为脉冲负边沿触发 IRIN=1; /I/O口初始化 / RELAY=1; delay(10); /延时 lcd_init(); /初始化LCD lcd_pos(0,0); /设置显示位置为第一行的第1个字符 i = 0; while(dis1i != 0 ) /显示字符 lcd_wdat(dis1i); i+; lcd_pos(1,0); /设置显示位置为第二行的第1个字符 i = 0; while(dis2i != 0) lcd_wdat(dis2i); i+; lcd_pos(2,0); i = 0; /设置显示位置为第三行的第1个字符 while(dis3i != 0) lcd_wdat(dis3i); i+; while(1) if(flag=8) /标记1 for(ii=0;ii34;ii+) for(jj=0;jjtime;jj+) if(flag=9) break; if(flag1=1) break;c=ii; flag2=1; delay0(aii); delay0(10); beep=!beep; if(flag=9) /标记2 for(ii=0;ii33;ii+) for(jj=0;jjtime;jj+) if(flag=8) break;if(flag1=1) break;c=ii;flag2=2; delay0(bii); delay0(10); beep=!beep; if(flag1=2&flag2=2) for(ii=c;ii34;ii+) for(jj=0;jjtime;jj+) delay0(aii); delay0(10); beep=!beep; if(flag1=2&flag2=1) for(ii=c;ii33;ii+) for(jj=0;jjtime;jj+) delay0(bii); delay0(10); beep=!beep; /*/ /* */ /* INT0外部中断子程序 */ /* */ /*/ void IR_IN() interrupt 0 using 0 uchar j,k,N=0; EX0 = 0; delay0(15); if (IRIN=1) EX0 =1; return; /确认IR信号出现 while (!IRIN) /等IR变为高电平,跳过9ms的前导低电平信号。 delay0(1); for (j=0;j4;j+) /收集四组数据 for (k=0;k=30) EX0=1; return; /0.14ms计数过长自动离开。 /高电平计数完毕 IRCOMj=IRCOMj 1; /数据最高位补“0” if (N=8) IRCOMj = IRCOMj | 0x80; /数据最高位补“1” N=0; /end for k /end for j if (IRCOM2!=IRCOM3) EX0=1; return; if(IRCOM2=0x15) /睡眠模式 lcd_pos(0,3); lcd_wdat(s); lcd_pos(0,4); lcd_wdat(l); lcd_pos(0,5); lcd_wdat(e); lcd_pos(0,6); lcd_wdat(e); lcd_pos(0,7); lcd_wdat(p); else if(IRCOM2=0x09) /户外模式 lcd_pos(0,3); lcd_wdat(o); lcd_pos(0,4); lcd_wdat(u); lcd_pos(0,5); lcd_wdat(t); lcd_pos(0,6); lcd_wdat( ); lcd_pos(0,7); lcd_wdat( ); if(IRCOM2=0x44) /停止/播放 count+;if(count=1) flag1=2; lcd_pos(2,3); /on lcd_wdat(o); lcd_pos(2,4); lcd_wdat(n); lcd_pos(2,5); lcd_wdat( );lcd_pos(2,6); lcd_wdat( );if(count=2) flag1=1;/aa=2; lcd_pos(2,3); /off lcd_wdat(o); lcd_pos(2,4); lcd_wdat(f);lcd_pos(2,5); lcd_wdat(f);lcd_pos(2,6); lcd_wdat( );count=0; if(IRCOM2=0x40) /快进 time=150; lcd_pos(2,3); lcd_wdat(f); lcd_pos(2,4); lcd_wdat(a);lcd_pos(2,5); lcd_wdat(s);lcd_pos(2,6); lcd_wdat(t); if(IRCOM2=0x43) /快退 time=50; lcd_pos(2,3); lcd_wdat(l); lcd_pos(2,4); lcd_wdat(a);lcd_pos(2,5); lcd_wdat(s);lcd_pos(2,6); lcd_wdat(t); else if(IRCOM2=0x19) /第一首 flag=8; lcd_pos(1,4); lcd_wdat(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 杀虫灭害专项施工方案范例
- 高中体育专项体能训练计划方案
- 建筑结构设计常见问题与解决方案
- 电脑绘画兴趣班教学方案
- 企业形象大使选拔方案与实施细则
- 餐饮招商在线订餐系统规程
- 车辆保险索赔细则
- 电机绝缘检测规程设施
- 烧伤科急救培训考核方案
- 数控机床日常维护制度
- 2024乡村医生考试题库(含答案)
- (详尽多条款)地形图保密协议模板
- 无损检测VT-PT作业指导书SOP
- 煤矿架空乘人装置安装检验报告
- 王慧文清华大学《互联网产品管理课》
- GB/T 6725-2017冷弯型钢通用技术要求
- GB/T 26006-2010船用铝合金挤压管、棒、型材
- GB/T 19867.6-2016激光-电弧复合焊接工艺规程
- 建筑工程防火墙脚手架搭设施工方案
- 无生上课课堂教学评价标准
- 植物生理学第十三章植物的逆境生理课件
评论
0/150
提交评论