日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
51單片機(jī)實(shí)現(xiàn)的簡易電子琴
51單片機(jī)實(shí)現(xiàn)的簡易電子琴
 更新時(shí)間:2009-7-9 16:52:54  點(diǎn)擊數(shù):0
【字體: 字體顏色
采用查表程序進(jìn)行查表時(shí),可以為這個(gè)音符建立一個(gè)表格,有助于單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù):TABLE DW 64580,64684,64777,64820,64898,64968,65030         源程序:方案一:產(chǎn)生按鍵音符  ORG 0000H        LJMP MAIN        ORG 000BH        LJMP BREAKMAIN:  MOV TMOD,#01H       ;設(shè)置定時(shí)器0的工作方式        SETB EA       SETB ET0               ; 設(shè)置定時(shí)器0中斷       SETB TR0               ; 啟動(dòng)定時(shí)器0WAIT1: LCALL KEY             ; 調(diào)用KEY子程序,判斷有鍵按下否?第幾個(gè)鍵?       CLR EA                 ;屏蔽中斷       CJNE R3,#00H,WAIT1     ;如果R3=0,表示有鍵按下       MOV A,22H              ;將22H里存放的按鍵號(hào)送給A       RL A                   ; 因?yàn)椴楸砝锒际亲郑缘贸?查得數(shù)據(jù)       MOV DPTR,#TABLE      ;指向表頭       MOVC A,@A+DPTR      ; 查表       MOV TH0,A             ;將數(shù)據(jù)高位送TH0       MOV 21H,A             ; 將高位備份       MOV A,22H             ;將22H里存放的按鍵號(hào)送給A       RL A                   ;因?yàn)椴楸砝锒际亲,所以得?查得數(shù)據(jù)       INC A                  ;取低位數(shù)據(jù)       MOVC A,@A+DPTR       MOV TL0,A       MOV 20H,AWAIT2: LCALL KEY       SETB EA       CJNE R3,#00H,WAIT1       JMP WAIT2KEY:   MOV R3,#00H          ; KEY子程序,判斷有鍵按下否?第幾個(gè)鍵?       MOV R1,#0FFH       MOV R0,#00H       MOV A,R1       MOV P2,A       MOV A,P2       CLR C       CPL C               ;利用標(biāo)志位CY來判斷是哪個(gè)鍵按下       MOV R2,#08HWAIT3: RLC A               ;移位判斷       JNC STORE       INC R0              DJNZ R2,WAIT3STORE: MOV 22H,R0        ; 將按鍵號(hào)存22H,R3=0有鍵按下       MOV R3,#00H       RETBREAK: PUSH ACC          ;  中斷產(chǎn)生方波,從P1.0口輸出       PUSH PSW       MOV TL0,20H       MOV TH0,21H       CPL P1.0       POP PSW       POP ACC       RETITABLE: DW 65030,64968,64898,64820,64777,64684,64580 ; 7,6,5,4,3,2,1       END方案二:產(chǎn)生按鍵音符       ORG 0000H       SJMP START       ORG 000BH       AJMP INT_0       ORG 0030HSTART: MOV P1,#00H       SETB EA       SETB ET0                       ;計(jì)數(shù)器0       MOV TMOD,#02H       MOV TH1,#09CH       MOV TL1,#09CH                 ;定時(shí)器初植       CLR TR0                        ;定時(shí)器不允許SCAN:                                 ;鍵盤掃描       MOV A,P2                   ;判斷鍵盤按下,跳到SCAN_1,若未按,繼續(xù)掃描       CJNE A,#0FFH,SCAN_1       NOP       SJMP SCANSCAN_1:ACALL DELAY ;是不是真的要按下?如果是,則跳轉(zhuǎn)SU_KEY查詢是哪個(gè)按下?       MOV A,P2       CJNE A,#0FFH,SU_KEY       NOP       SJMP SCANSU_KEY:JNB P2.1,MU_1                  ;判斷是哪個(gè)鍵按下?       JNB P2.2,MU_2       JNB P2.3,MU_3       JNB P2.4,MU_4       JNB P2.5,MU_5       JNB P2.6,MU_6       JNB P2.7,MU_7       SJMP SCAN                                       ;R1信號(hào)周期MU_1:  MOV R1,#19                ;如果第一個(gè)按鍵按下,則R1=19,同時(shí)程序轉(zhuǎn)NEXT       SJMP NEXTMU_2:  MOV R1,#17                    SJMP NEXTMU_3:  MOV R1,#15       SJMP NEXTMU_4:  MOV R1,#14       SJMP NEXTMU_5:  MOV R1,#13       SJMP NEXTMU_6:  MOV R1,#11       SJMP NEXTMU_7:  MOV R1,#10       SJMP NEXTNEXT:  MOV A,R1                       MOV R0,A       SETB TR0                       ;啟動(dòng)定時(shí)器0                         NEXT_1:MOV A,P2                     ; 沒鍵按下繼續(xù)執(zhí)行,有鍵按下,返回讀引腳       CJNE A,#0FFH,NEXT_1       ACALL DELAY       MOV A,P2                       ;真的沒鍵按下?       CJNE A,#0FFH,NEXT_1       CLR TR0                        ;不響       AJMP SCAN                     ;掃描鍵盤去INT_0:                                 ;中斷程序      DJNZ R0,RE                      ;R0不等于0時(shí),返回      CPL P1.0      MOV A,R1      MOV R0,ARE:   RETIDELAY:MOV R7,#100                    ;延長時(shí)間等待,鍵盤消抖D1:   MOV R6,#10D2:   DJNZ R6,D2      DJNZ R7,D1      RET      END 生日快樂歌:(擴(kuò)展功能部分程序)       ORG 0000H      JMP MAIN      ORG 000BH      JMP TT0MAIN: MOV TMOD,#01H               ;設(shè)置定時(shí)器0工作方式      MOV IE,#82H                    ;設(shè)置中斷MAIN0:MOV 30H,#00HNEXT: MOV A,30H      MOV DPTR,#TABLE              ;查表      MOVC A,@A+DPTR      MOV R2,A      JZ STOP      ANL A,0FH      MOV R5,A      MOV A,R2      SWAP A      ANL A,#0FH      JNZ SING      CLR TR0      JMP W1SING: DEC A      MOV 22H,A      RL A      MOV DPTR,#TABLE1                   ;查表      MOVC A,@A+DPTR      MOV TH0,A      MOV 21H,A      MOV A,22H      RL A      INC A      MOVC A,@A+DPTR      MOV TL0,A      MOV 20H,A      SETB TR0W1:   CALL DELAY      INC 30H      JMP NEXTSTOP: CLR TR0                  JMP MAIN0TT0:  PUSH ACC                            ;中斷服務(wù)程序      PUSH PSW      MOV TL0,20H      MOV TH0,21H      CPL P1.0      POP PSW      POP ACC      RETIDELAY:MOV R7,#2                      ;延時(shí)187ms W2:  MOV R4,#187 W3:  MOV R3,#248      DJNZ R3,$      DJNZ R4,W3      DJNZ R7,W2      DJNZ R5,DELAY      RETTABLE1:DW 64260,64400,64524,64580        ;音符計(jì)數(shù)植       DW 64684,64777,64820,64898       DW 64968,65030,65058,65110DW 65157,65178,65217  TABLE:DB 82H,01H,81H,94H,84H           ;節(jié)拍表       DB 0B4H,0A4H,04H       DB 82H,01H,81H,94H,84HDB 0C4H,0B4H,04H         DB 82H,01H,81H,0F4H,0D4H       DB 0B4H,0A4H,94H       DB 0E2H,01H,0E1H,0D4H,0B4HDB 0C4H,0B4H,04H         DB 82H,01H,81H,94H,84H       DB 0B4H,0A4H,04H       DB 82H,01H,81H,94H,84HDB 0C4H,0B4H,04H         DB 82H,01H,81H,0F4H,0D4H       DB 0B4H,0A4H,94H       DB 0E2H,01H,0E1H,0D4H,0B4H       DB 0C4H,0B4H,04H       DB 00HEND
一、設(shè)計(jì)題目:設(shè)計(jì)一簡易電子琴,要求能夠發(fā)出1、2、3、4、56、7等七個(gè)音符。使用元件:AT89C51、LM324,喇叭,按鍵等 二、 設(shè)計(jì)目的  1)能夠?qū)﹄娮?a target="_blank" class="wordstyle">電路、電子元器件、印制電路板等方面的知識(shí)有進(jìn)一步的認(rèn)識(shí),獨(dú)立對(duì)其進(jìn)行測(cè)試與檢查。(2)熟悉8051單片機(jī)的內(nèi)部結(jié)構(gòu)和功能,合理使用其內(nèi)部寄存器,能夠完成相關(guān)軟件編程設(shè)計(jì)工作。(3)為實(shí)現(xiàn)預(yù)期功能,能夠?qū)ο到y(tǒng)進(jìn)行快速的調(diào)試,并能夠?qū)Τ霈F(xiàn)的功能故障進(jìn)行分析,及時(shí)修改相關(guān)軟硬件。(4)對(duì)軟件編程、排錯(cuò)調(diào)試、焊接技術(shù)、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。 三、系統(tǒng)硬件圖       流程圖:                            原理:(一)   音樂產(chǎn)生原理及硬件設(shè)計(jì)由于一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對(duì)于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。本次設(shè)計(jì)單片機(jī)晶振為12MHZ,那么定時(shí)器的計(jì)數(shù)周期為1MHZ,假如選擇工作方式1,那T值便為T= 216--5﹡105/相應(yīng)的頻率 ,那么根據(jù)不同的頻率計(jì)算出應(yīng)該賦給定時(shí)器的計(jì)數(shù)值,列出不同音符與單片機(jī)計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如下表所示:
音符頻率(HZ)簡譜碼(T值)
中 1 DO52364580
中 2 RE58764684
中 3 M65964777
中 4 FA69864820
中 5 SO78464898
中 6 LA88064968
中 7 SI98865030
  • 上一篇: 單片機(jī)與TA8435的步進(jìn)電機(jī)細(xì)分控制
  • 下一篇: DTMF專用芯片MT8880在通信網(wǎng)數(shù)據(jù)傳輸中的應(yīng)用
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1