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

正文內(nèi)容

片機(jī)課程設(shè)計(jì)---計(jì)算器實(shí)驗(yàn)-文庫(kù)吧

2025-05-17 22:45 本頁面


【正文】 由鍵盤來實(shí)現(xiàn)。鍵盤是由若干個(gè)按鍵組成的開關(guān)矩陣,它是最簡(jiǎn)單的單片機(jī)輸入設(shè)備,通過鍵盤可輸入數(shù)據(jù)和命令,實(shí)現(xiàn)簡(jiǎn)單的人機(jī)對(duì)話。鍵盤根據(jù)其結(jié)構(gòu)不同可分為編碼式鍵盤和非編碼式鍵盤兩種。非編 碼式鍵盤靠軟件識(shí)別,節(jié)省硬件,通常采用這種鍵盤。根據(jù)鍵盤與單片機(jī)接法不同,非編碼鍵盤又分為獨(dú)立式和矩陣式兩種。當(dāng)系統(tǒng)操作較簡(jiǎn)單所需按鍵較少時(shí),可采用獨(dú)立式非編碼鍵盤,而當(dāng)系統(tǒng)操作較復(fù)雜,需要按鍵較多時(shí),可采用矩陣式非編碼鍵盤。如果采用獨(dú)立按鍵的方式,會(huì)占用大量的 I/O 口資源,故我們采用矩陣式鍵盤輸入。采用四條 I/O 線作為行線,六條 I/O 線作為列線組成鍵盤。在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵,這樣鍵盤上按鍵的個(gè)數(shù)就為 4 6個(gè)。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中 I/O 口的利用率,如圖 2— 1所 示: 圖 21 矩陣式鍵盤 5 鍵盤的原理 如圖 2— 2所示, 采用列掃描法來識(shí)別按鍵。每個(gè)按鍵都有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和 CPU通信。鍵盤的一端(列線)通過電阻接 VCC,而接地是通過程序輸出數(shù)字“ 0”實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么?還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地;另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵, 通過軟件查表,查出該鍵的功能。 當(dāng)無按鍵閉合時(shí), P10~P13 與 P14~P17 之間開路;當(dāng)有鍵閉合時(shí),與閉合鍵相連的兩條 I/O 口線之間短路。判斷有無按鍵按下的方法是:第一步,置列線 P14~P17 為輸入狀態(tài),從行線 P10~P13 輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。第二步,行線輪流輸出低電平,從列線 P14~P17 讀入數(shù)據(jù),若有某一列為低電平,則對(duì)應(yīng)行線上有鍵按下。綜合一二兩步的結(jié)果,可確定按鍵編號(hào)。但是鍵閉合一次只能進(jìn)行一次鍵功能操作,因此須等到按鍵釋放后,再進(jìn)行鍵功能 操作,否則按一次鍵,有可能會(huì)連續(xù)多次進(jìn)行同樣的鍵操作。 6 圖 2— 2 鍵盤結(jié)構(gòu) 顯示模塊 發(fā)光二極管 LED 是單片機(jī)應(yīng)用系統(tǒng)中的一宗簡(jiǎn)單而常用的輸出設(shè)備,其在系統(tǒng)中的主要作用是顯示單片機(jī)的輸出數(shù)據(jù)、狀態(tài)等。因而作為典型的外圍器件, LED 顯示單元是反映系統(tǒng)輸出和操作輸入的有效器件。 LED 具備數(shù)字接口可以方便的和大年紀(jì)系統(tǒng)連接;它的優(yōu)點(diǎn)是工作電壓低,響應(yīng)速度快,價(jià)格低,壽命長(zhǎng)等,因而在單片機(jī)應(yīng)用系統(tǒng)中獲得了廣泛的應(yīng)用,所以在此設(shè)計(jì)中我首先選用了 LED作為顯示器件。 LED的顯示原理 LED 顯示器的結(jié)構(gòu) 及其段名 如圖 2— 3所示 ,連同小數(shù)點(diǎn)在內(nèi),共有 8 個(gè) LED 燈,點(diǎn)亮合適的字段,即能顯示 0— 9的數(shù)字和某些字符、符號(hào)。這種顯示器有兩種形式 :一種是發(fā)光二極管的陰極連在一起的共陰極顯示器,另一種是陽極連在一起的 共陽極顯示器。 共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極 (COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極 COM 接到 +5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā) 7 光二極管的陰極接到一起形成公共陰極 (COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線 GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就不亮。 圖 2— 3 LED段碼 為了顯示數(shù)字或符號(hào),要為 LED顯示器提供代碼,即字形代碼。七段發(fā)光二極管,再加上一個(gè)小數(shù)點(diǎn)位,共計(jì) 8段,因此提供的字形代碼的長(zhǎng)度正好是一個(gè)字節(jié)。簡(jiǎn)易計(jì)算器用到的數(shù)字 0~9的共陰極字形代碼如下表 2— 1所示: 顯示字形 g f g d c b a 段碼 0 0 1 1 1 1 1 1 3fh 1 0 0 0 0 1 1 0 06h 2 1 0 1 1 0 1 1 5bh 3 1 0 0 1 1 1 1 4fh 4 1 1 0 0 1 1 0 66h 5 1 1 0 1 1 0 1 6dh 6 1 1 1 1 1 0 1 7dh 7 0 0 0 0 1 1 1 07h 8 1 1 1 1 1 1 1 7fh 8 9 1 1 0 0 1 1 1 67h A 1 1 1 0 1 1 1 77h B 1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h D 1 0 1 1 1 1 0 5eh E 1 1 1 1 0 0 1 79h F 1 1 1 0 0 0 1 71h 表 21 0— 9 七段數(shù)碼管共陰極 字形代碼 動(dòng)態(tài)顯示的工作原理 點(diǎn)亮顯示 器的方法有靜態(tài)和動(dòng)態(tài)兩種,這里顯示位數(shù)較多,采用動(dòng)態(tài)顯示較合適,如圖 2— 4所示, 所謂動(dòng)態(tài)顯示,就是 用掃描的方法一位一位輪流點(diǎn)亮 顯示器 的各位 ,該方法只需一個(gè) 8位段輸出口和一個(gè) 8位掃描輸出口,后者的作用是依次接通各位 LED。 對(duì)于顯示器的每一位來說,每隔一段時(shí)間點(diǎn)亮一次,利用人眼的視覺暫留效應(yīng)可以看到整個(gè)動(dòng)態(tài)顯示 ,但必須保證掃描速度足夠快,字符才不閃爍 。 圖 2— 4 數(shù)碼管的動(dòng)態(tài)顯示 音頻控制模塊 如圖 2— 5所示 為音 頻放大濾波電路,端口輸入的方波經(jīng)放大濾波后,驅(qū)動(dòng) 9 揚(yáng)聲器發(fā)聲。聲音的頻率由端口輸入時(shí)延時(shí)控制,不同頻率的脈沖控制喇叭發(fā)出不同的音調(diào)。 圖 2— 5 音頻放大濾波電路 第 3章 軟件設(shè)計(jì) 基本功能設(shè)計(jì) 實(shí)驗(yàn)現(xiàn)象: 可以 實(shí)現(xiàn)基本的運(yùn)算 —— 加減乘除 以及 數(shù)據(jù)清 零 的功能 , 用 A、 B、 C、 D、 E、 F鍵分別代表“ +”、“ ”、“ *”、“ /”、“ =”、“清零” 。 程序流程圖 數(shù)據(jù)送顯示緩沖子程序框圖 如下: 10 是 數(shù)據(jù)送顯示緩沖子程序框圖 運(yùn)算主程序框圖如下 : 否 是 無符號(hào)位 符號(hào)位顯示“ ” 數(shù)值對(duì) 10取模,送顯示 最低位 數(shù)值除以 10 數(shù)值對(duì) 10取模,送顯示位 開始 數(shù)值 0 數(shù)值為 0? 顯示位上移 否 返回 11 運(yùn)算主程序流程圖 基本功能實(shí)現(xiàn)程序 : define LEDLen 6 //設(shè)置 LED顯示位數(shù)為六位 define PB1 2 define PB0 1 xdata unsigned char OUTBIT _at_ 0x9002。 // 位控制口 xdata unsigned char OUTSEG _at_ 0x9004。 // 段控制口 xdata unsigned char IN _at_ 0x9001。 // 鍵盤行碼讀回口 開始 初始化參數(shù) LED 顯示 有鍵輸入 讀取鍵碼 鍵碼是? 數(shù)字鍵 清零鍵 功能鍵 輸入數(shù)值 狀態(tài)清零 數(shù)值送顯示緩沖 根據(jù)上次功能鍵和輸入的數(shù)據(jù)計(jì)算結(jié)果 本次功能鍵?是? 是“ =” 其它鍵 計(jì)算最后結(jié)果 保存結(jié)果和功能鍵 結(jié)果送顯示緩沖 等待數(shù)值輸入 12 unsigned char LEDBuf[LEDLen]。 unsigned char LEDMAP[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }。 // 共陰極數(shù)碼管 字形代碼 void Delay(unsigned char CNT) // 延時(shí)子程序 { unsigned char i。 while (CNT !=0) for (i=100。 i !=0。 i)。 } void DisplayLED() // 逐位顯示數(shù)碼管 { unsigned char i, j。 unsigned char Pos。 unsigned char LED。 Pos = 0x20。 for (i = 0。 i LEDLen。 i++) { OUTBIT = 0。 // trun off all LED LED = LEDBuf[i]。 OUTSEG = LED。 // 段選 OUTBIT = Pos。 // trun on one LED 位選 Delay(1)。 Pos = 1。 } } unsigned char KeyTable[] = { 0x16, 0x15, 0x14, 0xff, 0x13, 0x12, 0x11, 0x10, 0x0d, 0x0c, 0x0b, 0x0a, 0x0e, 0x03, 0x06, 0x09, 0x0f, 0x02, 0x05, 0x08, 0x00, 0x01, 0x04, 0x07 }。 // 鍵盤各鍵代碼 unsigned char TestKey() // 檢查鍵盤是否有鍵按下 { OUTBIT = 0。 13 return (~IN amp。 0x0f)。 } unsigned char GetKey() // 得到按下鍵的數(shù)值 { unsigned char Pos。 unsigned char i。 unsigned char k。 i = 6。 Pos = 0x20。 do { OUTBIT = ~ Pos。 Pos = 1。 k = ~IN amp。 0x0f。 } while ((i != 0) amp。amp。 (k == 0))。 if (k != 0) { i *= 4。 if (k amp。 2) i += 1。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1