日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 這個(gè)小程序仍然是定時(shí)器的運(yùn)用,比較簡(jiǎn)單,具體的地方都在注釋中注明了,參考注釋。/*********************************************程序功能:MCU控制蜂鳴器演奏歌曲《祝你平安》--------------------

這個(gè)小程序仍然是定時(shí)器的運(yùn)用,比較簡(jiǎn)單,具體的地方都在注釋中注明了,參考注釋。


  1. /*********************************************

  2. 程序功能:MCU控制蜂鳴器演奏歌曲《祝你平安》

  3. ----------------------------------------------

  4. 撥碼開關(guān)設(shè)置:將BUZZER位撥至ON,其余位撥至OFF

  5. 測(cè)試說明:聆聽蜂鳴器“唱出”的樂曲

  6. 既然是演奏樂曲對(duì)于一個(gè)音符應(yīng)該包括兩個(gè)部分

  7. 一是聲調(diào)二是持續(xù)時(shí)間,在這個(gè)程序中聲調(diào)是用簡(jiǎn)單的

  8. 延時(shí)-電平翻轉(zhuǎn)來實(shí)現(xiàn)的,改變了延時(shí)的時(shí)間就改變了

  9. 聲調(diào),而時(shí)間是通過計(jì)數(shù)比較來實(shí)現(xiàn)的,當(dāng)計(jì)數(shù)值相等時(shí)

  10. 就跳出循環(huán)演奏下一個(gè)音符。

  11. *********************************************/

  12. #include

  13. typedefunsignedcharuchar;

  14. #include"music.h"

  15. #defineBuzzerBIT7

  16. #defineBuzzer_PortP6OUT

  17. #defineBuzzer_DIRP6DIR

  18. ucharcounter;

  19. voidPlay_Song(void);

  20. /***************主函數(shù)****************/

  21. voidmain(void)

  22. {

  23. uchari;

  24. /*下面六行程序關(guān)閉所有的IO口*/

  25. P1DIR=0XFF;P1OUT=0XFF;

  26. P2DIR=0XFF;P2OUT=0XFF;

  27. P3DIR=0XFF;P3OUT=0XFF;

  28. P4DIR=0XFF;P4OUT=0XFF;

  29. P5DIR=0XFF;P5OUT=0XFF;

  30. P6DIR=0XFF;P6OUT=0XFF;

  31. P6DIR|=BIT2;P6OUT|=BIT2;//關(guān)閉電平轉(zhuǎn)換

  32. WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗

  33. /*------選擇系統(tǒng)主時(shí)鐘為8MHz-------*/

  34. BCSCTL1&=~XT2OFF;//打開XT2高頻晶體振蕩器

  35. do

  36. {

  37. IFG1&=~OFIFG;//清除晶振失敗標(biāo)志

  38. for(i=0xFF;i>0;i--);//等待8MHz晶體起振

  39. }

  40. while((IFG1&OFIFG));//晶振失效標(biāo)志仍然存在?

  41. BCSCTL2|=SELM_2+SELS;//主時(shí)鐘和從時(shí)鐘都選擇高頻晶振

  42. //設(shè)置定時(shí)器A每10ms中斷一次

  43. CCTL0=CCIE;

  44. CCR0=10000;//改變這個(gè)值就改變了演奏的速度

  45. TACTL|=TASSEL_2+ID_3;

  46. //設(shè)置控制蜂鳴器的IO方向?yàn)檩敵?/p>

  47. Buzzer_DIR|=Buzzer;

  48. //打開全局中斷

  49. _EINT();

  50. //循環(huán)演奏歌曲

  51. while(1)

  52. {

  53. Play_Song();

  54. }

  55. }

  56. /*******************************************

  57. 函數(shù)名稱:TimerA_ISR

  58. 功能:定時(shí)器A的中斷服務(wù)函數(shù)

  59. 參數(shù):無

  60. 返回值:無

  61. ********************************************/

  62. #pragmavector=TIMERA0_VECTOR

  63. __interruptvoidTimerA_ISR(void)

  64. {

  65. counter++;

  66. }

  67. /*******************************************

  68. 函數(shù)名稱:Delay_Nms

  69. 功能:延時(shí)N個(gè)ms的函數(shù)ps:不知道這個(gè)地方怎么算出來的是延時(shí)毫秒

  70. 參數(shù):n--延時(shí)長(zhǎng)度

  71. 返回值:無

  72. ********************************************/

  73. voidDelay_Nms(ucharn)

  74. {

  75. uchari,j;

  76. for(i=0;i

  77. {

  78. for(j=0;j<3;j++)

  79. _NOP();

  80. }

  81. }

  82. /*******************************************

  83. 函數(shù)名稱:Play_Song

  84. 功能:播放《祝你平安》的樂曲

  85. 參數(shù):無

  86. 返回值:無

  87. ********************************************/

  88. voidPlay_Song(void)

  89. {

  90. ucharTemp1,Temp2;

  91. ucharaddr=0;

  92. counter=0;//中斷計(jì)數(shù)器清0

  93. while(1)

  94. {

  95. Temp1=SONG[addr++];

  96. if(Temp1==0xFF)//休止符

  97. {

  98. TACTL&=~MC_1;//停止計(jì)數(shù)

  99. Delay_Nms(100);

  100. }

  101. elseif(Temp1==0x00)//歌曲結(jié)束符

  102. {

  103. return;

  104. }

  105. else

  106. {

  107. Temp2=SONG[addr++];

  108. TACTL|=MC_1;//開始計(jì)數(shù)

  109. while(1)

  110. {

  111. Buzzer_Port^=Buzzer;//電平取反

  112. Delay_Nms(Temp1);//Temp1的值決定了延時(shí)的長(zhǎng)短,也決定了聲音的頻率

  113. if(Temp2==counter)//決定了音調(diào)持續(xù)的時(shí)間,計(jì)數(shù)時(shí)間到時(shí)就跳出循環(huán)演奏下一個(gè)。

  114. {

  115. counter=0;

  116. break;

  117. }

  118. }

  119. }

  120. }

  121. }



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

這是一個(gè)很好的時(shí)鐘,有很大的片段,你可以設(shè)置每個(gè)片段的顏色和強(qiáng)度。有三個(gè)按鈕,蜂鳴器,光傳感器和RTC與備用電池。時(shí)鐘通過USB C供電,具有當(dāng)前時(shí)間,計(jì)時(shí)器和秒表等功能。請(qǐng)隨意添加您自己的功能!

關(guān)鍵字: 蜂鳴器 光傳感器 RTC

Holtek新推出專為感煙報(bào)警器應(yīng)用設(shè)計(jì)的Flash MCU - BA45F25752/BA45F25762,整合雙通道感煙偵測(cè)AFE、紅外/藍(lán)光LED驅(qū)動(dòng)、萬年歷與蜂鳴器驅(qū)動(dòng)等功能。相較于先前的BA45F5750/BA...

關(guān)鍵字: 感煙報(bào)警器 MCU 蜂鳴器

HT16K24操作電壓為2.4V~5.5V,內(nèi)建I2C通信接口,提供三種LCD顯示與按鍵模式:24SEG × 4COM + 24 KEY;22SEG × 6COM + 22 KEY;20SEG × 8COM + 20 K...

關(guān)鍵字: LCD MCU 蜂鳴器

Holtek新推出集成感煙探測(cè)AFE、雙通道LED驅(qū)動(dòng)及9 V蜂鳴器驅(qū)動(dòng)的32-bit Arm? Cortex?-M0+ MCU HT32L62141,采用超低功耗ULP (Ultra-Low Power) 設(shè)計(jì),并提供...

關(guān)鍵字: MCU 煙探測(cè)器 蜂鳴器

這個(gè)項(xiàng)目是農(nóng)業(yè)自動(dòng)化的一個(gè)有趣的旋轉(zhuǎn):一個(gè)機(jī)器人松露嗅探器,可以自主導(dǎo)航一個(gè)空間,識(shí)別代表松露熱點(diǎn)的AprilTags,并收集“松露”(用彩色球模擬)。靈感來源于現(xiàn)實(shí)生活中用豬和狗來定位地下的松露。

關(guān)鍵字: 機(jī)器人 蜂鳴器 計(jì)算機(jī)視覺

本項(xiàng)目將向您介紹來自Elecrow的新型1.28英寸圓形顯示器,該顯示器集成了ESP32C3芯片等!該項(xiàng)目將演示將設(shè)備固件更新到MicroPython并顯示自定義消息的步驟。

關(guān)鍵字: 顯示器 ESP32C3 蜂鳴器

把“G”分開是對(duì)吉尼斯啤酒飲用技巧的真正考驗(yàn)——準(zhǔn)確地喝一口,液體的水平面要正好落在吉尼斯標(biāo)志上“G”的中間。作為一個(gè)不喝酒的人,我想看看我是否能設(shè)計(jì)出一條通往成功的道路。所以,我做了一個(gè)設(shè)備,使用非接觸式液體傳感器和蜂...

關(guān)鍵字: 傳感器 Arduino 蜂鳴器

在現(xiàn)代電子設(shè)備中,蜂鳴器作為一種能夠發(fā)出聲音信號(hào)的器件,被廣泛應(yīng)用于各種領(lǐng)域,如電子玩具、報(bào)警器、電子設(shè)備的提示音等。其中,有源壓電式蜂鳴器以其只需接上額定直流電壓即可發(fā)聲的特點(diǎn),受到了工程師們的青睞。那么,有源壓電式蜂...

關(guān)鍵字: 蜂鳴器 器件 直流電壓

我有很多魔方。有些很大;有些很小;有些花費(fèi)了一大筆錢。兩年前,我的弟弟把我的一個(gè)立方體扔在地上,毀了它,從那以后,我花了90美元升級(jí)了安全設(shè)備,以防止這種情況再次發(fā)生。但即使他沒有破壞我的立方體,他也會(huì)在我展示的時(shí)候破壞...

關(guān)鍵字: Arduino Uno LCD 閃光燈 蜂鳴器

蜂鳴器是一種非常常用的電子元器件,廣泛用于各種電子設(shè)備中的聲音輸出。而三極管則是一種半導(dǎo)體器件,具有放大和開關(guān)等功能。通過三極管的開關(guān)狀態(tài),可以驅(qū)動(dòng)蜂鳴器產(chǎn)生聲音。

關(guān)鍵字: 蜂鳴器 三極管
關(guān)閉