单片机电子琴设计报告.doc
《单片机电子琴设计报告.doc》由会员分享,可在线阅读,更多相关《单片机电子琴设计报告.doc(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 单 片 机课 程 设 计 课程设计名称 :电子琴 专 业 班 级 : 学 生 姓 名 :胡中光 学 号 : 指 导 教 师 :张磊 课程设计时间 :2015/1/5 目录第1章 概述 -3第2章 课程设计任务及要求 -4 2.1 设计任务 -4 2.2 设计要求 -4第3章 系统设计-5 3.1设计方案 -5 3.2 系统设计 -53.2.2 系统流程图 -5 3.2.2 系统原理图 - -73.3 文件程序代码-7 第4章 心得体会-30 概述 以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器.本文主要对使用单片机设计简易电子琴进行了分析,并
2、介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。本系统是简易电子琴的设计,按下键盘矩阵中的按键会使数码管显示当前按键,扬声器播放器对应的音符。第2章 课程设计任务及要求2.1 设计任务 1、任务设计一简易电子琴,要求能够发出1,2,3,4,5,6,7等7个音符,具有一般演奏功能。2.2 设计要求1)具有一般演奏功能,利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一个音调的声音2)具有自动播放已存曲目功能3)显示当前正在播放的歌曲的名称和歌词4
3、)显示北京时间第3章 系统设计3.1设计方案该电路由时钟模块,液晶模块,键盘扫描模块组成。时钟模块:由时钟模块1307实现,能够正确显示北京时间,以及扩展显示星期等等。液晶模块:将时钟模块的信息正确的显示到液晶显示屏上,使用1602的液晶。键盘扫描模块:对十六个按键进行逐次扫描,扫描到前八个按键时,蜂鸣器依次发出1,2,3,4,5,6,7,8的音调声。其余按键,可以跳转到不同的曲目以及液晶模块显示,保留几个按键做以后的扩展用。3.2 系统设计 3.2.1 系统流程图分析各项设计要求后,可绘制如下程序流程图3.2.2 系统原理图3.3 文件程序代码(1). 液晶模块头文件sbit LCD_RS=
4、 P36;sbit LCD_RW= P35;sbit LCD_EN = P33;sfr LCDData=0x80;void LCDWrite(bit cd,unsigned char input);void LCDWait(unsigned char CiShu);void LCDDelay();void LCDInitialize();void LCDPrintString(unsigned char x,unsigned char y,unsigned char *string);void LCDPrintNumber(unsigned char x,unsigned char y,uns
5、igned char bits,unsigned int number);unsigned char ReadState();void LCDInitialize()LCDDelay();LCDWrite(0,0x38);LCDDelay();LCDWrite(0,0x38);LCDDelay();LCDWrite(0,0x38);LCDDelay();LCDWrite(0,0x38);LCDDelay();LCDWrite(0,0x08);LCDDelay();LCDWrite(0,0x01);LCDDelay();LCDWrite(0,0x06);LCDDelay();LCDWrite(0
6、,0x0c);void LCDWrite(bit cd,unsigned char DATA)LCDWait(20);LCD_RS=cd;LCD_RW=0;LCD_EN=0;LCDData=DATA;LCD_EN=1;LCD_EN=0;void LCDPrintString(unsigned char x,unsigned char y,unsigned char *string)unsigned char address;address=x+(1-y)*0x40+0x80;LCDWrite(0,address);while(*string!=0)LCDWrite(1,*string);str
7、ing+;void LCDPrintNumber(unsigned char x,unsigned char y,unsigned char WeiShu,unsigned int number)unsigned char address;unsigned char j,temp5;address=x+(1-y)*0x40+0x80;LCDWrite(0,address);/if(number0)temp0=(number%)/10000+48;temp1=(number%10000)/1000+48;temp2=(number%1000)/100+48;temp3=(number%100)/
8、10+48;temp4=number%10+48;for(j=5-WeiShu;j5;j+)LCDWrite(1,tempj);void LCDWait(unsigned char CiShu)unsigned char i;for(i=0;iCiShu;i+)if(ReadState()&0x80)continue;else break; unsigned char ReadState()unsigned char temp;P0=0xff;LCD_EN=0;LCD_RS=0;LCD_RW=1;LCD_EN=1;temp=LCDData;LCD_EN=0;return temp; void
9、LCDDelay()unsigned int a;for(a=0;a1000;a+); (2).时钟芯片模块头文件void iicdelay(unsigned int times);void iicstart() MDE=1; MDO=1; iicdelay(2); MCO=1; iicdelay(2); MDO=0; iicdelay(2);void iicstop() MDE=1; MDO=0; iicdelay(2); MCO=1; iicdelay(2); MDO=1;void iicack() MDE=1; MCO=0; MDO=0; iicdelay(2); MCO=1; iicd
10、elay(2); MCO=0; iicdelay(1); MDO=1;void iicnack() MDE=1; /MCO=0; MDO=1; iicdelay(2); MCO=1; iicdelay(2); MCO=0; bit iicreadack() bit ack; MCO = 0; iicdelay(2); MDE=1; MDO=1; MCO=1; iicdelay(2); MDE=0; ack=MDI; MCO=0; return ack; void iicwriteda(unsigned char da) unsigned char i; MDE=1; for(i=0;i8;i+
11、) MCO=0; iicdelay(0); if(dai)&0x80) MDO=1; else MDO=0; iicdelay(2); MCO=1; iicdelay(3); MCO=0;unsigned char iicreadda() unsigned char da; int i; da=0; MDE=1; MDO=1; MDE=0; for(i=0;i8;i+) MCO=0; iicdelay(3); MCO=1; iicdelay(1); if(MDI=1) da=da1;da+; else da=da1; MCO=0; return da;void iicdelay(unsigne
12、d int t) unsigned int i,j; for(i=0;i0;j-);void ReadTime(unsigned char TIME7) bit EATemp; unsigned char temp; EATemp=EA;iicstart(); iicwriteda(0xd0); iicreadack(); iicwriteda(0x00); iicreadack(); iicstop(); iicdelay(1); iicstart(); iicwriteda(0xd1); iicreadack(); TIME0=iicreadda(); iicack(); TIME1=ii
13、creadda(); iicack(); TIME2=iicreadda(); iicack(); TIME3=iicreadda(); iicack(); TIME4=iicreadda(); iicack(); TIME5=iicreadda(); iicack(); TIME6=iicreadda(); iicnack(); iicstop(); iicdelay(1); TIME0=(TIME0&0x7f)4)*10+(TIME0&0x0f); /second TIME1=(TIME1&0x7f)4)*10+(TIME1&0x0f); /minute if(TIME2&0x40) if
14、(TIME2&0x20)temp=0x80;else temp=0x40; TIME2=(TIME2&0x1f)4)*10+(TIME2&0x0f); /hour TIME2|=temp; else TIME2=(TIME2&0x3f)4)*10+(TIME2&0x0f); TIME3=TIME3&0x07; /week TIME4=(TIME4&0x3f)4)*10+(TIME4&0x0f); /date TIME5=(TIME5&0x1f)4)*10+(TIME5&0x0f); /month TIME6=(TIME64)*10+(TIME6&0x0f); /year EA=EATemp;v
15、oid SetTime(unsigned char TIME7) bit EATemp; unsigned char temp=0; unsigned char TimeTemp7; EATemp=EA; for(temp=0;temp7;temp+)TimeTemptemp=TIMEtemp; temp=0; TimeTemp6=(TimeTemp6/10)4)+(TimeTemp6%10); TimeTemp5=(TimeTemp5/10)4)+(TimeTemp5%10); TimeTemp4=(TimeTemp4/10)4)+(TimeTemp4%10); TimeTemp3=(Tim
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子琴 设计 报告
限制150内