51單片機結構簡單,架構體系完備,學習資料豐富,應用領域廣泛。通過對51單片機的學習,可幫助小白實現快速入門電子設計,理解電路系統工作原理,為高級嵌入式芯片的學習及開發打下堅實基礎。
本篇描述
1、51+Proteus8.10;
2、學習矩陣鍵盤電路及驅動;
仿真設計
采用Proteus作為仿真設計工具。Proteus是一款著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,真正實現了從概念到產品的完整設計。
軟件設計
采用Keil作為軟件設計工具。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。
#include#define uchar unsigned char #define uint unsigned int #define KEY P1 uchar uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F}; uchar KeyScan() { uchar Temp=0; uchar ucRow=0,ucLine=0; for(ucLine=0;ucLine<4;ucLine++) { KEY=uca_LineScan[ucLine]; Temp=KEY & 0x0F; if(Temp!=0x0F) { switch(Temp) { case 0x0E: ucRow=10;break; case 0x0D: ucRow=20;break; case 0x0B: ucRow=30;break; case 0x07: ucRow=40;break; default: ucRow=50;break; } break; } } KEY=0x0F; return ucRow+ucLine+1; } void KEY_CTRL(unsigned char KeyCode) { switch(KeyCode) { case 11:P2=0xff;P3=0x7f;break; case 12:P2=0xff;P3=0x3f;break; case 13:P2=0xff;P3=0x1f;break; case 14:P2=0xff;P3=0x0f;break; case 21:P2=0xff;P3=0x07;break; case 22:P2=0xff;P3=0x03;break; case 23:P2=0xff;P3=0x01;break; case 24:P2=0xff;P3=0x00;break; case 31:P3=0x00;P2=0x7f;break; case 32:P3=0x00;P2=0x3f;break; case 33:P3=0x00;P2=0x1f;break; case 34:P3=0x00;P2=0x0f;break; case 41:P3=0x00;P2=0x07;break; case 42:P3=0x00;P2=0x03;break; case 43:P3=0x00;P2=0x01;break; case 44:P3=0x00;P2=0x00;break; default:break; } } void main() { while(1) { KEY_CTRL(KeyScan()); } }
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
led
+關注
關注
242文章
23308瀏覽量
661610 -
單片機
+關注
關注
6039文章
44579瀏覽量
636457 -
Proteus
+關注
關注
79文章
1692瀏覽量
106678 -
51單片機
+關注
關注
274文章
5705瀏覽量
123807 -
矩陣鍵盤
+關注
關注
7文章
206瀏覽量
31501
原文標題:5051-矩陣鍵盤點亮對應LED
文章出處:【微信號:電子開發圈,微信公眾號:電子開發圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
51單片機按鍵檢測--獨立按鍵與矩陣鍵盤
按鍵,每個按鍵對應一個IO口,通過循環或者中斷去檢測,這種方法常用于按鍵個數較少得時候。如果按鍵的個數較多,每個按鍵都分配一個IO口,會占用大量的資源,所以就有了矩陣鍵盤。矩陣
發表于 11-12 11:06
?15次下載
評論