IIC讀卡器設(shè)計(jì)_第1頁(yè)
IIC讀卡器設(shè)計(jì)_第2頁(yè)
IIC讀卡器設(shè)計(jì)_第3頁(yè)
IIC讀卡器設(shè)計(jì)_第4頁(yè)
IIC讀卡器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 ic卡讀寫(xiě)器目 錄1 設(shè)計(jì)目的和要求11.1 設(shè)計(jì)目的11.2 設(shè)計(jì)要求12 硬件設(shè)計(jì)22.1 硬件選擇和總體系統(tǒng)框圖22.2 4x4矩陣鍵盤(pán)電路22.3 數(shù)碼管動(dòng)態(tài)、靜態(tài)顯示電路32.4 數(shù)據(jù)儲(chǔ)存電路43 軟件設(shè)計(jì)73.1 軟件總體流程73.2 ic器件的讀寫(xiě)83.3 反轉(zhuǎn)法讀鍵值93.4 數(shù)碼管掃描顯示104 軟硬件調(diào)試12 4.1 軟硬件協(xié)同調(diào)試125 實(shí)習(xí)心得13參考文獻(xiàn)15附錄16i1 設(shè)計(jì)目的和要求1.1 設(shè)計(jì)目的本課題的主要內(nèi)容是采用51系列微控制器實(shí)現(xiàn)ic讀寫(xiě)器的設(shè)計(jì),通過(guò)這個(gè)實(shí)習(xí),增強(qiáng)c語(yǔ)言程序設(shè)能力,同時(shí)加強(qiáng)對(duì)51系列微控制器及相關(guān)知識(shí)理論的使用,熟練掌握51系列微控制器

2、的編程、調(diào)試和應(yīng)用系統(tǒng)的開(kāi)發(fā)以及相關(guān)芯片總線協(xié)議的使用。1.2 設(shè)計(jì)要求1、密碼存儲(chǔ)在ic器件at24c02中,實(shí)現(xiàn)數(shù)據(jù)掉電不丟失。2、系統(tǒng)在上電后四個(gè)數(shù)碼管均顯示“”的初始化狀態(tài)。3、實(shí)現(xiàn)數(shù)字鍵0-9和相關(guān)功能鍵的設(shè)計(jì), 4、四個(gè)功能鍵的說(shuō)明:(1)輸入鍵:按下此鍵時(shí),四個(gè)數(shù)碼管空白顯示(全黑),每輸入一個(gè)數(shù)字就在數(shù)碼管上顯示出來(lái)。(2)讀出鍵:按下此鍵后,讀出24c02的數(shù)據(jù),并顯示在四個(gè)數(shù)碼管上。(3)復(fù)位鍵:在按下輸入鍵之后,輸入4個(gè)數(shù)字后,可以選擇該鍵表示放棄輸入不儲(chǔ)存,或者選擇儲(chǔ)存鍵。(4)儲(chǔ)存鍵:當(dāng)輸入修改的數(shù)字后,按下此鍵,將修改的數(shù)據(jù)進(jìn)行存儲(chǔ)并同時(shí)回到初始狀態(tài),顯示“”。2

3、硬件設(shè)計(jì)2.1 硬件選擇和總體系統(tǒng)框圖本設(shè)計(jì)采用stc89c52微控制器,用24c02作為存儲(chǔ)密碼的芯片,實(shí)現(xiàn)儲(chǔ)存數(shù)據(jù)斷電不丟失,采用4x4矩陣鍵盤(pán)輸入,四位共陽(yáng)數(shù)碼管動(dòng)態(tài)顯示密碼。管腳連接如圖2.1所示。圖中省略時(shí)鐘電路和電源電路。4位數(shù)碼管 p0/p3stc89c52rcp2 int0/int14x4矩陣鍵盤(pán) iic儲(chǔ)存器at24c02圖 2.1 總體系統(tǒng)框圖2.2 4x4矩陣鍵盤(pán)電路矩陣鍵盤(pán)又稱(chēng)行列式鍵盤(pán)。用i/o口線組成行列結(jié)構(gòu),按鍵設(shè)置在行列交點(diǎn)上。n條口線最多可構(gòu)造n個(gè)按鍵。4x4的行列結(jié)構(gòu)可構(gòu)成16個(gè)鍵的鍵盤(pán),如圖2.2所示。無(wú)按鍵時(shí)各行各列彼此相交而不相連。由行列線的電平狀態(tài)可

4、以識(shí)別唯一與之相連的按鍵,此過(guò)程成為讀鍵值。圖 2.2 4x4矩陣鍵盤(pán)鍵盤(pán)讀鍵采用反轉(zhuǎn)讀鍵法。第一步:先置行線p2.0p2.3為輸入線,列線p2.4p2.7為輸出線,且輸出為0。相應(yīng)的p2口寫(xiě)為0fh。若讀入低4位的數(shù)據(jù)為f,則表明有鍵按下,保存低4位數(shù)據(jù)。低4位中電平0的位置對(duì)應(yīng)的是被按下鍵的行位置。第二步:設(shè)置輸入輸出口對(duì)換,行線p2.0p2.3為輸出線,且輸出為0,列線p2.4p2.7為輸入線,i/o口編程數(shù)據(jù)為f0h。若讀入高4位數(shù)據(jù)不等于f,則認(rèn)為有鍵按下。讀入高4位數(shù)據(jù)中為0的位為列位置。保存高4位數(shù)據(jù),將兩次所讀數(shù)值按位或運(yùn)算一次,便得按鍵值。2.3 數(shù)碼管顯示電路設(shè)計(jì)中顯示4位

5、數(shù)據(jù)時(shí),采用數(shù)碼管動(dòng)態(tài)顯示方式,它既滿足4個(gè)數(shù)碼管的顯示要求,又節(jié)省了單片機(jī)的i/o管腳資源,只使用12條i/o口線。4個(gè)數(shù)碼管共用一個(gè)i/o口p0,如圖2.3所示,在每個(gè)瞬間,數(shù)碼管段碼相同。要達(dá)到多位顯示的目的,就要在每一瞬間只有一位共陽(yáng)端有效,即只選通一位數(shù)碼管。段碼由共用i/o口送來(lái),各位數(shù)碼管依次輪流選通,使每位顯示該位的字符,并保持一段時(shí)間,以適應(yīng)視覺(jué)暫留的效果。然后關(guān)閉該位數(shù)碼管,防止“殘影”現(xiàn)象。在顯示初始狀態(tài)“”時(shí),四位數(shù)碼管為靜態(tài)顯示,所有數(shù)碼顯示相同。圖 2.3 數(shù)碼管顯示電路2.4 數(shù)據(jù)存儲(chǔ)電路2.4.1 ic總線協(xié)議ic總線是由數(shù)據(jù)線sda和時(shí)鐘scl構(gòu)成的串行t通信

6、總線,可發(fā)送和接收數(shù)據(jù)。在微控制器與ic之間、ic與ic之間進(jìn)行雙向傳送,在信息的傳輸過(guò)程中,ic總線上并接的每一模塊電路既是主控器(或被控器),又是發(fā)送器(或接收器),這取決于它所要完成的功能。ic總線基本狀態(tài)如圖2.4:1)總線空閑(a)數(shù)據(jù)線和時(shí)鐘線同時(shí)為高電平。2)啟動(dòng)數(shù)據(jù)傳輸(b)時(shí)鐘(scl)為高電平時(shí),sda 從高電平變?yōu)榈碗娖奖硎酒鹗紬l件產(chǎn)生。起始條件必須先于所有的命令產(chǎn)生。3)停止數(shù)據(jù)傳輸(c)時(shí)鐘(scl)為高電平時(shí), sda 從低電平變?yōu)楦唠娖奖硎就V箺l件產(chǎn)生。所有操作都必須以停止條件結(jié)束。4)數(shù)據(jù)傳送/數(shù)據(jù)有效 (d)數(shù)據(jù)線的狀態(tài)表明數(shù)據(jù)何時(shí)有效。在起始條件之后,數(shù)據(jù)線

7、在時(shí)鐘處于高電平期間保持穩(wěn)定。必須在時(shí)鐘信號(hào)為低電平期間改變數(shù)據(jù)線。一個(gè)數(shù)據(jù)位對(duì)應(yīng)一個(gè)時(shí)鐘脈沖。數(shù)據(jù)的每次傳輸以起始條件開(kāi)始,以停止條件結(jié)束。在起始條件和停止條件之間傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)目由主器件決定。圖 2.4 基本狀態(tài)圖確認(rèn)信號(hào)(ack)每一個(gè)被尋址的接收器在接收到每一字節(jié)數(shù)據(jù)后,應(yīng)發(fā)送一個(gè)確認(rèn)位。主器件必須提供一個(gè)額外的時(shí)鐘以傳輸確認(rèn)位。在確認(rèn)時(shí)鐘脈沖內(nèi),器件確認(rèn)須拉低 sda 線。在確認(rèn)時(shí)鐘的高電平期間,sda線以這種方式保持穩(wěn)定的低電平。當(dāng)然,還必須考慮建立時(shí)間和保持時(shí)間。圖 2.5 6)無(wú)應(yīng)答信號(hào)(no ack)在時(shí)鐘的第9個(gè)脈沖期間發(fā)送器釋放數(shù)據(jù)總線,接收器不拉低數(shù)據(jù)總線表示一個(gè) n

8、o ack,no ack有兩種用途:a、一般表示接收器未成功接收數(shù)據(jù)字節(jié);b、當(dāng)接收器是主控器時(shí),它收到最后一個(gè)字節(jié)后,應(yīng)發(fā)送一個(gè)no ack信號(hào),以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,并釋放總線,以便主控接收器發(fā)送一個(gè)停止信號(hào)stop。2.4.2 eprom芯片24c02是2kb二線制ic串行eprom,其特征碼為1010b。模塊的電路圖如圖2.6所示。圖 2.6 模塊電路連接寫(xiě)數(shù)據(jù)過(guò)程:寫(xiě)操作時(shí),sda線上的信號(hào)依次為:?jiǎn)?dòng)start 1010 b2b1b0(0111b) 0低電平為寫(xiě)操作 應(yīng)答ack 8位的地址 ack 數(shù)據(jù)0 ack數(shù)據(jù)15 應(yīng)答ack 結(jié)束stop.24c02每一次寫(xiě)操作最多

9、可連續(xù)寫(xiě)8字節(jié)(一頁(yè)),也可以少于8字節(jié)。一旦停止信號(hào)被接收到,則24c02內(nèi)部寫(xiě)周期將開(kāi)始。在內(nèi)部寫(xiě)周期期間,不響應(yīng)外部信號(hào),直到寫(xiě)周期完成。如圖2.7所示為24系列存儲(chǔ)器寫(xiě)周期時(shí)序圖。圖2.7 24c02頁(yè)寫(xiě)入方式2)讀數(shù)據(jù)過(guò)程:讀操作時(shí),sda線上的信號(hào)依次為:?jiǎn)?dòng)start 1010 b2b1b0(0111b) 0低電平為寫(xiě)操作 應(yīng)答ack 8位的地址 ack start 1010 b2b1b0(0111b) 1高電平為讀操作 應(yīng)答ack 數(shù)據(jù)0 ack數(shù)據(jù)n 非應(yīng)答no ack 結(jié)束stop在讀數(shù)據(jù)之前,先寫(xiě)入要讀的數(shù)據(jù)所在的地址。然后,主器件在“應(yīng)答”位后產(chǎn)生一個(gè)啟動(dòng)信號(hào),以終止剛

10、才的寫(xiě)地址操作。隨后主器件再次發(fā)出控制字,r/w位為1,。24c02接收“應(yīng)答”信號(hào)后,便可讀數(shù)據(jù),可以讀一字節(jié)、兩字節(jié)、n字節(jié)的數(shù)據(jù)。讀完最后一個(gè)數(shù)據(jù)后,主器件發(fā)出“非應(yīng)答”(no ack)信號(hào)和停止(stop)信號(hào)。如圖2.8所示為24系列存儲(chǔ)器讀操作時(shí)序圖。圖 2.8 24c02讀時(shí)序3 軟件設(shè)計(jì)3.1 軟件總體流程軟件的設(shè)計(jì)主要包括:數(shù)據(jù)從ic器件的讀寫(xiě),鍵盤(pán)反轉(zhuǎn)讀鍵,數(shù)碼管掃描顯示,數(shù)據(jù)讀取儲(chǔ)存邏輯等。其總體流程圖如圖3.1所示。開(kāi)始顯示“”狀態(tài)鍵值掃描 c d關(guān)閉數(shù)碼管讀取iic數(shù)據(jù) 任意鍵顯示數(shù)據(jù),并等待退出輸入數(shù)據(jù) e f儲(chǔ)存輸入放棄輸入圖 3.1 程序總體流程3.2 ic器件

11、的讀寫(xiě)該模塊實(shí)現(xiàn) ic器件ram中00單元為首地址的連續(xù)4個(gè)字節(jié)的數(shù)據(jù)讀寫(xiě)。讀寫(xiě)原理在硬件設(shè)計(jì)中敘述,由于過(guò)程過(guò)長(zhǎng)在此不復(fù)述,其程序流程圖3.2、3.3如下:開(kāi)始開(kāi)始啟動(dòng) 啟動(dòng)啟動(dòng) 啟動(dòng) 寫(xiě)控制字 寫(xiě)控制字應(yīng)答 啟動(dòng)應(yīng)答 啟動(dòng) 8位地址 8位地址應(yīng)答 啟動(dòng)應(yīng)答 啟動(dòng)啟動(dòng) 啟動(dòng) 寫(xiě)數(shù)據(jù) 寫(xiě)控制字應(yīng)答 啟動(dòng)應(yīng)答 啟動(dòng)停止 啟動(dòng) 讀一字節(jié)非應(yīng)答 啟動(dòng)停止 啟動(dòng) 圖3.2 讀數(shù)據(jù)流程圖 圖 3.3 寫(xiě)數(shù)據(jù)流程圖3.3 鍵盤(pán)反轉(zhuǎn)讀鍵本設(shè)計(jì)程序中用反轉(zhuǎn)法對(duì)鍵盤(pán)進(jìn)行行列掃描,做到去抖動(dòng)且一次按鍵只讀一次鍵值。做一次掃描的過(guò)程包括,檢測(cè)是否有按鍵按下,如果有則延時(shí)10ms,以消除前抖動(dòng)影響,再檢測(cè)有無(wú)按鍵按下

12、,若有掃描鍵值,則確認(rèn)該按鍵按下,再檢測(cè)按鍵是否彈起,延時(shí)10ms,消除后抖動(dòng)影響。流程圖如圖3.4。 開(kāi)始有鍵按下嗎?返回值0xffn鍵盤(pán)行列掃描 y 延時(shí)按鍵松開(kāi)? n y查找鍵值 返回鍵值 圖 3.4 鍵盤(pán)掃描流程3.4 數(shù)碼管掃描顯示 數(shù)碼管采用動(dòng)態(tài)顯示和靜態(tài)顯示兩種方式做顯示。動(dòng)態(tài)顯示中,先進(jìn)行端選,再進(jìn)行位選,然后延時(shí)幾百微妙,達(dá)到暫留顯示的目的,最后關(guān)閉所有數(shù)碼管防止有重影的現(xiàn)象。其它位的數(shù)碼管依次重復(fù)這個(gè)過(guò)程,最后在程序設(shè)計(jì)流程圖如圖3.5所示。 開(kāi)始第一位小于10顯示,大于10則不顯示第二位小于10顯示,大于10則不顯示第三位小于10顯示,大于10則不顯示第四位小于10顯示,

13、大于10則不顯示 返回 圖 3.5 數(shù)碼管掃描程序流圖4 軟硬件調(diào)試4.1 硬件協(xié)同調(diào)試通過(guò)串口下載到單片機(jī)中的硬件調(diào)試,通過(guò)實(shí)際現(xiàn)象來(lái)查找代碼中的錯(cuò)誤,然后查找相關(guān)代碼的錯(cuò)誤,從而來(lái)改正相應(yīng)的代碼,初始狀態(tài)如實(shí)物如圖4.1所示。圖 4.1 初始狀態(tài)顯示 數(shù)碼管在首次輸入時(shí),無(wú)法關(guān)閉未輸入的數(shù)碼管,修改代碼后達(dá)到實(shí)際效果如圖4.2所示,可以關(guān)閉未輸入位的數(shù)碼管。圖4.2 輸入時(shí)數(shù)碼管關(guān)閉未輸入位5 實(shí)習(xí)心得剛開(kāi)始實(shí)習(xí)的時(shí)候,我們都覺(jué)得學(xué)過(guò)的知識(shí)很生疏,因?yàn)楹镁脹](méi)摸單片機(jī)了,雖然以前做過(guò)實(shí)驗(yàn),但那時(shí)用的是匯編語(yǔ)言,而現(xiàn)在使用c語(yǔ)言,不過(guò)c更加容易理解,適合設(shè)計(jì)程序。從焊接硬件電路開(kāi)始,閱讀參考實(shí)

14、驗(yàn)例程,相互探討編程思路,尋找資料等等,我們都在努力的自學(xué)著。通過(guò)這次的設(shè)計(jì),我們?cè)黾恿撕枚嗟氖斋@。首先,是學(xué)習(xí)上的鞏固。通過(guò)復(fù)習(xí)課本和實(shí)驗(yàn),對(duì)單片機(jī)的基礎(chǔ)知識(shí)又有了很大的鞏固。其次,通過(guò)對(duì)用c語(yǔ)言實(shí)ic卡讀寫(xiě)的功能,熟悉了keil軟件的一些相關(guān)的操作和調(diào)試編譯技巧,以及電子元器件的組裝知識(shí)等等。增進(jìn)了與同學(xué)的交流。平常除了上課,大家交流比較少。而每次做實(shí)習(xí)設(shè)計(jì)的時(shí)候,大家總會(huì)互相探討,發(fā)表自己的看法,當(dāng)遇到問(wèn)題時(shí),自己花了很長(zhǎng)時(shí)間都不能夠解決,同學(xué)的一些建議卻很快的解決了這個(gè)問(wèn)題。這讓我了解到與人合作的重要性,團(tuán)隊(duì)的重要性,一個(gè)人不可能解決所有的問(wèn)題。另外對(duì)單片機(jī)的接口電路有了進(jìn)一步了解,比

15、如矩陣鍵盤(pán),動(dòng)態(tài)掃描數(shù)碼管,eprom的ic時(shí)序的理解等。這樣我們不僅了解單片機(jī)的原理,而是給我?guī)?lái)了很多的思考如何對(duì)多個(gè)器件的讀寫(xiě),如何傳輸數(shù)據(jù)到電腦,如何組建局域網(wǎng)通信等等。讓我想學(xué)習(xí)更多的相關(guān)知識(shí),進(jìn)一步培養(yǎng)了我們的動(dòng)手能力和興趣。參考文獻(xiàn)1李鴻等單片機(jī)原理及應(yīng)用m湖南大學(xué)出版社,20052何立民單片機(jī)高級(jí)教程-應(yīng)用與設(shè)計(jì)m北京航空航天大學(xué)出版社,2000,83戴佳51單片機(jī)c語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例精講m北京:電子工業(yè)出版社,20064于京51系列單片機(jī)c程序設(shè)計(jì)與應(yīng)用案例m北京:中國(guó)電力出版社,20065孫育才atmel新型at89s52系列單片機(jī)及其應(yīng)用m北京:清華大學(xué)出版社, 200

16、56李華mcs-51系列單片機(jī)實(shí)用接口技術(shù)m北京:北京航空航天大學(xué)出版社,2000附錄程序清單:main.c /#include #include #include led.h#include key.h#include at24c02.h void main(void) unsigned char key; unsigned char count,t; unsigned char ge,shi,bai,qian; while(1) ledlock();/顯示- key = keyscan();/讀取鍵值.無(wú)按鍵按下值為255 if(key = 12 ) /讀取iic的值,并顯示ge=read

17、_add(0x00); /讀00單元的數(shù)據(jù)_nop_();shi=read_add(0x01);_nop_();bai=read_add(0x02);_nop_();qian=read_add(0x03);/讀出iic的值,還原為整數(shù)while( (keyscan()15) ) ledshow(ge,shi,bai,qian);/顯示讀取值if( key = 13)/修改iic的值,儲(chǔ)存或放棄 p3=0xff;/進(jìn)入修改關(guān)閉數(shù)碼管 count=0; qian=20; /讓數(shù)碼管在顯示時(shí),不顯示未讀入鍵值的位 bai=20; shi=20; ge=20;while( count 4)/讀取鍵值給

18、sumt=keyscan();if(t10) count+;if( (count=1)& (t10) )qian=t;if( (count=2)&(t10) )bai=t;if( (count=3)& (t10) shi=t;if( (count=4)&(t 0) ledshow(ge,shi,bai,qian);key=255;while( (key16) )key=keyscan();ledshow(ge,shi,bai,qian);/key = 14放棄輸入值if(key = 15)/儲(chǔ)存輸入值write_add(0x00,ge);_nop_();_nop_();write_add(0x

19、01,shi); _nop_();_nop_();write_add(0x02,bai);_nop_();_nop_();write_add(0x03,qian); at24c02.c/*隨機(jī)的位讀寫(xiě)方式,8位地址讀寫(xiě)*/#include /at24c02#include #include #include at24c02.hvoid delay(void)/延時(shí)函數(shù) unsigned char i,j; for(i=0;i10;i+) for(j=0;j248;j+) _nop_(); void start(void)/起始函數(shù) sdak=1; _nop_(); sclk=1; _nop_(

20、); _nop_(); _nop_(); _nop_(); sdak=0; _nop_(); _nop_(); _nop_(); sclk=0; _nop_(); void stop(void) /停止子函數(shù) sdak=0; sclk=1; _nop_(); _nop_(); _nop_(); _nop_(); sdak=1; _nop_(); _nop_(); _nop_(); _nop_(); sclk=0; _nop_(); _nop_(); void tack(void)/iic響應(yīng)子函數(shù) sdak=0; _nop_(); sclk=1; _nop_(); _nop_(); _nop_

21、(); _nop_(); sclk=0; _nop_(); _nop_(); _nop_(); void notack(void)/iic非響應(yīng)子函數(shù) sdak=1; _nop_(); _nop_(); sclk=1; _nop_(); _nop_(); _nop_(); _nop_(); sclk=0; _nop_(); _nop_(); void wrbyt(unsigned char a)/iic寫(xiě)數(shù)據(jù) unsigned char b; unsigned char i=8; b=a; while(i-) if( (b&0x80) = 0x80) sdak=1; _nop_(); _nop

22、_(); sclk=1; _nop_(); _nop_(); _nop_(); _nop_(); sclk=0; sdak=0; else sdak=0; _nop_(); _nop_(); sclk=1; _nop_(); _nop_(); _nop_(); _nop_(); sclk=0; b=1; unsigned char rdbyt(void) /iic讀數(shù)據(jù)函數(shù) unsigned char i=8; unsigned char rdd; while(i-) sdak=1; sclk=1; rdd=1; _nop_(); _nop_(); if(sdak=1) rdd|=0x01;

23、else rdd&=0xfe; sclk=0; return rdd; unsigned char read_add(unsigned char address) /iic讀一個(gè)字節(jié) unsigned a; start(); wrbyt(0xa0); tack(); wrbyt(address); tack(); start(); wrbyt(0xa1); tack(); a=rdbyt(); notack(); stop(); return a; void write_add(unsigned char address,unsigned char date) /iic寫(xiě)入一字節(jié) start(

24、); wrbyt(0xa0); tack(); wrbyt(address); tack(); wrbyt(date); tack(); stop(); delay(); delay(); delay(); at24c02.h #ifndef _at24c02_h_#define _at24c02_h_sbit sclk=p32;/iic數(shù)據(jù)口定義sbit sdak=p33;extern void write_add(unsigned char address,unsigned char date); /向固定地址寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)extern unsigned char read_add(un

25、signed char address);/讀取某個(gè)固定地址一個(gè)字節(jié)數(shù)據(jù)#endif key.c/* 反轉(zhuǎn)法讀鍵值 io口使用p2 */#include #include key.hvoid delayms(unsigned int xms)unsigned int i,j;for(i=xms;i0;i-) for(j=110;j0;j-);/鍵值對(duì)應(yīng)表unsigned char data key_tab=0x11,0x21,0x41,0x81,0x12,0x22,0x42,0x82,0x14,0x24,0x44,0x84,0x18,0x28,0x48,0x88; /*函數(shù):keyscan()

26、 功能:從矩陣鍵盤(pán)中讀取鍵值 參數(shù):無(wú) 返回:kunsigned char型 說(shuō)明:k值大于15時(shí)代表沒(méi)有按下按鍵*/unsigned char keyscan(void)unsigned char i;unsigned char j;unsigned char k;/返回值 p2=0x0f; i=p2; i=(i)&0x0f; if (i=0) return 255; p2=0xf0; j=p2; j=(j)&0xf0; if(j=0) return 255;delayms(10);do k=p2;while(k)&0xf0);/等待按鍵放開(kāi) delayms(10); i=j|i; k=0; while(key_tabk!=i) k+; if(k15) brea

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論