電子琴實訓報告_第1頁
電子琴實訓報告_第2頁
電子琴實訓報告_第3頁
電子琴實訓報告_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

單片機應(yīng)用技術(shù)實訓報告方法。二、實訓時間:15周~16周三、實訓內(nèi)容:單片機設(shè)計電子琴原理圖〔Protel〕PCB軟件調(diào)試四、-實訓步驟:1.分析、繪制原理圖;PCB板4.C程序;5.Proteus仿真調(diào)式。五、結(jié)果分析:設(shè)計思路:單片機電子琴設(shè)計時,最小系統(tǒng)是必不行少的,按鍵比較多,為了節(jié)約I/O口,按鍵承受了4*4矩陣式按鍵,輸出是通過P1口的音頻放大電路輸出;在編程序時,先要確定按下一個按鍵就會有一個對應(yīng)的音輸出,就想到要用到按鍵識別程序,由于有12個按鍵,就用到數(shù)碼管的值,使得按鍵按下會有對應(yīng)的音和對應(yīng)的數(shù)值輸出。原理圖4*4距陣試按鍵,音頻放大電路構(gòu)成。8051經(jīng)過脈沖電路輸入聲音,通過三極管放大電路放大聲音輸出。PCB板PCB板,區(qū)分好電源線和一般導線的粗細,要留意要將電源線和地線設(shè)置DRC規(guī)章檢查。U1C1D1R5 C2R6Q2LS1D2電路分析:將原理圖繪制好,將編好的程序放進at89c51單片機里,Proteus就可以對電驅(qū)動電路放大濾波后,就會發(fā)出相應(yīng)的音調(diào),并數(shù)碼顯示管顯示相應(yīng)的數(shù)值。掌握鍵盤的SW-0~SW-11十二個鍵能發(fā)出十二個不同的音調(diào),按下按鍵發(fā)聲,松開延時一段時間停頓。假設(shè)在前一個按下的鍵發(fā)聲的同時有另一個鍵被按下轉(zhuǎn)到后按的鍵的發(fā)音程序,發(fā)出后按的鍵的音?!?〕C程序#include<reg51.h> //包含頭文件reg51.h,定義了MCS-51單片機的特別功能存放器#defineucharunsignedcharsbitP1_0=P1^0; //定義位名稱〔P1.0外接揚聲器〕ucharfind,temp,STH0,STL0,keyvalue;ucharcodedisplay[]= //顯示對應(yīng)按鍵號字型碼{0x11,0xd7,0x32,0x92, //0,1,2,30xd4,0x98,0x18,0xd3, //4,5,6,70x10,0x90};//,0x50,0x1c};//8,9,A,b//0x39,0x91,0x30,0x78};//c,d,e,Funsignedintcodetab[]= //定時半周期的初始值{64021,64103,64260,64400, //345664524,64580,64684,64777, //7,12364820,64898,64968,65030}; //4567ucharline[4]={0xf7,0xef,0xdf,0xbf};voiddelay50ms{uchari; //50ms函數(shù)for(i=0;i<1;i++){TMOD=0x11; //T11TH1=0x3c; //設(shè)置定時器初值TL1=0xb0;TR1=1; //啟動定時器T1while(!TF1); //查詢計數(shù)是否溢出,即50ms定時時間到,TF1=1TF1=0; } //50ms定時時間到,將定時器溢出標志TF1由軟件清零}voiddelay_t(uchart) //函數(shù)名:delay_t〔25.6s〕{uchari; //形式參數(shù):unsignedchari;延時時間為50msfor(i=0;i<t;i++)delay50ms; //承受全局變量t作為循環(huán)掌握變量}ucharkeyscan(void); //按鍵掃描聲明voiddelay(uchari);intmain(void) //主函數(shù){TMOD=0x01; //T01ET0=1; //允許T0中斷EA=1; //開總中斷find=0; //有鍵按下標志位TR0=0;while(1){keyvalue=keyscan; //讀入按鍵if(keyvalue!=-1) //有鍵按下{ P3=0x7f; //選中P3.7掌握的數(shù)碼管P0=display[keyvalue%10]; //顯示按鍵個位delay(20230); //延時20msP3=0xbf; //選中P3.6掌握的數(shù)碼管P0=display[keyvalue/10]; //顯示按鍵十位delay(20230); //延時20ms// P0=display[keyvalue]; //顯示字型碼并送到P0口STH0=tab[keyvalue]/256; //找出鍵對應(yīng)的頻率的時間,作為定時器中斷初始值STL0=tab[keyvalue]%256; //依據(jù)鍵值,取出定時半周期的初始值TR0=1; //啟動定時器T0delay_t(20); //1sTR0=0; //1s延時時間到,將定時器溢出標志位TF0清零P3=0xff; //同時將P3口復(fù)位}}}voidISR_t0(void)interrupt1using0 // interrupt11〔定時/計數(shù)T0〕的中斷函數(shù){TH0=STH0; //載入定時半周期的初始值TL0=STL0;P1_0=~P1_0; //發(fā)音}ucharkeyscan(void) //函數(shù)功能:用掃描法讀P2外接4×4鍵盤;函數(shù)返回:按下鍵:返回鍵值、如無鍵按下:返回-1。{uchari,m,n;find=0; //有鍵按下的標志P2=0xff; //將P2口取出〔低四位做輸入口,先輸出全1〕for(i=0;i<4;i++) //使P2_0~P2_3分別為低電平,這樣可以推斷四列有沒有鍵按下{P2=line[i]; //循環(huán)四次,掃描四列temp=~P2; //讀行值,并取反temp=temp&0x07; //屏蔽掉行值高五位if(temp!=0x00) //推斷有無鍵按下,為0則無鍵按下{delay50ms; //50ms去抖temp=~P2; //再次讀讀行值,并取反temp=temp&0x07; //屏蔽掉行值高五位}if(temp!=0x00) //0則無鍵按下{m=i; //保存列號至m變量find=1; //置找到按鍵標志switch(temp) //推斷哪一行有鍵,記錄行號到n變量{case0x01:n=0;break; //第0行有鍵按下case0x02:n=1;break; //第1行有鍵按下case0x04:n=2;break; //第2行有鍵按下//case0x08:n=3;break;//3行有鍵按下default:break;}}}if(find==0)return-1; //沒有鍵按下就返回-1elsereturn(n*4+m); //否則返回取得的按鍵值,鍵

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論