77范文网 - 专业文章范例文档资料分享平台

数字音乐盒设计(2)

来源:网络收集 时间:2019-05-18 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

3.2 程序设计见附件

四、仿真调试及操作说明

1、按下开机键LCD显示如下

2、按下歌曲按钮播放所选歌曲

3、操作说明

一共13个按钮,按下对应的歌曲选择按钮键,会播放对应的歌曲。

第一首,《挥着翅膀的女孩》 ;第二首,《同一首歌》 ;第三首,《两只蝴蝶》 ;第四首,《母亲》 ; 第五首,《世上只有妈妈好》 ;第六首,《浏阳河》 ;第七首,《同桌的你》 ;第八首,《茉莉花》

第九首,《梁祝》 ;第十首,《生日快乐》

6

其中还有,暂停键、继续键、上一曲、下一曲。

五、心得体会

其实,在开始单片机课程设计之前,我是很担心的。因为单片机这一课程还有很多没学懂的地方,很多命令都还不怎么会使用。以前几乎每次试验都要搞好久,很不熟练。当拿到课程设计的任务时,我很开心,因为相对来说,数字音乐盒的设计比较简单,而且我个人也比较喜欢音乐。所以,之后做起来也很有干劲。通过此次课程设计,首先对于硬件电路的工作原理有了进一步的学习,同时有了一个提升;软件方面,在程序的设计,程序的调试方面都有了很大的进步。

在设计过程中我遇到了许多问题。比如说,1、有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。2、编程时要注意,在程序开始时,要写入各定时器中断的入口地址。3、编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。等等。还有很多小细节的问题,通过问同学,或是通过上网查询,我不仅是获得了答案,更多的是获得知识的开心和成就感。当听到一首首歌响起的时候,那种无语伦比的开心,充斥了我整个大脑。

这次的课程设计在一定程度上改变了我学习单片机这门课程的态度,从最初的认为学它没有什么实际意义,到如今爱上单片机学习,并希望能将理论运用到实践,设计出更好更完整的系统。我明白了一个人要 想 做 好一件 事,就 必 须 具 备 自 信 心,耐 心,还 要 有 毅 力,要 胆 大心 细,要 勇 于尝试,要手脑并用,最后才能交出一份令人满意的答卷。对我而言,知识上的收获重要,精神上的丰收更加。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为为我人生旅途上一个非常美好的回忆。

六、参考文献

[1] 谭浩强.C语言程序设计(第二版)[M],北京:清华大学出版社,1991. [2] 曾屹.单片机原理与应用(第一版)[M],中南大学出版社,2009. [3] 美妙的音乐盒--《家庭电子》1994年05期

7

附件:

#include #include #include\

#define SYSTEM_OSC 12000000//11059200 //定义晶振频率12000000HZ #define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔 #define uchar unsigned char #define uint unsigned int

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; uchar code tab1[]=\AN %uchar code tab2[]=%uchar code tab3[]=%uchar code tab4[]=%uchar code tab5[]=\sbit BeepIO=P1^4; //定义输出管脚 sbit key0=P2^0; sbit key1=P2^1; sbit key2=P2^2; sbit key3=P2^3; sbit key4=P2^4; sbit key5=P2^5; sbit key6=P2^6; sbit key7=P2^7;

sbit key8=P3^0; sbit key9=P3^1; sbit key10=P3^4; sbit key11=P3^5; sbit key12=P3^6; sbit key13=P3^7; sbit LCD_EN=P1^7; sbit LCD_RS=P1^5; sbit LCD_RW=P1^6; sbit led=P1^3; uchar count; uint Point; uint *temp;

unsigned char *Sound;

unsigned int code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表 unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 }; //1~7在频率表中的位置

8

unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 }; unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存 unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存

uchar flag; uchar lcdflag;

uchar fen; uchar miao; uchar num;

void write_com(uchar com); void write_data(uchar date); void init();

void delay_ms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

bit lcd_busy()

{ bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP();

result = (bit)(P0&0x80); LCD_EN = 0; return(result); }

void write_com(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;

9

}

void write_data(uchar dat)

{ while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; }

void init() {

LCD_EN=0; LCD_RW=0;

write_com(0x38); write_com(0x0e); write_com(0x06); write_com(0x01); write_com(0x80);

// write_com(0x80+0x10); }

void wr_lcd_1602(unsigned char add,unsigned char dat) { unsigned char ge,shi; shi=dat/10; ge=dat; write_com(0x80+add); write_data(0x30+shi); write_data(0x30+ge); }

//************************************************************************** void Play(unsigned char Signature,unsigned Octachord,unsigned int Speed) //此处是程序的关键 { unsigned int NewFreTab[12]; //新的频率表 unsigned char i,j;

10

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数字音乐盒设计(2)在线全文阅读。

数字音乐盒设计(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/630582.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: