• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      用單片機驗證音調(diào)高低與振動頻率的關(guān)系

      2019-10-25 06:24:40吝歡歡任新成王玉清
      物理教學(xué)探討 2019年9期
      關(guān)鍵詞:中音誤操作蜂鳴器

      吝歡歡,任新成,王玉清

      延安大學(xué)物理與電子信息學(xué)院,陜西延安716000

      1引言

      “音調(diào)”是物理8年級上冊《聲音的特性》一節(jié)中的重要概念。我們都知道,聲音的高低叫做音調(diào),在日常生活中,我們可以通過聽覺的不同感受來辨別音調(diào)的高低。但是,由于對發(fā)聲體的振動頻率我們無法直觀感知,更難以獲得準確的數(shù)據(jù)。所以,“音調(diào)高低與振動頻率的關(guān)系”就成為本節(jié)的教學(xué)難點。因此,如何讓學(xué)生更好地感受音調(diào)的高低、明確振動頻率的大小,并進一步得到兩者的相互關(guān)系就成為教學(xué)的關(guān)鍵所在[1]。

      利用AT89C51單片機的定時器中斷功能,通過改變蜂鳴器的發(fā)聲頻率來控制音調(diào)高低,模擬簡易電子琴的工作過程。能夠使學(xué)生更加直觀地感受物理現(xiàn)象,精確驗證音調(diào)高低與發(fā)聲體振動頻率的關(guān)系,總結(jié)物理規(guī)律。而且單片機操作系統(tǒng)成本低廉 (一般在二三十元不等),性價比高,為學(xué)習(xí)和應(yīng)用提供了便利條件。

      2 實驗基本原理介紹

      2.1 AT89C51單片機簡介

      AT89C51單片機是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS8位單片機,內(nèi)含4KB可反復(fù)擦寫的只讀程序存儲器(ROM)和128KB隨機數(shù)據(jù)存儲器(RAM)。內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,并且兼容MCS-51指令系統(tǒng)。

      圖1 AT89C51單片機控制蜂鳴器電路圖

      2.2 AT89C51單片機控制發(fā)聲系統(tǒng)

      AT89C51單片機控制發(fā)聲系統(tǒng)[2]如圖1所示,它是由單片機、時鐘電路、復(fù)位電路、按鍵電路和蜂鳴器電路組成。其中,時鐘電路由一個12 MHz的晶振和兩個33 pF的電容組成,它們決定了單片機的工作時間精度為1 μs。該系統(tǒng)采用按鍵手動復(fù)位方式,即在單片機運行期間,用手動按鍵的方式使單片機初始化。系統(tǒng)利用P1口的P1.0-P1.7引腳設(shè)置了8個獨立按鍵,當有鍵按下時,P1口相應(yīng)的引腳置為低電平,單片機接收脈沖信號。在實驗中,我們用其中P1.0-P1.6這7個引腳分別來控制C調(diào)中音的7個音調(diào)。蜂鳴器電路主要由蜂鳴器、PNP型三極管和一個電阻組成,低電平有效,即當向電路輸入高電平(P3.0引腳置1)時,蜂鳴器中無電流通過,電路不發(fā)聲;當向其輸入低電平(P3.0引腳置0)時,蜂鳴器中有電流通過,產(chǎn)生蜂鳴。我們可以通過控制高、低電平的持續(xù)時間來形成不同頻率的脈沖電壓,驅(qū)動蜂鳴器發(fā)聲,從而實現(xiàn)對音調(diào)高低的控制。

      2.3 音調(diào)控制原理

      當單片機[3]內(nèi)部定時器/計數(shù)器T0工作在計數(shù)器模式1時,寄存器TH0和TL0是以全部16位參與工作,計數(shù)長度為216=65 536。我們就可以通過改變計數(shù)初值TH0、TL0來產(chǎn)生不同的頻率。 例如,C 調(diào)中音 1(do)的音頻 f=523 Hz,周期s=1912 μs,定時器的定時時間為μs=956 μs,即每經(jīng)過 956 μs,使輸出口改變一次脈沖電壓。定時器的計數(shù)值=956,則裝入T0計數(shù)器初值65 536-956=64 580,即啟動T0工作后,每計數(shù)956次時將產(chǎn)生溢出中斷,進入中斷服務(wù)后將P3.0(RXD)引腳輸出電平取反就可得到中音do的音符頻率,如圖2所示。

      圖2 音符脈沖波形圖

      同理,C調(diào)中音各音符的頻率與計數(shù)初值如表1所示。

      表1 C調(diào)中音各音符的頻率與計數(shù)初值對照表

      3 實驗過程

      我們使用Keil C51軟件的C語言編寫程序來實現(xiàn)實驗?zāi)康摹?/p>

      3.1 準備工作

      首先,啟動Keil C51軟件進入編輯界面,單擊“Project”菜單,在彈出的下拉子菜單中選擇“New Project”選項建立新工程,選擇文件保存路徑,輸入工程文件名后點擊保存,在彈出的對話框中選擇相應(yīng)的單片機型號,即Atmel公司的AT89C51型單片機,點擊確定按鈕。然后,在編輯界面“File”菜單的下拉子菜單中單擊“New”選項新建文件。 再單擊“File”菜單下的“Save As”選項保存該文件,在彈出的對話框中“文件名”欄內(nèi)輸入文件名及對應(yīng)的擴展名,如“test.c”。單擊“保存”按鈕后回到編輯界面,單擊“Target 1”前面的“+”號,在“Source Group 1”上單擊右鍵后再單擊“Add Files to Group‘Source Group 1’”。 最后,在彈出的對話框中選中文件test.c,單擊 “Add”按鈕,如圖3所示。

      圖3 Keil C51編輯界面

      3.2 輸入程序和編譯

      在KeilC51的編輯界面輸入如下C語言源程序:

      #include<reg51.h> //包含51單片機寄存器定義的頭文件

      sbit key1=P1^0; //將key1位定義為P1.0引腳

      sbit key2=P1^1; //將key2位定義為P1.1引腳

      sbit key3=P1^2; //將key3位定義為P1.2引腳

      sbit key4=P1^3; //將key4位定義為P1.3引腳

      sbit key5=P1^4; //將key5位定義為P1.4引腳

      sbit key6=P1^5; //將key6位定義為P1.5引腳

      sbit key7=P1^6; //將key7位定義為P1.6引腳

      sbit sound=P3^0; //將sound位定義為P3.0

      unsigned int C; //定義全局變量,儲存定時器的定時常數(shù)

      unsigned long n; //定義無符號數(shù)n

      //以下是C調(diào)中音的音頻宏定義

      #define do 64580 //將“do”宏定義為中音“1”的初值64580

      #define re 64687 //將“re”宏定義為中音“2”的初值64687

      #define mi 64780 //將“mi”宏定義為中音“3”的初值64780

      #define fa 64822 //將“fa”宏定義為中音“4”的初值64822

      #define sol 64900 //將“sol”宏定義為中音“5”的初值64900

      #define la 64969 //將“l(fā)a”宏定義為中音“6”的初值64969

      #define si 65031 //將“si”宏定義為中音“7”的初值65031

      timer0()interrupt 1 //函數(shù)功能:產(chǎn)生中斷,改變脈沖電壓

      {TH0=C/256; //對16位計數(shù)器高8位TH0賦值

      TL0=C%256; //對16位計數(shù)器低8位TL0賦值

      sound=~sound;} //取反形成脈沖電壓,輸出音頻

      void main(void) //函數(shù)功能:主函數(shù)

      {TMOD=0x01; //使用定時器0的工作模式1

      ET0=1; //定時器T0中斷允許

      EA=1; //開總中斷

      while(1) //無限循環(huán),按鍵掃描

      {if(key1==0) //檢測key1鍵按下

      {for(n=0;n<5000;n++); //延時 5ms,按鍵消抖,防止誤操作

      while(!key1) //如果key1鍵按下,循環(huán)指令

      {C=do; //將中音do的初值賦給C

      TR0=1;}} //開定時器T0

      if(key2==0) //檢測key2鍵按下

      {for(n=0;n<5000;n++); //延時 5ms,按鍵消抖,防止誤操作

      while(!key2) //如果key2鍵按下,循環(huán)指令

      {C=re; //將中音re的初值賦給C

      TR0=1;}} //開定時器T0

      if(key3==0) //檢測key3鍵按下

      {for(n=0;n<5000;n++); //延時 5ms,按鍵消抖,防止誤操作

      while(!key3) //如果key3鍵按下,循環(huán)指令

      {C=mi; //將中音mi的初值賦給C

      TR0=1;}} //開定時器T0

      if(key4==0) //檢測key4鍵按下

      {for(n=0;n<5000;n++); //延時 5ms,按鍵消抖,防止誤操作

      while(!key4) //如果key4鍵按下,循環(huán)指令

      {C=fa; //將中音fa的初值賦給C

      TR0=1;}} //開定時器T0

      if(key5==0) //檢測key5鍵按下

      {for(n=0;n<5000;n++); //延時 5ms,按鍵消抖,防止誤操作

      while(!key5) //如果key5鍵按下,循環(huán)指令

      {C=sol; //將中音sol的初值賦給C

      TR0=1;}} //開定時器T0

      if(key6==0) //檢測key6鍵按下

      {for(n=0;n<5000;n++); //延時 5ms,按鍵消抖,防止誤操作

      while(!key6) //如果key6鍵按下,循環(huán)指令

      {C=la; //將中音la的初值賦給C

      TR0=1;}} //開定時器T0

      if(key7==0) //檢測key7鍵按下

      {for(n=0;n<5000;n++); //延時 5ms,按鍵消抖,防止誤操作

      while(!key7) //如果key7鍵按下,循環(huán)指令

      {C=si; //將中音si的初值賦給C

      TR0=1;}} //開定時器T0

      TR0=0; //關(guān)定時器

      sound=1;}} //關(guān)蜂鳴器

      程序輸入完畢后,單擊“Project”菜單下的“Built Target”選項,確認編譯無誤,如圖4所示。

      圖4 Keil C51程序編譯界面

      3.3 調(diào)試和下載

      依次單擊 “Debug”菜單下的“Start/Stop Debug Session”和“Go”選項調(diào)試運行,然后再依次單擊 “Stop Running” 和 “Start/Stop Debug Session”選項停止運行。選擇“Project”菜單下的“Options for Target ‘Target 1’”選項 ,在彈出的對話框中將“Target”選項卡的Xtal(MHz)一欄輸入 12,選擇“Output”選 項 卡中的“Create HEX File”選項,點擊確定按鈕,使程序編譯后產(chǎn)生HEX代碼,最后用燒錄軟件(STC-ISP)將程序下載至AT89C51單片機中即可,如圖5所示。

      圖5 程序下載界面

      4 實驗小結(jié)

      利用AT89C51單片機的基本操作功能,可以用實驗的方法精確驗證音調(diào)高低與發(fā)聲體振動頻率的關(guān)系,使學(xué)生更加清晰、直觀地感受物理現(xiàn)象,自主總結(jié)物理規(guī)律,同時寓教于樂,通過模擬電子琴的工作流程,激發(fā)了學(xué)生強烈的好奇心和求知欲望,而且了解了有關(guān)編程方面的知識和方法,訓(xùn)練了學(xué)生的邏輯思維。

      猜你喜歡
      中音誤操作蜂鳴器
      電動自行車產(chǎn)品車速提示音檢測現(xiàn)狀和整改技術(shù)研究(2)
      次中音號在小樂隊中的運用策略研究
      大眾文藝(2020年21期)2021-01-28 08:02:26
      掌控板制作簡易鋼琴
      電腦報(2020年12期)2020-06-30 19:56:42
      單片機驅(qū)動蜂鳴器的程序設(shè)計
      變電運行倒閘誤操作的原因及預(yù)防
      中音號的基本吹奏法分析
      北方音樂(2018年24期)2018-01-24 14:01:11
      對一起誤操作事故的幾點看法
      電子制作(2017年8期)2017-06-05 09:36:15
      豐田凱美瑞240V車間隙警告蜂鳴器異常鳴響
      音樂史分期問題評述——兼談中音史教學(xué)中分期介紹的必要
      樂府新聲(2016年4期)2016-06-22 13:02:53
      淺談變電運維誤操作事故預(yù)控措施
      建水县| 临沂市| 依安县| 丹棱县| 卓资县| 三明市| 莫力| 卓资县| 锡林浩特市| 喀什市| 新泰市| 紫云| 台北县| 河北区| 德兴市| 沙坪坝区| 大荔县| 镇平县| 饶平县| 仙居县| 六安市| 安吉县| 陵川县| 咸阳市| 商洛市| 泰兴市| 布尔津县| 华池县| 尉氏县| 沙湾县| 定陶县| 胶州市| 胶南市| 明溪县| 湘乡市| 邻水| 横山县| 牙克石市| 台安县| 呼图壁县| 革吉县|