為51微控制器設計上拉輸入和下拉輸入的按鍵電路並分析其工作原理

時間 2021-07-12 20:37:37

1樓:硬體開發

按鍵一般是上拉,微控制器的io通過電阻上拉高電平,按鍵正常高電平當按鍵按下短路,把io變成低電平,微控制器檢測到低電平表示有按鍵按下,按鍵下拉一般是把微控制器io通電阻接到gnd,按鍵正常是低電平,當按鍵按下把io拉高,微控制器檢測到高電平表示有按鍵按下。

2樓:一見投緣

一個是檢測到高電平時為輸入即按鍵按下(內部設定輸出0),一個是檢測到低電平(內部設定為輸出1)是為有訊號輸入(按鍵按下)。

3樓:匿名使用者

第一,上拉就是通個一個電阻接電源,尤其是對於oc和od輸出的io口,比如51的p0口。

第二,下拉則是通過電阻接地;一般是保證io的初始狀態。

一般用電阻4.7以上即可,推薦使用10k,這樣上拉的電流會小一些。

對於這裡要的上拉按鍵接法,io口出來接電阻和按鍵,電阻另一端接5v(上拉),按鍵另一端接地。當按鍵未按下是io為高電平,按鍵按下時為低電平。

4樓:匿名使用者

51微控制器除p0外,其餘io埠有內部上拉,這時 外部上拉電阻可以省去。

對於下拉輸入,因其內部上拉電阻約10k,為保證未按下時為低電平,下拉電阻阻值在1k左右。

5樓:匿名使用者

年輕人,別解釋了,洗洗睡吧

為51微控制器設計一個上拉輸入的按鍵電路並分析其工作原理

6樓:匿名使用者

上拉電阻是i/o口平時保持高電平

按鍵按下後,i/o口轉為低電平;

軟體掃描到變換後,需要延時除顫抖,就可確定按鍵的狀態了。

7樓:做而論道

在按鍵和微控制器之間,加上一個反相器即可。

設計一個微控制器輸入顯示系統,要求每按一下按鍵數碼管顯示資料加1(數碼管初始值為0,9加1 後顯示0)。

8樓:沈偉棟

程式清單如下:

#include < reg51.h >// 51微控制器標頭檔案

#define uchar unsigned char // 巨集定義

,用uchar替代無符號字元型

#define uint  unsigned int // 巨集定義,用uint 替代無符號整數型

sbit key = p2 ^ 7;

uchar count = 0;

uchar code datachar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'p'

;//延時n毫秒

void delaynms( uint n ) // 利用x、y作簡單的自減運算,消耗微控制器指令週期,達到延時的目的

//數碼管顯示   // 顯示方式為動態掃描,視覺暫留原理

void display( uchar num ) // *p指向main函式中的陣列shownum的首地址

void main( void )

while( !key );

}display( count );}}

擴充套件資料

8051微控制器具有如下功能:

8位cpu·4kbytes程式儲存器(rom) (52為8k)

128bytes的資料儲存器(ram) (52有256bytes的ram)

32條i/o口線·111條指令,大部分為單位元組指令

21個專用暫存器

2個可程式設計定時/計數器·5箇中斷源,2個優先順序(52有6個)

一個全雙工序列通訊口

外部資料儲存器定址空間為64kb

外部程式儲存器定址空間為64kb

邏輯操作位定址功能·雙列直插40pindip封裝

單一+5v電源供電

cpu:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能暫存器;

ram:用以存放可以讀寫的資料,如運算的中間結果、最終結果以及欲顯示的資料;

rom:用以存放程式、一些原始資料和**;

i/o口:四個8位並行i/o口,既可用作輸入,也可用作輸出

t/c:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;

五個中斷源的中斷控制系統;

一個全雙工uart(通用非同步接收傳送器)的序列i/o口,用於實現微控制器之間或微控制器與微機之間的序列通訊;

片內振盪器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6m—12m。

9樓:匿名使用者

#include < reg52.h >   // 嵌入51微控制器標頭檔案

#define uchar unsigned char // 巨集定義,用uchar替代無符號字元型

#define uint  unsigned int // 巨集定義,用uint 替代無符號整數型

sbit key = p2 ^ 7;

uchar count = 0;

uchar code datachar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'p'

;//延時n毫秒

void delaynms( uint n ) // 利用x、y作簡單的自減運算,消耗微控制器指令週期,達到延時的目的

//數碼管顯示   // 顯示方式為動態掃描,視覺暫留原理

void display( uchar num ) // *p指向main函式中的陣列shownum的首地址

void main( void )

while( !key );

}display( count ); }}

51微控制器跑馬燈程式,51微控制器設計跑馬燈的程式用(c語言)編寫

不好意思,延時用了樓上的。keil下編譯ok。假設p1接燈。org 00h sjmp start org 30h start mov a 00 setb c mov r0,9 從左到右 loop1 rlc a mov p1,a acall delay djnz r0,loop1 從右到左 mov r...

利用51微控制器設計秒錶一定要按要求做到0 01秒)

做而論道 最低位,是0.01s 變化一次,一秒鐘,變化 100 次。這麼快,人的眼睛,分辨不出來。只能看到一個 8。停止時,才能看到穩定的數字。程式如下 include sbit p3 5 p3 5 unsigned char counet,m 4 void display unsigned cha...

利用AT89C51微控制器設計簡易電子鐘(六位),通過8位LED數碼管實現時間顯示系統可以通過按鍵實現時間

這個做起來也辛苦的好吧?我這正好有一份可以改改,這個分也太對不起勞動力了。人民幣10元還差不多。利用at89c51微控制器設計簡易電子鐘 六位 通過8位led數碼管實現時間顯 你好!需要用時鐘晶片嗎?數碼管是怎麼驅動的 我曾經做過,單單程式設計這一項就麻煩死了.還不如去網購買現成的,整套都有的賣.做...