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

正文內(nèi)容

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

2025-05-17 22:45 本頁面


【正文】 由鍵盤來實(shí)現(xiàn)。鍵盤是由若干個按鍵組成的開關(guān)矩陣,它是最簡單的單片機(jī)輸入設(shè)備,通過鍵盤可輸入數(shù)據(jù)和命令,實(shí)現(xiàn)簡單的人機(jī)對話。鍵盤根據(jù)其結(jié)構(gòu)不同可分為編碼式鍵盤和非編碼式鍵盤兩種。非編 碼式鍵盤靠軟件識別,節(jié)省硬件,通常采用這種鍵盤。根據(jù)鍵盤與單片機(jī)接法不同,非編碼鍵盤又分為獨(dú)立式和矩陣式兩種。當(dāng)系統(tǒng)操作較簡單所需按鍵較少時,可采用獨(dú)立式非編碼鍵盤,而當(dāng)系統(tǒng)操作較復(fù)雜,需要按鍵較多時,可采用矩陣式非編碼鍵盤。如果采用獨(dú)立按鍵的方式,會占用大量的 I/O 口資源,故我們采用矩陣式鍵盤輸入。采用四條 I/O 線作為行線,六條 I/O 線作為列線組成鍵盤。在行線和列線的每個交叉點(diǎn)上設(shè)置一個按鍵,這樣鍵盤上按鍵的個數(shù)就為 4 6個。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中 I/O 口的利用率,如圖 2— 1所 示: 圖 21 矩陣式鍵盤 5 鍵盤的原理 如圖 2— 2所示, 采用列掃描法來識別按鍵。每個按鍵都有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和 CPU通信。鍵盤的一端(列線)通過電阻接 VCC,而接地是通過程序輸出數(shù)字“ 0”實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么?還要消除按鍵在閉合或斷開時的抖動。兩個并行口中,一個輸出掃描碼,使按鍵逐行動態(tài)接地;另一個并行口輸入按鍵狀態(tài),由行掃描值和回饋信號共同形成鍵編碼而識別按鍵, 通過軟件查表,查出該鍵的功能。 當(dāng)無按鍵閉合時, P10~P13 與 P14~P17 之間開路;當(dāng)有鍵閉合時,與閉合鍵相連的兩條 I/O 口線之間短路。判斷有無按鍵按下的方法是:第一步,置列線 P14~P17 為輸入狀態(tài),從行線 P10~P13 輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。第二步,行線輪流輸出低電平,從列線 P14~P17 讀入數(shù)據(jù),若有某一列為低電平,則對應(yīng)行線上有鍵按下。綜合一二兩步的結(jié)果,可確定按鍵編號。但是鍵閉合一次只能進(jìn)行一次鍵功能操作,因此須等到按鍵釋放后,再進(jìn)行鍵功能 操作,否則按一次鍵,有可能會連續(xù)多次進(jìn)行同樣的鍵操作。 6 圖 2— 2 鍵盤結(jié)構(gòu) 顯示模塊 發(fā)光二極管 LED 是單片機(jī)應(yīng)用系統(tǒng)中的一宗簡單而常用的輸出設(shè)備,其在系統(tǒng)中的主要作用是顯示單片機(jī)的輸出數(shù)據(jù)、狀態(tài)等。因而作為典型的外圍器件, LED 顯示單元是反映系統(tǒng)輸出和操作輸入的有效器件。 LED 具備數(shù)字接口可以方便的和大年紀(jì)系統(tǒng)連接;它的優(yōu)點(diǎn)是工作電壓低,響應(yīng)速度快,價格低,壽命長等,因而在單片機(jī)應(yīng)用系統(tǒng)中獲得了廣泛的應(yīng)用,所以在此設(shè)計中我首先選用了 LED作為顯示器件。 LED的顯示原理 LED 顯示器的結(jié)構(gòu) 及其段名 如圖 2— 3所示 ,連同小數(shù)點(diǎn)在內(nèi),共有 8 個 LED 燈,點(diǎn)亮合適的字段,即能顯示 0— 9的數(shù)字和某些字符、符號。這種顯示器有兩種形式 :一種是發(fā)光二極管的陰極連在一起的共陰極顯示器,另一種是陽極連在一起的 共陽極顯示器。 共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極 (COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極 COM 接到 +5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā) 7 光二極管的陰極接到一起形成公共陰極 (COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線 GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。 圖 2— 3 LED段碼 為了顯示數(shù)字或符號,要為 LED顯示器提供代碼,即字形代碼。七段發(fā)光二極管,再加上一個小數(shù)點(diǎn)位,共計 8段,因此提供的字形代碼的長度正好是一個字節(jié)。簡易計算器用到的數(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ù)碼管共陰極 字形代碼 動態(tài)顯示的工作原理 點(diǎn)亮顯示 器的方法有靜態(tài)和動態(tài)兩種,這里顯示位數(shù)較多,采用動態(tài)顯示較合適,如圖 2— 4所示, 所謂動態(tài)顯示,就是 用掃描的方法一位一位輪流點(diǎn)亮 顯示器 的各位 ,該方法只需一個 8位段輸出口和一個 8位掃描輸出口,后者的作用是依次接通各位 LED。 對于顯示器的每一位來說,每隔一段時間點(diǎn)亮一次,利用人眼的視覺暫留效應(yīng)可以看到整個動態(tài)顯示 ,但必須保證掃描速度足夠快,字符才不閃爍 。 圖 2— 4 數(shù)碼管的動態(tài)顯示 音頻控制模塊 如圖 2— 5所示 為音 頻放大濾波電路,端口輸入的方波經(jīng)放大濾波后,驅(qū)動 9 揚(yáng)聲器發(fā)聲。聲音的頻率由端口輸入時延時控制,不同頻率的脈沖控制喇叭發(fā)出不同的音調(diào)。 圖 2— 5 音頻放大濾波電路 第 3章 軟件設(shè)計 基本功能設(shè)計 實(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)算主程序框圖如下 : 否 是 無符號位 符號位顯示“ ” 數(shù)值對 10取模,送顯示 最低位 數(shù)值除以 10 數(shù)值對 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ù)計算結(jié)果 本次功能鍵?是? 是“ =” 其它鍵 計算最后結(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) // 延時子程序 { 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è)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1