单片机课程设计报告按键控制定时器选播多段音乐_第1页
单片机课程设计报告按键控制定时器选播多段音乐_第2页
单片机课程设计报告按键控制定时器选播多段音乐_第3页
单片机课程设计报告按键控制定时器选播多段音乐_第4页
单片机课程设计报告按键控制定时器选播多段音乐_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计报告 按键控制定时器选播多段音乐【摘要】 本课程设计是按键控制定时器选择多段音乐,以at89s52为系统的操作核心,以一个数码管显示播放音乐的序号,通过按键来选择音乐(本课程设计中含3首音乐)。硬件设计方案1. 单片机及晶振模块该设计选用的是atmel公司生产的at89s52型单片机,由石英晶体振荡器产生单片机工作时所需的时钟信号,振荡器采用的是12m的晶振,使其机器周期为1us,方便发音程序的计算和编译。at89s52是一种低功耗、高性能cmos8位微控制器,具有8k 在系统可编程flash 存储器。使用atmel 公司高密度非易失性存储器技术制造,与工业80c51 产品指令和

2、引脚完全兼容。片上flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位cpu 和在系统可编程flash,使得at89s52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。at89s52具有以下标准功能: 8k字节flash,256字节ram,32 位i/o 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,at89s52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被

3、保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。at89s52的引脚分布: 2.数码管显示模块该部分只用了一个数码管,用来显示播放的音乐序列,数码管的7个管脚都接了1k的上拉电阻。数码管显示的歌曲序列为0,1,2。3.按键控制模块此模块只用了两个按键,按键k1用来控制歌曲的开始和停止,接p1.0口,按键k2用于选择歌曲,接p3.2口。按下k1,开始播放音乐,随着改变数码管的显示值(0、1、2),将出现对应的音乐。4.扬声器模块 扬声器上接了一个三极管,用于放大声音。程序如下:#include #include #define uchar unsigned char #de

4、fine uint unsigned int sbit k1=p10; /播放和停止键sbit spk=p37; /蜂鸣器uchar song_index=0,tone_index=0; /当前音乐段索引,音符索引/数码管段码表uchar code dsy_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /标准音符频率对应的延时表uchar code hi_list=0,226,229,232,233,236,238,240,241,242,244,245,246,247,248; uchar code lo_list=0,4,1

5、3,10,20,3,8,6,2,23,5,26,1,4,3; /三段音乐的音符uchar code song50= 1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-1, 3,3,3,4,5,5,5,5,6,5,3,5,3,2,1,5,6,53,3,2,1,1,-1, 3,2,1,3,2,1,1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,1,1,-1 ; /三段音乐的节拍uchar code len50= 1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,

6、1,1,1,1,1,1,2,1,2,-1, 1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,-1, 1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,2,2,-1 ; /外部中断0 void ex0_int() interrupt 0 tr0=0; /播放结束或者播放中途切换歌曲时停止播放 song_index=(song_index+1)%3; /跳到下一首的开头tone_index=0; p2=dsy_codesong_index; /数码管显示当前音乐段号 /定时器0中断函数

7、void t0_int() interrupt 1 tl0=lo_listsongsong_indextone_index; th0=hi_listsongsong_indextone_index; spk=spk; /延时void delayms(uint ms) uchar t; while(ms-) for(t=0;t120;t+); /主程序void main() p2=0xc0; spk=0; tmod=0x00; /t0方式0 ie=0x83; it0=1; ip=0x02; while(1) while(k1=1); /未按键等待 while(k1=0); /等待释放 tr0=1

8、; /开始播放 tone_index=0; /从第0个音符开始 /播放过程中按下k1可提前停止播放(k1=0)。 /若切换音乐段会触发外部中断,导致tr0=0,播放也会停止 while(songsong_indextone_index!=-1&k1=1&tr0=1) delayms(300*lensong_indextone_index); /播放延时(节拍) tone_index+; /当前音乐段的下一音符索引 tr0=0; /停止播放 while(k1=0); /若提前停止播放,按键未释放时等待 安装与调试:安装过程:1 检查印刷电路板有无断路、短路,若有,首先处理好。2 焊接顺序:先焊单

9、片机,在焊接各分块电路,先焊平面的,后焊立体的,原则是有利于焊接。要求卧装水平、竖装垂直、相同元件等高。要特别注意元器件的安装方向!3 焊接要点:将元件整形后插入对应位置,电路板平放在台面上,一手握烙铁对焊盘和引脚同时接触预热,另一手持焊锡丝与焊盘处烙铁接触,使锡丝熔化,当锡丝熔化一定量时(多了不好少了不行),立即将锡丝离去,烙铁继续保持少许时间,让焊锡围绕焊盘自由流动,形成一个完全覆盖焊盘的钟形(忌讳球形)焊点。切勿将焊锡先溶化在烙铁上再去焊接,这样锡丝里的助焊剂在未焊接前先挥发了,不利于焊接,而且焊点没有光泽。4 剪脚:元件焊好后,将多余引脚剪掉,剪脚后的焊点应露出引脚0.5-1mm。本课

10、设要求引脚露出2mm,以利于元件重复使用。5 检查各元件是否出现焊接错误情况以及短路、断路情况。6 将5v直流电源接入单片机以及其他各分模块电源端。若发现元器件发热或者有异味,应立即切断电源检查。7.正常电路led灯以及数码管会工作在较为稳定、准确的状态,可据此来进一步检测电路连接是否、存在问题调试过程:接上5v电源后,按下k1键,会有音乐,随着k2的按下,音乐也随之改变。过程较为顺利。心得与体会:在这次课程设计中,我们把学习的单片机理论知识运用到了实践中,加深了我们对单片机理解,同时熟悉了单片机的使用,加强了我们的动手能力。在电路的焊接方面,也学到了一些知识,如怎样使排版好看,不要杂乱无章。焊接时,要注意很多的细节,排线走线都要小心,很容易造成短路。元件清单如下:22pf的电容两个12mhz晶振一个10k电阻一个10uf电容一个2个按键1个共阳数码管8个1k的电阻1个蜂鸣器1个89s52单片机参考文献:1 .谢维成、杨加国 单片机原理与应用及c51程序设计.北京:清华大学出版社2.阎石.数字电子技术基础.北京:高等教育出版社,20063.谭浩强 c程序设计(第三版).北京:清华大学出版社4.童诗白 模拟电子技术基础.北京:清

温馨提示

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

评论

0/150

提交评论