freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機的電子琴設(shè)計畢業(yè)設(shè)計-全文預(yù)覽

2024-09-25 20:02 上一頁面

下一頁面
  

【正文】 TL0 = TL0code。 Speaker = ~Speaker。 TH0 = TH0code。 Speaker = ~Speaker。amp。 //關(guān)定時器 0 } /**************************************** 鍵值掃描函數(shù) ****************************************/ void Key_Scan(void) { uint key。 Flag = 0。 if(key == 0xfd) { Keycode = 2。 } } case 0xfb: //Mi { Delayms(10)。 //等待按鍵釋放 break。 while(P1 != 0xFF)。 Flag = 0。 if(key == 0xdf) { Keycode = 6。 } } case 0xbf: //Si { Delayms(10)。 //等待按鍵釋放 break。 Num = 0。 //等待按鍵釋放 break。x0。 } /**************************************** 鍵盤中斷函數(shù) ****************************************/ void Key_inter() interrupt 0 { Key_Scan()。 } 。 TL0 = TL0code。y0。 } } void Delayms(uint z)//延時 ms { uint x,y。 Time++。 if(key == 0x7f) { Keycode = 8。 Flag = 0。 while(P1 != 0xFF)。 //等待按鍵釋放 break。 } } case 0xef: //So { Delayms(10)。 if(key == 0xf7) { Keycode = 4。 Flag = 0。 while(P1 != 0xFF)。 //等待按鍵釋放 break。 switch(key) //鍵值 { case 0xfe: //Do { Delayms(10)。//Do~Si七個音調(diào)鍵分別顯示 1~7 else if(Keycode == 8) P0 = ~table[Time + 9]。 } default: break。 TR0 = 1。 } case 3: //播放第三首樂曲 { TH0code = Music3_Tab[Num++]。 //開定時器 0 基于 51 單片機的電子琴設(shè)計 23 Num++。 TL0code = Music2_Tab[Num]%256。 //開定時器 0 if(Num == 15) Num = 0。 TL0code = Music1_Tab[Num++]。 //開定時器 0 Speaker = ~Speaker。 TL0code = 0X5C。 TR0 = 1。 } case 6: //La 基于 51 單片機的電子琴設(shè)計 22 { TH0code = 0XFC。 //置初值 TL0 = TL0code。 break。 TH0 = TH0code。 //開 定時器 0 Speaker = ~Speaker。 TL0code = 0X5C。 TR0 = 1。 } case 2: //Re { TH0code = 0XFC。 //置初值 TL0 = TL0code。//開總中斷 } /**************************************** 音頻處理函數(shù) ****************************************/ void Sound_Player(void) { if(Flag == 0) //Do~Si七個音調(diào)鍵 { Flag = 1。//外部中斷 0 允許 TMOD = 0x01。//數(shù)碼管顯示鍵值 } } /**************************************** 初始化函數(shù) ****************************************/ void Init(void) { P0 = 0xff。 uchar code Music3_Tab[]={ //曲譜 3 碼表 0x64,0x42,0x62,0x98,0x74,0x92,0x72,0x68, 0x64,0x22,0x32,0x44,0x32,0x22,0x3c,0x64, 0x42,0x62,0x94,0x04,0x82,0x74,0x94,0x68, 0x64,0x32,0x42,0x54,0x04,0x12,0x2c,0x74, 0x94,0x98,0x84,0x72,0x82,0x98,0x72,0x82, 0x92,0x72,0x72,0x62,0x42,0x22,0x3c,0x64, 0x42,0x62,0x94,0x04,0x82,0x74,0x94,0x68, 0x64,0x32,0x42,0x54,0x04,0x12,0x2c,0x00}。 //揚聲器控制引腳 uint Num = 0。//鍵值 uint Time = 0。//鍵值掃描 void Delayms(uint z)。除此之外,對 51 系單片機的接口有了更深層次的理解,熟悉了一些單片機常用的外圍電路引腳和連接方法,諸如 LED 數(shù)碼管、鍵盤等等。其二是 按鍵引入中斷檢測時遇到的問題,要求 8 個按鍵任意鍵按都觸發(fā)外部中斷 0,結(jié)果不經(jīng)思索就選用了一塊 8 輸入或門芯片,導(dǎo)致怎么按鍵盤都無法進入中斷函數(shù),于是懷疑是程序有錯,浪費了很多時間,最終發(fā)現(xiàn)是硬件邏輯錯誤,應(yīng)該用與門才對。 本設(shè)計 基于單片機 AT89C51 的電子琴電路由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路、時鐘 復(fù)位電路和電源電路五部分所構(gòu)成。其二是 按鍵引入中斷檢測時遇到的問題,要求 8 個按鍵任意鍵按都觸發(fā)外部中斷 0,結(jié)果不經(jīng)思索就選用了一塊 8 輸入或門芯片,導(dǎo)致怎么按鍵盤都無法進入中斷函數(shù),于是懷疑是程序有錯,浪費了很多時間,最終發(fā)現(xiàn)是硬件邏輯錯誤,應(yīng)該用與門才對。但也一定瑕疵,按鍵按下后,延遲一會才有聲音。 Keil uVision4 引入了靈活的窗口管理系統(tǒng),能夠拖放到視圖內(nèi)的任何地方,包括支持多顯示器窗口。它是一個集模擬電路、數(shù)字電路、模 /數(shù)混合電路以及多種微控制器系統(tǒng)為一體的系統(tǒng)設(shè)計和仿真平臺。 break。 TH0 = TH0code。如圖 21 所示音頻處理函數(shù)的流程圖。 //等待按鍵釋放 }break。 key = P1。 鍵盤的每一行通過一個上拉電阻接高電平,當按鍵按下時,對應(yīng)的 I/O 口線被拉低。抖動時間的長短和按鍵的機械特性有關(guān),一般為 5~10ms。定時中斷的流程框圖如圖 18 所示,定時器溢出中斷后,進行重裝載初值, 同時執(zhí)行相應(yīng)的音頻控制操作。//Do~Si七個音調(diào)鍵分別顯示 1~7 else if(Keycode == 8) P0 = ~table[Time + 9]。若判斷是音調(diào)鍵將會顯示數(shù)字 1~7其中之一;若判斷是功能鍵將會顯示字母 A、 b、C 其中之一。//定時器 0 中斷允許 TR0 = 0。 IT0 = 1。//數(shù)碼管顯示鍵值 } } 初始化函數(shù) 初始化的流程框圖如圖 15 所示。另外,鍵碼的識別與刷新是通過中斷函數(shù)來完成。而為使編程思路清晰,應(yīng)先繪制程序流程圖。 圖 11 直流電源電路組成結(jié)構(gòu)圖 變壓器 整流電路 濾波電路 穩(wěn)壓電路 ~ 220V 50Hz 圖 12 12V 轉(zhuǎn) 5V 電源電路圖 基于 51 單片機的電子琴設(shè)計 10 整體電路 基于單片機 AT89C51 的電子琴電路由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路、時鐘 復(fù)位電路和電源電路五部分所構(gòu)成。 直流電源電路由降壓變壓器、全波整流、濾波、穩(wěn)壓電路構(gòu)成,其組成結(jié)構(gòu)如圖 11 所示。在單片機系統(tǒng)運行過程中,按下復(fù)位鍵,高電平輸入 RST 引腳,單片機被強制執(zhí)行復(fù)位操作,系統(tǒng)可以退出錯誤運行狀態(tài),恢復(fù)正常工作。 上電復(fù)位在單片機系統(tǒng)每次通電時執(zhí)行。本設(shè)計采用內(nèi)部時鐘方式做時鐘電 路。 時鐘 復(fù)位電路 時鐘電路 時鐘頻率直接影響單片機的速度,時鐘電路的質(zhì)量也直接影響單片機系統(tǒng)的穩(wěn)定性。如圖 7 所示為數(shù)碼管顯示電路,采用靜態(tài)驅(qū)動方式和共陽極接法,滿足本次設(shè)計要求。缺點是顯示亮度不如靜態(tài)顯示的亮度高。 LED 數(shù)碼管動態(tài)顯示 靜態(tài)顯示方式就是無論在任何時刻只有一個 LED 數(shù)碼管處于顯示狀態(tài),即單片機采用“掃描 ”方式控制各個數(shù)碼管輪流顯示。如果送往各個 LED 數(shù)碼管所顯示字符的段碼一經(jīng)確定,則相應(yīng) I/O 口鎖存器鎖存的段碼輸出將維持不變,直到送入另一個字符的段碼為止。當陽極為高電平時,發(fā)光二極管點亮。它 由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成, 每一段對應(yīng)一個發(fā)光二極管。但是從程序編寫的難易程度來看,若使用矩陣鍵盤電路來設(shè)計會比獨立式鍵盤電路難一些,故選擇獨立式鍵盤電路比較合理。 獨立式鍵盤電路如圖 3 所示, 8個獨立按鍵分別對應(yīng)一個 I/O 口線,當某一按鍵按下時,對應(yīng)的檢測線就變成了低電平,與其它按鍵相連的檢測線仍為高電平,只需讀入 I/O 輸入線的狀態(tài),判別哪一條 I/O 輸入線為低電平,很容易識別哪個鍵被按下。列線的電平如果為低,則行線電平為低;列線的電平如果為高,則行線的電平也為高,這是識別按鍵是否按下的關(guān)鍵所在。相對于獨立式鍵盤而言,軟件上編程會稍微復(fù)雜些。 琴鍵控制電路 琴鍵控制電路作為人機聯(lián)系的輸入部分,也是間接控制數(shù)碼顯示和音頻功放的重要組成部分。由于需要顯示的信息不多,顯示電路未采用液晶屏顯示,而是使用數(shù)碼管顯示電路負責顯示按下的琴鍵所對應(yīng)的鍵值,這樣既節(jié)省了成本了,又降低了編程難度 。除此之外還有一些革命性的特點:互動的電路仿真、仿真處理器及其外圍電路。關(guān)于這三種軟件的簡介如表 1 所示。關(guān)于聲音的處理,使用單片機 C 語言,利用定時器來控制頻率,而每個音符的符號只是存在自定義的表中。這就為電子琴的普及提供了方便。電子琴自動伴奏的穩(wěn)定性、準 確性,以及鮮
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1