久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2718|回復: 2
收起左側

單片機電子音調發生器設計 含匯編語言源碼

[復制鏈接]
ID:353237 發表于 2018-6-17 14:03 | 顯示全部樓層 |閱讀模式
一、背景單片機自70年代問世以來得到蓬勃發展,目前單片機功能正日漸完善:單片機集成越來越多資源,內部存儲資源日益豐富,用戶不需要擴充資源就可以完成項目開發,不僅是開發簡單,產品小巧美觀,同時抗干擾能力加強,系統也更加穩定,使得它更加適合工業控制領域,具有更加廣闊的市場前景;提供在線編程能力,加速了產品的開發進程,為企業產品上市贏得寶貴時間。此外單片機具有性能高、速度快、體積小、價格低、穩定可靠、應用廣泛、通用性強等突出優點。單片機的設計目標主要是增強“控制”能力,滿足實時控制(就是快速反應) 的需要。無論是從事科學研究工作,還是開辦電子器件的工廠還是經營電子廠品的貿易,不僅要熟練地使用通用微機進行各種數據處理,還要把計算機技術運用到本專業領域或相關領域,既具有開發創新能力。這就要求我們要熟練地掌握單片機。單片機是一種集成在電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的計算機系統。這些電路能在軟件的控制下準確、迅速、高效地完成程序設計者實現規定的任務。二、指標要求利用JD51開發板上的按鍵S1~S4和蜂鳴器設計電子音調發生器,指標要求為:(1)利用JD51開發板上的按鍵S1~S4進行音調選擇,即按下不同的開關產生不同的音調,依次按動S1~S4 及組合按鍵,蜂鳴器發出1234567i八個音調;并在數碼管上顯示。(2)編寫2支歌曲,并可進行選擇播放。三、設計目的(1)了解計算機發聲原理。(2)熟悉鍵盤掃描電路的工作原理及編程方法。(3)掌握利用定時器結合中斷的方法來設計信號的方波輸出。(4)學會運用計數器定時器計算初值的方法計算音調對應初值。四、設計原理音節由不同頻率的方波產生,音節與頻率的關系通過查表可得。要產生音頻方波,需要算出某一音頻的周期(1/頻率),然后利用定時器對半個周期進行計時并通過某個I/0腳輸出,再利用中斷程序反相輸出信號,不斷重復這個過程就可在I/O腳得到此頻率的方波,在JD51單片機上,產生方波的I/O腳選用P2.4,通過跳線選擇器將單片機的P2.4與蜂鳴器的驅動電路相連。這樣P2.4輸出不同頻率的方波,蜂鳴器便會發出不同的聲音。另外,音樂的節拍是由延時實現的,如果1拍為0.4秒,1/4拍是0.1秒。只要設定延時時間,就可求得節拍的時間。延時作為基本延時時間,節拍值只能是它的整數倍。每個音節相應的定時器初值X可按下法計算: (1/2)*(1/f)=(12/fose)*(216-x)即 x=216-(fose/24f)其中f:音調頻率,當晶振fose=11.0592MHz時,音節“1”相應的定時器初值為x,則可得x=63777D=F921H其它的可同樣求得。                          表1                      音調      頻率(Hz)      X(HEX)        1      262      F921        2      294      F9E1        3      330      FA8C        4      349      FAD8        5      392      FB68        6      440      FBE9        7      494      FC5B          i          523          FC8F   五、Proteus仿真設計按鍵一:數碼管顯示1,同時能聽到蜂鳴器響音調1按鍵二:數碼管顯示2,同時能聽到蜂鳴器響音調2按鍵三:數碼管顯示3,同時能聽到蜂鳴器響音調3按鍵四:數碼管顯示4,同時能聽到蜂鳴器響音調4 六、設計方案及思路1總體框圖      
                          
2蜂鳴電路模塊鳴器驅動電路和89C51組成。 選擇一只壓電式蜂鳴器,壓電式蜂鳴器工作時約需要100MA驅動電流。當89C51輸出為低電平時蜂鳴器產生蜂鳴音,89C51 輸出為高電平時,蜂鳴器不發聲。七、軟件設計流程及描述根據要實現的功能,流程圖如下:熟悉定時器和鍵盤掃描電路的工作原理及編程方法。                             
1.軟件設計思路電子琴主要的工作是將按鍵的信息讀取,然后根據按鍵的數字,用計數器輸出相對應的頻率,實現電子琴的音調。程序主要為5部分,鍵盤掃描、中斷計時、數碼顯示、音樂播放、主程序,他們分別執行不同的功能。2.各部分功能介紹(1)鍵盤鍵值讀取程序鍵盤鍵值讀取程序包括鍵盤掃描、消除抖動、鍵譯碼等內容。按鍵的識別主要有兩種方法:行反轉法和行掃描法。因為鍵盤為機械開關,容易引入抖動。為了消除抖動干擾,在程序中要加入消除抖動的部分。(2)中斷計時中斷部分,中斷定時器1主要負責輸出不同頻率的方波,產生聲音,中斷定時器1主要是計時按鍵時間及按鍵間隔時間的功能,在播放音樂的時候,還擔任著播放音樂的節拍的任務。(3)音樂播放音樂播放部分主要是播放音樂,實現按鍵重播和播放程序里面的音樂的功能。(4)數碼顯示按下不同的按鍵,則數碼管顯示對應的音調數字(5)主程序主程序主要是隨時發出按鍵的聲音功能,并且通過不同P口的掃描,判斷是否是播放按鍵聲音還是播放音樂,還是繼續發出按鍵聲音。八、實驗源程序1.匯編程序:
  1. /*SB1 1音  SB2 2音   SB3 3音  SB4 4音 SB1SB2  5音   SB2SB3  6音   SB3SB4  7音   SB1SB4  i音   SB1SB3 第一首歌  SB2SB4  第二首歌 */
  2. ORG 0000H
  3.         LJMP KEYP0
  4. KEYP0: MOV R0,#00H   
  5.       CLR TR0
  6.       SETB P2.4     ;關蜂鳴器
  7.      SETB P2.3                           ;關數碼管
  8. WU:  MOV R0,P3  ;掃描鍵盤輸入
  9.     CJNE R0,#0FFH,KEYPO1         ;有輸入時跳轉
  10.           JMP WU
  11. KEYPO1:CJNE R0,#0FBH,KEYPO2  ;輸入1音,非1音跳轉
  12.   SETB P2.4     ;蜂鳴器置于高電平
  13.     MOV R3,#200
  14. MAIN01:MOV TMOD,#01H    ;初始化,工作方式1
  15.        MOV TL0,#21H     ;寫入計數初值
  16.        MOV TH0,#0F9H
  17.        SETB TR0         ;啟動計數
  18.                  
  19. WAIT1:JNB TF0,WAIT1     
  20.      CLR TF0         
  21.      CPL P2.4             ;蜂鳴器響
  22.           CLR P2.3             ;數碼管顯示1
  23.           MOV A,#11111001B
  24.                  MOV P0,A
  25.      DJNZ R3,MAIN01
  26.           LJMP KEYP0         ;返回程序KEYP0
  27.          
  28. KEYPO2:CJNE R0,#0F7H,KEYPO3  ; 輸入2音,非2音跳轉
  29. SETB P2.4        ;蜂鳴器置于高電平
  30.         MOV R3,#200  
  31. MAIN02:MOV TMOD,#01H   
  32.        MOV TL0,#0E1H         ;寫入計數初值
  33.        MOV TH0,#0F9H
  34.        SETB TR0
  35. WAIT2:JNB TF0,WAIT2
  36.      CLR TF0
  37.      CPL P2.4            ;蜂鳴器響
  38.           CLR P2.3            ;數碼管顯示2
  39.           MOV A,#10100100B
  40.                  MOV P0,A
  41.      DJNZ R3,MAIN02
  42.         LJMP KEYP0

  43. KEYPO3:CJNE R0,#0EFH,KEYPO4  ; 輸入3音,非3音跳轉
  44. SETB P2.4         ;蜂鳴器置于高電平
  45.         MOV R3,#200
  46. MAIN03:MOV TMOD,#01H      
  47.        MOV TL0,#08CH
  48.        MOV TH0,#0FAH
  49.        SETB TR0
  50. WAIT3:JNB TF0,WAIT3
  51.      CLR TF0
  52.      CPL P2.4
  53.           CLR P2.3
  54.           MOV A,#10110000B
  55.                  MOV P0,A
  56.      DJNZ R3,MAIN03
  57.         LJMP KEYP0

  58. KEYPO4:
  59. CJNE R0,#0DFH,KEYPO5           ; 輸入4音,非4音跳轉
  60. SETB P2.4
  61.         MOV R3,#200
  62. MAIN04:MOV TMOD,#01H            
  63.        MOV TL0,#0D8H
  64.        MOV TH0,#0FAH
  65.        SETB TR0
  66. WAIT4:JNB TF0,WAIT4
  67.      CLR TF0
  68.      CPL P2.4
  69.           CLR P2.3
  70.           MOV A,#10011001B
  71.                  MOV P0,A
  72.      DJNZ R3,MAIN04
  73.         LJMP KEYP0

  74. KEYPO5:        CJNE R0,#0F3H,KEYPO6        ; 輸入5音,非5音跳轉
  75. SETB P2.4
  76.         MOV R3,#200   
  77. MAIN05:MOV TMOD,#01H           
  78.        MOV TL0,#068H
  79.        MOV TH0,#0FBH
  80.        SETB TR0
  81. WAIT5:JNB TF0,WAIT5
  82.      CLR TF0
  83.      CPL P2.4
  84.           CLR P2.3
  85.           MOV A,#10010010B
  86.                  MOV P0,A
  87.      DJNZ R3,MAIN05
  88.         LJMP KEYP0

  89. KEYPO6:CJNE R0,#0E7H,KEYPO7        ; 輸入6音,非6音跳轉
  90. SETB P2.4
  91.         MOV R3,#200            
  92. MAIN06:MOV TMOD,#01H
  93.        MOV TL0,#0E9H
  94.        MOV TH0,#0FBH
  95.        SETB TR0
  96. WAIT6:JNB TF0,WAIT6
  97.      CLR TF0
  98.      CPL P2.4
  99.           CLR P2.3
  100.           MOV A,#10000010B
  101.                  MOV P0,A
  102.      DJNZ R3,MAIN06
  103.         LJMP KEYP0

  104. KEYPO7:CJNE R0,#0CFH,KEYPO8       ; 輸入7音,非7音跳轉
  105. SETB P2.4
  106.         MOV R3,#200         
  107. MAIN07:MOV TMOD,#01H
  108.        MOV TL0,#05BH
  109.        MOV TH0,#0FCH
  110.        SETB TR0
  111. WAIT7:JNB TF0,WAIT7
  112.      CLR TF0
  113.      CPL P2.4
  114.           CLR P2.3
  115.           MOV A,#11111000B
  116.                  MOV P0,A
  117.      DJNZ R3,MAIN07
  118.         LJMP KEYP0

  119. KEYPO8:CJNE R0,#0DBH,KEYPO9      ; 輸入i音,非i音跳轉
  120.        SETB P2.4
  121.            MOV R3,#200      
  122. MAIN08:MOV TMOD,#01H
  123.        MOV TL0,#08FH
  124.        MOV TH0,#0FCH
  125.        SETB TR0
  126. WAIT8:JNB TF0,WAIT8
  127.      CLR TF0
  128.      CPL P2.4
  129.           CLR P2.3
  130.           MOV A,#10000000B
  131.                  MOV P0,A
  132.      DJNZ R3,MAIN08
  133.         LJMP KEYP0
  134. KEYPO9:CJNE R0,#0EBH,KEYPO10    ;跳轉到第一首歌程序
  135.        LJMP MUSTART1
  136. KEYPO10:CJNE R0,#0D7H,JIELI     ;跳轉到第二首歌程序
  137.        LJMP MUSTART2
  138. JIELI:JMP KEYP0                 ;返回主程序

  139. MUSTART1:                      ;歌曲1的播放程序
  140.      MOV R0,#00H               ;節拍表指針置零
  141.      MOV R1,#00H               ;音符表指針置零
  142. RTAB:MOV A,R0
  143.      MOV DPTR,#RYTH
  144.      MOVC A,@A+DPTR            ;查表法將一個節拍數據取出放R2計數器中
  145.      MOV R2,A
  146. TTAB:MOV A,R1
  147.      MOV DPTR,#TONE
  148.      MOVC A,@A+DPTR
  149.      MOV R3,A                  ;取出音符表高8位
  150.      INC R1                    ;指針加1
  151.      MOV A,R1
  152.      MOV DPTR,#TONE
  153.      MOVC A,@A+DPTR
  154.      MOV R4,A                  ;取出低8位
  155.      SETB P2.4                 ;輸出相應音調的方波
  156. LOOP:MOV R5,#3BH
  157. MAIN:MOV TMOD,#01H
  158.      MOV TL0,R4
  159.      MOV TH0,R3
  160.      SETB TR0
  161. WAIT:JNB TF0,WAIT
  162.      CLR TF0
  163.      CPL P2.4
  164. MAYA:JB P3.2,MAYB             ;判斷P3.2口是否有為1
  165.      JB P3.4,MAYB             ;判斷P3.4口是否有為1
  166.      LJMP RA                  ;P3.4口為0則跳轉到程序RA
  167. MAYB:JB P3.3,JIELI            ;判斷P3.3口是否有為1
  168.      JB P3.5,JIELI            ;判斷P3.5口是否有為1
  169.      LJMP MUSTART2            ;P3.5口為0則放第二首歌
  170. RA:  DJNZ R5,MAIN             ;無打斷則繼續放第一首歌
  171.      DJNZ R2,LOOP
  172. INC R0                        ;兩個表的指針都加1
  173. INC R1
  174. CJNE R1,#88,RTAB              ;判斷是否取完
  175. LJMP KEYP0
  176. TONE:
  177. DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH
  178. DB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H
  179. DB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68H
  180. DB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BH
  181. DB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH
  182. RYTH:
  183. DB 04,04,04,04,04,04,04,04,04,04
  184. DB 04,05,04,04,04,04,04,04,04,04
  185. DB 04,04,04,06,04,04,04,07,04,04
  186. DB 04,04,04,06,04,04,04,07,04,04
  187. DB 04,04,04,04
  188. MUSTART2:         
  189.      MOV R0,#00H
  190.      MOV R1,#00H

  191. RTAB2:
  192.      MOV A,R1
  193.      MOV DPTR,#TABLE1
  194.      MOVC A,@A+DPTR
  195.      MOV R2,A
  196. TTAB2: MOV A,R1
  197.      MOV DPTR,#TONE2
  198.      MOVC A,@A+DPTR
  199.      MOV R3,A
  200.      INC R1
  201.           MOV A,R1
  202.           MOV DPTR,#TONE2
  203.           MOVC A,@A+DPTR
  204.           MOV R4,A
  205.      SETB P2.4
  206. LOOP2: MOV R5,#9BH
  207. MAIN2:
  208.       MOV TMOD,#01H
  209.      MOV TL0,R4
  210.      MOV TH0,R3
  211.      SETB TR0
  212. WAITR:JNB TF0,WAITR
  213.      CLR TF0
  214.      CPL P2.4
  215. MAYA1:JB P3.3,MAYB1
  216.       JB P3.5,MAYB1
  217.       LJMP RB
  218. MAYB1:JB P3.2,BACK
  219.       JB P3.4,BACK
  220.       LJMP MUSTART1
  221. BACK:LJMP JIELI
  222. RB:  DJNZ R5,MAIN2
  223.      DJNZ R2,LOOP2
  224.    
  225. INC R0
  226. INC R1
  227. CJNE R1,#64,RTAB2
  228. LJMP KEYP0
  229. TONE2:
  230. DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH
  231. DB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H
  232. DB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68H
  233. DB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BH
  234. DB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH
  235. TABLE1:
  236. DB 04,04,04,04,04,04,04,04,04,04
  237. DB 04,05,04,04,04,04,04,04,04,04
  238. DB 04,04,04,06,04,04,04,07,04,04
  239. DB 04,04,04,06,04,04,04,07,04,04
  240. DB 04,04,04,04

  241. END
復制代碼


電子音調發生器.rar

28.32 KB, 下載次數: 13, 下載積分: 黑幣 -5

回復

使用道具 舉報

ID:1 發表于 2018-6-20 05:39 | 顯示全部樓層
word格式文章能分享嗎?
回復

使用道具 舉報

ID:765226 發表于 2020-5-30 20:05 | 顯示全部樓層
有仿真圖嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天操人人干 | 欧美xxxⅹ性欧美大片 | 成人午夜激情 | 亚洲狠狠爱 | 91在线精品视频 | 欧美性精品 | 精品一区在线 | 国产精品一区二区视频 | 国产成人小视频 | 91精品国产欧美一区二区 | 亚洲综合首页 | 超碰人人人 | 成人免费在线观看 | 女人av | 久久久国产一区二区三区四区小说 | 成人在线国产 | 操人视频在线观看 | 欧美日韩亚洲在线 | 久久久久久久久国产成人免费 | 午夜影院| 欧美日韩在线一区 | 夜夜爽99久久国产综合精品女不卡 | 一区二区三区四区在线免费观看 | 亚洲欧美中文字幕在线观看 | 久久网站免费视频 | 黄色国产区| 精品国产一区二区国模嫣然 | 国产精品高潮呻吟久久久久 | 婷婷久久综合 | 欧美久久国产 | www狠狠干 | 黄色毛片网站在线观看 | 日韩在线看片 | 麻豆精品国产91久久久久久 | 欧美一级大片 | 91视频网| 欧美久久久久久久久中文字幕 | 国产精品18久久久久久久 | 国产sm主人调教女m视频 | 日本三级做a全过程在线观看 | aaa精品 |