⑴ c51單片機復位電路的工作原理
51單片機復位電路工作原理之我理解
一、復位電路的用途
單片機復位電路就好比電腦的重啟部分,當電腦在使用中出現死機,按下重啟按鈕電腦內部的程序從頭開始執行。單片機也一樣,當單片機系統在運行中,受到環境干擾出現程序跑飛的時候,按下復位按鈕內部的程序自動從頭開始執行。
二、復位電路的工作原理
在書本上有介紹,51單片機要復位只需要在第9引腳接個高電平持續2US就可以實現,那這個過程是如何實現的呢?
在單片機系統中,系統上電啟動的時候復位一次,當按鍵按下的時候系統再次復位,如果釋放後再按下,系統還會復位。所以可以通過按鍵的斷開和閉合在運行的系統中控制其復位。
開機的時候為什麼為復位
在電路圖中,電容的的大小是10uF,電阻的大小是10k。所以根據公式,可以算出電容充電到電源電壓的0.7倍(單片機的電源是5V,所以充電到0.7倍即為3.5V),需要的時間是10K*10UF=0.1S。
也就是說在電腦啟動的0.1S內,電容兩端的電壓時在0~3.5V增加。這個時候10K電阻兩端的電壓為從5~1.5V減少(串聯電路各處電壓之和為總電壓)。所以在0.1S內,RST引腳所接收到的電壓是5V~1.5V。在5V正常工作的51單片機中小於1.5V的電壓信號為低電平信號,而大於1.5V的電壓信號為高電平信號。所以在開機0.1S內,單片機系統自動復位(RST引腳接收到的高電平信號時間為0.1S左右)。
按鍵按下的時候為什麼會復位
在單片機啟動0.1S後,電容C兩端的電壓持續充電為5V,這是時候10K電阻兩端的電壓接近於0V,RST處於低電平所以系統正常工作。當按鍵按下的時候,開關導通,這個時候電容兩端形成了一個迴路,電容被短路,所以在按鍵按下的這個過程中,電容開始釋放之前充的電量。隨著時間的推移,電容的電壓在0.1S內,從5V釋放到變為了1.5V,甚至更小。根據串聯電路電壓為各處之和,這個時候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機系統自動復位。
總結:
1、復位電路的原理是單片機RST引腳接收到2US以上的電平信號,只要保證電容的充放電時間大於2US,即可實現復位,所以電路中的電容值是可以改變的。
2、按鍵按下系統復位,是電容處於一個短路電路中,釋放了所有的電能,電阻兩端的電壓增加引起的。
⑵ c51單片機 在矩陣鍵盤鬆手檢測的原理是什麼為什麼要加鬆手程序不加又會怎樣謝謝!
因為單片機運行速度很快,你按下的按鍵瞬間,單片機就可以執行數萬調指令了,如果不加任何處理,可能就會誤判你的按鍵,如果不加鬆手程序,那可能會因為按鍵的機械問題造成的彈跳被誤判成好幾個按鍵
⑶ c51單片機復位電路的工作原理
如S22復位鍵按下時:RST經1k電阻接VCC,獲得10k電阻上所分得電壓,形成高電平,進入「復位狀態」
當S22復位鍵斷開時:RST經10k電阻接地,電流降為0,電阻上的電壓也將為0,RST降為低電平,開始正常工作
(3)c51單片機原擴展閱讀:
復位電路是一種用來使電路恢復到起始狀態的電路設備,它的操作原理與計算器有著異曲同工之妙,只是啟動原理和手段有所不同。復位電路,就是利用它把電路恢復到起始狀態。就像計算器的清零按鈕的作用一樣,以便回到原始狀態,重新進行計算。
和計算器清零按鈕有所不同的是,復位電路啟動的手段有所不同。一是在給電握絕路通電時馬上進行復位操作;二是在必要時可以由手動操作;三是根據程序或者電路運行的需要自動地進行。復位電路都是比較簡單的大都是只有電阻和電容猜行組合就可以辦到了,再復雜點就有三極體等配合程序來進行了。
單片機復位電路主要有四種類型:
(1)微分型復位電路:
(2)積分型復位電路:
(3)比較器型復位電路:
比較器型復位電路的基本原理。上電復位時,由於組成了一個RC低通網路,所以比較器的正相輸入端的電壓比負相端輸入電壓延遲一定時間.而比較器的負相端網路的時間常數遠遠小於正相端RC網路的時間常數。
因此在正端電壓還沒有超過負端電壓時,比較器輸出低電平,經反相器後產生高電平.復位脈沖的寬度主要取決於正常電壓上升的速度.由於負端電壓放電迴路時間常數較大,因此對電源電壓的波動不敏感.但是容易產生以下二種不利現象:
(1)電源二次開關間隔太短時,復位不可靠:
(2)當電源電壓中有浪涌現象時,可能在浪涌消失後不能產生復位脈沖。
為此,將改進比較器重定電路,如圖9所示.這個改進電路可以消除第一種現象,並減少第二種現象的產生.為了徹底消除這二種現象,可以利用數字邏輯的方法和比較器配合,設計的比較器穗皮嘩重定電路。此電路稍加改進即可作為上電復位和看門狗復位電路共同復位的電路,大大提高了復位的可靠性。
⑷ 51單片機的編程問題
1:C51編譯器如何區分位地址和位元組地址
是靠預定義實現的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者聲明了P0埠地址位於0x80,後者說明了P0埠的bit0,即P0.0位於位地址空間0x80處。這2個0x80具有完全不同的含義,靠關鍵字sfr和sbit來區別。這樣當程序被編譯時,編譯器會依此編譯成相應的匯編語言。例如:
C51語句: P0 = 1;
P0聲明為sfr,因此編譯成:mov 80h,01h,將把0x01數據送入0x80單元,由於0x80單元物理上對應P0埠,因此,P0.0腳將輸出高電平(其實是呈現高阻態,P0口獨有的),其他.1-.7腳輸出低電平。
C51語句: P0_0 = 1;
P0_0聲明為sbit,因此編譯成:setb 80h,這將把位地址空間的0x80地址的bit的值置1。這個位正是P0口的bit0,執行後,P0.0將輸出高阻態。而P0.1-.7不會變化。
2:C51為什麼要嵌套匯編
51單片機一個顯著優點就是指令執行時間固定,因此可以適應時序要求嚴格的場合。例如符合ISO7816協議的cpu卡的讀寫,對時序要求比較嚴格。其實就是用io腳做出來的同步半雙工串口。支持cpu卡的程序一般比較龐大,需要用c51來組織,但是由於c編譯的不確定性,必須把底層程序封裝成匯編語言模塊嵌入到工程中。這就帶來幾個問題:如何聲明函數、參數如何傳遞等。限於篇幅,不能說得很細。下面舉例:
匯編程序單獨保存一個文件,加入到工程中,函數如下:
_proc_a:
mov a, r7
inc a
mov r7, a
ret
用c語言在.h文件中聲明: extern unsigned char proc_a(unsigned char val);
調用時形如: retvalue = proc_a(0x11);
說明:
a:匯編程序如果帶參數,則需要在匯編程序前多加一個下劃線。而聲明它的地方不用加(偉福編譯器這么要求的)。
b:函數的形參中第一參數用R7傳遞,函數返回值用R7返回,這是C51的通用規范。其他參數都有相應規定。函數可以返回一個位,用psw的c位返回。c:上面的語句,執行順序是把0x11給R7,然後跳轉子程序,子程序將它加1後送回。
d:函數跳轉到匯編程序時,本區的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考慮調用後是否要恢復這些常規資源。上例中,A的值被函數使用了,編程者不必恢復調用前的值。
⑸ c51單片機原理及應用重點
1、單片機內部資源
STC89C52:8KFLASH、512位元組RAM、32個IO口、3個定時器、1個UART、8個中斷源
(1)Flash(硬碟)——程序存儲空間 —— 擦寫10萬次,斷電數據不丟失,讀寫速度慢
(2)RAM(內存)——數據存儲空間 —— 斷電數據丟失,讀寫速度快,無限次使用
(3)SFR —— 特殊功能寄存器
2、單片機最小系統
51單片機的內部組成及應用原理解析
最小系統:最少組件組成單片機可以工作的系統。
三要素:
(1)、 電源電路:5V
(2)、 晶振電路:11.0592MHZ、兩個30PF
(3)、 復位電路:
P0:開漏輸出,必須加上拉電阻
准雙向口:
強推挽輸出:電流驅動能力強
高阻態
上下拉電阻:上拉電路就是將不確定的信號通過一個電阻拉到高電平,同時限流作用。下拉電阻就是下拉到低電平。
上下拉電阻選取:從降低功耗方面考慮應該足夠大,因為電阻越大,電流越小;驅動能力來看,小電阻
3、硬體基礎知識
(1)、電磁干擾(EMI)——靜電放電(ESD)、快速瞬間脈沖群(EFT)、浪涌(Surge)
(2)、去耦電容的使用
低頻濾波電容,平常應用最多的事鉭電容,電解電容,陶瓷電容,起到去除電源低頻紋波,穩定電源的作用。
高頻濾波電容,電容附近,通常用104電容來進行去除高頻干擾。
(3)、三極體(PNP,NPN) b,c,e --- 電壓驅動
控制應用
驅動應用
4、LED發光二極體——電流驅動
51單片機的內部組成及應用原理解析
通常紅色貼片LED, 靠電流驅動,電壓1.8V~2.2V,電流1~20mA,在1~5mA亮度有所變化,5mA以上亮度基本不變。
VCC 電壓是 5V,發光二極體自
身壓降大概是 2V,那麼在右邊 R34 這個電阻上承受的電壓就是 3V。
R = U/I —— 1~20mA —— R:150~3K
5、C語言基礎
(1)、基本運算符
+ - * / % ++ -- = == != += -= 《《 》》
⑹ 51單片機「上電/按鍵復位電路」的原理及其電容C的作用
我認為說法1正確:51單片機是高電平復位,所以先看給單片機加5V電源(上電)啟動時的情況:這時電容充電相當於短路,你可以認為RST上的電壓就是VCC,這是單片機就是復位狀態。隨著時間推移電容兩端電壓升高,即造成RST上的電壓降低,當低至閾值電壓時,即完成復位過程。
如果按下SW,的確就是按鈕把C短路了,這時電容放電,兩端電壓都是VCC,即RST引腳電壓為VCC,如果超過規定的復位時間,單片機就復位了。當按鈕彈起後,RST引腳的電壓為0,單片機處於運行狀態。
51單片機復位要求是:RST上加高電平時間大於2個機器周期,你用的12MHz晶振,所以一個機器周期就是1us,要復位就加2us的高電平即可。
圖中的RC常數是51K×1uF=51ms,即51毫秒,這個常數足夠大了。
⑺ (51單片機)那個大佬給講解一下這個延時函數
在C51程序中,我們常會使用宏定義來簡化代碼,比如將定義為unsigned int。這里有一個16位整型的形參變數,它實際上是一個宏定義的結果,而非C51固有的變數類型。
延時函數的基本原理是利用循環體來實現的,具體來說,就是使用while循環,通過變數自減,直到其值變為0,循環結束。這樣的操作會消耗一定的時間,從而達到延時的效果。
延時函數通常的實現方式是這樣的:
c
while(i--);
這里的`i--`表示將變數`i`減1,然後判斷`i`是否等於0,如果不等於0,則繼續循環。這個過程會重復執行直到`i`減至0,循環結束,整個過程就是一次延時。
需要注意的是,延時的時間長短取決於循環體內代碼的執行速度,如果循環體內的操作越多,延時時間就越長。因此,我們可以通過調整循環體內的操作來控制延時的長短。
總結來說,通過利用循環來實現延時,是C51編程中常見的技術手段之一。
⑻ C51單片機對位定址的原理和編程方法
原理:
位定址是一種使用單片機實現程序控制位邏輯操作的方法,通過一系列指令在單位元組的內存空間中的一個特定的位 (bit 位) 上進行操作。它用於控制亂拿只有兩狀態的I/O埠。
編程方法:
1. 用 ORL A, #data 命令將某個指定的位置位,即把單位元組內部某個指定的位置1。
2. 用 ANL A, #data 命令清除某個指定衡槐的位置位,即咐陪友把單位元組內部某個指定的位置0。
3. 用 CLR C 命令將某個指定的位置位清零,即把單位元組內指定的位置置零。
4. 用 MOV C, bit 命令將某個指定的位置位置1,即把單位元組內部某個指定的位置1。