《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于單片機AT89C2051的電子琴
基于單片機AT89C2051的電子琴
摘要: 對于AT89C2051單片機來說要產生一定頻率的方波大致是先將某口線輸出高電平然后延時一段時間再輸出低電平,如此循環的輸出就會產生一定頻率的方波,通過改變延時的時間就可以改變輸出方波的頻率
Abstract:
Key words :

  聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線不斷的輸出“高”“低”電平,則在該口線上就能產生一定頻率的方波,將該方波接上喇叭就能發出一定頻率的聲音,若再利用程序控制“高”“低”電平的持續時間,就能改變輸出波形的頻率,從而改變音調。

C調時各音符頻率

  樂曲中,每一音符對應著確定的頻率,表1給出C調時各音符頻率。如果單片機某個口線輸出“高”“低”電平的頻率和某個音符的頻率一樣,那么將此口線接上喇叭就可以發出此音符的聲音。

  本系統就是根據此原理設計,對于AT89C2051單片機來說要產生一定頻率的方波大致是先將某口線輸出高電平然后延時一段時間再輸出低電平,如此循環的輸出就會產生一定頻率的方波,通過改變延時的時間就可以改變輸出方波的頻率,而單片機延時主要有兩種方法:

  第一種方法是使用循環語句來實現延時,讓單片機循環的執行某條指令然后根據單片機每條指令運行的時間以及循環的次數來計算延時時間。如下所示:

使用循環語句來實現延時

  在上面的延時程序中可以看出:DJNZ指令執行時間為2個機器周期,MOV指令執行時間為1個機器周期,對于單片機的晶振頻率為12MHz時機器周期為1μs。因此可以根據這些指令的執行時間和每條指令的循環次.數計算出以上的延時程序延時時間大約為50ms。但這種方法的計算的延時時間不是很準確并且為達到一定的延時時間先必須進行很復雜的運算。所以在延時時間要求不嚴格的時候才采用這種方法。但對于電子琴電路由于每個音符的頻率值要求比較嚴格,變化范圍不能太大,因此產生方波的頻率也要求比較嚴格,不能采用延時程序來產生此方波。

  第二種方法是使用單片機的定時/計數器延時。AT89C2051單片機內部有兩個16位的定時/計數器T0和T1,單片機的定時/計數器實際上是個計數裝置它既可以對單片機的內部晶振驅動時鐘計數也可以對外部輸入的脈沖計數,對內部晶振計數時稱為定時器,對外部時鐘計數時稱為計數器。當對單片機的內部晶振驅動時鐘計數時,每個機器周期定時/計數器的計數值就加1,當計數值達到計數最大值時計數完畢并通知單片機的CPU;對外部輸入的時鐘信號計數時,外部時鐘的每個時鐘上升沿定時/計數器的計數值就加1,當計數值達到計數最大值時計數完畢并通知單片機的CPU。因此,如果知道單片機的機器周期或者外部輸入時鐘信號的周期,單片機就可以根據定時器的計數值計算出定時的時間。用此方法定時十分準確,想得到多大的延時時間就可以給定時器賦一定的計數初值,定時器從預先設置的計數初值開始不斷增1當增加到計數最大值時計數完畢,調整計數初值的大小就可以調整定時器定時的時間,從而達到準確的延時。本系統中就采用第二種方法通過定時/計數器延時。

  本系統的具體電路如右圖所示。圖中P1.1-P1.7分別接7個按鍵對應著樂曲中的1、2、3、4、5、6、7七個音符。P3.6口通過功率放大芯片LM386與喇叭相連。當P1.1~P1.7中有一個按鍵按下時單片機便執行相應的子程序對定時器賦一個計數初值同時使P3.6口輸出高電平。當定時器定時結束時將P3.6口的值取反并重新賦計數初值繼續計數,再次計完時再將P3.6口的值取反再賦初值計數,如此循環便在P3.6口產生一定頻率的方波,LM386將此方波經過功率放大后通過喇叭輸出便產生對應音符的聲音。按不同的按鍵單片機便執行不同的子程序給定時器賦不同的初值得到不同頻率的方波從而輸出不同的聲音,因此按一個按鍵輸出一種音符。
在單片機的特殊功能寄存器中有6個寄存器(TH1、TH0、TL1、TL0、TMOD、TCON)是用來控制單片機的定時器的,通過編程對這些特殊功能寄存器的讀寫就可以控制單片機的兩個定時器T0、T1。當單片機復位時這6個寄存器默認值都是00H。

  (一)定時/計數器的工作方式及控制字

  特殊功能寄存器中TMOD和TCON是定時器的方式控制寄存器。圖2為TMOD寄存器的內部結構,圖3為TCON寄存器的內部結構。TMOD和TCON是寄存器的名稱,我們在寫程序時就可以直接用這個名稱來指定它們,當然也可以直接用它們的地址89H和88H來指定它們(其實用名稱也就是直接用地址,匯編軟件幫你翻譯一下而已)。

TCON寄存器的內部結構

  從圖2中可以看出,TMOD被分成兩部份,每部份4位。分別用于控制T1和T0。

  從圖3中可以看出,TCON也被分成兩部份,高4位用于定時/計數器,低4位則用于中斷。

  單片機定時/計數器有四種工作方式,方式0、方式1、方式2、方式3,除方式3外,T0和T1有完全相同的工作狀態,下面以T1為例,分述各種方式的特點和用法。圖4為定時/計數器T1在工作方式0下的內部結構圖。

   從圖4中可以看出計數脈沖要進入計數器TR1(或TR0)要為1,開關才能合上,脈沖才能過來。因此,TR1(O)稱之為運行控制位,可用指令SErB來置位以啟動計數器,定時器運行,用指令CLR來關閉定時/計數器的工作。當計數脈沖進入計數器后,計數脈沖加到TL1的低5位,從預先設置的計數初值開始不斷增1。TL1計滿后,向THl進位。當TL1和TH1都計滿后,置位T1的定時器回零標志TF1,從此表明定時時間或計數次數已到,單片機可以根據標志位判斷定時器的狀態,從而執行相應的程序。

 

  1.工作方式0

  定時器,計數器的工作方式O稱之為13位定時/計數方式。它由TL(1/0)的低5位和TH(0/1)的8位構成13位的計數器,此時TL(1/0)的高3位未用。

  對于定時器的工作模式可以根據定時器的寄存器TMOD來設置:

 ?、費1M0:定時/計數器共有四種工作方式,就是用M1M0來控制的,2位正好是四種組合。

 ?、贑/T:定時/計數器即可作定時用也可用計數用,如果C/T為O就是用作定時器(開關往上打),如果C/T為1就是用作計數器(開關往下打)。一個定時/計數器同一時刻要么作定時用,要么作計數用,不能同時用的。

  ③GATE:當我們選擇了定時或計數工作方式后,定時/計數脈沖卻不一定能到達計數器端,中間還有一個開關,顯然這個開關不合上,計數脈沖就沒法過去,那么開關什么時候過去呢?有兩種情況

  GATE=0,分析一下邏輯,GATE非后是1,進入或門,或門總是輸出1,和或門的另一個輸入端INT1無關,在這種情況下,開關的打開、合上只取決于TR1,只要TR1是1,開關就合上,計數脈沖得以暢通無阻,而如果TR1等于0則開關打開,計數脈沖無法通過,因此定時/計數是否工作,只取決于TR1。

  GATE=1,在此種情況下,計數脈沖通路上的開關不僅要由TR1來控制,而且還要受到INT1引腳的控制,只有TRl為1,且INT1引腳也是高電平,開關才合上,計數脈沖才得以通過。這個特性可以用來測量一個信號的高電平的寬度。

  2.工作方式1

  工作方式1是16位的定時/計數方式,將M1M0設為01即可,其它特性與工作方式0相同。

  3:工作方式2

  8位自動裝入時間常數方式。由TL1構成8位計數器,TH1僅用來存放時間常數??磮D5所示,每當計數溢出,就會打開T(0/1)的高、低8位之間的開關,計預置數進入低8位。這是由硬件自動完成的,不需要由人工干預。通常這種式作方式用于波特率發生器,用于這種用途時,定時器就是為了提供一個時間基準。計數溢出后不需要做事情,要做的僅僅只有一件,就是重新裝入預置數,再開始計數,而且中間不要任何延遲,可見這個任務用工作方式2來完成是最妙不過了。

  4.工作方式3

  2個8位的計數器,只適合于定時器0。這種式作方式之下,定時/計數器0被拆成2個獨立的定時/計數器來用。其中,TL0可以構成8位的定時器或計數器的工作方式,而THO則只能作為定時器來用。我們知道作定時、計數器來用需要控制位TR0,計滿后溢出需要有溢出標記TF0。T0被分成兩個來用,那就要兩套控制及溢出標記,TLO還是用原來的T0的標記,而TH0則借用T1的標記。如此T1就無標記、控制可用因此一般只有在T1以工作方式2運行(當波特率發生器用)時,才讓T0工作于方式3的。

  (二)定時器/計數器的定時/計數范圍

  工作方式O:13位定時/計數方式,因此,最多可以計到2^13,也就是8192次。對于12MHz的晶振,單片機的機器周期是1us。則工作方式0最大定時時間是8.192us。

  工作方式1:16位定時/計數方式,因此,最多可以計到2^16,也就是65536次。對于12MHz晶振,工作方式1最大定時時間是65536μs。

  工作方式2和工作方式3,都是8位的定時/計數方式,因此,最多可以計到2^8,也說是256次。對于12MHz晶振,工作方式1最大定時時間是256μs。

  計數初值的計算方法:用最大計數量減去需要的計數次數即可。例:如果T0運行于定時狀態,單片機的晶振是12MHz,要求定時lOOus,那么定時器要計100個機器周期,當TO工作在工作方式O時計數初值應該是8192—100=8092;工作在方式1時的計數初值應該是65536-100=65436;工作在方式2,3時的計數初值應該是256—100=156。

  系統軟件流程圖如圖所示

系統軟件流程圖

   開機時。第一步是對定時器T0進行初始化,設定它的工作狀態(對于本系統將T0設定為工作方式O);然后判斷是否有鍵按下,如果沒有按鍵按下,繼續判斷,如果有按鍵按下,則判斷是哪個鍵按下;再根據按鍵的功能將計數初值裝入定時器T0中中并啟動T0,當T0定時完畢后,重新裝入計數初值繼續定時并將P3.6取反,再次定時完畢后再一次的裝入計數初值繼續定時并將P3.6取反,一直循環此操作直到按鍵釋放為止,按鍵釋放后停止T0工作并再次判斷是否又有按鍵按下,并繼續執行以前的過程。

 

  定時器T0工作在方式0,13位計數方式所以最大的計數次數為2^13=8192次,由于單片機的晶振是12MHz則機器周期是1μs,即定時器最大可以定時8192μs。各個音符周期的一半即高電平或低電平持續的時間就是定時器需要定時的時間,所以對于各個音符的計數初值計算方法如下:

設音符的頻率為f,則計數初值=8192一各個音符的周期=8192-音符的頻率

  計數初值如表2所示:

計數初值

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          av成人动漫| 亚洲精品综合| 小黄鸭精品密入口导航| 欧美福利电影在线观看| 久久国产精品99国产| 国产精品wwwwww| 欧美成人a∨高清免费观看| 久久久亚洲欧洲日产国码αv| 欧美日韩精品欧美日韩精品| 欧美系列一区| 国产午夜精品在线观看| 国产一区二区高清不卡| 欧美成黄导航| 久久精品伊人| 欧美日韩国产在线看| 欧美理论大片| 性色一区二区| 亚洲国产另类精品专区| 久久综合久久综合这里只有精品| 欧美成人亚洲| av成人手机在线| 亚洲精品欧美在线| 亚洲免费视频中文字幕| 欧美激情亚洲国产| 校园激情久久| 宅男66日本亚洲欧美视频| 欧美成人一品| 欧美日韩一区二区三区免费看| 136国产福利精品导航| 亚洲理伦电影| 亚洲国产裸拍裸体视频在线观看乱了| 欧美国产日韩一区二区三区| 欧美电影免费观看高清完整版| 另类成人小视频在线| 国产一区二区三区在线播放免费观看| 欧美好吊妞视频| 国产一区二区三区四区在线观看| 蜜桃久久精品乱码一区二区| 亚洲一区免费在线观看| 国产亚洲精品福利| 国产精品magnet| 欧美精品一区在线观看| 欧美成人黄色小视频| 99精品久久久| 欧美精品七区| 欧美区国产区| 国产亚洲日本欧美韩国| 欧美+亚洲+精品+三区| 在线看视频不卡| 日韩视频亚洲视频| 欧美日本在线观看| 亚洲免费视频成人| 欧美精选在线| 美女视频网站黄色亚洲| 日韩一区二区精品在线观看| 在线视频一区观看| 欧美午夜精品久久久久免费视| 午夜亚洲福利| 99精品热视频只有精品10| 亚洲欧洲三级| 久久精品国产99国产精品澳门| 精东粉嫩av免费一区二区三区| 久久久久综合一区二区三区| 国语自产精品视频在线看8查询8| 国内外成人免费激情在线视频| 日韩亚洲欧美一区二区三区| 亚洲男人影院| 亚洲性线免费观看视频成熟| 毛片精品免费在线观看| 亚洲国产精品成人综合色在线婷婷| 亚洲精品人人| 亚洲一区二区综合| 欧美涩涩网站| 国产精品久久久久久久久搜平片| 国产日本亚洲高清| 免费观看在线综合| 欧美国产日韩一二三区| 欧美日韩国产三区| 久久国内精品自在自线400部| 欧美日韩精品伦理作品在线免费观看| 亚洲一区二区三区高清不卡| 欧美日韩一区二区三| 中文国产一区| 国产欧美日韩精品a在线观看| 亚洲精品美女在线观看播放| 欧美日韩一区不卡| 国产精品久久久久久久久久三级| 午夜在线不卡| 国产精品videossex久久发布| 在线播放精品| 欧美电影免费观看高清| 亚洲综合大片69999| 亚洲电影自拍| 国产精品视频xxxx| 欧美日韩精品久久| 欧美14一18处毛片| 亚洲在线免费| 亚洲自拍电影| 亚洲精选国产| 国产精品嫩草久久久久| 午夜免费久久久久| 久久精品五月婷婷| 午夜精品久久久久久99热软件| 久久久久成人精品免费播放动漫| 樱桃国产成人精品视频| 国产精品久久久久久av福利软件| 午夜精品美女自拍福到在线| 亚洲欧美日韩国产一区二区三区| 亚洲久久在线| 国产精品亚洲综合| 日韩小视频在线观看| 亚洲精品婷婷| 亚洲欧美视频在线观看| 亚洲一区www| 在线观看视频一区| 亚洲电影欧美电影有声小说| 亚洲欧美在线一区二区| 亚洲国产成人91精品| 久久先锋资源| 欧美日韩dvd在线观看| 国产字幕视频一区二区| 在线日韩欧美视频| 免费人成精品欧美精品| 久热精品视频在线| 久久国产综合精品| 欧美有码在线视频| 精品96久久久久久中文字幕无| 一区在线视频观看| 国产毛片一区二区| 1024日韩| 亚洲专区在线| 国产精品第13页| 久久久久久9| 好吊一区二区三区| 欧美区视频在线观看| 亚洲欧洲在线观看| 欧美成人激情视频| 亚洲欧美日本视频在线观看| 欧美午夜精品一区二区三区| 国产精品免费一区豆花| 亚洲一区二区三区中文字幕| 99在线精品免费视频九九视| 亚洲欧美日韩一区二区在线| 国产精品久久久久999| 在线观看视频免费一区二区三区| 久久漫画官网| 欧美ed2k| 国产又爽又黄的激情精品视频| 欧美日韩mp4| 欧美久久久久久蜜桃| **网站欧美大片在线观看| 午夜影视日本亚洲欧洲精品| 红杏aⅴ成人免费视频| 欧美日韩福利| 国产精品成人一区二区三区夜夜夜| 欧美日韩在线三区| 久久精品一区二区三区四区| 国产精品久久综合| 久久综合精品国产一区二区三区| 国产精品毛片| 亚洲免费观看在线观看| 日韩午夜激情av| 一区免费视频| 欧美亚洲网站| 欧美一区二区三区久久精品茉莉花| 午夜欧美大片免费观看| 国产精品免费电影| 亚洲精品一线二线三线无人区| 久久久99国产精品免费| 欧美不卡在线| 欧美久久精品午夜青青大伊人| 久久国产高清| 欧美日韩不卡在线| 国产精品一区在线观看| 欧美大片免费看| 欧美久久久久久蜜桃| 国产亚洲福利一区| 国产综合一区二区| 亚洲国产婷婷综合在线精品| 亚洲激情精品| 狠狠色狠狠色综合日日tαg| 亚洲欧美国内爽妇网| 免费成人毛片| 欧美色偷偷大香| 欧美一区高清| 亚洲高清123| 欧美日韩中文字幕在线| 亚洲国产精品成人综合| 欧美日韩国产综合一区二区| 在线中文字幕日韩| 一区二区三区欧美| 久久久999精品视频| 亚洲美女在线观看| 午夜在线观看免费一区| 亚洲欧美日韩久久精品| 国产亚洲一区二区三区| 国产精品久久久久久福利一牛影视| 香蕉久久久久久久av网站| 亚洲国产网站| 欧美乱大交xxxxx| 久久精品国产99精品国产亚洲性色| 欧美国产视频在线| 亚洲乱码日产精品bd| 欧美福利在线| 亚洲欧洲一区二区三区久久| 亚洲天堂激情| 一区二区三区波多野结衣在线观看| 欧美日韩国产区| 欧美黄网免费在线观看| 一区二区精品在线| 亚洲小说欧美另类社区| 亚洲国产成人久久综合| 国产精品久久久久久久久免费| 亚洲麻豆一区| 欧美α欧美αv大片| 欧美三级不卡| 99视频在线精品国自产拍免费观看| 欧美与黑人午夜性猛交久久久| 国产精品日韩| 日韩视频久久| 欧美日韩第一页| 欧美亚州韩日在线看免费版国语版| 欧美日韩三级视频| 国产精品久久久久久久久久免费| 亚洲精品影院| 久热精品视频在线观看| 欧美日韩视频在线观看一区二区三区| 亚洲高清不卡在线| 久久久青草青青国产亚洲免观| 国产欧美日韩综合一区在线播放| 亚洲尤物在线视频观看| 国产精品一香蕉国产线看观看| 欧美成人免费网| 亚洲福利在线观看| 欧美www视频| 国产精品美女一区二区在线观看| 久久精品人人做人人综合| 亚洲精品综合在线| 欧美成人一区二区三区| 亚洲欧美成aⅴ人在线观看| 国产精品久久久对白| 91久久久国产精品| 欧美日韩一区二区三区在线| 欧美色精品天天在线观看视频| 国产亚洲精品bv在线观看| 久久国产88| 日韩一区二区精品在线观看| 9色精品在线| 狠狠爱成人网| 亚洲尤物视频在线| 亚洲欧美日韩精品久久亚洲区| 欧美日本在线播放| 欧美日韩免费在线视频| 国产一区二区精品在线观看| 欧美国产在线视频| 欧美人与性动交cc0o| 欧美性大战xxxxx久久久| 亚洲一区二区三区高清不卡| 蜜臀久久99精品久久久画质超高清| 亚洲精品欧美激情| 一色屋精品亚洲香蕉网站| 亚洲国产精品久久久久秋霞不卡| 老色鬼久久亚洲一区二区| 国产精品免费看久久久香蕉| 黄网动漫久久久| 亚洲国产欧美在线人成| 国产日韩欧美精品一区| 国产精品美女一区二区| 在线电影欧美日韩一区二区私密| 中文国产成人精品| 亚洲精品老司机| 久久久久免费视频| 一区二区激情小说| 蜜桃伊人久久| 欧美777四色影视在线| 亚洲精品视频啊美女在线直播| 亚洲欧洲精品成人久久奇米网| 午夜亚洲福利| 亚洲精选一区| 亚洲欧美一区二区三区在线| 在线亚洲一区二区| 亚洲国产你懂的| 欧美大秀在线观看| 久久亚洲国产精品一区二区| 欧美精品亚洲二区| 一二美女精品欧洲| 欧美中文日韩| 正在播放欧美一区| 欧美精品在欧美一区二区少妇| 亚洲视频二区| 亚洲国产视频一区二区| 在线成人性视频| 亚洲国产高清高潮精品美女| 欧美在线首页| 久久久久久91香蕉国产| 免播放器亚洲一区| 亚洲三级电影全部在线观看高清| 最近中文字幕日韩精品| 亚洲国产福利在线| 蜜乳av另类精品一区二区| 久久超碰97人人做人人爱| 亚洲欧洲在线观看| 久久在线免费观看视频| 精品不卡视频| 欧美视频在线观看视频极品| 国内不卡一区二区三区| 欧美xx69| 在线观看日韩国产| 欧美日韩99| 午夜欧美精品久久久久久久| 国产精品一级| 亚洲免费中文字幕| 国产精品久久影院| 国产精品第一页第二页第三页| 欧美黄色大片网站| 久久久精品日韩| 先锋影院在线亚洲| 亚洲精品在线视频观看| 欧美一区二区视频在线观看2020| 久久国产视频网站| 亚洲精品影院| 亚洲日韩欧美视频一区| 亚洲毛片av| 欧美精品偷拍| 亚洲高清在线视频| 亚洲视频综合| 欧美日韩免费| 久久成人人人人精品欧|