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

正文內(nèi)容

基于51單片機的電子琴設(shè)計畢業(yè)設(shè)計-閱讀頁

2024-09-17 20:02本頁面
  

【正文】 Do 1 523 0FBE9H 此處的 定時器初值 是在工作方式 1和 12MHZ 晶振時算得的 Re 2 587 0FC5FH Mi 3 659 0FCC1H Fa 4 698 0FCEFH So 5 754 0FD45H La 6 880 0FD92H 按鍵掃描開始 有按鍵按下? 有按鍵按下? 按鍵釋放? 執(zhí)行相應代碼 延時 10ms 結(jié)束 N Y Y Y N N 圖 20 鍵值掃描流程圖 基于 51 單片機的電子琴設(shè)計 14 void Sound_Player(void) { if(Flag == 0) //Do~Si七個音調(diào)鍵 { Flag = 1。 TL0code = 0XE9。//置初值 TL0 = TL0code。 //開定時器 0 Speaker = ~Speaker。 } … } … }} 七、電子琴系統(tǒng)調(diào)試 由于沒有硬件設(shè)備 , 所以無法進行硬件調(diào)試 , 但這并不妨礙軟件調(diào)試。 調(diào)試工具 Proteus 軟件是英國 Labcenter Electronics 公司研發(fā)的 EDA 工具軟件。是目前同類軟件中最先進、最完整的電子類仿真平臺之一。 最新的 Keil uVision4 IDE,旨在提高開發(fā)人員的生產(chǎn)力,實現(xiàn)更快,更有效的程 序開發(fā)。 Keil uVision4 在 Keil uVision3 IDE 的基礎(chǔ)上,增加了更多大眾化的功能:多顯示器和靈活的窗口管理系統(tǒng);系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器信息;調(diào)試還原Si 7 988 0FDD6H Y N N 單個音調(diào)播放 Y 功能鍵鍵碼? 音頻處理開始 結(jié)束 音調(diào)鍵鍵碼? 圖 21 音頻處理流程圖 樂曲播放 基于 51 單片機的電子琴設(shè)計 15 視圖創(chuàng)建并保存多個調(diào)試窗口布局;多項目工作區(qū)簡化與眾多的項目。由于音頻功放電路采用了 LM386 芯片,使得音頻放大更加的穩(wěn)定和沒有雜音, 進一步達到了實驗效果。調(diào)試結(jié)果與設(shè)計的基本一致,如表 8 所示。首先是 數(shù)碼管顯示亂碼的 問題,原本以為是數(shù)碼管字形碼表的代碼有錯,檢查幾遍發(fā)現(xiàn)代碼表 8 調(diào)試結(jié)果 按 鍵 編號 發(fā)聲 音調(diào) 數(shù)碼顯示內(nèi)容 備注 S1 Do 1 S2 Re 2 S3 Mi 3 S4 Fa 4 S5 So 5 S6 La 6 S7 Si 7 S8 播放樂曲 1~3 中之一 A或 b 或 C 按 8 鍵切換播放樂曲 1~3 圖 22 電子琴電路仿真圖 基于 51 單片機的電子琴設(shè)計 16 沒錯,后來結(jié)合硬件圖一看,才知道硬件圖中數(shù)碼管是共陽極接法,軟件中的數(shù)碼管字形碼表是共陰極的。其三是揚聲器發(fā)出的音調(diào)不對,甚至沒有聲音,這個問題主要是功放模塊沒有與揚聲器共地。目前,由于電子音樂的普及,電子琴就是一種新型的電子樂器。琴鍵控制電路采用了 8 輸入與門芯片CD4068B,收集 8 個獨立按鍵的開關(guān)狀態(tài)信號,并觸發(fā)單片機的外部中斷來處理;而數(shù)碼管顯示電路負責顯示按下的琴鍵所對應的鍵值;同時,音頻功放電路也會播放琴鍵對應的音調(diào);電源電路為整個電路提供能源。首先是 數(shù)碼管顯示亂碼的問題,原本以為是數(shù)碼管字形碼表的代碼有錯,檢查幾遍發(fā)現(xiàn)代碼沒錯,后來結(jié)合硬件圖一看,才知道硬件圖中數(shù)碼管是共陽極接法,軟件中的數(shù)碼管字形碼表是共陰極的。其三是揚聲器發(fā)出的音調(diào)不對,甚至沒有聲音,這個問題主要是功放模塊沒有與揚聲器共地 。首先硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作,基本掌握了 Protel99SE 原理圖的方法以及怎么利用 Proteus 進行數(shù)字電路仿真。在軟件方面,通過對外部中斷、定時器 /計數(shù)器、 I/O 的使用,使得 C 語言編程能力也有了較大的進步。//初始化 void Key_Scan(void)。//延時 void LED_Display(void)。//音頻處理 uint Keycode。 uint Flag = 0。 sbit Speaker = P3^0。 uchar code table[]={ //數(shù)碼管共陰碼表 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}。 uint code Music2_Tab[]={ //曲譜 2 碼表 64021,64103,64260,64400, 64524,64580,64684,64777, 64820,64898,64968,65030, 65058,65110,65157,65178}。 基于 51 單片機的電子琴設(shè)計 20 /**************************************** 主函數(shù) ****************************************/ void main() { Init()。//音頻處理函數(shù) LED_Display()。//先將 P0口置為 1 Speaker = 0。//外 部中斷 0 邊沿觸發(fā) EX0 = 1。//定時器方式 1 ET0 = 1。//關(guān)定時器 0 EA = 1。 switch(Keycode) { case 1: //Do { TH0code = 0XFB。 TH0 = TH0code。 TR0 = 1。 基于 51 單片機的電子琴設(shè)計 21 break。 TL0code = 0X5C。 //置初值 TL0 = TL0code。 //開定時器 0 Speaker = ~Speaker。 } case 3: //Mi { TH0code = 0XFC。 TH0 = TH0code。 TR0 = 1。 break。 TL0code = 0X5C。 //置初值 TL0 = TL0code。 //開定時器 0 Speaker = ~Speaker。 } case 5: //So { TH0code = 0XFC。 TH0 = TH0code。 TR0 = 1。 break。 TL0code = 0X5C。 //置初值 TL0 = TL0code。 //開定時器 0 Speaker = ~Speaker。 } case 7: //Si { TH0code = 0XFC。 TH0 = TH0code。 TR0 = 1。 break。 } } else if(Keycode ==8) //特殊功能鍵 { switch(Time) { case 1: //播放第一首樂曲 { TH0code = Music1_Tab[Num++]。 TH0 = TH0code。 TR0 = 1。 Speaker = ~Speaker。 } case 2: //播放第二首樂曲 { TH0code = Music2_Tab[Num]/256。 TH0 = TH0code。 TR0 = 1。 if(Num == 15) Num = 0。 break。 TL0code = Music3_Tab[Num++]。 //置初值 TL0 = TL0code。 //開定時器 0 if(Num == 64) Num = 0。 break。 } } } /**************************************** 數(shù)碼管顯示函數(shù) ****************************************/ void LED_Display(void) { if(Keycode0 amp。 Keycode8) P0 = ~table[Keycode]。//特殊功能鍵分別顯示 A、 b、 C TR0 = 0。 key = P1。 //消抖 基于 51 單片機的電子琴設(shè)計 24 if(key == 0xfe) { Keycode = 1。 while(P1 != 0xFF)。 } } case 0xfd: //Re { Delayms(10)。 Flag = 0。 //等待按鍵釋放 break。 if(key == 0xfb) { Keycode = 3。 while(P1 != 0xFF)。 } } case 0xf7: //Fa { Delayms(10)。 Flag = 0。 //等待按鍵釋放 break。 基于 51 單片機的電子琴設(shè)計 25 if(key == 0xef) { Keycode = 5。 while(P1 != 0xFF)。 } } case 0xdf: //La { Delayms(10)。 Flag = 0。 //等待按鍵釋放 break。 if(key == 0xbf) { Keycode = 7。 while(P1 != 0xFF)。 } } case 0x7f: // 播放 /下一首 { Delayms(10)。 Flag = 1。 if(Time == 4)Time=0。 while(P1 != 0xFF)。 } } 基于 51 單片機的電子琴設(shè)計 26 default : break。 for(x=z。x) for(y=110。y)。//鍵值掃描 } /**************************************** 定時中斷函數(shù) ****************************************/ void T0_inter() interrupt 1 { TH0 = TH0code。 Speaker = ~Spea
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1