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

正文內(nèi)容

c語(yǔ)言單片機(jī)實(shí)例(參考版)

2025-01-10 11:40本頁(yè)面
  

【正文】 while(1) { i = key_temp()。 } } eles //如果沒(méi)有按鍵按下,輸出沒(méi)有按鍵按下標(biāo)志“ 88” return(88)。j16。 if(P1 != P_scan[i]) delay(200)。 i 4。 } uchar key_temp( void) //鍵盤(pán)掃描函數(shù) { uchar i, j。 code uchar seven_seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。 P 1 . 0P 1 . 1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 62345678P 0 . 0 / A D 0P 0 . 1 / A D 1P 0 . 2 / A D 2P 0 . 3 / A D 3P 0 . 4 / A D 4P 0 . 5 / A D 5P 0 . 6 / A D 6P 0 . 7 / A D 7P 2 . 7 / A 1 5P 2 . 6 / A 1 4P 2 . 5 / A 1 3P 2 . 4 / A 1 2P 2 . 3 / A 1 1P 2 . 2 / A 1 0P 2 . 1 / A 9P 2 . 0 / A 8R E S E TX T A L 2X T A L 1E AA L EP S E N3 93 83 73 63 53 43 33 23 13 02 92 82 72 62 52 42 32 22 1P 3 . 0 / R X DP 3 . 1 / T X DP 3 . 2 / I N T 0P 3 . 3 / I N T 1P 3 . 4 / T 0P 3 . 5 / T 1P 3 . 6 / W RP 3 . 7 / R D1 01 11 21 31 41 51 61 7P 1 . 711 91 89C 1 3 0 PC 2 3 0 PC Y 1 2 M H zR 1 1 KC 3 1 0μI C S T C 8 9 C 5 1V C CR 2 ~ 9 2 0 0S E V E N _ S E GN O T 1N O T 2P 1 . 0P 1 . 1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 7P 1 . 0P 1 . 1P 1 . 2P 1 . 3P1.7P1.6P1.5P1.4K 0K 1K 2K 3K 4K 5K 6K 7K 8K 9K 1 0K 1 1K 1 2K 1 3K 1 4K 1 5 圖 335 44 鍵盤(pán)陣列電路原理 二、程序設(shè)計(jì) /*****************************************************************************/ include define uchar unsigned char code uchar P_scan[] = {0x01,0x02,0x04,0x08}。鍵盤(pán)和 P1 口之間采用總線連接布局,在電路原理設(shè)計(jì)過(guò)程中,總線只是圖示引腳之間的相連接關(guān)系,但不具有電氣連接特性,相連引腳之間需要標(biāo)注相同的網(wǎng)絡(luò)標(biāo)號(hào)采用電氣連接特性,如圖 335 中,單片機(jī)的 與鍵盤(pán)陣列上的 相連。 3.把鍵盤(pán)掃描 key_scan()函數(shù)放在主函數(shù)的 while 循環(huán)體中,程序執(zhí)行時(shí)會(huì)斷調(diào)用 key_scan(),如果沒(méi)有按鍵按下,執(zhí)行 key_scan()的時(shí)間很短,如果有按鍵按下,用于按鍵掃面函數(shù)又調(diào)用了延時(shí)函數(shù),程序執(zhí)行時(shí)間會(huì)變長(zhǎng)。 } 2.利用按鍵調(diào)整數(shù)據(jù)時(shí),有時(shí)會(huì)調(diào)整過(guò) 量,需要進(jìn)行判斷重置。 key_flog = 1。amp。 if(key_count != 0) { key_count。 TH0 = (timer0_count 8)。 TL0 = (timer0_count amp。 char key_count。 //按鍵抬起狀態(tài)變量為 1 } …… if(key1_up_state == 1) { key1_up_state = 0; //按鍵按下抬起時(shí),數(shù)據(jù)調(diào)整 i++; } …… /*********************************/ 我們也可以使用定時(shí)器中斷對(duì)鍵盤(pán)掃描,實(shí)現(xiàn)鍵盤(pán)輸入,下面時(shí)利用 Timer0 中斷實(shí)現(xiàn)的鍵盤(pán)輸入,其中鍵盤(pán) key1 接單片機(jī) I/O 口 , Timer0 工作在模式 1。 key1_down_state = 1) //如果按鍵按下又放開(kāi) { key1_down_state = 0。 //如果按鍵按下,按下?tīng)顟B(tài)變量為 1 } if( key1 == 1 amp。如果按鍵按下 既不讓程序死循環(huán),也不讓由于按鍵按的時(shí)間過(guò)長(zhǎng)而數(shù)據(jù)調(diào)整失控,最可靠的辦法是利用變量記憶按鍵按下和放開(kāi)的兩種狀態(tài),根據(jù)判斷實(shí)現(xiàn)鍵盤(pán)輸入。此種編程方法并不影響單片機(jī)驅(qū)動(dòng) 1 個(gè)數(shù)碼管工作,但動(dòng)態(tài)顯示電路在此種情況下不能正常工作。 }P0 = seven_seg[i]。 key2_state = 0。 //數(shù)據(jù)增加后,鍵盤(pán)狀態(tài)變量清零 if(i9) i = 0。 //調(diào)用鍵盤(pán)掃描函數(shù) if(key1_state = 1) //判斷鍵盤(pán)狀態(tài)變量,如果為 1,說(shuō)明有按鍵按下 { i++。 } } void main(void) { char i。 //再對(duì)按鍵檢測(cè),如果確實(shí)按下,按鍵狀態(tài)變量為 1 } if( key2 == 0) { delay(200)。 } void key_scan(void) //鍵盤(pán)掃描函數(shù) { if( key1 == 0) //如果按鍵按下 { delay(200)。 uchar key1_state, key2_state。 sbit key1 = 。 Relasy 下的 Switches 里。數(shù)碼管仍使用共陽(yáng)型。本案例完成通過(guò)兩個(gè)鍵盤(pán)設(shè)計(jì),實(shí)現(xiàn)對(duì)數(shù)碼管顯示數(shù)據(jù)的調(diào)整。在數(shù)碼管動(dòng)態(tài)顯示電路中,為了節(jié)省硬件資源,可以在 INT0 口和 P2 口之間接入鍵盤(pán),實(shí)現(xiàn) 8 只按鍵輸入。利用外部中斷觸發(fā)作為按鍵輸入很好的解決了鍵盤(pán)抖動(dòng)問(wèn)題。 //等待按鍵按下,中斷發(fā)生 } /*****************************************************************************/ 三、程序說(shuō)明 這里沒(méi)有設(shè)置 INT0 是下降沿觸發(fā)中斷或是低電平觸發(fā)中斷,原因是按鍵按下,不管產(chǎn)生不產(chǎn)生鍵抖現(xiàn)象,總能使 INT0 引腳產(chǎn)生 1 個(gè)下降沿和低電平。 //INT0 中斷優(yōu)先,可以省去 EA = 1。 EX0 = 1。 //調(diào)用延時(shí)函數(shù) } void main(void) { LED = 0。 //INT0 中斷 1 次, i 值改變 1 次 LED = i。 void int0_isr(void) interrrupt 0 //INT0 中斷服務(wù)函數(shù), INT0 的中斷號(hào)為 0 { unsigned char i = 0。為了消除鍵盤(pán)抖動(dòng)現(xiàn)象,鍵盤(pán)兩端并聯(lián)濾波電容器 C4。 利用外部中斷 INT0 實(shí)現(xiàn)鍵盤(pán)輸入 本案列利用外部中斷 INT0 作為鍵盤(pán)輸入端,當(dāng)按鍵按下時(shí),讓單片機(jī)執(zhí)行外部中斷服務(wù)程序,在中斷服務(wù)中完成鍵盤(pán)控制。因此不能直接把按鍵作為 1 個(gè)脈沖的輸入。從圖中可以了解到,按鍵按下的瞬間由于震動(dòng)會(huì)是按鍵內(nèi)部的導(dǎo)體穩(wěn)定接觸,而是 在導(dǎo)通和不導(dǎo)通之間來(lái)回彈跳,雖然時(shí)間一瞬間,但使 CP端獲得了多個(gè)電平的上升沿。圖 332 是按鍵按下過(guò)程中 CP 端實(shí)際電平改變情況。實(shí)際實(shí)驗(yàn)時(shí)會(huì)發(fā)現(xiàn),按鍵按下 1 次,計(jì)數(shù)器不是加 1,而是跳躍一次性增加 3 或 4。按鍵不按時(shí), CP = 0,計(jì)數(shù)器不加 1 計(jì)數(shù)。為了觀察按鍵的抖動(dòng)現(xiàn)象,我們先做一個(gè)小實(shí)驗(yàn),分析一下一個(gè)微觸按鍵產(chǎn)生抖動(dòng)對(duì)系統(tǒng)的影響。這種現(xiàn)象稱為鍵盤(pán)抖動(dòng)。 按鍵按下會(huì)產(chǎn)生抖動(dòng)現(xiàn)象,不能安全有效的對(duì)系統(tǒng)控制,本節(jié)根據(jù)按鍵產(chǎn)生的抖動(dòng)機(jī)理,提出以中斷、延時(shí)等措施消除鍵盤(pán)輸入過(guò)程中的不穩(wěn)定因素,實(shí)現(xiàn)單片機(jī)系統(tǒng)鍵盤(pán)的穩(wěn)定輸入。 鍵盤(pán)程序設(shè)計(jì) 按鍵是一種開(kāi)關(guān),通過(guò)外界作用力,導(dǎo)電金屬或?qū)щ姺墙饘俳佑|與分離實(shí)現(xiàn)電路通斷的控制是按鍵的基本機(jī)械原理,如計(jì)算機(jī)鍵盤(pán)、手機(jī)、 MP3 以及電子表按鍵。為了讓小時(shí)的個(gè)位小數(shù)點(diǎn)常亮,讓小時(shí)個(gè)位顯示時(shí),把顯示編碼數(shù)據(jù)的高8 位設(shè)置為 0;為了分個(gè)位小數(shù)點(diǎn)秒閃爍,把分個(gè)位小數(shù)點(diǎn)位設(shè)置一個(gè)周期變化的量即可。 time now; //now 是數(shù)據(jù)類型為 time 的變量 /*************************/ 然后就可以用 , counter[2]、 counter[1] 和 counter[0].變量 timer0 中斷服務(wù)函數(shù)時(shí)調(diào)用了 dispaly()函數(shù),直接把 dispaly()的函數(shù)體程序?qū)懺谥袛嗪瘮?shù)體內(nèi)也行,但中斷服務(wù)函數(shù)會(huì)顯得臃腫。 ucar sec。 } /*****************************************************************************/ 三、程序說(shuō)明 counter[2]、 counter[1] 和 counter[0]變量分別表示時(shí)、分和秒位的數(shù)值大小,也可以利用結(jié)構(gòu)體定義這些變量,如: /*************************/ typedef struct { ucar hour。 TR0 = 1。 ET0 = 1。 TH0 = 0xee。 TMOD = 0x01; TR0 = 0。 display()。 counter[2]++。 counter[1]++。 counter[0]++。 //秒脈沖信號(hào) j++。 // timer0 中斷 1 次,變量 cp 加 1 if(cp == 100) //中斷 100 次,時(shí)間剛好為 秒 { cp = 0。 // TH0 重新預(yù)置 TR0 = 0。 //停止計(jì)數(shù) TL0 = 0x11。 if(i == 6) i = 0。 P2 = seg_scan[i]。 break。 break。 //顯示分十位 case 4 : P0 = 0x7f amp。 //數(shù)據(jù)高 8 位 1 秒改變 1 次,實(shí)現(xiàn)小 //數(shù)點(diǎn)秒閃爍 case 3 : P0 = seven_seg[counter[0]/10]。 seven_seg[counter[0]%10]。 break。 break。 //d 的值 1 秒內(nèi)改變 1 次,要么 0x00,要么 0xff d = d | 0x7f。 //時(shí)位、分位和秒位 uchar tick,cp,i,j。 code uchar seg_scan[6] = {0xfb,0xf7,0xef,0xdf,0bf,0x7f}。其中小時(shí)和分鐘之間的小數(shù)點(diǎn)常亮,分鐘和秒之間的小數(shù)點(diǎn)進(jìn)行秒閃爍。 // P0 輸出千位數(shù)據(jù)編碼 P2 = seg_scan[0]。 // P0 輸出十位數(shù)據(jù)編碼 P2 = seg_scan[1]。 // P0 輸出百位數(shù)據(jù)編碼 P2 = seg_scan[2]。 // P0 輸出千
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1