找回密碼
         注冊會員
        搜索附件  
        MCU資訊論壇 附件中心 單片機論壇 51單片機論壇 簡易電子琴.doc

        簡易電子琴.doc

         

        單片機課程設(shè)計 簡易電子琴 共有 0 條回復(fù)件:
        課程設(shè)計報告書
        課程名稱: 單片機原理及應(yīng)用技術(shù)
        課題名稱: 簡易電子琴
        專 業(yè):
        班 級:
        學(xué) 號:
        姓 名:
        成 績:
        2009年6 月17日
        設(shè) 計 任 務(wù) 書
        一、設(shè)計任務(wù)
        1、功能及技術(shù)指標要求:
        設(shè)計一簡易電子琴,按下不同按鍵,能夠發(fā)出不同的聲音。
        2.設(shè)計內(nèi)容:
        通過每個按鍵的控制使單片機系統(tǒng)輸出不同頻率的脈沖,經(jīng)過揚聲器發(fā)出不同頻率音調(diào)。
        硬件設(shè)計:SD接單片機系統(tǒng)某一口線(如P1.0),利用P1.0輸出不同頻率的脈沖通過揚聲器發(fā)出不同頻率音調(diào)。
        軟件實現(xiàn):根據(jù)功能需求與電路結(jié)構(gòu)編寫程序,然后將該程序編譯與鏈接,以生成*.HEX文件。通過程序編譯器寫入單片機,調(diào)試運行。
        二、設(shè)計方案及工作原理
        原理
        1.音樂產(chǎn)生原理及硬件設(shè)計
        由于一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機來苞生不同的頻率非常方便,我們可以利用單片機的定時/計數(shù)器T0來苞生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。本次設(shè)計中單片機晶振為12MHZ,那么定時器的計數(shù)周期為1MHZ,假如選擇工作方式1,那T值便為T=216--5﹡105/相應(yīng)的頻率,那么根據(jù)不同的頻率計算出應(yīng)該賦給定時器的計數(shù)值,列出不同音符與單片機計數(shù)T0相關(guān)的計數(shù)值如下表所示:
        按鍵
        音階
        參數(shù)
        S1
        中音do
        108
        S2
        中音re
        102
        S3
        中音mi
        91
        S4
        中音fa
        86
        S5
        中音so
        77
        S6
        中音la
        68
        S7
        中音xi
        61
        S8
        高音do
        57

        目 錄
        第一章、 系統(tǒng)設(shè)計要求和解決方案
        第二章、 硬件實現(xiàn)
        第三章、 軟件實現(xiàn)
        第四章、 實現(xiàn)的功能
        第五章、 缺點及可能的解決方法
        第六章、 心得體會
        附錄一、參考文獻
        附錄二、硬件原理圖
        附錄三、程序流程圖

        第一章 系統(tǒng)設(shè)計要求和解決方案
        系統(tǒng)功能介紹
        利用所給鍵盤的1,2,3,4,5,6,7,8八個鍵,能夠發(fā)出8個不同的音調(diào),并且要求按下按鍵發(fā)聲,松開延時一段時間停止,中間再按別的鍵則發(fā)另一音調(diào)的聲音。
        具體過程:當(dāng)系統(tǒng)掃描到鍵盤上有鍵子被按下,則快速檢測出是那一個鍵子,然后單片機的定時器被啟動,發(fā)出一定頻率的脈沖,該頻率的脈沖經(jīng)喇叭驅(qū)動電路放大濾波后,就會發(fā)出相應(yīng)的音調(diào)。如果在前一個按下的鍵發(fā)聲的同時有另一個鍵被按下,則啟用中斷系統(tǒng),前面鍵的發(fā)音停止,轉(zhuǎn)到后按的鍵的發(fā)音程序,發(fā)出后按的鍵的音。
        設(shè)計要求:
        1. 根據(jù)課題的設(shè)計內(nèi)容,正確設(shè)計電路原理圖。
        2 . 合理排布電路元器件,正確焊接硬件電路板。
        3. 正確設(shè)計程序流程圖,正確編寫軟件程序,設(shè)計的軟件程序能夠在調(diào)試好的硬件電路上正常運行。
        4. 寫出相應(yīng)的程序,得到相應(yīng)的結(jié)果。
        第二章 硬件實現(xiàn)
        1 電路框圖
        硬件電路由鍵盤電路、8051單片機、8255擴展電路和揚聲器發(fā)聲電路組
        具體框圖見圖2-1。
        圖2-1 硬件電路框圖
        主要元器件介紹
        89CS51:
        89C51單片機管腳圖
        89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)傲除100次。該器件采用ATMEL高密度非易失存儲器制異技術(shù)制異,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器,89C2051是它的一種精簡版本。89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。
        1.主要特性:
        與MCS-51 兼容
        4K字節(jié)可編程閃爍存儲器
        壽命:1000寫/擦循環(huán)
        數(shù)據(jù)保留時間:10年
        全靜態(tài)工作:0Hz-24Hz
        三級程序存儲器鎖定
        128*8位內(nèi)部RAM
        32可編程I/O線
        兩個16位定時器/計數(shù)器
        5個中斷源
        可編程串行通道
        低功耗的閑置和掉電模式
        片內(nèi)振蕩器和時鐘電路
        2.管腳說明:
        VCC:供電電壓。
        GND:接地。
        P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
        P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
        P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲仆夫16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
        P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
        P3口也可作為AT89C51的一些特殊功能口,如下表所示:
        口管腳 備選功能
        P3.0 RXD(串行輸入口)
        P3.1 TXD(串行輸出口)
        P3.2 /INT0(外部中斷0)
        P3.3 /INT1(外部中斷1)
        P3.4 T0(記時器0外部輸入)
        P3.5 T1(記時器1外部輸入)
        P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)
        P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)
        P3口同時為閃爍編程和編程校驗接收一些控制信號。
        RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。
        ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
        /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。
        /EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
        XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
        XTAL2:來自反向振蕩器的輸出。
        3.振蕩器特性:
        XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。
        4.芯片擦除:
        整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來玩成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。
        此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。
        5.結(jié)構(gòu)特點:
        8位CPU;
        片內(nèi)振蕩器和時鐘電路;
        32根I/O線;
        外部存貯器尋址范圍ROM、RAM64K;
        2個16位的定時器/計數(shù)器;
        5個中斷源,兩個中斷優(yōu)先級;
        全雙工串行口;
        布而處理器;
        第三章 軟件實現(xiàn)
        /*ch9-1.c-簡易電子琴實驗*/
        #include //包含reg51.h文件
        Sbit speaker=P1^0; //聲明喇叭位置
        Unsigned char keys; //聲明變量
        /*聲明音階數(shù)組-- Do Re Mi Fa So La Si Do# */
        unsigned char tone[]={108102918677686157};
        void sound(unsigned char); //聲明發(fā)聲函數(shù)
        void delay8us(unsigned char); //聲明延遲函數(shù)
        //====主程序==================================================
        main() //主程序開始
        {P2=0xff; //將Port2規(guī)劃成輸入口
        while(1) //while循環(huán)
        { keys=~P2; //讀取按鈕
        switch(keys) //判斷
        { case 0x01:sound(0);break; //按下S1 發(fā) Do 音
        case 0x02:sound(1);break; //按下S2,發(fā) Re 音
        case 0x04:sound(2);break; //按下S3,發(fā) Mi 音
        case 0x08:sound(3);break; //按下S4,發(fā) Fa 音
        case 0x10:sound(4);break; //按下S5,發(fā) So 音
        case 0x20:sound(5);break; //按下S6,發(fā) La 音 case 0x40:sound(6);break; //按下S7,發(fā) Si 音
        case 0x80:sound(7);break; //按下S8,發(fā) Do#音
        }
        } //while循環(huán)結(jié)束
        } //主程序結(jié)束
        //====發(fā)聲函數(shù)============================================
        void sound(unsigned char x) //發(fā)聲函數(shù)開始
        {char i; //聲明變量
        for(i=0;i

        詳細內(nèi)容見附件
        很好很強大,正好對我這次的課程設(shè)計很有幫助 謝謝啦
        樓主貼出來的實驗和下的文檔不是一個程序啊。。。能否給一下實驗的電路圖參考?謝謝
        樓主貼出來的實驗和下的文檔不是一個程序啊。。。能否給一下實驗的電路圖參考?謝謝
        回復(fù) 4# yaomeng313


            等待處理中
        贊一個 {:13_780:} {:13_780:} {:13_780:}

        QQ|手機版|MCU資訊論壇 ( 京ICP備18035221號-2 )|網(wǎng)站地圖

        GMT+8, 2025-3-18 13:27 , Processed in 0.039191 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2024 Discuz! Team.

        返回頂部
        97热久久免费频精品99| 欧美国产精品va在线观看| 精品熟女少妇aⅴ免费久久 | 久久99国产精品99久久| 在线电影国产精品| 青青草97国产精品免费观看| 亚洲国产精品久久久天堂| 欧美精品高清在线观看| 国内精品久久久久久麻豆| 老色批午夜免费视频网站 | 国产精品九九九| 先锋资源中文字幕| 91国在线啪精品一区| 精品人妻无码专区中文字幕 | 国产精品久久成人影院| 精品91自产拍在线观看| 国模私拍视频在线| 国产精品中文字幕在线观看| 久久免费99精品国产自在现线| 无码国内精品人妻少妇蜜桃视频| 中国精品videossex中国高清| 日本高清在线精品一区二区三区| 99re这里只有精品6| 亚洲av午夜精品一区二区三区| 99国产欧美精品久久久蜜芽| 精品视频在线观看你懂的一区 | 国自产精品手机在线观看视| 伊人久久精品无码二区麻豆 | 美女扒开粉嫩的尿口| 黑人精品videos亚洲人| 日本精品一区二区三区在线视频一| 国产亚洲精品岁国产微拍精品| 国产乱码精品一区二区三| 精品少妇无码AV无码专区| 精品人妻少妇嫩草AV无码专区 | 国产一区二区三精品久久久无广告| 亚洲国产精品无码久久SM| 国产精品99久久久久久宅男| 亚洲av永久无码精品漫画 | 久久这里只有精品18| 精品久久久久久久久久久久久久久 |