基于單片機的四位BCD編碼器電路設計

發(fā)布時(shí)間:2010-9-14 15:58    發(fā)布者:techshare
關(guān)鍵詞: BCD , 編碼器 , 單片機 , 四位
1 引言

BCD碼又稱(chēng)二/十進(jìn)制碼,即二進(jìn)制編碼的十進(jìn)制碼,在設計、測試數字電路硬件過(guò)程或是面對帶有BCD碼接口的集成電路時(shí),常常希望方便、快速地產(chǎn)生BCD碼來(lái)完成當前的工作,檢驗硬件電路的正確性,例如鎖相頻率合成集成電路MC145163P帶有4位BCD編碼接口,用于設置環(huán)路N分頻器,通過(guò)本文介紹而制作完成后的BCD發(fā)生器可以提供4位BCD編碼輸出,方便地控制每位BCD輸出,可以快速地得到BCD編碼而完成測試或輸出BCD編碼接到集成電路的BCD編碼接口,無(wú)需頻繁跳線(xiàn)。

另外,BCD編碼有8421碼、2421碼、余3碼等多種形式,本文以常見(jiàn)的8421碼為例介紹電路的實(shí)現和程序的編寫(xiě)。如果對程序略加修改則可以很方便地實(shí)現其他類(lèi)型的編碼方式(如2421碼)。本電路以AT89C2051為核心設計了4×4的矩陣鍵盤(pán)(S0-S15),這樣只需在鍵盤(pán)上按下相應的按鍵(S0-S9)即可以產(chǎn)生一個(gè)對應(十進(jìn)制0-9)的BCD碼,通過(guò)設置切換按鍵(S10-S13)可以隨意地控制4位中任意的一位,期間用數碼管實(shí)時(shí)地顯示當前BCD碼對應的十進(jìn)制數。

電路功能和特點(diǎn):

4位BCD編碼輸出,利用單片機口線(xiàn)可以擴展位數。

改變軟件中鍵號0-鍵號9(即S0-S9對應功能)的程序可以實(shí)現其他編碼形式(如2421碼)。參見(jiàn)軟件部分。

電路以常用的8421碼為例,并有數碼顯示出對應的十進(jìn)制數(也可以省略)。

完整的4×4的矩陣鍵盤(pán)掃描執行程序,可以移植到其他應用電路中。

BCD編碼由鎖存器實(shí)現信號鎖存,并引出接口,方便連接其他電路。

“位”控制和0-9編碼輸出互不影響,直接按下功能鍵就可以得到需要的BCD編碼輸出和“位數”選擇。

2 電路框圖

電路原理圖如圖1所示。



3 電路分析

AT89C2051的P1口組成4×4矩陣鍵盤(pán)(S0-S15),其中P1.0-P1.3作為行線(xiàn),P1.4-P1.7作為列線(xiàn),設計鍵盤(pán)掃描程序可以達到預先設想的功能(見(jiàn)軟件設計部分)。按下S0-S9可以產(chǎn)生0-9十進(jìn)制數對應的BCD碼,S10-S13用作4位BCD碼的切換按鍵,S14、S15暫未使用,可以不安裝,P3.3-P3.0是BCD碼的數據輸出線(xiàn),從電路中可以看出,因為功用鍵盤(pán)而實(shí)現4位BCD編碼輸出,顯然P3.3-P3.0作為數據總線(xiàn)而同時(shí)并接在4個(gè)D鎖存器(4042),通過(guò)S10-S13來(lái)切換,對于4個(gè)D鎖存器(U3-U6)每次只有一個(gè)有效而把P3.3-P3.0的數據“讀入”然后鎖存。實(shí)際上S10-S13控制P3.4和P3.5的狀態(tài)(P3.4和P3.5共有4種組合)并通過(guò)2-4線(xiàn)譯碼器(U2;74LS139)得到對應的U3-U6的有效信號,表1是S10-S13控制所對應的各芯片狀態(tài),可見(jiàn),U3-U6中任意一個(gè)(例如U3)處于有效狀態(tài)而“讀入”P(pán)3.3-P3.0數據時(shí),其余的(U4/U5/U6)處于鎖存狀態(tài),保留原來(lái)數據,因此使用者可以在任意一位中改變所希望的BCD碼輸出。



U2(74LS139)是2-4線(xiàn)譯碼器,功能見(jiàn)表1,他的輸入端B,A分別接至P3.4,P3.5,輸出端Y0-Y3取決于輸入端的組合,每種組合下只有一個(gè)輸出端(Y0-Y3)以低電平有效輸出。U3-U6是D鎖存器,主要是其中的5腳和6腳關(guān)系決定他們的工作狀態(tài),查閱資料得知,當5腳和6腳邏輯電位相同時(shí),該芯片可以把D3-D0數據輸出到Q3-Q0;當5腳和6腳邏輯電位不同時(shí),該芯片處于鎖存原來(lái)數據的狀態(tài),而不會(huì )“讀入”當前的D3-D0數據,電路中把U3-U6的6腳固定接低電位,而5腳分別用U2(74LS139)的輸出信號來(lái)控制,不難實(shí)現“可以單獨實(shí)現對各位BCD碼的設置”。4511是譯碼驅動(dòng),接共陰數碼管顯示當前每位的BCD碼所對應的十進(jìn)制數,方便觀(guān)察,顯示部分很簡(jiǎn)單,此處不在贅述,同時(shí),顯示部分在電路上不是必須的,可省略,BCD碼通過(guò)J3和J2引出,之所以用兩個(gè)鏈接器是為了更靈活、方便使用。

4 軟件設計

主要是實(shí)現鍵盤(pán)處理,程序中必須確認是哪一個(gè)按鍵被按下,然后轉到相應的處理程序中執行,實(shí)際上該程序是一個(gè)完整的鍵盤(pán)掃描程序,如果改動(dòng)其中的處理子程序完全可以應用到其他的控制電路中,下文附有詳細的程序和說(shuō)明供參考,圖2是流程圖。



鍵盤(pán)掃描程序的任務(wù)簡(jiǎn)單講就是:首先確認是否有按鍵按下,然后通過(guò)掃描判斷來(lái)得到是在哪一行的按鍵,最后通過(guò)比較預先設定的4行表格查找并計算得到具體的按鍵,從而轉到相應的功能程序。

(1)置列線(xiàn)為輸入狀態(tài)(P1.4-P1.7為1),行線(xiàn)(P1.0-P1.3)先為0,即設定的P1.7-P1.0等于F0H并把該狀態(tài)保存,接這讀入當前P1口狀態(tài),不難理解,只要有按鍵(任何一個(gè))按下,P1口的狀態(tài)肯定不是原來(lái)設定的P1.7-P1.0等于F0H,通過(guò)判斷就可以實(shí)現第一步的目的:首先確認是否有按鍵按下?

(2)從第一行(P1.0行)開(kāi)始一步步掃描,找出并確認按鍵在哪一行,掃描的方法步驟見(jiàn)表2。行線(xiàn)每次只有一個(gè)為0,例如第1次掃描時(shí)設定P1.0為0,而P1.1-P1.3為1,顯然,在當前掃描過(guò)程中按下按鍵如果不是P1.0行,那么P1口狀態(tài)始終是FEH,因此表2說(shuō)明中強調“只有任一次比較P1口不等于該數值,說(shuō)明當前按鍵就在該行”就是這樣的含義,其余各次比較也是一樣道理,通過(guò)這樣的判斷,可以實(shí)現查找按鍵所在得行數。

(3)程序中定義了4個(gè)表KEYVALTAB1-KEYVALTAB4,分別存放的數據用來(lái)為比較程序服務(wù)而指示出各行的按鍵具體位置,表3列出按鍵標號和比較數據對應關(guān)系,在R2中存放行號的起始值,R0用來(lái)存放在每一行中查到按鍵的具體位置(R0范圍是0-3),各行查找時(shí)比較的數據見(jiàn)表(3)。讀寫(xiě)可以簡(jiǎn)單分析就可以得到結果,假設通過(guò)程序先判斷按鍵在第一行,顯然如果S0按下,P1.7-P1.0的狀態(tài)是11101110(S1連接于P1.0和P1.4),也就是表3中S0→EEH。



(4)KEYCALCU子程序中通過(guò)乘3運算用于散轉指令JMP,注意LJMP是3字節指令,各按鍵對應的功能程序安排在一起串LJMP,所以通過(guò)乘3運算才能正確對應到各按鍵的執行目標功能程序。



關(guān)于各鍵的相應處理功能就較簡(jiǎn)單,只要對應不同的按鍵輸入相應的控制命令,對于S0-S9是控制P3.3-P3.0不同的狀態(tài)以得到所對應的BCD編碼,對于S10-S13則是控制P3.4,P3.5的狀態(tài)以實(shí)現對U3-U6的控制,限于篇幅,詳細內容可以參見(jiàn)程序,程序開(kāi)始執行時(shí)是逐個(gè)控制4位BCD編碼輸出,對應的數碼管依次顯示,初始狀態(tài)為0001,0000,0000,0000 4位BCD碼分別從J3,J2引出,數碼管顯示為1,0,0,0。

5 4×4鍵盤(pán)掃描程序











本文地址:http://selenalain.com/thread-26643-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页