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

正文內(nèi)容

基于51單片機的c語言程序設計(編輯修改稿)

2024-07-21 16:36 本頁面
 

【文章內(nèi)容簡介】 x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88}。//延時void DelayMS(uint x){ uchar i。 while(x) for(i=0。i120。i++)。} //鍵盤掃描uchar Keys_Scan(){ uchar sCode,kCode,i,k。 //低4位置0,放入4行 P1=0xf0。 //若高4位出現(xiàn)0,則有鍵按下 if((P1amp。0xf0)!=0xf0) { DelayMS(2)。 if((P1amp。0xf0)!=0xf0) { sCode=0xfe。 //行掃描碼初值 for(k=0。k4。k++) //對4行分別進行掃描 { P1=sCode。 if((P1amp。0xf0)!=0xf0) { kCode=~P1。 for(i=0。i16。i++) //查表得到按鍵序號并返回 if(kCode==KeyCodeTable[i]) return(i)。 } else sCode=_crol_(sCode,1)。 } } } return(1)。}//主程序void main(){ uchar i,P2_LED,P3_LED。 uchar KeyNo=1。 //按鍵序號,1表示無按鍵 while(1) { KeyNo=Keys_Scan()。 //掃描鍵盤獲取按鍵序號KeyNo if(KeyNo!=1) { P2_LED=0xff。 P3_LED=0xff。 for(i=0。i=KeyNo。i++) //鍵值越大,點亮的LED越多 { if(i8) P3_LED=1。 else P2_LED=1。 } P3=P3_LED。 //點亮條形LED P2=P2_LED。 } }}17 數(shù)碼管顯示4X4矩陣鍵盤按鍵號/* 名稱:數(shù)碼管顯示4X4矩陣鍵盤按鍵號 說明:按下任意鍵時,數(shù)碼管都會顯示其鍵的序號,掃描程序首先判斷按鍵發(fā)生在哪一列,然后根據(jù)所發(fā)生的行附加不同的值,從而得到按鍵的序號。*/includedefine uchar unsigned chardefine uint unsigned int//段碼uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00}。sbit BEEP=P3^7。//上次按鍵和當前按鍵的序號,該矩陣中序號范圍0~15,16表示無按鍵uchar Pre_KeyNo=16,KeyNo=16。//延時void DelayMS(uint x){ uchar i。 while(x) for(i=0。i120。i++)。} //矩陣鍵盤掃描void Keys_Scan(){ uchar Tmp。 P1=0x0f。 //高4位置0,放入4行 DelayMS(1)。 Tmp=P1^0x0f。//按鍵后0f變成0000XXXX,X中一個為0,3個仍為1,通過異或把3個1變?yōu)?,唯一的0變?yōu)? switch(Tmp) //判斷按鍵發(fā)生于0~3列的哪一列 { case 1: KeyNo=0。break。 case 2: KeyNo=1。break。 case 4: KeyNo=2。break。 case 8: KeyNo=3。break。 default:KeyNo=16。 //無鍵按下 } P1=0xf0。 //低4位置0,放入4列 DelayMS(1)。 Tmp=P14^0x0f。//按鍵后f0變成XXXX0000,X中有1個為0,三個仍為1;高4位轉(zhuǎn)移到低4位并異或得到改變的值 switch(Tmp) //對0~3行分別附加起始值0,4,8,12 { case 1: KeyNo+=0。break。 case 2: KeyNo+=4。break。 case 4: KeyNo+=8。break。 case 8: KeyNo+=12。 }}//蜂鳴器void Beep(){ uchar i。 for(i=0。i100。i++) { DelayMS(1)。 BEEP=~BEEP。 } BEEP=0。}//主程序void main(){ P0=0x00。 BEEP=0。 while(1) { P1=0xf0。 if(P1!=0xf0) Keys_Scan()。 //獲取鍵序號 if(Pre_KeyNo!=KeyNo) { P0=~DSY_CODE[KeyNo]。 Beep()。 Pre_KeyNo=KeyNo。 } DelayMS(100)。 }}18 開關控制LED/* 名稱:開關控制LED 說明:開關S1和S2分別控制LED1和LED2。*/includesbit S1=P1^0。sbit S2=P1^1。sbit LED1=P0^0。sbit LED2=P0^1。//主程序void main(){ while(1) { LED1=S1。 LED2=S2。 }}19 繼電器控制照明設備/* 名稱:繼電器控制照明設備 說明:按下K1燈點亮,再次按下時燈熄滅*/includedefine uchar unsigned chardefine uint unsigned intsbit K1=P1^0。sbit RELAY=P2^4。//延時void DelayMS(uint ms){ uchar t。 while(ms)for(t=0。t120。t++)。}//主程序void main(){ P1=0xff。 RELAY=1。 while(1) { if(K1==0) { while(K1==0)。 RELAY=~RELAY。 DelayMS(20)。 } }}20 數(shù)碼管顯示撥碼開關編碼/* 名稱:數(shù)碼管顯示撥碼開關編碼 說明:系統(tǒng)顯示撥碼開關所設置的編碼000~255*/includeincludedefine uchar unsigned chardefine uint unsigned int//各數(shù)字的數(shù)碼管段碼(共陰)uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。//顯示緩沖uchar DSY_Buffer[3]={0,0,0}。//延時void DelayMS(uint ms){ uchar t。 while(ms)for(t=0。t120。t++)。}//主程序void main(){ uchar i,m,Num。 P0=0xff。 P2=0xff。 while(1) { m=0xfe。 Num=P1。 //讀取撥碼開關的值 DSY_Buffer[0]=Num/100。 DSY_Buffer[1]=Num/10%10。 DSY_Buffer[2]=Num%10。 for(i=0。i3。i++) //刷新顯示在數(shù)碼管上 { m=_crol_(m,1)。 P2=m。 P0=DSY_CODE[DSY_Buffer[i]]。 DelayMS(10)。 } }}21 開關控制報警器/* 名稱:開關控制報警器 說明:用K1開關控制報警器,模擬很逼真的報警效果*/includedefine uchar unsigned chardefine uint unsigned intsbit SPK=P1^0。sbit K1=P1^7。//發(fā)聲函數(shù)void Alarm(uchar t){ uchar i,j。 for(i=0。i200。i++) { SPK=~SPK。 for(j=0。jt。j++)。 //由參數(shù)t行成不同的頻率 }}void main(){ SPK=0。 while(1) { if(K1==1) { Alarm(90)。 Alarm(120)。 } }}22 按鍵發(fā)音/* 名稱:按鍵發(fā)音 說明:按下不同的按鍵會是SOUNDER發(fā)出不同頻率的聲音。本例使用延時函數(shù)實現(xiàn)不同頻率的聲音輸出,以后也可使用定時器*/includedefine uchar unsigned chardefine uint unsigned intsbit BEEP=P3^7。sbit K1=P1^4。sbit K2=P1^5。sbit K3=P1^6。sbit K4=P1^7。//延時void DelayMS(uint x){ uchar t。 while(x) for(t=0。t120。t++)。}//按周期t發(fā)音void Play(uchar t){ uchar i。 for(i=0。i100。i++) { BEEP=~BEEP。 DelayMS(t)。 } BEEP=0。}void main(){ P1=0xff。 BEEP=0。 while(1) { if(K1==0) Play(1)。 if(K2==0) Play(2)。 if(K3==0) Play(3)。 if(K4==0) Play(4)。 }}23 播放音樂/* 名稱:播放音樂 說明:程序運行時播放生日快樂歌, 未使用定時器中斷,所有頻率完全用延時實現(xiàn)*/includedefine uchar unsigned chardefine uint unsigned intsbit BEEP=P3^7。//生日快樂歌的音符頻率表,不同頻率由不同的延時來決定uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0}。//生日快樂歌節(jié)拍表,節(jié)拍決定每個音符的演奏長短uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0}。//延時void DelayMS(uint x){ uchar t。 while(x) for(t=0。t120。t++)。}//播放函數(shù)void PlayMusic(){ uint i=0,j,k。 while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) { //播放各個音符,SONG_LONG為拍子長度 for(j=0。jSONG_LONG[i]*20。j++) { BEEP=~BEEP。 //SONG_TONE延時表決定了每個音符的頻率 for(k=0。kSONG_TONE[i]/3。k++)。 } DelayMS(10)。 i++。 }}void main(){ BEEP=0。 while(1) { PlayMusic()。 //播放生日快樂 DelayMS(500)。 //播放完后暫停一段時間 }}24 INT0中斷計數(shù) /* 名稱:INT0中斷計數(shù) 說明:每次按下計數(shù)鍵時觸發(fā)INT0中斷,中斷程序累加計數(shù), 計數(shù)值顯示在3只數(shù)碼管上,按下清零鍵時數(shù)碼管清零*/includedefine uchar unsigned chardefine uint unsigned int//0~9的段碼uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}。//計數(shù)值分解后各個待顯示的數(shù)位uchar DSY_Buffer[]={0,0,0}。uchar Count=0。sbit Clear_Key=P3^6。//數(shù)碼管上顯示計數(shù)值void Show_Count_ON_DSY(){ DSY_Buffer[2]=Count/100。 //獲取3個數(shù) DSY_Buffer[1]=Count%100/10。 DSY_Buffer[0]=Count%10。 if(DSY_Buffer[2]==0) //高位為0時不顯示
點擊復制文檔內(nèi)容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1