首页

毕业论文

首页 毕业论文 问题

基于gui电子琴设计毕业论文

发布时间:

基于gui电子琴设计毕业论文

用AT89C51单片机做比较简单配上按键键盘,三极管驱动一个喇叭就能实现,下面是我调试过的单片机程序供参考;DIANnbsp;ZInbsp;QINnbsp;电子琴nbsp;SPKnbsp;EQUnbsp;;FKEYnbsp;EQUnbsp;;DInbsp;EQUnbsp;71Hnbsp;GAOnbsp;EQUnbsp;72Hnbsp;KEY_NOnbsp;EQUnbsp;73Hnbsp;NOnbsp;EQUnbsp;74Hnbsp;TCnbsp;EQUnbsp;75Hnbsp;OUTBITnbsp;EQUnbsp;08002Hnbsp;OUTSEGnbsp;EQUnbsp;08004Hnbsp;INnbsp;EQUnbsp;08001Hnbsp;ORGnbsp;0000Hnbsp;JMPnbsp;BEGINnbsp;ORGnbsp;0BHnbsp;JMPnbsp;TO_INTnbsp;BEGIN:nbsp;MOVnbsp;TMOD,#00000000Bnbsp;MOVnbsp;IEnbsp;,#10000010Bnbsp;MOVnbsp;R4,#1nbsp;MOVnbsp;R3,#1nbsp;CALLnbsp;PLAYnbsp;MOVnbsp;R4,#2nbsp;MOVnbsp;R3,#1nbsp;CALLnbsp;PLAYnbsp;JMPnbsp;RUNnbsp;JMPnbsp;$nbsp;PLAY:nbsp;CALLnbsp;LOAD_VALUEnbsp;CALLnbsp;SOUND_ONnbsp;PL1:nbsp;MOVnbsp;R5,#30nbsp;CALLnbsp;DELAYnbsp;DJNZnbsp;R3,PL1nbsp;CALLnbsp;SOUND_OFFnbsp;MOVnbsp;R5,#3nbsp;CALLnbsp;DELAYnbsp;RETnbsp;PLAY_SONG1:nbsp;MOVnbsp;TC,#0nbsp;PA0:nbsp;MOVnbsp;DPTR,#SONG1nbsp;MOVnbsp;A,TCnbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;R4,Anbsp;CJNEnbsp;A,#0FFH,PA1nbsp;RETnbsp;PA1:nbsp;MOVnbsp;DPTR,#LENnbsp;MOVnbsp;A,TCnbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;R3,Anbsp;CALLnbsp;PLAYnbsp;INCnbsp;TCnbsp;JMPnbsp;PA0nbsp;RETnbsp;PLAY_SONG2:nbsp;MOVnbsp;TC,#0nbsp;PB0:nbsp;MOVnbsp;DPTR,#SONG2nbsp;MOVnbsp;A,TCnbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;R4,Anbsp;CJNEnbsp;A,#0FFH,PB1nbsp;RETnbsp;PB1:nbsp;MOVnbsp;DPTR,#LENnbsp;MOVnbsp;A,TCnbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;R3,Anbsp;CALLnbsp;PLAYnbsp;INCnbsp;TCnbsp;JMPnbsp;PB0nbsp;RETnbsp;SOUND_ON:nbsp;SETBnbsp;TR0nbsp;RETnbsp;SOUND_OFF:nbsp;CLRnbsp;TR0nbsp;RETnbsp;LOAD_VALUE:nbsp;MOVnbsp;DPTR,#HI_LISTnbsp;MOVnbsp;A,R4nbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;GAO,Anbsp;MOVnbsp;DPTR,#LO_LISTnbsp;MOVnbsp;A,R4nbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;DI,Anbsp;RETnbsp;TO_INT:nbsp;MOVnbsp;TL0,DInbsp;MOVnbsp;TH0,GAOnbsp;CPLnbsp;SPKnbsp;RETInbsp;HI_LIST:nbsp;DBnbsp;0,226,229,232,233,236,238,240nbsp;LO_LIST:nbsp;DBnbsp;0,4,13,10,20,3,8,6nbsp;SONG1:nbsp;DBnbsp;1,2,3,4,5,6,7,0FFHnbsp;SONG2:nbsp;DBnbsp;7,6,5,4,3,2,1,0FFHnbsp;LEN:nbsp;DBnbsp;2,2,2,2,2,2,2,0FFHnbsp;DELAY:nbsp;MOVnbsp;R6,#50nbsp;D1:MOVnbsp;R7,#50nbsp;DJNZnbsp;R7,$nbsp;DJNZnbsp;R6,D1nbsp;DJNZnbsp;R5,DELAYnbsp;RETnbsp;TABLE_DIG:nbsp;DBnbsp;16H,15H,14H,0FFHnbsp;DBnbsp;13H,12H,11H,10Hnbsp;DBnbsp;0DH,0CH,09H,0AHnbsp;DBnbsp;0EH,03H,06H,0FHnbsp;DBnbsp;08H,02H,05H,0BHnbsp;DBnbsp;00H,01H,04H,07Hnbsp;SCAN:nbsp;MOVnbsp;DPTRnbsp;,#OUTBITnbsp;MOVnbsp;A,#0nbsp;MOVXnbsp;@DPTR,Anbsp;MOVnbsp;DPTR,#INnbsp;MOVXnbsp;A,@DPTRnbsp;CPLnbsp;Anbsp;ANLnbsp;A,#0FHnbsp;RETnbsp;GET_KEY:nbsp;MOVnbsp;DPTR,#OUTBITnbsp;MOVnbsp;P2,DPHnbsp;MOVnbsp;R0,#LOW(IN)nbsp;MOVnbsp;R1,#00100000Bnbsp;MOVnbsp;R2,#6nbsp;KLOOP:nbsp;MOVnbsp;A,R1nbsp;CPLnbsp;Anbsp;MOVXnbsp;@DPTR,Anbsp;CPLnbsp;Anbsp;RRnbsp;Anbsp;MOVnbsp;R1,A

22. 电子琴 1. 实验任务 (1. 由4X4组成16个按钮矩阵,设计成16个音。 (2. 可随意弹奏想要表达的音乐。 2. 电路原理图 图 3. 系统板硬件连线 (1. 把“单片机系统”区域中的端口用导线连接到“音频放大模块”区域中的SPK IN端口上; (2. 把“单片机系统“区域中的-端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上; 4. 相关程序内容 (1. 4X4行列式键盘识别; (2. 音乐产生的方法; 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示 音符 频率(HZ) 简谱码(T值) 音符 频率(HZ) 简谱码(T值)低1 DO 262 63628 # 4 FA# 740 64860#1 DO# 277 63731 中 5 SO 784 64898低2 RE 294 63835 # 5 SO# 831 64934#2 RE# 311 63928 中 6 LA 880 64968低 3 M 330 64021 # 6 932 64994低 4 FA 349 64103 中 7 SI 988 65030# 4 FA# 370 64185 高 1 DO 1046 65058低 5 SO 392 64260 # 1 DO# 1109 65085# 5 SO# 415 64331 高 2 RE 1175 65110低 6 LA 440 64400 # 2 RE# 1245 65134# 6 466 64463 高 3 M 1318 65157低 7 SI 494 64524 高 4 FA 1397 65178中 1 DO 523 64580 # 4 FA# 1480 65198# 1 DO# 554 64633 高 5 SO 1568 65217中 2 RE 587 64684 # 5 SO# 1661 65235# 2 RE# 622 64732 高 6 LA 1760 65252中 3 M 659 64777 # 6 1865 65268中 4 FA 698 64820 高 7 SI 1967 65283下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据 低音0-19之间,中音在20-39之间,高音在40-59之间 TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0 DW 0,63731,63928,0,64185,64331,64463,0,0,0 DW 0,64580,64684,64777,64820,64898,64968,65030,0,0 DW 0,64633,64732,0,64860,64934,64994,0,0,0 DW 0,65058,65110,65157,65178,65217,65252,65283,0,0 DW 0,65085,65134,0,65198,65235,65268,0,0,0 DW 0 2、音乐的音拍,一个节拍为单位(C调) 曲调值 DELAY 曲调值 DELAY调4/4 125ms 调4/4 62ms调3/4 187ms 调3/4 94ms调2/4 250ms 调2/4 125ms对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。 下面就用AT89S51单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。 在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。 5. 程序框图 图 6. 汇编源程序KEYBUF EQU 30HSTH0 EQU 31HSTL0 EQU 32HTEMP EQU 33HORG 00HLJMP STARTORG 0BHLJMP INT_T0 ;T0中断入口START: MOV TMOD,#01H ;T0工作方式1SETB ET0 SETB EAWAIT:MOV P3,#0FFH ;输入口置1准备工作CLR A,P3 ;读键盘ANL A,#0FH ;保持低四位XRL A,#0FH ;JZ NOKEY1LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY1MOV A,P3ANL A,#0FHCJNE A,#0EH,NK1MOV KEYBUF,#0LJMP DK1NK1: CJNE A,#0DH,NK2MOV KEYBUF,#1LJMP DK1NK2: CJNE A,#0BH,NK3MOV KEYBUF,#2LJMP DK1NK3: CJNE A,#07H,NK4MOV KEYBUF,#3LJMP DK1NK4: NOPDK1:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,@A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,@A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK1A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK1ACLR TR0NOKEY1:MOV P3,#0FFHCLR A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY2LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY2MOV A,P3ANL A,#0FHCJNE A,#0EH,NK5MOV KEYBUF,#4LJMP DK2NK5: CJNE A,#0DH,NK6MOV KEYBUF,#5LJMP DK2NK6: CJNE A,#0BH,NK7MOV KEYBUF,#6LJMP DK2NK7: CJNE A,#07H,NK8MOV KEYBUF,#7LJMP DK2NK8: NOPDK2:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,@A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,@A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK2A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK2ACLR TR0NOKEY2:MOV P3,#0FFHCLR A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY3LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY3MOV A,P3ANL A,#0FHCJNE A,#0EH,NK9MOV KEYBUF,#8LJMP DK3NK9: CJNE A,#0DH,NK10MOV KEYBUF,#9LJMP DK3NK10: CJNE A,#0BH,NK11MOV KEYBUF,#10LJMP DK3NK11: CJNE A,#07H,NK12MOV KEYBUF,#11LJMP DK3NK12: NOPDK3:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,@A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,@A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK3A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK3ACLR TR0NOKEY3:MOV P3,#0FFHCLR A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY4LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY4MOV A,P3ANL A,#0FHCJNE A,#0EH,NK13MOV KEYBUF,#12LJMP DK4NK13: CJNE A,#0DH,NK14MOV KEYBUF,#13LJMP DK4NK14: CJNE A,#0BH,NK15MOV KEYBUF,#14LJMP DK4NK15: CJNE A,#07H,NK16MOV KEYBUF,#15LJMP DK4NK16: NOPDK4:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,@A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,@A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK4A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK4ACLR TR0NOKEY4:LJMP WAITDELY10MS:MOV R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETINT_T0:MOV TH0,STH0MOV TL0,STL0CPL : DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HTABLE1: DW 64021,64103,64260,64400DW 64524,64580,64684,64777DW 64820,64898,64968,65030DW 65058,65110,65157,65178END7. C语言源程序#include <>unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char temp;unsigned char key;unsigned char i,j;unsigned char STH0;unsigned char STL0;unsigned int code tab[]={64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178};void main(void){TMOD=0x01;ET0=1;EA=1;while(1){P3=0xff;P3_4=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f){temp=P3;temp=temp & 0x0f;switch(temp){case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;}temp=P3;P1_0=~P1_0;P0=table[key];STH0=tab[key]/256;STL0=tab[key]%256;TR0=1;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}}P3=0xff;P3_5=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f){temp=P3;temp=temp & 0x0f;switch(temp){case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}temp=P3;P1_0=~P1_0;P0=table[key];STH0=tab[key]/256;STL0=tab[key]%256;TR0=1;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}}P3=0xff;P3_6=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f){temp=P3;temp=temp & 0x0f;switch(temp){case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;}temp=P3;P1_0=~P1_0;P0=table[key];STH0=tab[key]/256;STL0=tab[key]%256;TR0=1;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}}P3=0xff;P3_7=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f){temp=P3;temp=temp & 0x0f;switch(temp){case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;}temp=P3;P1_0=~P1_0;P0=table[key];STH0=tab[key]/256;STL0=tab[key]%256;TR0=1;temp=temp & 0x0f;while(temp!=0x0f){temp=P3;temp=temp & 0x0f;}TR0=0;}}}}void t0(void) interrupt 1 using 0{TH0=STH0;TL0=STL0;P1_0=~P1_0;}

简单的说就是按键触发信号发给处理器,再由处理器调用音色库音色通过功放电路输出或者通过数码接口进行数字输出。控制面板上的按钮来选择处理器对音色、音量、输出方式、伴奏的控制。 玩具和简单的老式电子琴就简单得多,按键做为开关接通内部发声单元,进行固定频率的发声。或者由初级的单片机处理发声频率。 电子琴的工作原理一般有FM(调频)模式和PCM(采样)模式。 现在常用的电子琴的常见品牌有YANMAHA 和CASIO,海南的乐手比较喜欢使用YAMAHA的产品,因为它的设置比较合理,现场使用非常 方便;音色比较真实,使用效果更佳。 单独用一具电子琴,就可以现场作出类似一支完整乐队的效果。所以现在一些演出场合中,比较流行一具电子琴(有些会再加上一具合成器)的单人编制(简称单编),或一具电子琴和一把吉他的双人编制(简称双编)。搞单编需要乐手具备较高的电子琴操作和演奏水平。本版中的“啊方十指琴魔”就是这样的单编高手之一。搞单编或双编对电子琴的要求也较高,在YAMAHA的电子琴系列中,一般要PSR 410以上级别的产品才能达到乐手们常说的“能用”的水平。 电振荡乐 器 以电振荡作为激励声源的乐器,称为电振荡乐器 。 目前人们能见到的各种电子琴、电子合成器、电子鼓机等都属于电振荡 乐器。 说明:当演奏者按下键盘中的某一琴键时,琴键下面的电路就将信号传 送给振荡器 1 和振荡器2,产生相应的音高振荡频率;手指触键的力度信号 也会同时传给包络发生器 1 和包络发生器2,并通知滤波器和放大器产生相 应的音量及音色的变化;最后,声音信号通过放大器输出。图中低频振荡器 的作用,是能够根据演奏者的需要,对所有其它部分——振荡器、滤波器和 放大器——进行调制,从而使合成器能够发出颤音的效果。 目前,国外生产的电子合成器以及较高档的电子琴都有MIDI 接口,相互 间可串接使用。目前较流行的使用方法是用一台计算机通过MIDI 接口来控制 所有相关的电子乐器和音响效果发生器,从而能够方便地产生丰富多彩的音 乐音响效果。

如果专业方向是软件设计,可以写;否则一般都是用一章大概介绍一下,详细代码都会写在附录里。

电子琴设计毕业论文

楼主我这里有电子琴的单片机程序,做毕业设计那个我觉得还是自己做得好,因为你没懂的话论文答辩是过不了的。简易电子琴#include<> //包含51单片机寄存器定义的头文件sbit P14=P1^4; //将P14位定义为引脚sbit P15=P1^5; //将P15位定义为引脚sbit P16=P1^6; //将P16位定义为引脚sbit P17=P1^7; //将P17位定义为引脚unsigned char keyval; //定义变量储存按键值sbit sound=P3^7; //将sound位定义为 int C; //全局变量,储存定时器的定时常数unsigned int f; //全局变量,储存音阶的频率//以下是C调低音的音频宏定义#define l_dao 262 //将“l_dao”宏定义为低音“1”的频率262Hz#define l_re 286 //将“l_re”宏定义为低音“2”的频率286Hz#define l_mi 311 //将“l_mi”宏定义为低音“3”的频率311Hz#define l_fa 349 //将“l_fa”宏定义为低音“4”的频率349Hz#define l_sao 392 //将“l_sao”宏定义为低音“5”的频率392Hz#define l_la 440 //将“l_a”宏定义为低音“6”的频率440Hz#define l_xi 494 //将“l_xi”宏定义为低音“7”的频率494Hz//以下是C调中音的音频宏定义#define dao 523 //将“dao”宏定义为中音“1”的频率523Hz#define re 587 //将“re”宏定义为中音“2”的频率587Hz#define mi 659 //将“mi”宏定义为中音“3”的频率659Hz#define fa 698 //将“fa”宏定义为中音“4”的频率698Hz#define sao 784 //将“sao”宏定义为中音“5”的频率784Hz#define la 880 //将“la”宏定义为中音“6”的频率880Hz#define xi 987 //将“xi”宏定义为中音“7”的频率53//以下是C调高音的音频宏定义#define h_dao 1046 //将“h_dao”宏定义为高音“1”的频率1046Hz#define h_re 1174 //将“h_re”宏定义为高音“2”的频率1174Hz#define h_mi 1318 //将“h_mi”宏定义为高音“3”的频率1318Hz#define h_fa 1396 //将“h_fa”宏定义为高音“4”的频率1396Hz#define h_sao 1567 //将“h_sao”宏定义为高音“5”的频率1567Hz#define h_la 1760 //将“h_la”宏定义为高音“6”的频率1760Hz#define h_xi 1975 //将“h_xi”宏定义为高音“7”的频率1975Hz/**************************************************************函数功能:软件延时子程序**************************************************************/void delay20ms(void) {unsigned char i,j;for(i=0;i<100;i++)for(j=0;j<60;j++);}/*******************************************函数功能:节拍的延时的基本单位,延时200ms******************************************/void delay() {unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++);}/*******************************************函数功能:输出音频入口参数:F******************************************/void Output_Sound(void){C=(46083/f)*10; //计算定时常数TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法TR0=1; //开定时T0delay(); //延时200ms,播放音频TR0=0; //关闭定时器sound=1; //关闭蜂鸣器keyval=0xff; //播放按键音频后,将按键值更改,停止播放}/*******************************************函数功能:主函数******************************************/ void main(void){ EA=1; //开总中断ET0=1; //定时器T0中断允许ET1=1; //定时器T1中断允许TR1=1; //定时器T1启动,开始键盘扫描TMOD=0x10; //分别使用定时器T1的模式1,T0的模式0TH1=(65536-500)/256; //定时器T1的高8位赋初值TL1=(65536-500)%256; //定时器T1的高8位赋初值 while(1) //无限循环{switch(keyval){case 1:f=dao; //如果第1个键按下,将中音1的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 2:f=l_xi; //如果第2个键按下,将低音7的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 3:f=l_la; //如果第3个键按下,将低音6的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 4:f=l_sao; //如果第4个键按下,将低音5的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 5:f=sao; //如果第5个键按下,将中音5的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 6:f=fa; //如果第6个键按下,将中音4的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 7:f=mi; //如果第7个键按下,将中音3的频率赋给fOutput_Sound(); //转去计算定时常数 break; case 8:f=re; //如果第8个键按下,将中音2的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 9:f=h_re; //如果第9个键按下,将高音2的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 10:f=h_dao; //如果第10个键按下,将高音1的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 11:f=xi; //如果第11个键按下,将中音7的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 12:f=la; //如果第12个键按下,将中音6的频率赋给fOutput_Sound(); //转去计算定时常数 break; case 13:f=h_la; //如果第13个键按下,将高音6的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 14:f=h_sao; //如果第14个键按下,将高音5的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 15:f=h_fa; //如果第15个键按下,将高音4的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 16:f=h_mi; //如果第16个键按下,将高音3的频率赋给fOutput_Sound(); //转去计算定时常数 break; } } } /**************************************************************函数功能:定时器T0的中断服务子程序,使引脚输出音频方波**************************************************************/ void Time0_serve(void ) interrupt 1 using 1 {TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法 sound=!sound; //将引脚取反,输出音频方波}/**************************************************************函数功能:定时器T1的中断服务子程序,进行键盘扫描,判断键位**************************************************************/ void time1_serve(void) interrupt 3 using 2 //定时器T1的中断编号为3,使用第2组寄存器{TR1=0; //关闭定时器T0P1=0xf0; //所有行线置为低电平“0”,所有列线置为高电平“1”if((P1&0xf0)!=0xf0) //列线中有一位为低电平“0”,说明有键按下{delay20ms(); //延时一段时间、软件消抖if((P1&0xf0)!=0xf0) //确实有键按下{P1=0xfe; //第一行置为低电平“0”(输出低电平“0”)if(P14==0) //如果检测到接引脚的列线为低电平“0”keyval=1; //可判断是S1键被按下if(P15==0) //如果检测到接引脚的列线为低电平“0”keyval=2; //可判断是S2键被按下if(P16==0) //如果检测到接引脚的列线为低电平“0”keyval=3; //可判断是S3键被按下if(P17==0) //如果检测到接引脚的列线为低电平“0”keyval=4; //可判断是S4键被按下P1=0xfd; //第二行置为低电平“0”(输出低电平“0”)if(P14==0) //如果检测到接引脚的列线为低电平“0”keyval=5; //可判断是S5键被按下if(P15==0) //如果检测到接引脚的列线为低电平“0”keyval=6; //可判断是S6键被按下if(P16==0) //如果检测到接引脚的列线为低电平“0”keyval=7; //可判断是S7键被按下if(P17==0) //如果检测到接引脚的列线为低电平“0”keyval=8; //可判断是S8键被按下P1=0xfb; //第三行置为低电平“0”(输出低电平“0”)if(P14==0) //如果检测到接引脚的列线为低电平“0”keyval=9; //可判断是S9键被按下if(P15==0) //如果检测到接引脚的列线为低电平“0”keyval=10; //可判断是S10键被按下if(P16==0) //如果检测到接引脚的列线为低电平“0”keyval=11; //可判断是S11键被按下if(P17==0) //如果检测到接引脚的列线为低电平“0”keyval=12; //可判断是S12键被按下P1=0xf7; //第四行置为低电平“0”(输出低电平“0”)if(P14==0) //如果检测到接引脚的列线为低电平“0”keyval=13; //可判断是S13键被按下if(P15==0) //如果检测到接引脚的列线为低电平“0”keyval=14; //可判断是S14键被按下if(P16==0) //如果检测到接引脚的列线为低电平“0”keyval=15; //可判断是S15键被按下if(P17==0) //如果检测到接引脚的列线为低电平“0”keyval=16; //可判断是S16键被按下}}TR1=1; //开启定时器T1TH1=(65536-500)/256; //定时器T1的高8位赋初值TL1=(65536-500)%256; //定时器T1的高8位赋初值 }

简易电子琴的设计摘 要 随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。作为一个学电子信息专业的学生,我们必须不断地了解更多的新产品信息,这就更加要求我们对EDA有个全面的认识。本程序设计的是简易电子琴的设计。采用EDA作为开发工具,VHDL语言为硬件描述语言,MAX + PLUS II作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。本程序使用的硬件描述语言VHDL,可以大大降低了硬件数字系统设计的入门级别,让人感觉就是C语言的近亲。通过老师的指导和自己的学习完成了预想的功能。关键词 电子琴;课程设计;EDA;VHDL1 引言 课程设计的目的巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个简易的八音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机组成原理与系统结构,深入学习EDA技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。 课程设计的内容(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。(2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。(3)能够自动演奏多首乐曲,且每首乐曲可重复演奏。2 开发工具简介 EDA技术EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。硬件描述语言—VHDLVHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。(1) 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2) VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3) VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(4) VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。 VHDL的设计流程:(1) 设计输入根据电路设计所提出的要求,将程序输入到VHDL编辑器中去编辑。(2) 功能级模拟用VHDL,模拟器对编辑后的程序进行模拟,如果达不到设计要求,则可以重新修改程序,直到通过功能模拟。(3) 逻辑综合与优化 将通过功能模拟的程序放到VHDL编译器中,进行逻辑综合与优化。(4) 门级模拟对电路用VHDL。仿真器仿真。可对门级电路的延时、定时状态、驱动能力等进行仿真。如不符合要求,可重复步骤(3),再门级模拟,直到符合要求止。(5) 版图生成 用相应的软件处理后,就可以拿去制版。设计过程设计规划根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图3-1所示,它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。图3-1 系统的整体组装设计原理图 各模块的原理及其程序(1)乐曲自动演奏模块乐曲自动演奏模块()的作用是产生8位发声控制输入信号/当进行自动演奏时,由存储在此模块中的8位二进制数作为发声控制输入,从而自动演奏乐曲。VHDL源程序()LIBRARY IEEE;USE ;USE ;USE ;ENTITY AUTO ISPORT ( CLK : IN STD_LOGIC;AUTO : IN STD_LOGIC;CLK2 : BUFFER STD_LOGIC;INDEX2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);INDEX0 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END AUTO;ARCHITECTURE BEHAVIORAL OF AUTO ISSIGNAL COUNT0: INTEGER RANGE 0 TO 31;BEGINPULSE0 :PROCESS(CLK,AUTO)VARIABLE COUNT :INTEGER RANGE 0 TO 8;BEGINIF AUTO ='1' THENCOUNT := 0;CLK2<='0';ELSIF(CLK'EVENT AND CLK ='1')THENCOUNT :=COUNT +1;IF COUNT =4 THENCLK2 <='1';ELSIF COUNT =8 THENCLK2<='0'; COUNT:=0;END IF ;END IF ;END PROCESS;MUSIC:PROCESS(CLK2)BEGINIF (CLK2'EVENT AND CLK2='1')THENIF (COUNT0=31)THENCOUNT0<=0;ELSECOUNT0<=COUNT0+1;END IF ;END IF ;END PROCESS;COM1:PROCESS(COUNT0,AUTO,INDEX2)BEGINIF AUTO ='0' THENCASE COUNT0 ISWHEN 0=>INDEX0<="00000100"; --3WHEN 1=>INDEX0<="00000100"; --3WHEN 2=>INDEX0<="00000100"; --3WHEN 3=>INDEX0<="00000100"; --3WHEN 4=>INDEX0<="00010000"; --5WHEN 5=>INDEX0<="00010000"; --5WHEN 6=>INDEX0<="00010000"; --5WHEN 7=>INDEX0<="00100000"; --6WHEN 8=>INDEX0<="10000000"; --8WHEN 9=>INDEX0<="10000000"; --8WHEN 10=>INDEX0<="10000000"; --8WHEN 11=>INDEX0<="00000100"; --3WHEN 12=>INDEX0<="00000010"; --2WHEN 13=>INDEX0<="00000010"; --2WHEN 14=>INDEX0<="00000001"; --1WHEN 15=>INDEX0<="00000001"; --1WHEN 16=>INDEX0<="00010000"; --5WHEN 17=>INDEX0<="00010000"; --5WHEN 18=>INDEX0<="00001000"; --4WHEN 19=>INDEX0<="00001000"; --4WHEN 20=>INDEX0<="00001000"; --4WHEN 21=>INDEX0<="00000100"; --3WHEN 22=>INDEX0<="00000010"; --2WHEN 23=>INDEX0<="00000010"; --2WHEN 24=>INDEX0<="00010000"; --5WHEN 25=>INDEX0<="00010000"; --5WHEN 26=>INDEX0<="00001000"; --4WHEN 27=>INDEX0<="00001000"; --4WHEN 28=>INDEX0<="00000100"; --3WHEN 29=>INDEX0<="00000100"; --3WHEN 30=>INDEX0<="00000010"; --2WHEN 31=>INDEX0<="00000010"; --2WHEN OTHERS =>NULL;END CASE;ELSE INDEX0<=INDEX2;END IF;END PROCESS;END BEHAVIORAL;(2) 音调发生模块音调发生模块的作用是产生音阶的分频预置值。当8位发声控制输入信号中的某一位为高电平时,则对应某一音节的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此可得到每个音阶对应的频率。VHDL源程序()LIBRARY IEEE;USE ;USE ;USE ;ENTITY TONE ISPORT (INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0);CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);HIGH: OUT STD_LOGIC;TONE0: OUT INTEGER RANGE 0 TO 2047);END TONE;ARCHITECTURE ART OF TONE ISBEGINSEARCH : PROCESS(INDEX)BEGINCASE INDEX ISWHEN "00000001"=>TONE0 <=773;CODE<="1001111";HIGH<='1';WHEN "00000010"=>TONE0 <=912;CODE<="0010010";HIGH<='1';WHEN "00000100"=>TONE0 <=1036;CODE<="0000110";HIGH<='1';WHEN "00001000"=>TONE0 <=1116;CODE<="1001100";HIGH<='1';WHEN "00010000"=>TONE0 <=1197;CODE<="0100100";HIGH<='1';WHEN "00100000"=>TONE0 <=1290;CODE<="0100000";HIGH<='0';WHEN "01000000"=>TONE0 <=1372;CODE<="0001111";HIGH<='0';WHEN "10000000"=>TONE0 <=1410;CODE<="0000000";HIGH<='0';WHEN OTHERS =>TONE0<=2047;CODE<="0000001";HIGH<='0';END CASE;END PROCESS;END ART;(3) 数控分频模块数控分频模块是对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符相对应的频率。VHDL源程序()LIBRARY IEEE;USE ;USE ;USE ;ENTITY FENPIN ISPORT(CLK1: IN STD_LOGIC;TONE1: IN INTEGER RANGE 0 TO 2047;SPKS: OUT STD_LOGIC);END ENTITY FENPIN;ARCHITECTURE ART OF FENPIN ISSIGNAL PRECLK:STD_LOGIC;SIGNAL FULLSPKS:STD_LOGIC;BEGINPROCESS(CLK1)VARIABLE COUNT:INTEGER RANGE 0 TO 8;BEGINIF (CLK1'EVENT AND CLK1='1')THENCOUNT:=COUNT +1;IF COUNT=2 THENPRECLK<='1';ELSIF COUNT =4 THENPRECLK<='0';COUNT:=0;END IF ;END IF ;END PROCESS;PROCESS(PRECLK,TONE1)VARIABLE COUNT11:INTEGER RANGE 0 TO 2047;BEGINIF (PRECLK'EVENT AND PRECLK='1')THENIF COUNT11CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO);U1:TONEPORTMAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1);U2:FENPIN PORT MAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SPKS=>SPKOUT);END ART;4 波形仿真(1)乐曲自动演奏模块的仿真(如图4-1所示)图4-1乐曲自动演奏模块的仿真图(2)音调发生模块的仿真(如图4-2)图4-2 音调发生模块的仿真图(3)数控分频模块的仿真(如图4-3)图4-3数控分频模块仿真图(4)简易电子琴整个系统的仿真(如图4-4)图4-4简易电子琴整个系统的仿真图5 结束语经过努力,简易电子琴的设计基本上完成了。在整个设计过程中,包括前期中期和后期,我都有着许多不同的体会:1) 这个设计的基本是接触一门新的语言并加以应用,对于我来说,没有想到的是入手的速度比我的预料快,在以前编程的基础上,从接触到开始动手编程的时间得到了很大的缩短。知识的接收速度在很大的程度上决定了动手的时间。2) VHDL的编程与C语言的编程有着本质的不同,然而以往形成的旧编程习惯在VHDL编程中依然起着很大的作用。一通百通,不是没有道理的。对于学习新的知识并予以应用的信心,显得更足了。3) VHDL的设计关键是电路逻辑设计,而一个程序的关键是总体设计。对于硬件设计接触不多的我们清楚这一点也许不无好处。4)通过这个程序设计让我学会一种新的语言,对数字系统结构也有了更进一步的了解和认识,对我以后的学习有很大的帮助。希望其他人在看再做类似设计时有所借鉴。通过几天的课程设计,我对数据库软件EDA技术、VHDL、等系列知识都有了一定的了解。使用EDA技术开发页面的能力也有了很大提高。在整个设计过程中,有很多人对任务的完成给予了重要的支持和帮助。感谢老师给了我本次设计的机会并提供指导;感谢许多同学在我此课程设计遇到问题时给我的帮助使我能够顺利地进行设计的工作;论坛中有很多认识不认识的朋友也都为我的设计提出了很宝贵的建议,同样在这里感谢他们。参考文献《VHDL与数字电路设计》.卢毅, 赖杰. 科学出版社《VHDL语言100例详解——北京理工大学ASIC研究所》.北京理工大学ASIC研究所. 清华大学出版社《VHDL 程序设计》(第二版). 曾繁泰等. 清华大学出版社《VHDL入门与应用》陈雪松, 滕立中 .人民邮电出版社 《VHDL简明教程》.王小军 .清华大学出版社

趣味电子琴设计毕业论文

简单的说就是按键触发信号发给处理器,再由处理器调用音色库音色通过功放电路输出或者通过数码接口进行数字输出。控制面板上的按钮来选择处理器对音色、音量、输出方式、伴奏的控制。 玩具和简单的老式电子琴就简单得多,按键做为开关接通内部发声单元,进行固定频率的发声。或者由初级的单片机处理发声频率。 电子琴的工作原理一般有FM(调频)模式和PCM(采样)模式。 现在常用的电子琴的常见品牌有YANMAHA 和CASIO,海南的乐手比较喜欢使用YAMAHA的产品,因为它的设置比较合理,现场使用非常 方便;音色比较真实,使用效果更佳。 单独用一具电子琴,就可以现场作出类似一支完整乐队的效果。所以现在一些演出场合中,比较流行一具电子琴(有些会再加上一具合成器)的单人编制(简称单编),或一具电子琴和一把吉他的双人编制(简称双编)。搞单编需要乐手具备较高的电子琴操作和演奏水平。本版中的“啊方十指琴魔”就是这样的单编高手之一。搞单编或双编对电子琴的要求也较高,在YAMAHA的电子琴系列中,一般要PSR 410以上级别的产品才能达到乐手们常说的“能用”的水平。 电振荡乐 器 以电振荡作为激励声源的乐器,称为电振荡乐器 。 目前人们能见到的各种电子琴、电子合成器、电子鼓机等都属于电振荡 乐器。 说明:当演奏者按下键盘中的某一琴键时,琴键下面的电路就将信号传 送给振荡器 1 和振荡器2,产生相应的音高振荡频率;手指触键的力度信号 也会同时传给包络发生器 1 和包络发生器2,并通知滤波器和放大器产生相 应的音量及音色的变化;最后,声音信号通过放大器输出。图中低频振荡器 的作用,是能够根据演奏者的需要,对所有其它部分——振荡器、滤波器和 放大器——进行调制,从而使合成器能够发出颤音的效果。 目前,国外生产的电子合成器以及较高档的电子琴都有MIDI 接口,相互 间可串接使用。目前较流行的使用方法是用一台计算机通过MIDI 接口来控制 所有相关的电子乐器和音响效果发生器,从而能够方便地产生丰富多彩的音 乐音响效果。

这问题,见百度百科...

电声小提琴是通过电来发声的,而传统的小提琴是通过共振箱的共振发声的 电声小提琴是近代的产物,它比起传统的声学提琴来有几个优点,一个是公共场合的演奏声音更饱满音色更亮,而传统的小提琴的话,不是用很优秀的琴就可能无法得到完美的演奏效果,因为室外的很多东西可以吸音.其次是电声小提琴的音色可以调节,并且有时候琴身的特殊设计可以让演奏家在拉小提琴的高把位的时候更加舒适. 所以,电声小提琴琴适用于大型的露天的场合,如果使用得当,可以获得很好的演出效果. 当然,它也有不及传统的小提琴的地方,那就是它的音色被认为无法与传统的声学小提琴相媲美,这点很难让传统的演奏家们喜欢上这种新型的乐器.小提琴(violin)是一种超擦奏管弦得鸣提乐器。它广泛流传于世界各国,是现代管弦乐队弦乐组中最主要的乐器。它在器乐中占有极重要的位置,是现代交响乐队的支柱,也是具有高难度演奏技巧的独奏乐器。现代小提琴的出现已有300多年的历史,其制作本身是一门极 小提琴为精致的乐器。小提琴音色优美,接近人声,音域宽广,表现力强,从它诞生那天起,就一直在乐器中占有显著的地位,为人们所宠爱。如果说钢琴是“乐器之王”,那么小提琴就是乐器的“王后”了。 几个世纪以来,世界各国的著名作曲家写作了大量的小提琴经典作品,小提琴演奏家在这种乐器上发展了精湛的演奏艺术。小提琴既可以合奏,又可以进行独奏。 小提琴是一种四条弦的弓弦乐器,是提琴家族中的主要成员(该族系中的其它成员是:中提琴,大提琴和低音提琴)。现代小提琴起源于意大利的克瑞莫纳,在1600-1750年间成为最大的小提琴制作中心。著名的制琴大师有:Nicola Amati(尼古拉·阿马蒂),Antonio Stradivari(安东尼奥·斯特拉底瓦里),及Giuseppe Guarneri (吉塞浦·瓜奈里);他们制造的乐器至今都是无价之宝。小提琴的五度定弦为:g, d1, a1, e2, 音域超过3 个半组,是所有管弦乐团必不可少的乐器,也是乐器之后。编辑本段形状构造小提琴由30多个零件组成。其主要构件有琴头、琴身、琴颈、弦轴、琴弦、琴马、腮托、琴弓、面板、侧板、音柱等。 小提琴共有四根弦,分为:A弦,E弦,D弦和G弦。 小提琴主要构件小提琴琴身(共鸣箱)长约厘米,由具有弧度的面板、背板和侧板粘合而成。面板常用云杉制作,质地较软;背板和侧板用枫木,质地较硬。琴头、琴颈用整条枫木,指板用乌木。小提琴的音质基本上取决于它的木质和相应的结构,取决于木材的振动频率和它对弦振动的反应。优质琴能把发出的每个声音的基音和泛音都同样灵敏地传播出去。 小提琴有琴弦4根。原均为羊肠制的裸弦,约从18世纪起,低音G弦常包以银丝,使其反应灵敏。现代则将G、D、A3根弦用缠金属丝的羊肠弦或钢丝缠弦,晚近也用尼龙弦。E弦改用钢丝弦,使其在高音区的音色更佳。 小提琴制作成现代这种样式,并非完全从形态美观出发,而是有其音响上和演奏上的需要。小提琴面板和背板有弧度,使其共鸣良好,发音洪亮;琴的腰身狭窄,便于演奏高把位和低音弦;面板和背板加嵌条,除防止木板开裂外,对琴的音质也起一定作用。面板与背板中间有音柱支撑,其位置变化对小提琴音色影响明显。面板左下面粘低音梁,既起加固作用,又具音响作用。小提琴表面的油漆如太硬、太软,或 小提琴琴弓漆得不匀,都会有损于音质。当琴弓与琴弦摩擦使琴弦振动时,通过琴马引起面板振动,又通过音柱使背板振动,E弦振动较少,而G弦振动较大,从而使低音梁有更大振动,并造成共鸣箱的振动。能否使琴声得以充分发挥,取决于琴弦及其张力、琴马质量、运弓的压力和速度。要想把琴的各种音质都表达出来,还要加上演奏者的弓法、指法和揉弦等演奏技巧。 尺寸适用对照表 规格 尺寸 适合年龄 备注 1/8 255mm 4-5岁 1/4 280mm 6-8岁 1/2 310mm 9-11岁 3/4 335mm 12-14岁 身高稍小的成年人,或身高米左右的人 4/4 356mm 15岁以上 身高以上 1/16 基本上作为模型或者摆设的居多编辑本段发展简史目前对小提琴最早的明确记载是 Jambe de Fer 于1556年出版于里昂的《音乐摘要》(Epitome musical)。此时小提琴已经传遍欧洲。但关于小提琴的起源,史学家有许多不同说法,有一说是起源于“乌龟壳琴”,有个年轻人在沙滩上散步,忽然听到一种悦耳的声音,他仔细一找,原来是踢到空龟壳,龟壳震动发出的声音。他回家一琢磨,发明了一种类似空龟壳的乐器。这就是小提琴的开山鼻祖。后来,人们把它演变成现在的样子,可“万变不离其宗”,小提琴的琴孔还是龟背壳演变的样子。有说是起源于北非,有说是起源于印度,也有说是起源于西欧等等。有这么一个传说:5千年前斯里兰卡有一位君主名叫瑞凡那,他把圆柱形的木头掏空制成了与我国二胡极为相似的乐器称瑞凡那 高档小提琴斯特隆(Ravanastron),在漫长的历史长河中,瑞凡那斯特隆随着贸易往来而流传四方,这便是小提琴的鼻祖了。不过从有史料记载起,最早的小提琴是由一位住在意大利北部城镇布里细亚(Brescia)名叫达萨洛制成的(Gaspa ro da salo 1542-1609)。但在同一个时期,格里蒙那(Cremona)城中的A.阿玛蒂(AndreaAmatil520-1580),也制作了与现代小提琴更为相近似的小提琴。从16世纪到18世纪,意大利的小提琴制造业随着音乐艺术的空前繁荣而得到了迅速的发展,出现了G.P玛基尼、N.阿玛蒂、A.斯特拉第瓦利和C.爪内利四位杰出名匠。18世纪以后,世界各国的小提琴制造业都是仿照意大利这些小提琴制作者的琴型和尺寸来制作小提琴的。近百年来,小提琴的结构也没什么大的改变,从这个意义上讲,意大利是小提琴的故乡。而玛基尼、阿玛蒂、斯特拉第瓦利、瓜内利当年所制作的小提琴,现今已成了稀世珍宝、旷世杰作。 最早的现代意义上的小提琴大约产生于十六世纪中叶,那时的许多珍品现在还保存在欧洲一些博物馆内。小提琴的起源可以追溯到2000多年前的埃及乐器“里拉”(Lyre),十五世纪,意大利人对其进行了改革,并用马尾制成弓子拉奏,定名为Violin,即小提琴。后又经过多年演变,小提琴的形成与制作才基本固定下来。 现存最早的小提琴是一把“查理九世”(Charles IX),由安德里亚·阿玛蒂在1560年制作于意大利北部城市克雷莫纳(Cremoa)。而至今为止最有名的小提琴,应该是安东尼奥·斯特拉底瓦里(Antonio Stradivari)1716年制作的“弥赛亚”(Le Messie),也作“Salabue”,这把琴现藏于英国牛津的Ashmolean博物馆。 现藏柏林的一把斯特拉迪瓦里琴近代小提琴约在1550年就已为人们所熟悉,系由当时流行的乐器雷贝克和臂提利拉琴演变而来。通常所说小提琴前身维奥尔,在构造、调弦、演奏技巧等方面,对现代小提琴的形成都无决定性影响。人们曾普遍认为意大利北部的米兰、威尼斯、布雷西亚和克雷莫纳一带是小提琴的诞生地。16世纪后期,意大利的小提琴制作业出现了两个著名的小提琴制作流派,一派是以阿马蒂父子为代表的克雷莫纳制琴派;另一派是以萨洛的加斯帕罗(1540~1609)和他的学生.马吉尼为代表的布雷西亚制琴派。这两派制作的小提琴各有特长,经历了几百年,至今仍属上等珍品。 1650~1750年,是小提琴制作的黄金时代,出现了许多著名小提琴制作家,如N.阿马蒂、J.斯坦纳,以及被人们认为最杰出的制作家A.斯特拉迪瓦里和G.瓜尔内里等人。阿马蒂所制小提琴的面板和背板弧度较大,音质好,用来演奏室内乐,有如明亮的女高音。18世纪后期,.维奥蒂赞扬了斯特拉迪瓦里琴,维奥蒂的老师G.普尼亚尼与N.帕格尼尼喜爱瓜尔内里琴之后,这两位制琴大师的作品才被人们所欣赏,并取得了巨大名望。斯特拉迪瓦里和瓜尔内里琴具有在大厅中演奏协奏曲时所需要的音响传送力。 18世纪后,小提琴制作业的领先地位从意大利转至法国。这个时期小提琴的造型不断改进,已取得更大音量和更好的音质。法国制琴家N.吕波(1758~1824)以斯特拉迪瓦里为典范,把法国的制琴技术和意大利的制琴技术结合在一起。与此同时,法国的F.图尔特(1747~1835)约在1785年对琴弓的长度、重量、形状、装置等方面又进行了重大改革。小提琴在这个时期的发展,反映了J.海顿、.莫扎特和 贝多芬作品中具有的歌唱性,以及运弓方面的更大变化等对小提琴性能上的要求。 1789~1799年,法国大革命之后,随着贵族与皇室的衰落,音乐也从宫廷走向民间,出现了为公众服务的交响乐队和音乐厅。为适应环境的变革,小提琴需要增大音量。18世纪末~19世纪初,小提琴琴颈加长变细,并向后倾斜:指板变长;琴马变高,并具更大的弧度;G弦早已包有银丝。这些变革的目的是为适应更大的张力。琴弦的增长使琴面上的压力增大,于是低音梁变长变厚,音柱也加粗,以此获得更大更有力的声音。1820年前后L.施波尔发明了腮托,使左手从完全承担持琴的作用中解放出来。腮托的设置,使左手在换把、揉弦、按弦更加自如。 小提琴18世纪末,音乐学院在欧洲相继出现,它使小提琴的需求量大大增加,从而促进了机器制琴业的发展。法国的米尔库、德国的米滕瓦尔德都是大量生产小提琴的地方。法国的.维约姆是 19世纪制琴业的著名人物。 维约姆雇用一些工人,在他的指导下制造小提琴,并以其名为牌号出售。他从世界各地搜集到许多散失在私人手中的优质琴,把它们送到演奏家、收藏家的手中,或者是博物馆。 巴洛克时期的德国伟大作曲家巴哈曾于1720年为小提琴创作了六首无伴奏作品:三首奏鸣曲,三首古组曲,是小提琴独奏曲的精华。今天请朋友们欣赏的是:巴哈的《 E大调前奏曲》,选自其第三首无伴奏组曲,由20世纪杰出小提琴家Itzhak Perlman 于1988年录制。它使用的是Guarneri – Gesu 小提琴,制作于1740年。 西洋小提琴传入中国是在清朝末年(约1920年代)。民国初,学堂音乐教育兴起,人们对外国音乐发生兴趣。从1920年代开始,世界著名小提琴大师先后到中国演出,鼓舞了许多热爱音乐的青年学习小提琴,并随之在北京,上海,广州,福建等地创立了音乐专科;许多高水平的小提琴家来华工作,同时也培养了众多中国自己的教师和演奏家,如:马思聪,刘天华,冼星海和黎国荃等。从这一时期开始,也陆续出版和翻译了不少《小提琴演奏法》,并有作曲家创作出许多经典的中国小提琴曲,像是《梁祝》和《苗岭的早晨》等,都是由上海音乐学院教授陈刚先生所作。 中档小提琴从1980年代开始,一批中国自己培养的青年小提琴家分别在众多的国际大赛中获奖,胡坤既是其中第一位。他曾在北京中央音乐学院师从林耀基教授,并获得芬兰西贝柳斯国际小提琴比赛的第五名好成绩。请欣赏他1999年演奏的《苗岭的早晨》,由陈刚根据苗族口笛独奏编曲。胡坤现在任教于英国梅纽因音乐学校和皇家音乐学院,他使用的是一把制作于1734年的小提琴。 中国在小提琴制造上,近年享有国际声誉。广州乐器厂陈锦农所制红棉牌小提琴,1980年获美国第4届国际提琴制作比赛“音质金奖”;北京提琴厂戴宏祥所制小提琴,获1983年于联邦德国卡塞尔市举行的斯波尔国际提琴制作比赛的“音质金奖”。编辑本段演奏艺术演奏 高档独奏小提琴艺术的发展 16世纪,小提琴开始在意大利出现时,一般用来伴舞、伴唱,或直接演奏歌曲。17世纪初,随着小提琴奏鸣曲的出现,演奏技术也相应发展。C.法里纳(约1600~约1640)在1627年的创作中,就采了用双音、震音、颤音及高把位,并模拟猫叫、狗吠、笛、鼓、吉他等声音。一些演奏家与作曲家也竞相仿效; 于是模拟杜鹃、夜莺、公鸡等声音的作品,充斥于当时的乐坛。直到17世纪后半叶,意大利作曲家和小提琴家A.科雷利才把小提琴艺术引上了正途。编辑本段演奏要点小提琴属于歌唱性的旋律乐器。因此,如何在小提琴上发出歌唱般的丰满、动听的声音,是小提琴演奏中最为重要的问题。就小提琴的演奏技术来说,有以下各种主要基本功。运弓优秀的演奏家能在小提琴上发出千变万化的声音,就运弓而言,取决于运弓的速度、弓在弦上的压力以及弓和弦的接触点这3种因素的不同结合。小提琴的弓法繁多,就其主要的有以下几种:①分弓:一弓演奏一个音,音要拉的干净,清楚;②连弓:一弓演奏许多音,在很多乐曲中都会用到,是最常用的弓法之一;③顿弓:音与音之间断开;④跳弓:弓毛离开琴弦。这4类弓法是最基本的,在20世纪中期,连顿弓,即在一弓中连续快速演奏许多音与音之间是断开的音,被人视为绝技,随后又出现了“自然跳弓”,即弓毛在琴弦上,而听起来或看起来像跳弓一样。所以人们把小提琴演奏艺术称之为“运弓的艺术”。音准歌唱和乐器演奏中所发的音高,能与一定律制的音高相符,称为音准。有些乐器在制造或调音时就有音准要求。歌唱和乐器演奏过程中,随时都要通过演唱者和演奏者的控制来解决音准。音准的取得,有赖于敏锐的听觉、优良的乐器、精湛的技巧与适宜的演出环境。乐器的形体结构、音孔位置、张力变化以及空气湿度,都与音准有关。就弦乐器讲,长时间演奏及气温上升,均使弦松弛,因此弦乐器音准的突出问题是如何矫正偏低。就管乐器讲,虽然气温上升使管体略微伸长,但同时气压降低,声速提高,频率也随之增高(据实测,气温每升10℃可使管乐器发音升高3音分),因此管乐器音准的突出问题是如何矫正偏高。歌唱及弦乐器、管乐器的音准,当有钢琴伴奏时,都以平均律为准则;但由于平均律的许多音程听起来并不严格协和,所以在独唱、独奏、重唱、重奏时,常常需要偏离平均律而趋近纯律或五度相生律,才算达到音准要求。揉弦揉弦是小提琴,二胡,吉他等弦乐演奏所掌握的最具表现力的演奏技巧之一。在乐句适当的地方加上适当的揉弦,会比没有揉弦的乐句在声音上要生动的多。 揉弦是一个小提琴演奏很有表现力的技巧,用它可以来表现不同风格和特征的每一个音或每一个乐段。揉弦的要点是怎样找到手的最佳动作,用速度快慢、揉弦宽窄来演奏出每一个乐段独特的风格和特征。 肘臂揉弦和手腕揉弦,两者都要练习。以能够表现出最好的音乐特征,来选择揉弦的速度和宽窄。 有几种方法,初学者可以试试,可能会有利于学习揉弦: 1.一是做指端关节前后屈仰动作。先在桌子上练,分别练习各个手指一关节向后躺下(不是完全贴在桌子上),再立起的动作,再分别作左右晃动。由快到慢,最后五个指头一起练习。 2.首先应学会手腕揉弦。其方法可先将手臂放在大腿上或椅臂上,然后将手腕放松前后摇动,力求平均,待动作习惯自如后,再放到指板上练习。 同时要注意: 在手腕前后揉动时,带动手指的关节,手指的触弦点不能随着手腕的揉动而移位。在练习手腕揉弦时,可先从三指开始。因为用三指揉动可以使动作更为宽松,然后再练习二指和一指。而练习四指时,还可将三指紧靠四指帮助揉动。这样的练习会使颤动的效果更为自如。在手腕揉弦练习的基础上也可逐渐学习和熟悉手臂的揉弦和手指的揉弦。目的是为了更好的丰富演奏上的表现力,适应于各种力度和情绪变化的需要。 3.还有大臂揉弦、手指揉弦。大臂揉弦多用于长的重低音,主要体现出乐曲的浑厚和伤感,手指揉弦多用于半拍的高音,可以表现出乐曲的欢快和优美,而想学好这些,前提是熟练的掌握手臂揉弦。把位左手手指在指板上的位置,称之为把位。靠近琴头的把位为低把,靠近琴马的为高把。从一个把位换到另一个把位,称为换把。换把位的方法有多种,例如空弦换把,同指换把,不同指以及泛音换把等。换把时产生非音乐需要的滑音,是技巧训练不足的标志。滑音可以使音与音之间的连接富于变化,增加一个优美的过度。特别是结合换把使用滑音,是一种富于表现力的演奏手段。双音与和弦小提琴可以同时演奏两个音甚至是3个音,也可以分奏4个音的和弦,这不仅丰富了它的表现力,并可不依赖其他乐器的伴奏进行单独演奏。小提琴的三度、六度、八度以及十度双音音阶,是演奏双音的基础,也是小提琴家必须终身练习的一项基本功。小提琴演奏中的左手颤音、泛音、拨弦等,都是一些高深的技巧。 双手技巧 小提琴的左手技巧:音阶、双弦、换把、颤指、泛音、拨奏。 右手技巧有:连弓、分弓、顿弓、跳弓、波弓、击弓、碎弓。 等等。小提琴家的魅力不少在于右手神奇的运弓。 小提琴特殊奏发在总谱中的标记: 拨弦:pizz 恢复正常演奏为arco 靠近琴马:sul pont恢复正常演奏为ord 靠近指板:sul tasto恢复正常演奏为ord 弓杆击弦:col legno恢复正常演奏为arco 加弱音器:con sord摘除弱音器为senza sord 另外在管弦乐里分部为div,齐奏为unisppp 最弱 pp很弱 p弱 mp中弱 mf中强 f强 ff很强 fz最强 fz或sf加强音 pizz拨奏 arco用弓拉奏(在拨奏之后) solo独奏 tutti全奏(全乐队) 8va高八度 .全弓 .上半弓 .下半弓 M.中弓 Fr弓根 Sp弓尖

下面的都是毕业论文范文,有用的话,请给我红旗LMX2350/LMX2352芯片简介及电路设计基于LMX2306/16/26 芯片简介及应用电路设计 基于LT5500f 的 GHzLNA/混频器电路设计基于LT5517 40MHZ到90NHZ 积分解调器的设计基于LT5527的400MHz至高信号电平下变频混频器电路设计基于LT5572的芯片简介及应用电路设计基于LT5516的芯片简介及应用电路设计 基于MAX2039的芯片简介及应用电路设计 基于MAX2102/MAX2105芯片简介及应用电路设计基于MAX2106 芯片简介及应用电路设计 基于MAX2323/MAX2325 的芯片简介及应用电路设计 基于MAX2338芯片简介及应用电路设计 基于MAX2511的芯片简介及应用电路设计 基于MAX2685的芯片简介及应用电路设计 基于MAX2753的芯片简介及应用电路设计基于MAX9981芯片简介及应用电路设计基于MAX9994的芯片简介及应用电路设计 基于MAX9995的芯片简介及应用电路设计基于MC12430的芯片简介及应用电路设计基于MC88920芯片简介及应用电路设计基于MPC97H73的简介及电路设计基于MPC9229 芯片简介及应用电路设计 基于mpc9239芯片简介及应用电路设计 基于MPC9992 芯片简介及应用电路设计基于mpc92433芯片的简介及应用电路设计基于TQ5121的无线数据接收器电路设计基于TQ5135的芯片简介及应用电路设计基于TQ5631 3V PCS波段CDMA射频放大混频器电路设计语音信号处理技术及应用网络文档发放与认证管理系统网络配置管理对象分析与应用三维激光扫描仪中图像处理快速算法设计基于分形的自然景物图形的生成图像压缩编码基于奇异值分解的数字图像水印算法研究数字图象融合技术汽车牌照定位与分割技术的研究焦炉立火道温度软测量模型设计加热炉的非线性PID控制算法研究直接转矩控制交流调速系统的转矩数字调节器无线会议系统的设计温度检测控制仪器简易远程心电监护系统基于LabVIEW的测试结果语音表达系统程控交换机房环境监测系统设计单片机控制的微型频率计设计基于DSP的短波通信系统设计(射频单元)等精度数字频率计不对称半桥直直变换器仿真研究基于MATLAB的直流电动机双闭环调速系统无线传输应变型扭矩仪模糊控制在锅炉焊接过程中的应用三层结构的工作流OA的应用与实现基于的永磁直线电机的有限元分析及计算音频信号的数字水印技术低压CMOS零延迟1:11时钟发生器基于ADF4116/4117/4118的芯片简介及应用电路设计ADF4193芯片简介及应用电路设计LMX2310U/LMX2311U/LMX2312U/LMX2313U芯片简介及应用电路设计MAX2754芯片简介及应用电路设计MPC92432芯片简介及应用电路设计高增益矢量乘法器基于400MSPS 14-Bit,直接数字合成器AD9951基于900MHz低压LVPECL时钟合成器的电路设计基于 MAX2450芯片简介及应用电路设计基于AD831低失真有源混频器的电路设计基于AD7008的芯片简介及应用电路设计基于AD8341 芯片简介及应用电路设计基于AD8348的50M-1000M正交解调器基于AD8349的简介及应用电路设计基于AD9511的简介及电路应用基于AD9540的芯片简介及电路设计基于AD9952的芯片简介和应用电路设计基于ADF436的集成数字频率合成器与压控振荡器基于ADF4007简介及电路设计基于ADF4110/ADF4111/ADF4112/ADF4113上的应用电路设计基于ADF4154的芯片简介及应用电路设计基于ADF4360-0的芯片简介及应用电路设计基于ADF4360-3电路芯片简介及应用电路设计基于ADF4360-6的简介及应用电路设计基于ADF4360-7的集成整形N合成器的压控振荡器基于ADL5350的简介及应用电路设计基于CMOS 200 MHZ数字正交上变频器设计基于CMOS 的AD9831芯片数字频率合成器的电路设计基于CX3627ERDE的芯片简介及应用电路设计基于CXA3275Q的芯片简介及应用电路设计基于CXA3556N的芯片简介及应用电路设计基于IMA-93516的芯片简介及应用电路设计VPN技术研究UCOSII在FPGA上的移植IPTV影音信号传输网络设计GSM移动通信网络优化的研究与实现 FSK调制系统DSP处理GPS接收数据的应用研究Boot Loader在嵌入式系统中的应用ADS宽带组网与测试基于FPGA的IIR滤波器设计MP3宽带音频解码关键技术的研究与实现基本门电路和数值比较器的设计编码器和译码器的设计智力竞赛抢答器移位寄存器的设计与实现四选一数据选择器和基本触发器的设计四位二进制加法器和乘法器数字钟的设计与制作数字秒表的设计数控分频器及其应用汽车尾灯控制器的设计交通灯控制器的设计简易电子琴的设计简单微处理器的设计DSP最小系统的设计与开发基于消息队列机制(MSMQ)的网络监控系统基于DSP的电机控制的研究基于数学形态学的织物经纬密度的研究纱条均匀度测试的研究 图像锐化算法的研究及其DSP实现 手写体数字识别有限冲击响应滤波器的设计及其DSP实现 同步电机模型的MATLAB仿真USB通信研究及其在虚拟仪器中的应用设计WLAN的OFDM信道估计算法研究采用S12交换机支持NGN下MEGACO呼叫流程的设计基于语音信号预测编码的数据压缩算法的研究与实现基于小波变换数字图像水印盲算法基于小波变换和神经网络的短期负荷预测研究嵌入式系统建模仿真环境PtolemyII的研究与应用分布式计算环境的设计与实现复合加密系统中DES算法的实现大学自动排课算法设计与实现基于AES的加密机制的实现基于AES算法的HASH函数的设计与应用基于DM642的视频编码器优化和实现基于Huffman编码的数据压缩算法的研究与实现基于internet的嵌入式远程测控终端研制基于Matlab的FMCW(调频连续波)的中频正交处理和脉冲压缩处理 基于MATLAB的对称振子阻抗特性和图形仿真基于windows的串口通信软件设计基于粗糙集和规则树的增量式知识获取算法自适应蚁群算法在DNA序列比对中的应用远程监护系统的数据记录与传输技术研究基于分布式体系结构的工序调度系统的设计基于活动图像编码的数据压缩算法的设计与实现基于宽带声音子带编码的数据压缩算法的设计与实现基于网络数据处理XML技术的设计基于小波变换的数据压缩算法的研究与实现基于小波变换的配电网单相接地故障定位研究及应用英特网上传输文件的签名与验证程序

基于plc电梯设计毕业论文

PLC的,一百多份,有用的话,加分给我,1. 基于FX2N-48MRPLC的交通灯控制2. 西门子PLC控制的四层电梯毕业设计论文3. PLC电梯控制毕业论文4. 基于plc的五层电梯控制5. 松下PLC控制的五层电梯设计6. 基于PLC控制的立体车库系统设计7. PLC控制的花样喷泉8. 三菱PLC控制的花样喷泉系统9. PLC控制的抢答器设计10. 世纪星组态 PLC控制的交通灯系统11. X62W型卧式万能铣床设计12. 四路抢答器PLC控制13. PLC控制类毕业设计论文14. 铁路与公路交叉口护栏自动控制系统15. 基于PLC的机械手自动操作系统16. 三相异步电动机正反转控制17. 基于机械手分选大小球的自动控制18. 基于PLC控制的作息时间控制系统19. 变频恒压供水控制系统20. PLC在电网备用自动投入中的应用21. PLC在变电站变压器自动化中的应用22. FX2系列PCL五层电梯控制系统23. PLC控制的自动售货机毕业设计论文24. 双恒压供水西门子PLC毕业设计25. 交流变频调速PLC控制电梯系统设计毕业论文26. 基于PLC的三层电梯控制系统设计27. PLC控制自动门的课程设计28. PLC控制锅炉输煤系统29. PLC控制变频调速五层电梯系统设计30. 机械手PLC控制设计31. 基于PLC的组合机床控制系统设计32. PLC在改造z-3040型摇臂钻床中的应用33. 超高压水射流机器人切割系统电气控制设计34. PLC在数控技术中进给系统的开发中的应用35. PLC在船用牵引控制系统开发中的应用36. 智能组合秤控制系统设计37. S7-200PLC在数控车床控制系统中的应用38. 自动送料装车系统PLC控制设计39. 三菱PLC在五层电梯控制中的应用40. PLC在交流双速电梯控制系统中的应用41. PLC电梯控制毕业论文42. 基于PLC的电机故障诊断系统设计43. 欧姆龙PLC控制交通灯系统毕业论文44. PLC在配料生产线上的应用毕业论文45. 三菱PLC控制的四层电梯毕业设计论文46. 全自动洗衣机PLC控制毕业设计论文47. 工业洗衣机的PLC控制毕业论文48. 《双恒压无塔供水的PLC电气控制》49. 基于三菱PLC设计的四层电梯控制系统50. 西门子PLC交通灯毕业设计51. 自动铣床PLC控制系统毕业设计52. PLC变频调速恒压供水系统53. PLC控制的行车自动化控制系统54. 基于PLC的自动售货机的设计55. 基于PLC的气动机械手控制系统56. PLC在电梯自动化控制中的应用57. 组态控制交通灯58. PLC控制的升降横移式自动化立体车库59. PLC在电动单梁天车中的应用60. PLC在液体混合控制系统中的应用61. 基于西门子PLC控制的全自动洗衣机仿真设计62. 基于三菱PLC控制的全自动洗衣机63. 基于plc的污水处理系统64. 恒压供水系统的PLC控制设计65. 基于欧姆龙PLC的变频恒压供水系统设计66. 西门子PLC编写的花样喷泉控制程序67. 欧姆龙PLC编写的全自动洗衣机控制程序68 景观温室控制系统的设计69. 贮丝生产线PLC控制的系统70. 基于PLC的霓虹灯控制系统71. PLC在砂光机控制系统上的应用72. 磨石粉生产线控制系统的设计73. 自动药片装瓶机PLC控制设计74. 装卸料小车多方式运行的PLC控制系统设计75. PLC控制的自动罐装机系统76. 基于CPLD的可控硅中频电源77. 西门子PLC编写的花样喷泉控制程序78. 欧姆龙PLC编写的全自动洗衣机控制程序79. PLC在板式过滤器中的应用80. PLC在粮食存储物流控制系统设计中的应用81. 变频调速式疲劳试验装置控制系统设计82. 基于PLC的贮料罐控制系统83. 基于PLC的智能交通灯监控系统设计

基于单片机的电梯控制系统模拟电梯的制作三层电梯的单片机控制电路单片机控制电梯系统的设计上面全是单片机控制电梯的,再告诉你一个技巧,如果想要其他的论文,,在这搜就OK了。

我帮您!请加我!! 保证论文,唯一性、专业性、高质量。 知网检测!包过!

电梯作为现代智能建筑内的代步工具。越来越显示出它的重要作用,为了适应电梯的迅速发展。由PLC控制代替传统继电器控制已成为发展定局PLC是集计算机控制、自动控制技术、通信技术为一体的新型自动控制装置。它的编程软件采用易学易懂的梯形图语言!控制灵方便,抗干扰能力强,运行稳定可靠,本次设计对传统电梯控制方式加以更新,运用高性价比的现代PLC控制方式,力求以人性化、智能化方向推存出新!设计出一款高效、安全、价廉;能个性化组合且能在商业办公楼、行政大楼、中小型宾馆和居民公寓中发挥显著作用的普及型电梯控制系统。实际上电梯是根据外部呼叫信号和自身控制规律等运行的,而呼叫是随机的,电梯实际上是一个人机交互式的控制系统,单纯用顺序控制或逻辑控制都不能满足控制要求。因此,本系统采用经验设计法为主的设计方法,取得了良好的效果。237513901

gui程序设计毕业论文

前言 珍贵的大学生活已接近尾声,感觉非常有必要总结一下大学三年的得失,从中继承做得好的方面改进不足的地方,使自己回顾走过的路,也更是为了看清将来要走的路。通过三年的大专生活,我成长了很多。在即将毕业之时,我对自己这三年来的收获和感受作一个小结,并以此为我今后行动的指南。三年的大专生活似弹指一挥间,从刚跨入大专时的失落和迷茫,到现在走上工作岗位的从容、坦然。我知道,这又是我们人生中的一大挑战,角色的转换。这除了有较强的适应力和乐观的生活态度外,更重要的是得益于大专三年的学习积累和技能的培养。我自认为无愧于大专三年,刚入学时,我曾为身为大专生而懊丧过。但很快,我选择了坦然面对。因为我深信,是金子在任何地方都会发光。所以我确信,大专生的前途也会有光明、辉煌的一天,不会比任何本科生的成就差。。。 通过这三年的学习使我懂得了很多,从那天真幼稚的我,经过那人生的挫折和坎坷,到现在成熟、稳重的我。使我明白了一个道理,人生不可能存在一帆风顺的事,只有自己勇敢地面对人生中的每一个驿站。当然,三年中的我,曾也悲伤过、失落过、苦恼过,这缘由于我的不足和缺陷。但我反省了,这只是上天给予的一种考验,是不能跌倒的。大专生的我们应该善用于扬长避短的方法来促进自己,提高自己的综合水平能力。 这三年的锻炼,给我仅是初步的经验积累,对于迈向社会远远不够的。因此,面对过去,我无怨无悔,来到这里是一种明智的选择;面对现在,我努力拼搏;面对将来,我期待更多的挑战。战胜困难,抓住每一个机遇,相信自己一定会演绎出精彩的一幕。大专校园就是一个大家庭。在这个大家庭中,我们扮演着被培养对象的角色。老师是我们的长辈,所以我对他们尊敬有加。同学们就像兄弟姐妹,我们一起学习,一起娱乐,互帮互助,和睦的相处。集体生活使我懂得了要主动去体谅别人和关心别人,也使我变得更加坚强和独立。我觉得自己的事情就应该由自己负责,别人最多只能给你一些建议。遇到事情要冷静地思考,不要急躁。不轻易的承诺,承诺了就要努力去兑现。生活需要自己来勾画,不一样的方式就有不一样的人生。三年的大专生活是我人生中美好的回忆,我迈步向前的时候不会忘记回首凝望曾经的岁月。。。 [实习目的] 通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,并为自己能顺利与社会环境接轨做准备。 [实习任务] 对计算机在人事管理方面的应用进行归纳总结, [实习内容] 计算机在人事管理中的应用 随着社会的发展,科技的进步,作为信息载体的计算机日益显露出其举足轻重的地位。当今社会已步入了信息社会,知识经济将成为新世纪的主导产业。伴随计算机的逐步推广和使用,计算机已在科研、生产、商业、服务等许多方面创造了提高效率的途径,与此同时,单位技术成本也逐年有了明显的下降,然而办公室里的人事费用却不断增加。在国外,花费在专业、管理和行政人员上的成本占了办公室总成本的2/3—4/5,这一现象使人们对办公室自动化的要求与日俱增。我们必须在进行机构改革的同时,尽快使用现代化管理设备、管理手段、管理方法。 计算机在人事部门的广泛使用,改进了统计手段,改革了统计方法,提高了统计工计算机在人事部门的广泛应用,将为我国的人事管理工作,提供现代化的管理手段和科学的管理方法,并将为开创人事管理工作的新局面创造条件。 目前,计算机在我国的人事管理工作中,主要可用来进行报表处理,档案管理,文书编辑,信息查询,综合分析。干部统计作为人事管理的一个重要组成部分,是通过对干部情况的调查,整理和分析,了解干部队伍的发展趋势,为各级领导机关制定干部工作的方针,政策,加强干部管理,改革干部制度提供准确数字的依据。其工作除涉及到干部的基本情况统计之外,还包括干部的工资统计,干部编制情况统计,干部奖惩情况统计,军转干部安置情况统计,老干部情况统计等方面,其涉及的面之广,数据量之大可想而知,若利用手工进行干部的统计工作,大致要经过干部统计调查,干部统计资料的整理,干部统计分析三个过程,但这种手工统计过程,存在着几个明显的问题,比如说统计资料缺乏准确性,及时性,需要花费大量的人力,物力,财力等。 手工方法所表现出来的种种劣势,使人们慢慢意识到管理现代化已成为当代社会发展的一股不可抗拒的洪流。在管理现代化的浪潮中,人事管理现代化也势在必行。实现人事管理现代化是一个复杂的系统工程,需要采取科学的管理方法和先进的科技手段。科学的管理方法在管理中一般是指数学方法、系统方法、信息方法、控制论方法、社会学方法、心理学方法等科学方法,而先进的科技手段主要是运用当代最新科学技术之一的电子计算机来为人事管理现代化服务。 电子计算机作为数据处理系统,已逐渐成为人事管理现代化的重要工具,在人事管理中正在发挥着重要的作用。在我国,已经开始运用电子计算机进行人员工资管理、人事统计和查询、干部考评和人事档案管理以及人才预测和规划等。 管理现代化是汉代社会发展的一股不可抗拒的洪流。近几十年来社会化大生产的发展规模越来越大,综合性越来越强,生产专业化分工越来越细,行业有部门之间的相互联系、相互依存和相互作用更不密切。组织管理日趋复杂;而现代化科学技术也正以史无前例的速度不断分化,不断综合,全方位地向高又立体的微观、宏观方向进军。这些,要求管理工作对实际问题的反映和决策必须迅速及时,对信息系统的完善程度越来越高,传统的手工业式的管理理论、方法、体制已远远不能适应当代社会的发展和四化建设的需要。改革、创新,实现管理现代化势在必行。 现代化管理的内容很多,关系很复杂,它包括人、资金、物质、信息和时间等诸要素,其中起关键作用的要素是人。人既是管理者,又是被管理者,在管理中处于双重地位,且具有巨大的能动性。可见人是现代管理中最重要的因素。因此,管理人力资源开发与利用的人事管理在整个复杂的管理大系统中的重要地位是不言而喻的。牵一发而动全身,抓好了人事管理就为其他管理的优化得到根本的保证。 管理改革必须配套进行,现代化管理的实施也需要协调发展,人事管理既然在管理系统中占有如此突出的重要地位,在管理现代化的浪潮中,人事管理现代化也需同步进行,才能使现代化管理在社会化大生产和当代科学技术发展中起到放大和增产的作用。总而言之,人事管理现代化是管理现代化不可缺少的重要一环,它是把现代化管理的理论、方法和手段运用到人事工作中,使人事管理达到最大限度地提高工作效率的目的,以适应社会和科学技术的发展。实现人事管理现代化,使从事管理工作由原来凭个人或少数人的经验作决策,逐步上升到按事物的内在规律的科学高度办事,做到物质与精神相结合,抽象与具体相结合,定性与定量结合,静态与动态相结合,现状和未来相结合,个体与群体相结合。至于先进的科技手段,除科学地运用原有的生物、化学、物理、机械等手段外主要是运用当代最新科学技术之一的电子计算机来为人事管理现代化服务。概括地说,人事管理现代化的内容是包括人事管理思想的现代化、人事管理、组织的现代化、人事管理手段的现代化。通过这四个方面的现代化来实现人事管理的计划、组织、指挥、协调、控制的现代化和从事人事管理工作者自身的现代化。 人事来之不易系统化,是人事管理现代化的一个重点。研究人事管理,必须研究这个系统所处的环境,即研究政治系统,经济系统,法律、科技和文教系统,人物系统和大管理系统对人事管理系统的影响以及人事管理系统的反影响。离开周围的事物,去研究人事管理现代化,是注定要失败的。 所谓系统,就是在一定条件下,由相互作用、相互依赖的若干组成部分结合而成的,并具有特写功能的有机整体。从一般意义上讲,系统由输入、处理、输出、控制与反馈的四个基本部分组成。 在系统理论中,系统分析是指对系统性能的理解。系统最佳化是系统设计成综合的内容。系统工程即用教学方法进行系统分析或优化,把传统的组织管理工作总结成技术并使之数值化。用系统工程来分析系统问题是比较科学的,利用系统工程这门学科的概念和原则,来进行人事组织管理方面的工作,是实现人事管理现代化的重要途径和有效手段。 人事管理系统内有多种元素,如:管理人员、管理机构、办公设备、规章制度、各业务环节,各种管理技术和方法等,都可以看作它的“元素”。各元素之间的联系是否有序,联系的方式和效果是否最优,直接影响着人事管理的水平。在不同条件下,起主导作用的元素是不相同的。人事管理系统化的一个重要目标,是围绕着责任制和考核制,逐步建立起完整配套的干部“进”、“管”、“出”制度。实现系统化,除了要解决制度问题外,还有一个掌握系统方法的问题,即学会应用系统工程和系统分析法,这对搞好人事管理现代化,具有重要的意义。 人事管理系统的基本功能,目前尚无统一的说法。根据我校人事管理的工作的现有材料和工作特点分析来说,人事管理系统的基本功能,我们认为有如下几方面: 1.确定人事管理的方针政策 2.确定人事管理体制、编制人事规划 3.编制人事计划,设置人事管理机构和岗位 4.制定人事管理的条例办法; 5.教职员工的业务培训; 6.人才选拔、使用、交流(流动); 7.考核、奖惩、任免; 8.工资、福利与保险 9.离休、退休、退职。 作为人事干部(人事管理人员),如何最大限度地发挥人员的才能?这是人事管理学研究的根本任务。对这个问题进行个体研究方面,目前是做得不够的。因为个体寓于群体之中,群体对人员才能发挥之影响作用,可利用系统原理去指示。通过群体研究来寻求合理的年龄结构、知识结构、专业结构、来取得令人满意的配合效果等。 过去,在人事管理工作中,人事工作信息滞后,传递慢、“马后炮”,人事管理数据加工不及时。比如:干部考核、人员的工资计算、人事的统计、人事档案的填写,贮存等等。这些人事工作繁琐、耗时费力,准确性差、效率低、手工操作已难以适应形势的发展的要求。为此,我们应该努力学习有关人事管理现代化的有关理论资料,提高对管理现代化重要性的认识,尝试去利用计算机来实现人事管理的现代化。比如现在有些学校和单位在人事管理这方面所作的努力,由于从事计算机工作人员的技术指导和从事多年人事工作的老同志 的帮助,他们: 首先,开发了“中华职专职工档案管理”软件系统。 其次,将学校或单位人员的档案内容的所需数据,存储在计算机的磁盘里,需要时可以通过计算机方便地进行查询、检索、维护,还可以将有关数据打印出来。 第三,还用计算机进行了日常办公现代化的管理工作的使用。 第四,及时收集、加工、整理、存贮、检索新的变化数据。 使其单位人事管理初步实行计算机化,让计算机在人事管理中得到初步应用。使人事管理者总是根据准确、及时的人事信息来进行决策,实现管理。只有计算机才能将现代化社会中,成倍增长的人事信息量,进行及时收集、加工、整理、贮存、检索、传递、反馈给决策者。发挥其特有的功能。 即:(1)对输入的人事数据,进行数值运算和逻辑运算,求解各种问题。 (2)对人事信息进行加工来解决各种数据处理问题,为人事决策者在决策时提供依据。 (3)对人事管理的各种资料数据和计算机顺序,具有记忆存贮的能力。 实践证明,当管理的信息量和复杂程度达到某一限度时,即管理人员的劳动强度超过其承受能力时,就必须采用新的管理手段,即用计算机技术信息的收集、加工、传递和存贮等,可以使用人事基础信息,高效、合理、恰当地管理。这样,人事信息系统随着计算机的应用、发展而不断完善,计算机在人事信息管理中的地位也就是益重要。 正因为如此,实现人事管理现代化,要有科学的管理方法和先进的技术手段,才能最大限度地提高人事管理工作效率。现代人事工作的信息量越来越大,保密性越来越强,而且信息的密度不断提高,靠传统的管理方法和人工操作手段已经无法搞好人事管理工作。而计算机作为数据处理系统,已逐渐成为人事管理现代化的重要手段,在人事管理中正在发挥着重要的作用。一般来说,计算机在人事信息系统中的作用有: (1)计算机能够比人更快地提供有信息价值的人事数据; (2)计算机能够比人提供更新的人事数据; (3)计算机能够比人提供更加准确的人事数据; (4)计算机能够比人处理更多的人事数据等等。 正因为如此,我们利用计算机替代手工操作建立的人事信息系统,即计算机人事信息系统,其主要功能可以归纳为以下三点: 一是可以高效能、大容量地收集、处理、存贮人事信息,大幅度地提高人事管理信息系统的工作质量和效率。 二是可以及时掌握整个人事管理系统的全面情况,提供系统的准确的人事信息,可以促进人事工作的规范化及各项管理制度与指标体系的建立和健全,从而提高行政管理水平。 三是可以提供各种加工处理了的人事信息,以满足人事管理的特殊要求,适应新形势对教职工队伍提出的新要求,帮助选择方案,实现优化决策。当前,不少单位的人事部门对于计算机的应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会 总之,计算机的广泛应用,计算机人事管理信息系统的建立,适应了社会经济发的客观要求,是人事管理现代化的一大进步。今天我们运用计算机进行了学校人事档案管理的初步现代化的开发和使用,它大大提高了人事管理工作者的工作效率,它把人事干部从繁重的手工操作中解脱出来,用更多精力从事创造性的管理活动和其它教育教学的活动中去;它能使决策、计划和其它管理活动更加科学、精确、灵活。因此,建立计算机人事管理信息系统是一种客观发展必然趋势。尽管在人事管理方面还不可能普遍使用计算机,但从长远来说,人事管理现代化和计算机是不分割的。轻视或者拒绝利用计算机技术,就不可能真正地、全面地实现人事管理现代化。随着我国经济、科技的发的,人才开发管理的加强,我们一定要努力创造条件,促进使用计算机的人事管理现代化。为建设中国特色的社会主义而努力奋斗。

如果专业方向是软件设计,可以写;否则一般都是用一章大概介绍一下,详细代码都会写在附录里。

在MATLAB的命令窗口(Command Window)中运行guide命令,来打开GUIDE界面,如下:然后,选择空模板(Blang GUI),点击OK,即可打开GUIDE的设计界面,如下:点击工具栏上的菜单编辑器(Menu Editor),打开菜单编辑器,如下:在Menu Bar中新建一个菜单项,名字为“文件”,其他设置请看下图:在“文件”菜单下添加菜单项:“打开”,“保存”,“退出”。见下图:如果需要在菜单项“退出”上面添加一个分割线的话,选中“Separator above this item”就行了。保存我的界面为. 保存完毕之后,会自动打开文件,而我们所有的程序都是要写在这个M文件里面的。在编程中,我们的每一个鼠标动作都对应一个Callback函数。那么我们的菜单项也是如此的。在界面上,单击鼠标右键选择“Property Inspector”,即可打开属性窗口。当我们点击不同的控件时,其对应的属性都会在这里显示,我们可以进行修改。最主要的属性莫过于Tag属性和String属性。设置当前Figure窗口的Tag属性为:figure_pjimage,窗口的标题(Name属性)为:图像处理实例。如下:然后,点击工具栏的保存按钮。之后,点击工具栏的运行按钮(Run Figure)。注意,工具栏的图标都会有提示的,像运行按钮的提示就是Run Figure. 我们会看到如下的界面:那说明,我们保存的.fig文件的目录不是当前目录,但是没关系啊,我们只要点击“Change Directory”来改变当前目录。当然,如果你想把当前目录添加到MATLAB路径也可以,那就点击“Add to Path”就OK了。我在这里推荐点击“Change Directory”,因为没有什么太大必要把其添加到MATLAB路径中,一般是工具箱需要添加或者我们的函数或程序写完了,而在MATLAB的命令窗口找不到我们的函数的时候,我们可以将函数或程序所在的目录添加到MATLAB路径。总之吧,点那个按钮,要看个人的爱好了。不管点击两个按钮的那一个按钮,都会正确的运行程序的。我们的程序运行时的样子,是这样的:文件下面的菜单项和快捷键我们都能看到,但是我们没有写程序,所以就算点也没有什么响应。还有如果不想设置快捷键,可以在Menu Editor中设置,只要把其选择为Ctrl+none就行了,如下:这样的话,保存项就没有了快捷键了。我们可以通过上面的按钮“View”来查看该菜单项的响应函数,也就是Callback函数。也可以在中看,比如保存的Tag属性是m_file_save,那么它对应的Callback函数的名字就是m_file_save_Callback。依次类推了。下面我们来写打开菜单项的函数,要打开一个图片,当然要用打开对话框了。在界面编程中,打开对话框的函数是uigetfile. 关于它的详细的说明用help uigetfile命令查看。下面是打开菜单的响应函数:function m_file_open_Callback(hObject, eventdata, handles)[filename, pathname] = uigetfile( ... {'*.bmp;*.jpg;*.png;*.jpeg', 'Image Files (*.bmp, *.jpg, *.png, *.jpeg)'; ... '*.*', 'All Files (*.*)'}, ... 'Pick an image');保存.m文件,并运行程序。点击“文件”下的“打开”,会打开如下的打开对话框:选择一个文件之后,程序中的filename就是你选择的文件的文件名,pathname就是该文件所在的目录的路径。比如:filename =,pathname =C:\Documents and Settings\Administrator\My Documents\。那么获得路径之后,我们要怎么样才能读入和显示一个图片呢?读入图片可以用imread函数,而显示可以在一个坐标轴上。那么我们需要在界面上画上一个坐标轴,为了对比,我们画两个坐标轴,一个显示处理前,一个显示处理后的。并且将处理前的坐标轴的Tag属性改为axes_src,处理后的坐标轴的Tag属性为axes_dst。更改之后,保存。如下:然后在m_file_open_Callback程序原来的基础上,再添加如下的程序:axes();%用axes命令设定当前操作的坐标轴是axes_srcfpath=[pathname filename];%将文件名和目录名组合成一个完整的路径imshow(imread(fpath));%用imread读入图片,并用imshow在axes_src上显示运行程序,通过“打开”菜单项,打开一个图片。效果如下:那么如何来保存一副图片?用imwrite命令。但imwrite命令的第一个参数就是你读入的图片数据,也就是imread的返回值。这样的话,我们就要将m_file_open_Callback中的程序做一点小小的改动。将最后一句(imshow(imread(fpath))),更改为两句,如下:img_src=imread(fpath);imshow(img_src);不仅如此,我们的保存菜单的Callback函数,如何去获得打开菜单的Callback函数下的img_src变量呢?这里就要将img_src来作为一个共享的数据。许多界面编程的朋友,喜欢用global声明。我个人不喜欢这样用,因为有更好的方法。那就是用setappdata和getappdata两个函数。我们可以为界面上面的任何一个具有Tag属性的空间添加应用程序数据。当然我比较喜欢将这些共享的应用程序数据统一添加到Figure窗口上,因为这样容易记,如果一个控件一个,感觉不容易记。你在.m文件中会发现除了各个菜单项的Callback函数以外,还有两个函数:pjimage_OpeningFcn和pjimage_OutputFcn.而pjimage_OpeningFcn就相当于界面的初始化函数,而pjimage_OutputFcn则是界面的输出函数,也就是当你不运行fig,而调用.m文件时的返回值。所以,我们要在pjimage_OpeningFcn中添加如下的程序,来共享这个img_src矩阵。代码如下:setappdata(,’img_src’,0);然后,在m_file_open_Callback函数的最后写上如下程序:setappdata(,’img_src’,img_src);那么,我们在m_file_save_Callback函数中就可以像这样的来提取img_src,如下:img_src=getappdata(,’img_src’);那么保存的时候,自然会用到保存对话框了。要用保存对话框,就要用到uiputfile函数了,具体的请用help uiputfile查看。那么,保存菜单项下的程序(m_file_save_Callback),可以这样写:[filename, pathname] = uiputfile({'*.bmp','BMP files';'*.jpg;','JPG files'}, 'Pick an Image');if isequal(filename,0) || isequal(pathname,0) return;%如果点了“取消”else fpath=fullfile(pathname, filename);%获得全路径的另一种方法endimg_src=getappdata(,'img_src');%取得打开图片的数据imwrite(img_src,fpath);%保存图片下面是退出菜单项的程序的。要退出界面,只要用close函数就行了,但是通常都会有提示的。比如你如果进行了处理图片,而又没有保存处理后的图片,那么在关闭的时候就应该给出提示,询问是否进行保存。不过,在这里,我们先不做这个工作,等后面有需要的时候再写吧。因此,这里的退出菜单项的程序就是一句,如下:close();其实,用delete函数也是可以的,就是:delete();看你的心情了。但是运行程序的时候,你会发现,当你打开图片的时候,如果点“取消”按钮,那么在MATLAB的命令窗口会弹出错误,那是因为我们没有处理取消的情况。下面我们来处理下这个问题,只要把m_file_open_Callback下面的程序更改为如下程序即可:[filename, pathname] = uigetfile( ... {'*.bmp;*.jpg;*.png;*.jpeg', 'Image Files (*.bmp, *.jpg, *.png, *.jpeg)'; ... '*.*', 'All Files (*.*)'}, ... 'Pick an image');if isequal(filename,0) || isequal(pathname,0), return;endaxes();fpath=[pathname filename];img_src=imread(fpath);imshow(img_src);setappdata(,'img_src',img_src);下面我们来做一个图像二值化的一个图像处理。用上面的方法添加一个“图像处理”菜单,如下:在其下面添加一个“图像二值化”的菜单项,如下:然后,点击“OK”关闭菜单编辑器,并保存整个界面。如果我们的.m文件中没有对应的Callback时,我们可以点击上图中的“View”按钮来生成一个Callback函数。图像二值化,有一个阈值的设置,那么我们可以新建一个界面,在这个界面上放一个滑动条来设置图像二值化的阈值。同时,有一个文本,显示当前滑动条的值。那么我们新建一个空白界面,在它上面画一个Static Text和Slider控件,然后用工具栏的对齐工具(Align Objects),来对其这两个空间。如下:然后,将这个界面保存为。整个设计如下:你可以设置Static Text的FontSize属性为10,这样字体会更大一点。设置Static Text的Tag属性为txt_display,设置滚动条的Tag属性为slider_val。为了能够在滚动条滚动时,Static Text显示滚动条的值,需要在滚动条的Callback中写下如下程序,你可以在滚动条上点击右键,选择“View Callbacks”下的“Callback”直接进入滚动条的Callback函数(slider_val_Callback)。val=get(hObject,'Value');set(,'String',num2str(val));保存,运行程序,就可以滑动滚动条,而Static Text就会显示相应的值。在figure上双击打开figure(有方块的底层窗口)的属性窗口,将其Tag属性设置为“figure_im2bw”,将其Name属性设置为“设置图像二值化阈值”。然后,保存界面。运行时,如下:那么,我们想的是,当滑动条滑动时,将二值化的图像显示在中的axes_dst坐标轴上的。那么怎么办呢?首先,要做的是,当点击菜单“图像处理”下的“图像二值化”的时候,会打开。这个时候就是我们要调用的时候了。当我们调用它的时候,会返回一个句柄,而这个句柄就是指向打开的的。关于更详细的,你可以参看文件的最前面的注释,其中有这样写:% H = IM2BW_ARGS returns the handle to a new IM2BW_ARGS or the handle to% the existing singleton*.那就说明,我们可以如上的方式打开。所以在“图像二值化”的Callback函数(m_image_2bw_Callback)下,写上如下的程序:h=im2bw_args;然后,保存.还有就是,最好将和保存在一个目录下面。然后,运行,可以看到,当点击“图像二值化”的时候会打开,同时滑动条滑动时也会显示响应的值。下面来说说如何在滑动条滑动时,将滑动后的二值化图像显示到pjimage的axes_dst坐标轴中。首先,我们要获得pjimage的figure的句柄,这个可以通过findobj函数来完成,之后将返回值用guihandles来转换成一个句柄。之后,就可以用这个转化后的句柄来引用中的任何一个控件了。所以,我们在下的滑动条的Callback函数中添加如下函数:h_pjimage=getappdata(,'h_pjimage');axes();img_src=getappdata(,'img_src');bw=im2bw(img_src,val);imshow(bw);然后,在im2bw_args_OpeningFcn中添加:h_pjimage=findobj('Tag','figure_pjimage');h_pjimage=guihandles(h_pjimage);setappdata(,'h_pjimage',h_pjimage);然后,保存,运行。效果如下:但是,如果在我们没有打开图片的情况下,要是点击了“图像二值化”会出现什么问题呢?可以看到显示的图像是全黑的,完全没有意义。所以,我们可以在没有点击“打开”菜单项的时候,使“图像处理”菜单不可用。那么在的OpeningFcn中,添加如下程序:set(,'Enable','off');在“打开”菜单项的Callback函数的最后,添加如下程序:set(,'Enable','on');这样的话,只要你不点“打开”,就不能用“图像处理”菜单中的命令,效果如下:点击“打开”之后,就能使用了。下面,我们来说说前面的问题,就是询问是否保存图片的问题。首先,我们要设置两个标志:一个是图片是否被处理过了,二是图片是否被保存了。那么我们在pjimage_OpeningFcn中,添加如下的两个应用程序数据。setappdata(,'bSave',false);setappdata(,'bChanged',false);然后在“图像二值化”菜单项的Callback函数中,改变bChanged的值为true,即添加如下程序:setappdata(,'bChanged',true);由于我们要保存的是坐标轴axes_dst中的图像,而我们“文件”下的“保存”,实质上保存的是坐标轴axes_src中的图像,那怎么办呢?只好再添加一个“保存”菜单项了。这次,我们在坐标轴axes_dst中添加右键菜单。打开工具栏的菜单编辑器,选择Context Menu(上下文菜单),如下:然后,新建一个Context Menu,其Tag属性为:axes_dst_menu,如下:然后为其添加菜单项:“保存”,其Tag属性为axes_dst_menu_save.如上图。然后,在坐标轴axes_dst上右键,选择“Property Inspector”。将该坐标轴的UIContextMenu属性更改为axes_dst_menu. 如下图:然后,保存,运行。在axes_dst上点右键就能看到“保存”菜单了。下面来写其函数。[filename, pathname] = uiputfile({'*.bmp','BMP files';'*.jpg;','JPG files'}, 'Pick an Image');if isequal(filename,0) || isequal(pathname,0) return;else fpath=fullfile(pathname, filename);endimg_dst=getimage();imwrite(img_dst,fpath);setappdata(,’bSave’,true);但是你会发现,没有读入图片之前,在axes_dst点右键是有菜单的,一旦二值化之后,再次点右键就没有菜单了。但是,当我们把右键菜单axes_dst_menu,添加到figure窗口(在没有控件的地方,双击,即可打开figure的属性窗口)的UIContextMenu的时候,就不会出现上面的问题,而且一切运行正常。因为,当你添加到axes_dst之后,一旦坐标轴的内容改变,就会将右键菜单附加到父对象上。因此,如果一定需要在坐标轴上显示右键菜单,就要通过程序创建了。如何创建,咱们先不说,先说说把坐标轴axes_dst保存完毕,退出程序的时候的处理。将原来的m_file_exit_Callback更改为如下程序:bChanged=getappdata(,'bChanged');%获得是否更改bSave=getappdata(,'bSave');%获得是否保存if bChanged==true && bSave==false,%更改了,而没保存时 btnName=questdlg('您已经更改了图片,但没有保存。要保存吗?','提示','保存','不保存','保存');%用提问对话框 switch btnName, case '保存', %执行axes_dst_menu_save_Callback的功能 feval(@axes_dst_menu_save_Callback,); case '不保存',%什么也不做 endendh=findobj('Tag','figure_im2bw');%查找是否打开设置图像二值化参数窗口if ~isempty(h),%找到的话,则关闭 close(h);endclose(findobj('Tag','figure_pjimage'));%关闭主窗口下面来为程序添加一个工具栏,单击工具栏上那个的Toolbar Editor,打开如下:选择“Predefined Tools”下的Open,点击“Add”。再次选择“Save”,点击“Add”。并将Open按钮的Tag属性更改为tbl_open,Save按钮的Tag属性更改为tbl_save,如下:点“View”,来找到Open按钮的Callback,在它的下面来调用菜单中的打开菜单项的Callback,需要在Open按钮的Callback下写下如下程序:feval(@m_file_open_Callback,);用同样的方法,找到Save按钮的Callback,并在它的下面写上保存程序,但是,我们要判断一下是不是第一次保存,如果是,则用保存对话框;如果不是,我们直接保存在第一次保存的路径中就可以了。那么,我们还是需要设置几个应用程序数据的,第一个就是记录是否是第一次保存,第二个是记录第一次保存的路径。这样的话,我们在pjimage_OpeningFcn中添加如下的代码:setappdata(,'fstSave',true);setappdata(,'fstPath',0);然后,在Save按钮的Callback下,写下如下的程序:fstSave=getappdata(,'fstSave');if(fstSave==true) [filename, pathname] = uiputfile({'*.bmp','BMP files';'*.jpg;','JPG files'}, 'Pick an Image'); if isequal(filename,0) || isequal(pathname,0) return; else fpath=fullfile(pathname, filename); end img_dst=getimage(); imwrite(img_dst,fpath); setappdata(,'fstPath',fpath); setappdata(,'bSave',true); setappdata(,'fstSave',false);else img_dst=getimage(); fpath=getappdata(,'fstPath'); imwrite(img_dst,fpath);end并且,我们还需要在没有打开图片之前的“文件”下的“保存”和工具栏的“Save”按钮都不可用,只有点击“文件”下的“打开”或工具栏下的“打开”的时候,它们才可用。那么需要在pjimage_OpeningFcn中添加如下代码:set(,'Enable','off');set(,'Enable','off');并且在m_file_open_Callback下,添加如下代码:set(,'Enable','on');set(,'Enable','on');这样一个小程序,算是完成了。如果您能按照上面的步骤做完这个小小的程序的话,那么界面编程中的问题你已经掌握的差不多了。

我就说一下JAVA的GUI吧分为AWT,Swing,SWTAWT是Swing的前身,实际上是调用本地操作系统的控件。由于在不同的操作系统下,提供的控件是不一样的,AWT采用最小公约数的办法,只提供所有操作系统都有的控件。但后来SUN在Swing里除了JFrame,JWinodows,JDialog等是调用本地操作系统的控件,其它JPanel,JButton之类的都是绘出来的,所以Swing在所有平台看起来都是一样的外观。这样保持了外观一致性,但牺牲了性能。IBM做的SWT,采用的是最大公倍数的做法。SWT大部分都是用的本地操作系统的控件,一些在windows里有的控件可能在linux下没有,对这种控件才采用自己绘制的方式。SWT采用类似JAVA虚拟机的方式,在不同的平台,有不同的开发包,我们写的java代码是一样的,但不同平台下看起来外观是不一样的,但性能提升很高,和C++做的界面速度差不多。以SWT为例,基本不需要学习很多东西因为大部分别人都已经做好了,不管是按钮,菜单,选项卡。如果不是要做一个复杂的界面你需要的只是调用。

相关百科

热门百科

首页
发表服务