您好,欢迎访问三七文档
1简易电子琴一、设计目标运用本学期学过的接口芯片,设计一个8086微机应用系统,要求系统中除CPU以外包含三个以上芯片。具体题目为简易电子琴,用小键盘演奏简单乐曲。即点击对应按键,可发出不同的音阶,从而演奏音乐。二、设计所用仪器和器件1.外设:按键扬声器示波器2.芯片:8086芯片×18253芯片×18255芯片×174HC373芯片×274HC138芯片×1三、设计内容简易电子琴,用小键盘演奏简单乐曲。四、设计过程1.设计说明芯片对应的功能为:8255A:作为键盘接口、扬声器接口、8253芯片接口。利用8255控制扬声器的开关状态,通过按键模拟电子琴的按键,接受按键的输入,设置不同的计数值,输出到8253中,给8253芯片设置不同的计数值。8253:使用其分频功能,产生乐音。接受不同的计数值,产生不同频率的波2形,从而使得扬声器产生不同的频率。此处用到其方式2。2个74HC373芯片,1个74HC138芯片,分别作为锁存器、译码器。它们是IO端口译码电路的重要组成成分。2.设计方案(1)逻辑框图扬声器示波器8255芯片8253芯片4×4按键3(2)程序流程图NY3.设计系统的硬件电路图硬件图设计与连接如下图延时关扬声器开始芯片初始化读取按键有无按键按下?取出音阶值设置8255口输出开扬声器44.代码设计#defineTCONTRO0A006H#defineTCON00A000H#defineTCON10A002H#defineTCON20A004H#defineIOCON8006H#defineIOA8000H#defineIOB8002H#defineIOC8004H//#definefeq1000000//以下是C调低音的音频宏定义5#definel_dao382//将“l_dao”宏定义为低音“1”的频率262Hz#definel_re350//将“l_re”宏定义为低音“2”的频率286Hz#definel_mi322//将“l_mi”宏定义为低音“3”的频率311Hz#definel_fa287//将“l_fa”宏定义为低音“4”的频率349Hz#definel_sao254//将“l_sao”宏定义为低音“5”的频率392Hz#definel_la227//将“l_a”宏定义为低音“6”的频率440Hz#definel_xi202//将“l_xi”宏定义为低音“7”的频率494Hz//以下是C调中音的音频宏定义#definedao191//将“dao”宏定义为中音“1”的频率523Hz#definere170//将“re”宏定义为中音“2”的频率587Hz#definemi152//将“mi”宏定义为中音“3”的频率659Hz#definefa143//将“fa”宏定义为中音“4”的频率698Hz#definesao128//将“sao”宏定义为中音“5”的频率784Hz#definela114//将“la”宏定义为中音“6”的频率880Hz#definexi101//将“xi”宏定义为中音“7”的频率523H//以下是C调高音的音频宏定义#defineh_dao96//将“h_dao”宏定义为高音“1”的频率1046Hz#defineh_re85//将“h_re”宏定义为高音“2”的频率1174Hz#defineh_mi76//将“h_mi”宏定义为高音“3”的频率1318Hz#defineh_fa72//将“h_fa”宏定义为高音“4”的频率1396Hz#defineh_sao64//将“h_sao”宏定义为高音“5”的频率1567Hz#defineh_la57//将“h_la”宏定义为高音“6”的频率1760Hz#defineh_xi51//将“h_xi”宏定义为高音“7”的频率1975Hzvoidoutp(unsignedintaddr,chardata){//WriteabytetothespecifiedI/Oport__asm{movdx,addrmoval,dataoutdx,al}}charinp(unsignedintaddr){//ReadabytefromthespecifiedI/Oportcharresult;__asm{movdx,addrinal,dxmovresult,al}returnresult;}6voiddelay(){unsignedchari,j;for(i=0;i250;i++)for(j=0;j50;j++);}unsignedchartable[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//按键对应的频率unsignedintcf[]={l_dao,l_re,l_mi,l_fa,l_sao,l_la,l_xi,duo,re,mi,fa,sao,la,xi,h_dao,h_re,h_mi,h_fa,h_sao,h_la,h_xi};voiddisplay(inti){outp(IOA,table[i]);inta=cf[i];outp(TCONTRO,0x36);intch=cf[i]/256;intcl=cf[i]%256;outp(TCON0,cl);outp(TCON0,ch);intj;for(j=0;j4;j++)//控制节拍数delay();//延时1个节拍单位}voidmain(void){unsignedchari,j,k,tmp;unsignedintcount;//储存定时器的定时常数unsignedintch,cl;//储存定时器的定时常数//Writeyourcodehereoutp(TCONTRO,0x36);//计数器0,只写计算值低8位,方式3,二进制计数outp(IOCON,0x88);outp(IOA,0xFF);while(1){j=0x0e;tmp=0;for(k=0;k4;k++){j-=k;if(j==0x08)j=0x07;outp(IOC,j);7i=inp(IOC);i=inp(IOC);i=inp(IOC);//重复几次i|=0x0f;switch(i){//键盘演奏case0xef:display(4*k);break;case0xdf:display(4*k+1);break;case0xbf:display(4*k+2);break;case0x7f:display(4*k+3);break;}}}}5.使用说明打开文件后运行仿真。用鼠标点击4×4的键盘上的按键,听到不同的音阶。有规律地点击这些按键就可以进行演奏。6.实验结果8五、分析与讨论
本文标题:计算机接口课设报告
链接地址:https://www.777doc.com/doc-2038743 .html