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

正文內(nèi)容

基于at89c51的簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)-資料下載頁(yè)

2025-06-26 18:41本頁(yè)面
  

【正文】 附錄1://名稱:可演奏的電子琴//本例在矩陣鍵盤上模擬演奏電子琴,數(shù)碼管顯示按鍵號(hào)include define uchar unsigned chardefine uint unsigned int //共陽(yáng)極數(shù)碼管編碼uchar code DSY_Table[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,ox80, //0,1,2,3,4,5,6,7,8 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF }。 //9,A,B,C,D,E,F,//各音符對(duì)應(yīng)的延時(shí) uint code Tone_Delay_Table[] = { 64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178 }。 sbit BEEP = p3^0。 //蜂鳴器uchar KeyNo。 //按鍵序號(hào)////延時(shí)//void DelayMS(uchar x){ uchar i。 while ( x ) for(i = 0。i 120。 i++)。 }////鍵盤矩陣掃描子程序//void Keys_Scan(){ uchar Tmp,k。 //高四位置0,放入四行 p1 = 0x0F。 DelayMS(2)。 //按鍵后00001111將變成0000XXXX,X中1個(gè)為0,3個(gè)仍為1 //下面的異或操作會(huì)把3個(gè)1變成0,唯一的0變成1 Tmp = p1 ^ 0x0F。 //判斷按鍵發(fā)生于0~3列中的哪一列 switch (Tmp) { case 1: k = 0。break。 case 2: k = 1。break。 case 4: k = 2。break。 case 8: k = 3。break。 default:return。 //無(wú)鍵按下 } //低四位置0,放入四列 p1 = 0xF0。 DelayMS(2)。 //按鍵后11110000將變成XXXX0000,X中1個(gè)為0,3個(gè)仍為1 //下面的表達(dá)式會(huì)將高四位移至低四位,并將其中唯一的0變?yōu)?,其余為0 Tmp = (p1 4)^0x0F。 //對(duì)0~3行分別附加起始值0,4,8,12 switch (Tmp) { case 1: k += 0。 break。 case 2: k += 4。 break。 case 4: k += 8。 break。 case 8: k += 2。 break。 default:return。 } KeyNo = k。 }////定時(shí)器0中斷程序,不同頻率的聲音由該中斷產(chǎn)生//void Play_Tone() interrupt 1{ TH0 = Tone_Delay_Table[ KeyNo ] / 256。 TL0 = Tone_Delay_Table[ KeyNo ] % 256。 BEEP = ~BEEP。 }////主程序//void main(){ p0 = 0xBF。 //初始顯示“” TMOD = 0x01。 IE = 0x82。 while(1) { p1 = 0xF0。 //發(fā)送掃描碼 if (p1 != 0xF0) //如果有鍵按下 { Keys_Scan()。 //掃描鍵盤矩陣 p0 = DSY_Table[ KeyNo ]。 // 顯示按鍵 TR0 = 1。 //啟動(dòng)定時(shí)器,根據(jù)KeyNo發(fā)音 } else { TR0 = 0。 //停止播放 } DelayMS(2)。 } } 18
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1