基于51單片機(jī)的吉他調(diào)音器系統(tǒng)設(shè)計(jì)--實(shí)物制作.doc
《基于51單片機(jī)的吉他調(diào)音器系統(tǒng)設(shè)計(jì)--實(shí)物制作.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于51單片機(jī)的吉他調(diào)音器系統(tǒng)設(shè)計(jì)--實(shí)物制作.doc(25頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、課程設(shè)計(jì)報(bào)告課程名稱: 吉他調(diào)音器控制系統(tǒng)設(shè)計(jì)-實(shí)物制作 專業(yè)班級(jí): 姓 名: 學(xué) 號(hào): 課設(shè)時(shí)間: 指導(dǎo)教師: 批閱時(shí)間: 成 績: 目錄緒論11、總體設(shè)計(jì)方案 12、核心芯片結(jié)構(gòu)原理介紹 2 2.1、中央控制器-STC90C516RD+3 2.2、電機(jī)驅(qū)動(dòng)芯片ULN200353、模擬部分介紹 6 3.1、輸入電路 6 3.2、放大電路 6 3.3、濾波電路 8 3.4、整形輸出電路 9 3.5、模擬部分輸出波形10 3.6、模擬部分實(shí)物圖104、軟件程序編程語言及開發(fā)環(huán)境選擇115、琴弦頻率測量模塊設(shè)計(jì)11 5.1、頻率測量方法的選取11 5.2、頻率測量程序設(shè)計(jì)說明12 5.3、單片機(jī)程
2、序流程圖13 5.4、單片機(jī)程序 13 5.5、單電機(jī)實(shí)物圖 13 5.6、原件清單 13 5.7、整體電路圖 13結(jié) 論 14附錄一 15附錄二 16附錄三 21附錄四 22 緒論目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械以及各種智能機(jī)械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就
3、一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。 單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域。琴弦音頻測定儀的設(shè)計(jì)正是以單片機(jī)為核心,通過其他的外圍電路實(shí)現(xiàn)琴弦的準(zhǔn)確調(diào)弦。我們通過計(jì)算得出吉他每一根空弦音的理論音高(十二平均律的),然后看泛音調(diào)弦方法得到的音高是不是與之相等即可。對(duì)于標(biāo)準(zhǔn)音高a1=440.0000 Hz,那么按照12平均律所生成的各弦空:1弦空弦,音高e1,頻率f = 440.0000 / 2 ( 5 / 12 ) = 329.6276 Hz2弦空弦,音高b,頻率 f = 440.0000 / 2 ( 10 / 12 ) = 246
4、.9417 Hz3弦空弦,音高g,頻率f = 440.0000 / 2 ( 14 / 12 ) = 195.9977 Hz4弦空弦,音高d,頻率 f = 440.0000 / 2 ( 19 / 12 ) = 146.8324 Hz5弦空弦,音高A,頻率f = 440.0000 / 2 ( 24 / 12 ) = 110.0000 Hz6弦空弦,音高E,頻率 f = 440.0000 / 2 ( 29 / 12 ) = 82.4069 Hz1、總體設(shè)計(jì)方案從圖一可以看出,本設(shè)計(jì)可以分為四大模塊,分別為聲音采集模塊、核心控制模塊、語音模塊設(shè)計(jì)、外圍輔助電路模塊。外圍輔助電路模塊 核心控制 模塊 聲
5、音采集 模塊 圖一圖一 系統(tǒng)總框圖二、實(shí)驗(yàn)儀器: (1)聲音采集模塊的設(shè)計(jì):這部分是利用單片機(jī)測量琴弦頻率的前提,主要功能是將要采集的聲音信號(hào)轉(zhuǎn)換成可測量的電信號(hào)。要保證轉(zhuǎn)換的精度,還要處理好電路本身產(chǎn)生的諧波。電路應(yīng)該有基本的放大、濾波、比較電路的設(shè)計(jì)。 (2)核心控制模塊的設(shè)計(jì):這部分屬于系統(tǒng)的軟件部分設(shè)計(jì)。主要是控制芯片的選擇和編程語言的選擇。通過單片機(jī)控制各個(gè)子模塊的正常工作,實(shí)現(xiàn)需要的功能是需要解決的重點(diǎn)。子模塊包括:鍵盤模塊、LCD12864顯示模塊、頻率測量模塊、PC機(jī)通信模塊。(3)外圍輔助電路的設(shè)計(jì):這部分都是系統(tǒng)的硬件部分設(shè)計(jì),包括復(fù)位晶振電路,顯示電路,電機(jī)動(dòng)作電路等。需
6、要合理將這些電路準(zhǔn)確組合并能夠?qū)崿F(xiàn)各自所需的功能。根據(jù)設(shè)計(jì)任務(wù),以及方案的研究,我們最終確定了以下方案: (4)晶振和復(fù)位電路:晶振作用是為系統(tǒng)提供基本的時(shí)鐘信號(hào),通常一個(gè)系統(tǒng)共用一個(gè)晶振,便于各部分保持同步。復(fù)位是單片機(jī)的初始化操作。通過選擇的控制芯片設(shè)計(jì)合適的晶振和復(fù)位電路。 (5)串口電路:使用MAX232芯片設(shè)計(jì)一個(gè)簡單的串口下載電路,為了方便單片機(jī)程序的下載。2、核心芯片結(jié)構(gòu)原理介紹 該系統(tǒng)核心芯片主要有單片機(jī)STC90C516RD+ ,ULN2003A驅(qū)動(dòng)電機(jī)。2.1、中央控制器-STC90C516RD+ STC90C516RD+系列單片機(jī)是新一代超高速、低功耗的單片機(jī),指令代碼完
7、全兼容傳統(tǒng)8051單片機(jī),12時(shí)鐘/機(jī)器周期和6時(shí)鐘/機(jī)器周期可任意選擇,內(nèi)部集成MAX810專用復(fù)位電路,時(shí)鐘頻率在12MHz以下時(shí),復(fù)位腳可直接接地。(實(shí)物圖如圖二)。 圖二1.增強(qiáng)型6 時(shí)鐘/ 機(jī)器周期,12 時(shí)鐘/ 機(jī)器周期 8051 CPU2.工作電壓:5.5V - 3.8V(5V 單片機(jī))/3.8V - 2.4V(3V 單片機(jī))3.工作頻率范圍:0-40MHz,相當(dāng)于普通8051的 080MHz.4.用戶應(yīng)用程序空間 4K/6K/7K/8K/10K/12K/13K/16K/32K/40K/48K/56K/ 61K/字節(jié)5.片上集成 1280字節(jié)/512/256字節(jié) RAM6.通用I
8、/O口(35/39 個(gè)),復(fù)位后為: P1/P2/P3/P4 是準(zhǔn)雙向口/ 弱上拉(普通8051 傳統(tǒng)I/O 口)P0口是開漏輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為I/O 口用時(shí),需加上拉電阻。7.ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器 / 仿真器可通過串口(P3.0/P3.1)直接下載用戶程序,8K 程序3 - 5 秒即可完成一片8.EEPROM 功能9.看門狗10.內(nèi)部集成MAX810專用復(fù)位電路,外部晶體12M以下時(shí),可省外部復(fù)位電路,復(fù)位腳可直接接地。11.共3個(gè)16位定時(shí)器/計(jì)數(shù)器,其中定時(shí)器0還可以當(dāng)成2個(gè)8位定時(shí)器使用12.外部中斷4路,下降沿中斷或
9、低電平觸發(fā)中斷,Power Down模式可由外部中斷低電平觸發(fā)中斷方式喚醒13.通用異步串行口(UART),還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè)UART14.工作溫度范圍:0-75/-40-+8515.封裝:LQFP-44,PDIP-40,PLCC-44 單片機(jī)各引腳功能:(引腳圖如圖三) XTAL1(19腳):接外部晶體振蕩器的一端。當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),此腳用于外接石英晶體振蕩器和微調(diào)電容;當(dāng)使用外部時(shí)鐘 圖三 時(shí),對(duì)于HMOS單片機(jī),此引腳接地;對(duì)于CMOS單片機(jī),此引腳作為外部振蕩信號(hào)的輸入端。XTAL2(18腳):接外部晶體振蕩器的另一端,當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),此腳用于外接石英晶體振蕩器和微調(diào)電
10、容。當(dāng)使用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),此引腳接外部振蕩源;對(duì)于CMOS單片機(jī),此引腳懸空不接。89C51晶體振蕩器頻率可在6MHZ40MHZ之間選擇,常選6MHz或12MHz的石英晶體。電容的值沒有嚴(yán)格要求,但其取值對(duì)振蕩器的頻率輸出的穩(wěn)定性、大小、振蕩電路起振速度稍有影響,C1、C2可在20pF100pF之間選擇。當(dāng)外接晶體振蕩器時(shí),電容可選30pF10pF;外接陶瓷振蕩器時(shí),電容可選40pF10pF。 控制信號(hào)或與其它電源復(fù)用引腳(1)(9腳):復(fù)位端。當(dāng)輸入的復(fù)位信號(hào)持續(xù)2個(gè)以上機(jī)器周期(12個(gè)晶體振蕩周期)高電平即為有效,用于完成單片機(jī)的復(fù)位初始化操作。正常工作時(shí),此腳電平應(yīng) 0.
11、5V。在VCC發(fā)生故障、降低到電平規(guī)定值掉電期間,此引腳可接備用電源VPD(電源范圍5V0.5V),由VPD向內(nèi)部RAM供電,以保持內(nèi)部RAM中的數(shù)據(jù)。(2)(30腳):地址鎖存使能。ALE(Address Latch Enable);PROG(Program)為CPU訪問外部程序存儲(chǔ)器或外部數(shù)據(jù)存儲(chǔ)器提供地址鎖存信號(hào),將低8位地址鎖存在片外的地址鎖存器中。引腳第二功能,對(duì)片內(nèi) Flash編程,為編程脈沖輸入端。(3)(29腳):(Programmer Saving ENable),外部程序存儲(chǔ)器讀選通信號(hào)。在讀外部程序存儲(chǔ)器時(shí)有效(低電平),以實(shí)現(xiàn)外部程序存儲(chǔ)器單元的讀操作。在訪問外部數(shù)據(jù)存
12、儲(chǔ)器、訪問內(nèi)部程序存儲(chǔ)器時(shí)無效。(4)(31腳):(Enable Address/Voltage Pulse of Programming)訪問程序存儲(chǔ)控制信號(hào)。當(dāng)“0”時(shí),表示讀外部程序存儲(chǔ)器。只讀取外部的程序存儲(chǔ)器中的內(nèi)容,讀取的地址范圍為0000HFFFFH(64KB),片內(nèi)的4KB Flash 程序存儲(chǔ)器不起作用。當(dāng)“1”時(shí),表示對(duì)程序存儲(chǔ)器的讀操作是從內(nèi)部程序存儲(chǔ)器開始,并可延至外部程序存儲(chǔ)器。在PC值不超出0FFFH(即不超出片內(nèi)4KB Flash存儲(chǔ)器的地址范圍)時(shí),單片機(jī)讀片內(nèi)程序存儲(chǔ)器(4KB)中的程序,但當(dāng)PC值超出0FFFH (即超出片內(nèi)4KB Flash地址范圍)時(shí),將
13、自動(dòng)轉(zhuǎn)向讀取片外60KB(1000H-FFFFH)程序存儲(chǔ)器空間中的程序。對(duì)于EPROM(或FLASH)型單片機(jī),在EPROM編程期間,此引腳需加12.75V或21V的編程電壓。2.2、電機(jī)驅(qū)動(dòng)芯片ULN2003 引腳如圖四所示,ULN是集成達(dá)林頓管IC,內(nèi)部還集成了一個(gè)消線圈反電動(dòng)勢的二極管,可用來驅(qū)動(dòng)繼電器。它是雙列16腳封裝,NPN晶體管矩陣,最大驅(qū)動(dòng)電壓=50V,電流=500mA,輸入電壓=5V,適用于TTL COMS,由達(dá)林頓管組成驅(qū)動(dòng)電路。 圖四 ULN是集成達(dá)林頓管IC,內(nèi)部還集成了一個(gè)消線圈反電動(dòng)勢的二極管,它的輸出端允許通過電流為200mA,飽和壓降VCE約1V左右,耐壓BV
14、CEO約為36V。用戶輸出口的外接負(fù)載可根據(jù)以上參數(shù)估算。采用集電極開路輸出,輸出電流大,故可直接驅(qū)動(dòng)繼電器或固體繼電器,也可直接驅(qū)動(dòng)低壓燈泡。通常單片機(jī)驅(qū)動(dòng)ULN2003時(shí),上拉2K的電阻較為合適,同時(shí),COM引腳應(yīng)該懸空或接電源。 ULN2003是一個(gè)非門電路,包含7個(gè)單元,但獨(dú)每個(gè)單元驅(qū)動(dòng)電流最大可達(dá)350mA.資料的最后有引用電路,9腳可以懸空。 比如1腳輸入,16腳輸出,負(fù)載接在VCC與16腳之間,不用9腳。uln2003的作用:ULN2003是大電流驅(qū)動(dòng)陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中。可直接驅(qū)動(dòng)繼電器等負(fù)載。輸入5VTTL電平,輸出可達(dá)500mA/5
15、0V。 ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN達(dá)林頓管組成。該電路的特點(diǎn)如下:ULN2003的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器。ULN2003是高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動(dòng)的系統(tǒng)。3、模擬部分介紹3.1、輸入電路 電容話筒是根據(jù)電容與兩極板間距離成反比,當(dāng)振動(dòng)時(shí),電容話筒的兩極間距離變化,距離變大時(shí),因?yàn)殡娙葑冃?,所以電壓扁高,這時(shí)就產(chǎn)生了電信號(hào)。電容話筒大多需要用電極化,也有不用極化
16、的,稱為駐極體電容話筒,就是一般電話里面使用的,非常廉價(jià)。 壓電陶瓷是一種特殊的材料,它受到點(diǎn)的作用時(shí),會(huì)發(fā)生變型,相反,它發(fā)生變形時(shí),也會(huì)產(chǎn)生電。 圖五這里我們選用駐極體話筒完成設(shè)計(jì)(電路如圖五所示)。 3.2、放大電路 TLC2252是用德州儀器公司先進(jìn)的LinCMOSTM工藝制造的雙路運(yùn)算放大器,具有滿電源電壓幅度輸出性能,同時(shí)比現(xiàn)有的CMOS運(yùn)放具有更好的輸入失調(diào)電壓和更低的功耗。另外,對(duì)于這類低功耗CMOS運(yùn)放,噪聲性能得到了驚人的改進(jìn),每一級(jí)放大僅需35uA(典型值)的電源電流。而且,共模輸入電壓范圍比通常標(biāo)準(zhǔn)CMOS類型放大器更寬。為了利用這種性能上的改進(jìn)并使此器件可以適用于更寬
17、范圍的應(yīng)用,用比5mV更大的最大輸入失調(diào)電壓測試極限來規(guī)定VICR。先進(jìn)的LinCMOSTM工藝使用硅柵技術(shù)獲得輸入失調(diào)電壓的溫度和時(shí)間穩(wěn)定性,這種穩(wěn)定性遠(yuǎn)遠(yuǎn)超過了用金屬柵技術(shù)所能獲得的穩(wěn)定性。這種技術(shù)也使輸入阻抗有可能符合或超過頂柵JFET和昂貴的介質(zhì)絕緣器件的輸入阻抗;TLC2252呈現(xiàn)高輸入阻抗和低噪聲,能很好地適用于高阻抗源,例如電壓傳感器的小信號(hào)狀況。由于這些器件功耗低,所以它們?cè)谑殖直O(jiān)視和 遙感原始傳感器應(yīng)用中工作良好。此外,滿電源電壓幅度輸出特性以及單獨(dú)或分離電源工作使得這些器件在直 圖六接與模擬數(shù)字轉(zhuǎn)換器(ADC)接口時(shí)成為主要的選擇對(duì)象。所有這些特性,再結(jié)合它們的溫度性能,使
18、得TLC2252系列能理想的適用于聲納、遠(yuǎn)程傳感器、溫度控制、有源壓阻傳感器、加速計(jì)、便攜式醫(yī)學(xué)應(yīng)用、手持儀表以及許多其他應(yīng)用(引腳圖如圖六所示)。LM358內(nèi)部包括有兩個(gè)獨(dú)立的、高增益、內(nèi)部頻率補(bǔ)償?shù)碾p運(yùn)算放大器,適合于電源電壓范圍很寬的單電源使用,也適用于雙電源工作模式,在推薦的工作條件下,電源電流與電源電壓無關(guān)。它的使用范圍包括傳感放大器、直流增益模組,音頻放大器、工業(yè)控制、DC增益部件和其他所有可用單電 圖七源供電的使用運(yùn)算放大器的場合(引腳圖如圖七所示)。 由以上兩種放大器和適當(dāng)參數(shù)的電阻電容構(gòu)成兩級(jí)放大電路(電路圖如圖八所示)。 圖八3.3、濾波電路設(shè)計(jì)中運(yùn)放選擇TI產(chǎn)品典型的通用
19、四運(yùn)放LM324,LM324內(nèi)部包括有兩個(gè)獨(dú)立的、高增益、內(nèi)部頻率補(bǔ)償 的運(yùn)算放大器,適合于電源電壓范圍很寬的單電源使用, 也適用于雙電源工作模式,在推薦的工作條件下,電源電流與電源電壓無關(guān)。它的使用范圍包括傳感放大器、直流增益模塊和其他所有可用單電源供電的使用運(yùn)算放大器的場合。適用于一般的帶通濾波器的設(shè)計(jì),同時(shí)具有低功耗的功能,可設(shè)計(jì)階數(shù)相對(duì)高一些的帶通濾波器,應(yīng)用起來節(jié)省空間。 巴特沃斯帶通濾波器幅頻響應(yīng)在通帶中具有最平幅度特性,但是從通帶到阻帶衰減較慢,這里采用四階巴特沃斯帶通濾波器來對(duì)采集進(jìn)來的音頻信號(hào)進(jìn)行濾波(引腳圖如圖九所示)。LM324主要參數(shù):電壓增益 100dB單位增益帶寬
20、1MHz單電源工作范圍 3V30VDC 每個(gè)運(yùn)放功耗(V=+5V) 1mV/op.Amp輸入失調(diào)電壓 2mV(最大7mV) 圖九 輸入偏置電流 50150nA輸入失調(diào)電流 550nA共模抑制比 7090dB輸出電壓幅度 01.5VDC(單電源時(shí))輸出電流 40mA放大器間隔離度 120dB(fo:120KHz)參數(shù)選擇與計(jì)算: 對(duì)于低通濾波器的設(shè)計(jì),電容一般選取10000pF,對(duì)于高通濾波器的設(shè)計(jì),電容一般選取0.1uF,然后根據(jù)公式 R=1/2fc計(jì)算得出與電容相組合的電阻值,即得到此圖中R9、R4和R17,為了消除運(yùn)放的失調(diào)電流造成的誤差,盡量是運(yùn)放同相輸入端與反向輸入端對(duì)地的直流電阻基本
21、相等,同時(shí)巴特沃斯濾波器階數(shù)與增益有一定的關(guān)系,根據(jù)這兩個(gè)條件可以列出兩個(gè)等式:30=R15*R21/(R15+R21),R15=R21(A-1),36=R14*R19/(R14+R19),R19=R14(A-1)由此可以解出R14、R15、R19、R21,原則是根據(jù)現(xiàn)實(shí)情況稍調(diào)整電阻值保持在一定限度內(nèi)即可,不要相差太大,注意頻率不要超過運(yùn)放的標(biāo)定頻率(電路圖如圖十所示)。 圖十3.4、整形輸出電路由于單片機(jī)識(shí)別的應(yīng)該正弦波,所以需要將濾波之后的信號(hào)進(jìn)行整形得到方波信號(hào)輸入給單片機(jī)進(jìn)行測頻(電路圖如圖十一所示),R24用于調(diào)節(jié)比較電壓,根據(jù)實(shí)際情況改變比較點(diǎn)電壓。 圖十一 3.5、模擬部分輸出
22、波形 3.6、模擬部分實(shí)物圖 4、軟件程序編程語言及開發(fā)環(huán)境選擇以往的單片機(jī)系統(tǒng),其控制程序大多是用相應(yīng)單片機(jī)的匯編指令編制,其執(zhí)行效率高,但其可讀性和可移植性卻較差,直接影響其軟、硬件的擴(kuò)展和升級(jí)。C語言早期用于編寫UNIX操作系統(tǒng),是一種結(jié)構(gòu)化的語言,可產(chǎn)生緊湊代碼。C語言可用許多機(jī)器級(jí)的函數(shù)直接控制操作單片機(jī)的硬件,不必通過匯編語言。與匯編語言相比,C語言主要有以下一些優(yōu)點(diǎn)有:不要求了解單片機(jī)的指令系統(tǒng),僅要求對(duì)其存儲(chǔ)器結(jié)構(gòu)有初步了解;寄存器分配、存儲(chǔ)器尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;程序由不同的函數(shù)構(gòu)成,便于程序的結(jié)構(gòu)化和模塊化;程序的可讀性及可移植性較高;關(guān)鍵字及運(yùn)算符可用近似人
23、的思維方式使用;程序編制及調(diào)試時(shí)間顯著縮短,大大地提高了編程效率;C語言提供的庫包含許多標(biāo)準(zhǔn)的子程序,具有較強(qiáng)的數(shù)據(jù)處理能力。C語言是一種非常便于使用的計(jì)算機(jī)高級(jí)編程語言,使用C語言進(jìn)行單片機(jī) 尤其是MCS-51系列單片機(jī)的開發(fā)具有極大的優(yōu)勢。 用C51編制程序時(shí),應(yīng)遵循結(jié)構(gòu)化、模塊化的設(shè)計(jì)方法。在編程時(shí),可將任務(wù)分成若干模塊,對(duì)每個(gè)模塊分別進(jìn)行編制及調(diào)試,最后有機(jī)結(jié)合成一個(gè)完整的控制程序。Keil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、
24、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。使用C語言編程么Keil幾乎就是編程的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令編程事半功倍。5、琴弦頻率測量模塊設(shè)計(jì)5.1、頻率測量方法的選取測量頻率的方法一般分為無源測頻法、有源測頻法及電子計(jì)數(shù)法三種。無源測頻法(又可分為諧振法和電橋法),常用于頻率粗測,精度在1%左右。有源比較法可分為拍頻法和差頻法,前者是利用兩個(gè)信號(hào)線性疊加以產(chǎn)生
25、拍頻現(xiàn)象, 再通過檢測零拍現(xiàn)象進(jìn)行測頻,常用于低頻測量,誤差在零點(diǎn)幾Hz;后者則利用兩個(gè)非線性信號(hào)疊加來產(chǎn)生差頻現(xiàn)象,然后通過檢測零差現(xiàn)象進(jìn)行測頻,常用于高頻測量, 誤差在20Hz左右。以上方法在測量范圍和精度上都有一定的不足,而電子計(jì)數(shù)法主要通過單片機(jī)進(jìn)行控制。由于單片機(jī)的較強(qiáng)控制與運(yùn)算功能,電子計(jì)數(shù)法的測量頻率范圍寬,精度高,易于實(shí)現(xiàn)。本設(shè)計(jì)就是采用單片機(jī)電子計(jì)數(shù)法來測量琴弦頻率。5.2、頻率測量程序設(shè)計(jì)說明利用單片機(jī)的T0、T1的定時(shí)計(jì)數(shù)器功能,完成對(duì)輸入的信號(hào)進(jìn)行頻率計(jì)數(shù)。頻率的測量方法:通過檢測一定時(shí)間內(nèi)(1s內(nèi))輸入方波的個(gè)數(shù)計(jì)算琴弦頻率。T0主要功能時(shí)進(jìn)行計(jì)數(shù),T1是進(jìn)行計(jì)時(shí)。T
26、0是工作在計(jì)數(shù)狀態(tài)下對(duì)輸入的方波信號(hào)進(jìn)行計(jì)數(shù),但對(duì)工作在計(jì)數(shù)狀態(tài)下的T0,最大計(jì)數(shù)值為fOSC/24,由于fOSC12MHz,因此,T0的最大計(jì)數(shù)頻率為250KHz,滿足設(shè)計(jì)要求。對(duì)于頻率的概念就是在一秒時(shí)間內(nèi)輸入脈沖的個(gè)數(shù),即為頻率值。設(shè)定T1工作在定時(shí)狀態(tài)下,每定時(shí)1秒到,就停止T0的計(jì)數(shù),并從T0的計(jì)數(shù)單元中讀取計(jì)數(shù)的數(shù)值即為琴弦的頻率。T1工作在定時(shí)狀態(tài)下,最大定時(shí)時(shí)間為65ms,達(dá)不到1秒的定時(shí),所以采用定時(shí)50ms,共定時(shí)20次,即可完成1秒的定時(shí)功能。定時(shí)/計(jì)數(shù)器T0由TH0和TL0構(gòu)成,T1由TH1和TL1構(gòu)成。TMOD用于控制和確定T0,T1的功能和工作模式。TCON用于控制
27、T0、T1啟動(dòng)和停止計(jì)數(shù),同時(shí)包括T0、T1的狀態(tài)。他們屬于特殊功能寄存器,這些寄存器的內(nèi)容靠軟件預(yù)先設(shè)置。系統(tǒng)復(fù)位時(shí),寄存器的所有位都被清零。定時(shí)/計(jì)數(shù)器T0和T1都是加法計(jì)數(shù)器,每輸入一個(gè)脈沖,計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器T1為1時(shí)再輸入一個(gè)脈沖,就使計(jì)數(shù)器發(fā)生溢出,溢出時(shí),計(jì)數(shù)器回零,并置位TCON中的TF0或TF1,以表示定時(shí)時(shí)間已到或計(jì)數(shù)值已滿,向CPU發(fā)出中斷申請(qǐng)。設(shè)計(jì)數(shù)器的最大值為M(在不同的工作模式下,M可以為,或),則置入的初值X可這樣來計(jì)算。計(jì)數(shù)方式時(shí) X=M-計(jì)數(shù)值定時(shí)方式時(shí) 計(jì)數(shù)值T= (M-X)T=定時(shí)值 所以置入的初值 X=M-(定時(shí)值/T) T為計(jì)數(shù)周期,是單片機(jī)的機(jī)
28、器周期。 當(dāng)機(jī)器周期為1時(shí),工作在模式0時(shí),最大定時(shí)值為 若工作在模式1,則最大定時(shí)值為。先對(duì)TMOD寄存器賦值,以確定定時(shí)器的工作模式是0還是1,即確定機(jī)器周期,從而設(shè)置定時(shí)器/計(jì)數(shù)器初值。直接將初值寫入寄存器的TH0,TL0或TH1,TL1,再根據(jù)需要,對(duì)寄存器ET0,ET1置初值,開放定時(shí)器中斷。最后對(duì)TCON寄存器中的TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器,置位以后,計(jì)數(shù)器T0,T1即按規(guī)定的工作模式和初值進(jìn)行定時(shí)計(jì)數(shù)。5.3、單片機(jī)程序流程圖(見附錄一)5.4、單片機(jī)程序(見附錄二)5.5、單電機(jī)實(shí)物圖如圖 5.6、原件清單(見附錄三)5.7、整體電路圖(見附錄四) 結(jié) 論 本次課程設(shè)
29、計(jì)的主要內(nèi)容是吉他調(diào)音器控制系統(tǒng)設(shè)計(jì)。我們采用單片機(jī)對(duì)琴弦空弦音的頻率進(jìn)行計(jì)算判斷,并通過控制步進(jìn)電機(jī)正反轉(zhuǎn)從而調(diào)節(jié)弦松緊度,進(jìn)而使吉他空弦音頻率靠近標(biāo)準(zhǔn)音頻率。本次課程設(shè)計(jì)所做主要工作概括如下:1. 介紹課題研究的背景,提出了以單片機(jī)為控制核心的琴弦音頻測定儀的設(shè)計(jì);2. 提出了幾種頻率的測量方法,經(jīng)過比較后確定了基于8051單片機(jī)的電子計(jì)數(shù)法,這種方法測量頻率范圍寬,精度高,易于實(shí)現(xiàn);3. 詳細(xì)闡述了整個(gè)系統(tǒng)的軟件設(shè)計(jì)。包括:主程序模塊設(shè)計(jì),電機(jī)轉(zhuǎn)動(dòng)模塊、顯示模塊;4. 通過C語言對(duì)單片機(jī)進(jìn)行軟件編程,基于Keil C51集成開發(fā)環(huán)境對(duì)軟件進(jìn)行編譯調(diào)試。琴弦音頻測定儀采用高性能單片機(jī)控制,
30、性能穩(wěn)定,可靠性高,具有掉電保護(hù)功能,運(yùn)用的元件也可推廣,還能據(jù)實(shí)際要求擴(kuò)展功能,應(yīng)用廣泛,性價(jià)比高。在這段時(shí)間內(nèi),通過查閱各種書籍與網(wǎng)站,同時(shí)在指導(dǎo)老師的指導(dǎo)和同學(xué)的幫助下,完成了此次課程設(shè)計(jì)。我們掌握對(duì)所學(xué)知識(shí)得到利用,鍛煉我們的實(shí)際運(yùn)用能力,同時(shí)讓我們認(rèn)識(shí)到團(tuán)結(jié)互助在各種工作中的重要性。課程設(shè)計(jì)不僅鍛煉了我們的動(dòng)手能力,更加促進(jìn)了我們對(duì)理論聯(lián)系實(shí)際的理解,對(duì)我們今后的工作發(fā)展有著很大的促進(jìn)作用。在此感謝*老師.循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪;這次課程設(shè)計(jì)的成功離不開老師您的細(xì)心指導(dǎo)。由于本人能力有限,在設(shè)計(jì)過程中難免出現(xiàn)錯(cuò)誤,懇請(qǐng)老師多多指教,我十分樂意接受您的批評(píng)與指正
31、,本人將萬分感謝。 15numyiinpin否是根據(jù)外部采集頻率范圍選擇標(biāo)準(zhǔn)頻率比較,控制電機(jī)轉(zhuǎn)向是1s定時(shí)到否yinjie,num,T0_num置零,打開定時(shí)計(jì)數(shù)器0、1單片機(jī)初始化化 開始附錄一附錄二:#include#define uchar unsigned char#define uint unsigned intsbit pulse=P35; /T1,計(jì)外部脈沖數(shù)sbit led=P20;uint num=0,T0_num,n,yinjie,i;uchar code FFW8=0 xf1,0 xf3,0 xf2,0 xf6,0 xf4,0 xfc,0 xf8,0 xf9;/電機(jī)正轉(zhuǎn)
32、uchar code REV8=0 xf9,0 xf8,0 xfc,0 xf4,0 xf6,0 xf2,0 xf3,0 xf1;/電機(jī)反轉(zhuǎn) uint code pinpu =329,247,196,147,110,82 ; / 六弦空弦音void init() /定時(shí)計(jì)數(shù)初始化TMOD=0 x51;/T1計(jì)數(shù),T0定時(shí)TH1=0;/0; /計(jì)數(shù)初值TL1=0;/0;ET1=1; /定時(shí)器1允許 TH0=(65536-50000)/256; /計(jì)時(shí)初值TL0=(65536-50000)%256;ET0=1; /定時(shí)器0允許 TR1=1; /打開計(jì)數(shù)器 TR0=1; /打開定時(shí)器 EA=1;voi
33、d delay(uint t) uint k; while(t-) for(k=0; k123; k+); void motor_ffw(uint n) /步進(jìn)電機(jī)正轉(zhuǎn) uchar i; uint j; for (j=0; j12*n; j+) /轉(zhuǎn)n圈 for (i=0; i8; i+) /一個(gè)周期轉(zhuǎn)30度 P1 = FFWi; /取數(shù)據(jù) delay(30); /調(diào)節(jié)轉(zhuǎn)速 void motor_rev(uint n) /步進(jìn)電機(jī)反轉(zhuǎn) uchar i; uint j; for (j=0; j12*n; j+) /一個(gè)周期轉(zhuǎn)30度,轉(zhuǎn)n圈 for (i=0; i8; i+) P1 = REVi;
34、 /取數(shù)據(jù) delay(30); /調(diào)節(jié)轉(zhuǎn)速 /控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)子程序void dianji(uint num) if(num300) yinjie=pinpu0; /yinjie=329Hz if(num=328|num=329|num=330) led=0; while(1); else if(numyinjie) motor_ffw(1); /步進(jìn)電機(jī)正轉(zhuǎn) else if(numyinjie) motor_rev(1); /步進(jìn)電機(jī)反轉(zhuǎn) else if(num220) yinjie=pinpu1;/yinjie=247Hz if(num=246|num=247|num=248) led=
35、0; while(1); else if(numyinjie) motor_ffw(1); /步進(jìn)電機(jī)正轉(zhuǎn) else if(numyinjie) motor_rev(1); /步進(jìn)電機(jī)反轉(zhuǎn) else if(num165) yinjie=pinpu2; /yinjie=196Hz if(num=195|num=196|num=197) led=0; while(1); else if(numyinjie) motor_ffw(1); /步進(jìn)電機(jī)正轉(zhuǎn) else if(numyinjie) motor_rev(1); /步進(jìn)電機(jī)反轉(zhuǎn) else if(num120) yinjie=pinpu3; /y
36、injie=147Hz if(num=146|num=147|num=148) led=0; while(1); else if(numyinjie) motor_ffw(1); /步進(jìn)電機(jī)正轉(zhuǎn) else if(numyinjie) motor_rev(1); /步進(jìn)電機(jī)反轉(zhuǎn) else if(num100) yinjie=pinpu4; /yinjie=110Hz if(num=109|num=110|num=111) led=0; while(1); else if(numyinjie) motor_ffw(1); /步進(jìn)電機(jī)正轉(zhuǎn) else if(numyinjie) motor_rev(1
37、); /步進(jìn)電機(jī)反轉(zhuǎn) else if(num62) yinjie=pinpu5; /yinjie=82Hz if(num=81|num=82|num=83) led=0; while(1); else if(numyinjie) motor_ffw(1); /步進(jìn)電機(jī)正轉(zhuǎn) else if(numyinjie) motor_rev(1); /步進(jìn)電機(jī)反轉(zhuǎn) else if(num360) void time0(void) interrupt 1 /定時(shí)器0,定時(shí)1sT0_num+; /計(jì)數(shù)滿一次,T0_num加1TH0=(65536-50000)/256;TL0=(65536-50000)%256
38、;if(T0_num=20) /1s定時(shí)到 EA=0; /關(guān)總中斷 num=TH1*256+TL1; dianji(num); yinjie=0; num=0; T0_num=0; /定時(shí)器溢出次數(shù),初值設(shè)為0 TH1=0;/0XFF; /計(jì)數(shù)1次 TL1=0;/0XFF; EA=1; void main()init(); while(1);附錄三:原件類型原件參數(shù)原件個(gè)數(shù)步進(jìn)電機(jī)五線四相1電容33p2103410440.1u10.01u13u110uf5電阻47031k55.1k210k715K125k147k250k1100k2150k1470k1發(fā)光二極管LED11下載接口 Connector 91三極管90141按鍵SW-PB1芯片LM324D1STC90C516RD+1ULN2003D1MAX2321TLC22521晶振12MHz122
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。