RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32單片機(jī)的簡易電子琴設(shè)計(jì)(2)

CHANBAEK ? 來源:高級嵌入式軟件 ? 作者:高級嵌入式軟件 ? 2023-07-24 10:46 ? 次閱讀

摘要: 本次設(shè)計(jì)是課程設(shè)計(jì),利用單片機(jī)設(shè)計(jì)簡易電子琴。 其主要功能為:按下不同按鍵,發(fā)出不同1 、2 、3、4 、5 、6 、7 七個音符并且用LED 或LCD顯示當(dāng)前按鍵。選用stm32f103C8T6,它有8個定時器,部分定時器有多達(dá)4個用于輸入捕獲/輸出比較/PWM或脈沖計(jì)數(shù)的通道和增量編碼器輸入。利用芯片內(nèi)部相關(guān)定時器來輸出PWM,從而來驅(qū)動蜂鳴器。通過讀取外部按鍵輸入的值來相應(yīng)改變定時器相關(guān)寄存器的值,從而來改變PWM的輸出頻率來達(dá)到發(fā)出不同音調(diào)。

一、設(shè)計(jì)目的和意義

本綜合設(shè)計(jì)是為本科生開設(shè)的必修課,是對學(xué)生運(yùn)用所學(xué)知識的一次綜合訓(xùn)練。其目的是讓學(xué)生得到一次進(jìn)行獨(dú)立設(shè)計(jì)的工程實(shí)踐鍛煉,不僅培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和扎實(shí)的實(shí)踐技能、良好的工程意識,并在設(shè)計(jì)中學(xué)會如何發(fā)現(xiàn)、分析和解決工程實(shí)踐問題的技能和方法,將所學(xué)知識綜合應(yīng)用于工程實(shí)踐中,為后續(xù)的畢業(yè)設(shè)計(jì)做好準(zhǔn)備。

二、控制要求

利用單片機(jī)設(shè)計(jì)簡易電子琴。

功能要求:

(1) 按下不同按鍵,發(fā)出不同1 、2 、3、4 、5 、6 、7 七個音符;

(2) 用LED 或LCD顯示當(dāng)前按鍵。

總體要求:給出電路原理圖、電路調(diào)試結(jié)果、程序源代碼;提交設(shè)計(jì)報(bào)告。

三、設(shè)計(jì)方案論證

3.1 設(shè)計(jì)方案:

方案一:采用MCS-51系列單片機(jī)來實(shí)現(xiàn)設(shè)計(jì)要求的功能。 MCS-51系列單片機(jī)中的基本型產(chǎn)品是8051,8031和8751,這三個產(chǎn)品只是片內(nèi)程序存儲器制造工藝不同。8051的片內(nèi)程序存儲器ROM為掩膜型的在制造芯片時已將應(yīng)用程序固化進(jìn)去,使它具有了某種專用功能。8位CPU擁有片內(nèi)震蕩器及時鐘電路;32根IO線;外部存儲器ROM和RAM尋址范圍各64KB;2個16位的定時器/計(jì)數(shù)器;5個中斷源,2個中斷優(yōu)先級;全雙工串行口;8051的中央處理器CPU由運(yùn)算器和控制邏輯構(gòu)成51單片機(jī)是一款比較基礎(chǔ)的單片機(jī)。I/O(輸入/輸出)引腳系統(tǒng)結(jié)構(gòu)緊湊,功能簡單,低成本??梢詫?shí)現(xiàn)各種豐富的應(yīng)用。通過控制I/O口的輸出電平的翻轉(zhuǎn)頻率來實(shí)現(xiàn)對蜂鳴器發(fā)音音調(diào)的控制。

方案二:采用STM32f03C8T6來實(shí)現(xiàn)此次設(shè)計(jì),最高72MHz工作頻率。它有多個外部中斷,八個定時器,有PWM輸出模式,其中2個高級定時器,兩個基本定時器,其他的是通用定時器,共48個引腳,除基本的I/O功能之外還包含有復(fù)用功能,其外設(shè)功能強(qiáng)大,是一款能夠很方便使用的功能強(qiáng)大的芯片,同時可以直接對相關(guān)寄存器進(jìn)行操作,。

3.2 方案選擇

上述兩種方案相比,51單片機(jī)雖然價格便宜,但是其功能簡單,I/O口少,并且僅僅只有5個中斷源,而STM32f03C8T6共48個引腳,并且其定時器有PWM輸出模式,可以更加方便的控制蜂鳴器的發(fā)音。本次設(shè)計(jì)包括了七個按鍵,數(shù)碼管,蜂鳴器,因此至少需要17個I/O口。因此先比較而言選用I/O口較多的STM32f03C8T6來作為控制芯片。

四、系統(tǒng)設(shè)計(jì)

4.1 硬件結(jié)構(gòu)設(shè)計(jì)

如圖4-1所示,硬件系統(tǒng)主要由數(shù)碼管顯示電路、蜂鳴器驅(qū)動電路、按鍵電路、晶振、復(fù)位、電源指示、轉(zhuǎn)壓電路、控制芯片等組成。

圖片

圖4-1 硬件系統(tǒng)圖

4.1.1 核心控制器硬件電路

核心控制芯片的各個輸出引腳如圖4-2所示:

圖片

圖4-2 STM32f103C8T6引腳圖

核心控制器是由核心控制芯片以及相關(guān)的外圍電路組成,包括了專業(yè)電路、外部晶振、濾波電路、按鍵復(fù)位電路、電源指示電路等,如圖4-3所示。

圖片

圖4-3核心控制器外圍電路

4.1.2 蜂鳴器驅(qū)動電路

此次設(shè)計(jì)選用有源蜂鳴器。有源蜂鳴器的發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)音,因此需要一定的電流才能驅(qū)動它。單片機(jī)的I/O引腳的輸出電流比較小輸出的TTL電平基本上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路,如圖4-4所示,選用NPN的三極管來達(dá)到電流放大的作用。

圖片

圖4-4 蜂鳴器驅(qū)動電路

4.1.3 數(shù)碼管電路:

設(shè)計(jì)中需要使用一位數(shù)碼管,如圖4-5所示,為四位數(shù)碼管的驅(qū)動電路,在實(shí)際的運(yùn)用中僅僅選用了com4位選端口以及5、6、7、8、9、10、11、接口作為段選。

圖片

圖4-5 數(shù)碼管顯示電路

4.1.4按鍵電路:

按鍵都采用了上拉電阻,當(dāng)按鍵處于不被按下的狀態(tài)時,連接到單片機(jī)的一端的輸入信號為高電平,當(dāng)按鍵按下時,輸入為低電平,如圖4-6所示。

圖片

圖4-6 按鍵電路

4.2 軟件系統(tǒng)設(shè)計(jì)

4.2.1 軟件系統(tǒng)框圖

設(shè)計(jì)選用STM32F103C8T6芯片,相關(guān)的配置主要包括:,時鐘配置、I/O口配置、定時器配置。主函數(shù)中進(jìn)行顯示參數(shù)以及PWM輸出頻率的改變,具體流程圖如圖4-7所示。

圖片

圖4-7 軟件流程圖

4.2.2 數(shù)碼管顯示相關(guān)段選計(jì)算:

在此次設(shè)計(jì)中選用的是共陰極的數(shù)碼管,段選為高電平有效,位選為低電平有效。選用STM32f103C8T6的PB0、1、2、.10、11、12、13、14作為段選位,分別對應(yīng)數(shù)碼管的h、g、f、e、d、c、b、a段,PB15對應(yīng)數(shù)碼管的位選。

圖片

圖4-8 一位數(shù)碼管

當(dāng)數(shù)碼管顯示0時,選用a、b、c、d、e、f、.段,對應(yīng)的十六進(jìn)制為:0x7c04;

當(dāng)數(shù)碼管顯示1時,選用b.、c.段,對應(yīng)的十六進(jìn)制為:0x7c04;

當(dāng)數(shù)碼管顯示2時,選用a、b、g、e、d.段,對應(yīng)的十六進(jìn)制為:0x7c04;

當(dāng)數(shù)碼管顯示3時,選用a、b、g、c、d.段,對應(yīng)的十六進(jìn)制為:0x7c04;

當(dāng)數(shù)碼管顯示4時,選用f、g、b、c.段,對應(yīng)的十六進(jìn)制為:0x7c04;

當(dāng)數(shù)碼管顯示5時,選用a、f、g、c、d段,對應(yīng)的十六進(jìn)制為:0x7c04;

當(dāng)數(shù)碼管顯示6時,選a、f、e、g、d、c.段,對應(yīng)的十六進(jìn)制為:0x7c04;

當(dāng)數(shù)碼管顯示7時,選用a、b、c.段,對應(yīng)的十六進(jìn)制為:0x7c04;

4.2.3 蜂鳴器發(fā)音音調(diào)改變原理

蜂鳴器分為有源蜂鳴器合無源蜂鳴器。有源蜂鳴器內(nèi)部帶震蕩源,所以只要一通電就會叫,價格比無源貴。無源蜂鳴器必須用2K-5K的方波去驅(qū)動它。此次設(shè)計(jì)選用有源蜂鳴器。有源蜂鳴器的發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)音,因此需要一定的電流才能驅(qū)動它。單片機(jī)的I/O引腳的輸出電流比較小輸出的TTL電平基本上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路。如圖4-4所示蜂鳴器的正極接到VCC(+5V)電源上面,蜂鳴器的負(fù)極接到三極管的發(fā)射極E,三極管的基級B經(jīng)過限流電阻R1后由單片機(jī)引腳控制,當(dāng)單片機(jī)引腳輸出高電平時,三極管T1截止,沒有電流流過線圈,蜂鳴器不發(fā)聲;當(dāng)單片機(jī)引腳輸出低電平時,三極管導(dǎo)通,這樣蜂鳴器的電流形成回路,發(fā)出聲音。因此,我們可以通過程序控制引腳的電平來使蜂鳴器發(fā)出聲音和關(guān)閉。

蜂鳴器是的音調(diào)改變實(shí)際上是通過改變驅(qū)動蜂鳴的高低電平的翻轉(zhuǎn)頻率來決定,高低電平的變化的頻率不同,音調(diào)不同,在此次設(shè)計(jì)中采用TIM1的PWM的頻率變化來控制。

4.2.4 PWM輸出頻率計(jì)算:

TIM定時器相關(guān)配置:

void TIM_yingyue(unsigned int NoteSet)

{

static unsigned char IfIsInit=0;

if(IfIsInit==0)

{     

            TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

            TIM_OCInitTypeDef TIM_OCInitStructure;

            TIM_TimeBaseStructure.TIM_Period = NoteSet;

            TIM_TimeBaseStructure.TIM_Prescaler = 0;

            TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

            TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

            /* PWM1 Mode configuration: Channel4 */

            TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

            TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

            TIM_OCInitStructure.TIM_Pulse = NoteSet/2;

            TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High ;

            TIM_OC1Init(TIM1, &TIM_OCInitStructure);

         

            TIM_CtrlPWMOutputs(TIM1,ENABLE);

            TIM_Cmd(TIM1,ENABLE);

            IfIsInit=1;

      }

      else

      {

            TIM1- >ARR=NoteSet;

            TIM1- >CCR1=NoteSet/2;

      }

}

TIM_Period 設(shè)置了在下一個更新事件裝入活動的自動重裝載寄存器周期的值。

TIM_Prescaler:設(shè)置了用來作為TIM1時鐘頻率除數(shù)的預(yù)分頻值。

TIM_CounterMode 選擇了計(jì)數(shù)器模式為向上計(jì)數(shù)模式。

TIM_OCMode選擇定時器模式為TIM 脈沖寬度調(diào)制模式 1。

.TIM_OutputState = TIM_OutputState_Enable定時器輸出比較狀態(tài)使能。

TIM_Pulse 設(shè)置了待裝入捕獲比較寄存器的脈沖值和TIM_Period的值一起決定占空比。

TIM_OCPolarity 設(shè)置了輸出比較極性為高。

根據(jù)以上設(shè)置

圖片 (4-1)

圖片 (4-2)

在主函數(shù)中,通過掃描按鍵的狀態(tài)來執(zhí)行相關(guān)操作:

if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)==0)

      {

        display(1);       //數(shù)碼管顯示函數(shù)

        TIM_yingyue(D1); //調(diào)用定時器函數(shù)

      }

注: 每次調(diào)用TIM_yingyue()函數(shù),通過判斷IfIsInit的狀態(tài),直接通過修改ARR(自動重裝載寄存器),CCR1(TIM1捕獲/比較寄存器1)來修改頻率,提高了程序的效率,避免其他相關(guān)值重復(fù)定義。

五、設(shè)計(jì)結(jié)果及分析

5.1設(shè)計(jì)結(jié)果:

實(shí)現(xiàn)了簡易電子琴功能。 按下不同按鍵,發(fā)出不同1 、2 、3、4 、5 、6 、7 七個音符并用LED顯示當(dāng)前的鍵值。每個音符發(fā)音的長短由按鍵按下的時間長短來控制,能夠更好的完成一首歌曲。

PWM輸出波形下列各圖所示:

DO:

圖片

圖5-1 Do PWM輸出波形

Rai:

圖片

圖5-2 Rai PWM輸出波形

Mi:

圖片

圖5-3 Mi PWM輸出波形

Fa:

圖片

圖5-4 Fa PWM輸出波形

So:

圖片

圖5-5 So PWM輸出波形

La:

圖片

圖5-6 La PWM輸出波形

Xi:

圖片

圖5-7 Xi PWM輸出波形

5.2結(jié)果分析:

初次軟硬件聯(lián)調(diào)的時候,蜂鳴器發(fā)出的音符雖然也是七個調(diào),但是聲音明顯不清脆。結(jié)合軟件分析,當(dāng)時的TIM_yingyue()函數(shù)里面有很多關(guān)于定時器和PWM的參數(shù)的定義,改變頻率只與其中兩個寄存器有關(guān)系,而每次調(diào)用這個函數(shù)的時候會把整個函數(shù)中德參數(shù)全部重新賦值,導(dǎo)致了執(zhí)行效率不高,對TIM_yingyue()函數(shù)進(jìn)行修改,通過判斷IfIsInit的狀態(tài),直接修改ARR(自動重裝載寄存器),CCR1(TIM1捕獲/比較寄存器1)來到到改變頻率的效果,提高了程序的效率,避免其他相關(guān)值重復(fù)定義。再次進(jìn)行聯(lián)調(diào)時,整個聲音也就清楚了很多。在按鍵的掃描方面放棄最初開始想要使用的外部中斷觸發(fā)的方式,一方面是為了能夠更加簡單的完成此次設(shè)計(jì),另一方面是為了實(shí)現(xiàn)發(fā)音的長短可以用按鍵按下的時間長短來決定,使之更加具備電子琴的功能,能夠很好的完成一首曲子。

結(jié)束語

通過本次專業(yè)方向設(shè)計(jì),我不僅加深了對單片機(jī)理論的理解,將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還學(xué)會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的基礎(chǔ)上進(jìn)行改進(jìn),使之功能不斷完善,成為真己的東西。 這個設(shè)計(jì)過程中,通過在原有的按鍵中斷的基礎(chǔ)上進(jìn)行了改進(jìn),使之具備了電子琴的基本功能。設(shè)計(jì)結(jié)果能夠符合題意,成功完成了此次實(shí)習(xí)要求,我不只在乎這一結(jié)果,更加在乎的,是這個過程。這個過程中,自己更加注重了一些基礎(chǔ)的理知識的學(xué)習(xí),很好的把平時課堂上的知識運(yùn)用到了實(shí)際的操作中。同時,軟硬件的結(jié)合調(diào)試也讓自己明白了理論上的很多東西也是需要實(shí)際實(shí)驗(yàn)的驗(yàn)證的。本綜合設(shè)計(jì)是讓得到一次進(jìn)行獨(dú)立設(shè)計(jì)的工程實(shí)踐鍛煉,不僅培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和扎實(shí)的實(shí)踐技能、良好的工程意識,并在設(shè)計(jì)中學(xué)會如何發(fā)現(xiàn)、分析和解決工程實(shí)踐問題的技能和方法,為后續(xù)的畢業(yè)設(shè)計(jì)做好準(zhǔn)備。同時在這里也感謝在整個設(shè)計(jì)中幫助過我的老師和同學(xué)們。

附錄1:程序代碼

#include"stm32f10x.h"

unsigned int i=0;

unsigned int j=0;

unsigned int mykey=0;

unsignedlong code[10]={0x7c04,0x3000,0x6c02,0x7802,0x3006,0x5806,0x5c06,0x7000,0x7c06

,0x7806};

 //數(shù)組里面的16進(jìn)制正好對應(yīng)著顯示0-9的二進(jìn)制碼(數(shù)碼管的位選,選擇哪一位就讓相關(guān)位為1,來表示選擇了它)

#define            D1       55042

#define       D2      49037

#define       D3       43687

#define       D4       41235

#define       D5       36735

#define       D6       32728

#define       D7       29157

         

void RCC_Configuration(void)

{

      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO   

                                          |RCC_APB2Periph_TIM1|RCC_APB2Periph_GPIOB,ENABLE);    //APB2時鐘是72MHz的,APB1的時鐘是36MHz的

}

         

void GPIO_Configuration(void)

{

      GPIO_InitTypeDef GPIO_InitStructure  ;     //蜂鳴器

      GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;  //選擇PA8

      GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

      GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;   //復(fù)用功能,PA8作為復(fù)用是TIM1的PWM1的輸出端口,不再作為一個普通的I/O口使用

      GPIO_Init(GPIOA,&GPIO_InitStructure);     

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_15;

//按鍵的幾個輸入引腳

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉輸入

      GPIO_Init(GPIOB,&GPIO_InitStructure);     

      GPIO_InitStructure.GPIO_Pin =0x7C07;                        //數(shù)碼管段選and位選

      GPIO_InitStructure.GPIO_Speed =GPIO_Speed_10MHz;      //

      GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;        //推挽輸出

      GPIO_Init(GPIOB,&GPIO_InitStructure);                      //表示選擇的是PB的引腳

         

}

         

void TIM_yingyue(unsigned int NoteSet)

{

      static unsigned char IfIsInit=0;

         

      if(IfIsInit==0)

      {     

            TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

            TIM_OCInitTypeDef TIM_OCInitStructure;

            /* Time base configuration */

            TIM_TimeBaseStructure.TIM_Period = NoteSet;  //設(shè)置了在下一個更新事件裝入活動的自動重裝載// 寄存器周期的值

            TIM_TimeBaseStructure.TIM_Prescaler = 0; //設(shè)置了用來作為TIM1時鐘頻率除數(shù)的預(yù)分頻值

            TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//選擇了計(jì)數(shù)器模式為向上計(jì)數(shù)模式

            TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

            /* PWM1 Mode configuration: Channel4 */

            TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時器模式為TIM 脈沖寬度調(diào)制模式 1

            TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  //定時器輸出比較狀態(tài)使能

            TIM_OCInitStructure.TIM_Pulse = NoteSet/2;   //設(shè)置了待裝入捕獲比較寄存器的脈沖值和TIM_Period的值一起決定占空比

            TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High ;  //設(shè)置了輸出比較極性為高

            TIM_OC1Init(TIM1, &TIM_OCInitStructure);

            TIM_CtrlPWMOutputs(TIM1,ENABLE);  //TIM1的PWM輸出使能

            TIM_Cmd(TIM1,ENABLE);       //Tim1定時器使能

            IfIsInit=1;

      }

      else

      {

            TIM1- >ARR=NoteSet;      //改變輸出的頻率

            TIM1- >CCR1=NoteSet/2;

      }

}

         

void delay(unsigned int i)   //延時函數(shù)

{

      unsigned int j,k;

      for(j=0;j     < i;j++)< span >     < /i;j++)<  >

            for(k=0;k< 100;k++);

}

         

void display(unsigned int j)   //數(shù)碼管顯示函數(shù)

{

        GPIO_SetBits(GPIOB,code[j]);  

        GPIO_ResetBits(GPIOB,0x001);    //共陰極數(shù)碼管,段選為高電平有效,位選為低電平有效

}

int main()

{

   RCC_Configuration();

   GPIO_Configuration() ;

  

    while(1)                                               //按鍵掃描

      {

            if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)==0)

            {

                  display(1);                                     //修改顯示的數(shù)據(jù)

                  TIM_yingyue(D1);                             //修改輸出的頻率

            }                   

            else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4)==0)

            {

                  display(2);

                  TIM_yingyue(D2);

            }

            else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)

            {

                  display(3);

                  TIM_yingyue(D3);

            }

            else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)==0)

            {

                  display(4);

                  TIM_yingyue(D4);

            }

            else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)==0)

            {

                  display(5);

                  TIM_yingyue(D5);

            }

            else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)==0)

            {

                  display(6);

                  TIM_yingyue(D6);

            }

            else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==0)

            {

                  display(7);

                  TIM_yingyue(D7);

            }

            else

            {

                  TIM_yingyue(0);              //無按鍵按下的時候不顯示,不發(fā)音

                  GPIO_SetBits(GPIOB,0x0001);     

                  GPIO_ResetBits(GPIOB,0x7C06);

            }

      }

 

}

附錄2:核心版原理圖及PCB

小系統(tǒng)原理圖:

圖片

核心版原理圖:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634624
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    34

    文章

    4424

    瀏覽量

    167396
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355727
  • 蜂鳴器
    +關(guān)注

    關(guān)注

    12

    文章

    891

    瀏覽量

    45917
  • 電子琴
    +關(guān)注

    關(guān)注

    4

    文章

    152

    瀏覽量

    30496
收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)制作簡易電子琴

    單片機(jī)制作簡易電子琴
    發(fā)表于 09-08 10:28

    基于51單片機(jī)簡易電子琴設(shè)計(jì)

    基于51單片機(jī)設(shè)計(jì)的簡易電子琴
    發(fā)表于 07-21 06:37

    基于單片機(jī)+藍(lán)牙HC-05模塊的簡易電子琴設(shè)計(jì)資料分享

    單片機(jī)實(shí)踐項(xiàng)目》之基于單片機(jī)+藍(lán)牙HC-05模塊的簡易電子琴設(shè)計(jì)與制作(七十五)鏈接:添加鏈接描述
    發(fā)表于 01-17 06:26

    基于單片機(jī)簡易電子琴設(shè)計(jì)

    使用簡單的51單片機(jī)就可以實(shí)現(xiàn)電子琴的設(shè)計(jì)制作,操作簡單易于初學(xué)者使用。
    發(fā)表于 11-18 17:13 ?75次下載

    單片機(jī)簡易電子琴

    簡易電子琴,基于單片機(jī)89c51,匯編語言和原理圖
    發(fā)表于 12-14 15:22 ?33次下載

    51 單片機(jī)簡易電子琴

    用51單片機(jī)設(shè)計(jì)16鍵簡易電子琴
    發(fā)表于 02-01 13:19 ?43次下載

    基于單片機(jī)簡易電子琴

    基于單片機(jī)簡易電子琴,四首歌曲循環(huán)播放
    發(fā)表于 06-19 15:42 ?81次下載

    使用51單片機(jī)進(jìn)行簡易電子琴設(shè)計(jì)的電路和程序資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)進(jìn)行簡易電子琴設(shè)計(jì)的電路和程序資料合集免費(fèi)下載。
    發(fā)表于 06-14 17:45 ?14次下載
    使用51<b class='flag-5'>單片機(jī)</b>進(jìn)行<b class='flag-5'>簡易</b><b class='flag-5'>電子琴</b>設(shè)計(jì)的電路和程序資料合集免費(fèi)下載

    使用C51單片機(jī)和Proteus仿真設(shè)計(jì)簡易電子琴的應(yīng)用實(shí)例資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用C51單片機(jī)和Proteus仿真設(shè)計(jì)簡易電子琴的應(yīng)用實(shí)例資料說明。
    發(fā)表于 05-20 08:00 ?20次下載
    使用C51<b class='flag-5'>單片機(jī)</b>和Proteus仿真設(shè)計(jì)<b class='flag-5'>簡易</b><b class='flag-5'>電子琴</b>的應(yīng)用實(shí)例資料說明

    基于單片機(jī)電子琴設(shè)計(jì)

    基于單片機(jī)電子琴設(shè)計(jì)方法介紹。
    發(fā)表于 05-28 10:59 ?315次下載

    基于STM32單片機(jī)電子琴設(shè)計(jì)與實(shí)現(xiàn)

    基于STM32單片機(jī)電子琴設(shè)計(jì)與實(shí)現(xiàn)
    發(fā)表于 06-27 09:25 ?121次下載

    單片機(jī)簡易電子琴設(shè)計(jì)報(bào)告..

    單片機(jī)簡易電子琴設(shè)計(jì)報(bào)告..(單片機(jī)解密)-該文檔為單片機(jī)簡易
    發(fā)表于 07-22 16:11 ?123次下載
    <b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>簡易</b><b class='flag-5'>電子琴</b>設(shè)計(jì)報(bào)告..

    電子DIY》之《單片機(jī)實(shí)踐項(xiàng)目》之基于單片機(jī)+藍(lán)牙HC-05模塊的簡易電子琴設(shè)計(jì)與制作(七十五)(Proteus仿真與實(shí)物制作)

    單片機(jī)實(shí)踐項(xiàng)目》之基于單片機(jī)+藍(lán)牙HC-05模塊的簡易電子琴設(shè)計(jì)與制作(七十五)鏈接:添加鏈接描述
    發(fā)表于 01-17 10:27 ?7次下載
    《<b class='flag-5'>電子</b>DIY》之《<b class='flag-5'>單片機(jī)</b>實(shí)踐項(xiàng)目》之基于<b class='flag-5'>單片機(jī)</b>+藍(lán)牙HC-05模塊的<b class='flag-5'>簡易</b><b class='flag-5'>電子琴</b>設(shè)計(jì)與制作(七十五)(Proteus仿真與實(shí)物制作)

    基于單片機(jī)電子琴設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于單片機(jī)電子琴設(shè)計(jì).rar》資料免費(fèi)下載
    發(fā)表于 01-03 11:06 ?2次下載

    基于單片機(jī)電子琴設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于單片機(jī)電子琴設(shè)計(jì).rar》資料免費(fèi)下載
    發(fā)表于 01-12 09:45 ?15次下載
    RM新时代网站-首页