㈠ 單片機中鍵盤掃描的具體電路
單片機教材上
很容易找到。
按鍵
掃描
是基本內容。這樣的問題講起來很麻煩,在網上搜到很多,仔細化看看,具體到某個問題的話可以幫你解決。
㈡ 單片機按鍵復位電路各元件的作用
R17 C13組成止電復位電路,來剛上電時源,C13是電壓為0,電源通過R17對電容充電,因此,RST引腳呈現高電平,高電平時間大於2個晶振周期,單片機復位
電容充電完畢,RST引腳呈現低電平,復位結束
按鈕S22和R16組成手動復位電路 ,按下S22,電源接通R16和 R17,由於R17阻值比較大,因此RST是高電平,同時電容通過R16迅速放電,即使按鈕觸點斷開,電源也可對C13充電,使RST高電平穩定一段時間 ,保證可靠復位。 C13容量較小時,R16可省掉,小電容短路放電不會損壞按鈕觸點
㈢ 矩陣鍵盤多鍵按下的單片機(51)程序及電路
加二極體可以的
要加在選通線上(如低電平選通)4選通1
這時可回以讀
4
個鍵的狀態答,循環一次
16
鍵的狀態
都有了
最後看有
幾個鍵按下
就可以了。加二極體
是為了4
選通線互相不幹擾。
對了
不加二極體
應該
也可以的,我加二極體
是選通線
還要去驅動數碼管
的選通。
㈣ 單片機按鍵電路通與不通的信號分別是什麼
按鍵電路一般都會接地使用,就是按鍵兩端,一端接地,一端接單片機IO口。按鍵導通的時候是低電平,不通的話是高電平。
㈤ 單片機控制按鍵切換電源 一個按鍵控制3V電源 另一個按鍵控制5V電源 應該怎麼設計電路
你仔細的要求是什麼,是當一個電源斷電的時候,單片機自動響應切換呢,還是需要手工去切換呢,還有你要說明每一路電源通過的電流大小,要看用繼電器合適呢,還是用PMOS當開關合適。請補充詳細。
㈥ 單片機的按鍵啟動和復位電路圖
單片機的復位有上電復位和按鈕手動復位兩種。如圖(a)所示為上電復位電迴路,圖(答b)所示為上電按鍵復位電路。
上電復位是利用電容充電來實現的,即上電瞬間RST端的電位與VCC相同,隨著充電電流的減少,RST的電位逐漸下降。圖(a)中的R是施密特觸發器輸入端的一個10KΩ下拉電阻,時間常數為10×10-6×10×103=100ms。只要VCC的上升時間不超過1ms,振盪器建立時間不超過10ms,這個時間常數足以保證完成復位操作。上電復位所需的最短時間是振盪周期建立時間加上2個機器周期時間,在這個時間內RST的電平應維持高於施密特觸發器的下閾值。
上電按鍵復位(b)所示。當按下復位按鍵時,RST端產生高電平,使單片機復位。復位後,其片內各寄存器狀態改變,片內RAM內容不變。
由於單片機內部的各個功能部件均受特殊功能寄存器控制,程序運行直接受程序計數器PC指揮。各寄存器復位時的狀態決定了單片機內有關功能部件的初始狀態。
另外,在復位有效期間(即高電平),80C51單片機的ALE引腳和引腳均為高電平,且內部RAM不受復位的影響。
圖要點一下查看大圖才清楚哦O(∩_∩)O
㈦ 單片機按鍵復位電路各元件的作用
R17
C13組成止電復位電路,剛上電時,C13是電壓為0,電源通過R17對電容充電,因此,RST引腳呈現高專電平,高電平時間大於屬2個晶振周期,單片機復位
電容充電完畢,RST引腳呈現低電平,復位結束
按鈕S22和R16組成手動復位電路
,按下S22,電源接通R16和
R17,由於R17阻值比較大,因此RST是高電平,同時電容通過R16迅速放電,即使按鈕觸點斷開,電源也可對C13充電,使RST高電平穩定一段時間
,保證可靠復位。
C13容量較小時,R16可省掉,小電容短路放電不會損壞按鈕觸點
㈧ c51單片機復位電路的工作原理
如S22復位鍵按下時:RST經1k電阻接VCC,獲得10k電阻上所分得電壓,形成高電平,進入「復位狀態」
當S22復位鍵斷開時:RST經10k電阻接地,電流降為0,電阻上的電壓也將為0,RST降為低電平,開始正常工作
(8)單片機按鍵電路擴展閱讀:
復位電路是一種用來使電路恢復到起始狀態的電路設備,它的操作原理與計算器有著異曲同工之妙,只是啟動原理和手段有所不同。復位電路,就是利用它把電路恢復到起始狀態。就像計算器的清零按鈕的作用一樣,以便回到原始狀態,重新進行計算。
和計算器清零按鈕有所不同的是,復位電路啟動的手段有所不同。一是在給電路通電時馬上進行復位操作;二是在必要時可以由手動操作;三是根據程序或者電路運行的需要自動地進行。復位電路都是比較簡單的大都是只有電阻和電容組合就可以辦到了,再復雜點就有三極體等配合程序來進行了。
單片機復位電路主要有四種類型:
(1)微分型復位電路:
(2)積分型復位電路:
(3)比較器型復位電路:
比較器型復位電路的基本原理。上電復位時,由於組成了一個RC低通網路,所以比較器的正相輸入端的電壓比負相端輸入電壓延遲一定時間.而比較器的負相端網路的時間常數遠遠小於正相端RC網路的時間常數。
因此在正端電壓還沒有超過負端電壓時,比較器輸出低電平,經反相器後產生高電平.復位脈沖的寬度主要取決於正常電壓上升的速度.由於負端電壓放電迴路時間常數較大,因此對電源電壓的波動不敏感.但是容易產生以下二種不利現象:
(1)電源二次開關間隔太短時,復位不可靠:
(2)當電源電壓中有浪涌現象時,可能在浪涌消失後不能產生復位脈沖。
為此,將改進比較器重定電路,如圖9所示.這個改進電路可以消除第一種現象,並減少第二種現象的產生.為了徹底消除這二種現象,可以利用數字邏輯的方法和比較器配合,設計的比較器重定電路。此電路稍加改進即可作為上電復位和看門狗復位電路共同復位的電路,大大提高了復位的可靠性。
㈨ 51單片機鍵盤電路的兩種方式,各自的優缺點
獨立按鍵優點:可以直接讀取,檢測佔用時間較少,不受其他因素影響
缺點:占內用IO口資源較多,容每一個按鍵都獨佔一個IO口。
矩陣鍵盤優點:佔用IO口資源較少。
缺點:必須掃描檢測按鍵情況,程序復雜,佔用時間較多。
㈩ 51單片機3鍵鍵盤電路圖[只有三個按鍵,鏈接pc的]
同學你好,我來幫你,你可以使用串口啊,比如:1:給你一個從發給單片機數據後,單片機再原樣發給PC的參考代碼:2:將51某一個(引腳)按鍵0,1狀態,發給PC;
1::::::::::::::
#include <REG52.H>
bit Flag;
unsigned int R_D,S_D;
unsigned char i;
void usart_init(void); ///串口初始化
void main (void) {
usart_init(void); ///串口初始化
while(1)
{
if (Flag==1)
{
SBUF = S_D; //SUBF接受/發送緩沖器(又叫串列通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標志)
TI = 0;// 清除數據傳送標志
Flag=0;
}
}
}
}
void ser_int (void) interrupt 4 using 1
{
if(RI == 1) //RI接受中斷標志
{
RI = 0; //清除RI接受中斷標志
R_D = SBUF; //SUBF接受/發送緩沖器
S_D=R_D;///////返回PC發送
Flag=1;
}
}
void usart_init(void)///串口初始化
{
SCON = 0x50; //REN=1允許串列接受狀態,串口工作模式1
TMOD|= 0x20; //定時器工作方式2
PCON|= 0x80;
TH1 = 0xF3;// //baud*2 /* 波特率4800、數據位8、停止位1。效驗位無 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //開串口中斷
EA = 1; // 開總中斷
}
2:::::::::::::
#include <REG52.H>
sbit p34=P3^4;////////定義一個按鍵
bit Flag=1;
unsigned int S_D;
unsigned char i;
void usart_init(void); ///串口初始化
void delay (unsigned int Z) ; //延時程序 Z倍 MS
void key_p34(void) ; /////按鍵檢
void main (void) {
usart_init(void); ///串口初始化
key_p34(void) ; ////上電後檢測一次按鍵的狀態
if (Flag==1)//上電後發送一次按鍵的狀態
{
SBUF =1; //SUBF接受/發送緩沖器(又叫串列通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標志)
TI = 0;// 清除數據傳送標志
}
else
{
SBUF =0; //SUBF接受/發送緩沖器(又叫串列通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標志)
TI = 0;// 清除數據傳送標志
}
while(1)
{
key_p34(void) ;
if (Flag==1)
{
SBUF =1; //SUBF接受/發送緩沖器(又叫串列通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標志)
TI = 0;// 清除數據傳送標志
}
else
{
SBUF =0; //SUBF接受/發送緩沖器(又叫串列通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標志)
TI = 0;// 清除數據傳送標志
}
}
}
void usart_init(void)///串口初始化
{
SCON = 0x50; //REN=1允許串列接受狀態,串口工作模式1
TMOD|= 0x20; //定時器工作方式2
PCON|= 0x80;
TH1 = 0xF3;// //baud*2 /* 波特率4800、數據位8、停止位1。效驗位無 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //開串口中斷
EA = 1; // 開總中斷
}
void delay (unsigned int Z)//延時程序 Z倍 MS
{
unsigned int x,y;
for(x=Z;x>0;x--)
for(y=110;y>0;y--) ;
}
void key_p34(void) /////按鍵檢測
{
if(p34==0)
{ delay(10);
if(p34==0)
{
while(!p34) ;/////等待按鍵鬆手
Flag=0;
}
}
}