Ⅰ 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單片機原理及應用重點
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)、基本運算符
+ - * / % ++ -- = == != += -= 《《 》》
Ⅲ C51單片機對位定址的原理和編程方法
原理:
位定址是一種使用單片機實現程序控制位邏輯操作的方法,通過一系列指令在單位元組的內存空間中的一個特定的位 (bit 位) 上進行操作。它用於控制亂拿只有兩狀態的I/O埠。
編程方法:
1. 用 ORL A, #data 命令將某個指定的位置位,即把單位元組內部某個指定的位置1。
2. 用 ANL A, #data 命令清除某個指定衡槐的位置位,即咐陪友把單位元組內部某個指定的位置0。
3. 用 CLR C 命令將某個指定的位置位清零,即把單位元組內指定的位置置零。
4. 用 MOV C, bit 命令將某個指定的位置位置1,即把單位元組內部某個指定的位置1。
Ⅳ 89c51單片機定時計數器的工作原理
單片機C51計數器要求:編寫一個計數器程序,將T0作為計數器來使用,對外部信號計數,將所計數字顯示在數碼管上。 該部分的硬體電路如圖所示,U1的P0口和P2口的部份引腳構成了6位LED數碼管驅動電路,數碼管採用共陽型,使用PNP型三極體作為片選端的驅動,所有三極體的發射極連在一起,接到正電源端,它們的基極則分別連到P2.0…P2.5,當P2.0…P2.5中某引腳輸是低電平時,三極體導通,給相應的數碼管供電,該位數碼管點亮哪些筆段,則取決於筆段引腳是高或低電平。圖中看出,所有6位數碼管的筆段連在一起,通過限流電阻後接到P0口,因此,哪些筆段亮就取決於P0口的8根線的狀態。 編寫程序時,首先根據硬體連線寫出LED數碼管的字形碼、位驅動碼,然後編寫程序如下: #include "reg51.h"#define uchar unsigned char#define uint unsigned int uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};//位驅動碼uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};//字形碼uchar DispBuf[6]; //顯示緩沖區 void Timer1() interrupt 3{ uchar tmp;uchar Count; //計數器,顯示程序通過它得知現正顯示哪個數碼管TH1=(65536-3000)/256;TL1=(65536-3000)%256; //重置初值tmp=BitTab[Count]; //取位值P2=P2|0xfc; //P2與11111100B相或P2=P2&tmp; //P2與取出的位值相與tmp=DispBuf[Count];//取出待顯示的數 tmp=DispTab[tmp]; //取字形碼P0=tmp;Count++;if(Count==6)Count=0; }void main(){ uint tmp;P1=0xff;P0=0xff;TMOD=0x15; //定時器0工作於計數方式1,定時器1工作於定時方式1TH1=(65536-3000)/256;TL1=(65536-3000)%256; //定時時間為3000個周期TR0=1; //計數器0開始運行TR1=1;EA=1;ET1=1;for(;;){ tmp=TL0|(TH0<<8);//取T0中的數值DispBuf[5]=tmp%10;tmp/=10;DispBuf[4]=tmp%10; tmp/=10;DispBuf[3]=tmp%10;tmp/=10;DispBuf[2]=tmp%10;DispBuf[1]=tmp/10;DispBuf[0]=0;}} 這個程序中用到了一個新的知識點,即數組,首先作一個介紹。 數組是C51的一種構造數據類型,數組必須由具有相同數據類型的元素構成,這些數據的類型就是數組的基本類型,如:數組中的所有元素都是整型,則該數組稱為整型數組,如所有元素都是字元型,則該數組稱為字元型數組。 數組必須要先定義,後使用,這里僅介紹一維數組的定義,其方式為: 類型說明符數組名[整型表達式] 定義好數組後,可以通過:數組名[整型表達式]來使用數組元素。 在定義數組時,可以對數組進行初始化,即給其賦予初值,這可用以下的一些方法實現: 1.在定義數組時對數組的全部元素賦予初值:例:int a[5]={1,2,3,4,5}; 2.只對數組的部分元素初始化;例:int a[5]={1,2}; 上面定義的a數組共有5個元素,但只對前兩個賦初值,因此a[0]和a[1]的值是1、2,而後面3個元素的值全是0。 3.在定義數組時對數組元素的全部元素不賦初值,則數組元素值均被初始化為0 4.可以在定義時不指明數組元素的個數,而根據賦值部分由編譯器自動確定例:uchar BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};則相當於定義了一個BitTab[6]這樣一個數組。 5.可以為數組指定存儲空間,這個例子中,未指定空間時,將數組定義在內部RAM中,可以用code關鍵字將數組元素定義在ROM空間中。uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB}; 用這兩種定義分別編譯,可以看出使用了code關鍵字後系統佔用的RAM數減少了,這種方式用於編程中不需要改變內容的場合,如顯示數碼管的字形碼等是很合適的。 6.C語言並不對越界使用數組進行檢測,例如上例中數組的長度是6,其元素應該是從BitTab[0]~BitTab[5],但是如果你在程序中寫上BitTab[6],編譯器並不會認為這有語法錯誤,也不會給出警告(其他語言如BASCI等則有嚴格的規定,這種情況將視為語法錯誤),因此,編程者必須自己小心確認這是否是你需要的結果。 程序分析:程序中將定時器T1用作數碼管顯示,通過interrupt 3關鍵字定義函數Timer1()為定時器1中斷服務程序,在這個中斷服務程序中,使用 TH1=(65536-3000)/256;TL1=(65536-3000)%256; 來重置定時器初值,這其中3000即為定時周期,這樣的寫法可以直觀地看到定時周期數,是常用的一種寫法。其餘程序段分別完成取位碼以選擇數碼管、從顯示緩沖區獲得待顯示數值、根據該數值取段碼以點亮相應筆段等任務。其中使用了一個計數器,該計數器的值從0~5對應第1到第6位的數碼管。 主程序的第一部分是做一些初始化的操作,設置定時器工作模式、開啟定時器T1、開啟計數器T0、開啟T1中斷及總中斷,隨後進入主循環,主循環首先用unsigned int型變數tmp取出T0中的數值,這里使用了「tmp=TL0|(TH0<<8);」這樣的形式,這相當於tmp=TH0*256+TL0,但比之於後一種形式,該方式可以得到更高的效,其後就是將tmp值不斷地除10取整,這樣將int型數據的各位分離並送入相應的顯示緩沖區
Ⅳ 怎樣用51單片機做計算器啊
1、首先第一步就是要進行查找元器件並放入到原理圖中,如下圖所示。
(5)c51單片機原理圖擴展閱讀
電腦模擬:
單片機有了開發系統,隨著單片機的發展開發系統也在不斷發展。 keil是一種先進的單片機集成開發系統。
它代表著匯編語言單片機開發系統的最新發展,首創多項便利技術,將開發的編程/模擬/調試/寫入/加密等所有過程一氣呵成,中間不須任何編譯或匯編。
功能特性:
1、可以模擬63K程序空間,接近64K 的16位地址空間;
2、可以模擬64Kxdata 空間,全部64K 的16位地址空間;
3、可以真實模擬全部32 條IO腳;
4,完全兼容keilC51 UV2 調試環境,可以通過UV2 環境進行單步,斷點, 全速等操作;
5、可以使用C51語言或者ASM匯編語言進行調試 ;
6、可以非常方便地進行所有變數觀察,包括滑鼠取值觀察,即滑鼠放在某 變數上就會立即顯示出它此的值;
7、可選 使用用戶晶振,支持0-40MHZ晶振頻率;
8、片上帶有768位元組的xdata,您可以在模擬時選 使用他們,進行xdata 的模擬;
9、可以模擬雙DPTR 指針;
10、可以模擬去除ALE 信號輸出. ;
11、自適應300-38400bps 的所有波特率通訊;
12、體積非常細小,非常方便插入到用戶板中.插入時緊貼用戶板,沒有連接電纜,這樣可以有效地減少運行中的干擾,避免模擬時出現莫名其妙的故障;
13、模擬插針採用優質鍍金插針,可以有效地防止日久生銹,選擇優質園腳IC插座,保護模擬插針,同時不會損壞目標板上的插座. ;
14,模擬時監控和用戶代碼分離,不可能產生不能模擬的軟故障;
15、RS-232介面不計成本採用MAX202集成電路,串列通訊穩定可靠,絕非一般三極體的簡易電路可比。
功能限制:
模擬器佔用單片機串口及定時器2,與Keil C(PC)通訊,故不支持串口及定時器2 的模擬功能。全速運行時單片機串口及定時器2 可供用戶使用。
使用方法:
1、將模擬器插入需模擬的用戶板的CPU插座中,模擬器由用戶板供電;
2、將模擬器的串列電纜和PC機接好,打開用戶板電源;
3、通過Keil C 的IDE 開發模擬環境UV2 下載用戶程序進行模擬、調試。
Ⅵ c51單片機復位電路的工作原理
如S22復位鍵按下時:RST經1k電阻接VCC,獲得10k電阻上所分得電壓,形成高電平,進入「復位狀態」
當S22復位鍵斷開時:RST經10k電阻接地,電流降為0,電阻上的電壓也將為0,RST降為低電平,開始正常工作
(6)c51單片機原理圖擴展閱讀:
復位電路是一種用來使電路恢復到起始狀態的電路設備,它的操作原理與計算器有著異曲同工之妙,只是啟動原理和手段有所不同。復位電路,就是利用它把電路恢復到起始狀態。就像計算器的清零按鈕的作用一樣,以便回到原始狀態,重新進行計算。
和計算器清零按鈕有所不同的是,復位電路啟動的手段有所不同。一是在給電握絕路通電時馬上進行復位操作;二是在必要時可以由手動操作;三是根據程序或者電路運行的需要自動地進行。復位電路都是比較簡單的大都是只有電阻和電容猜行組合就可以辦到了,再復雜點就有三極體等配合程序來進行了。
單片機復位電路主要有四種類型:
(1)微分型復位電路:
(2)積分型復位電路:
(3)比較器型復位電路:
比較器型復位電路的基本原理。上電復位時,由於組成了一個RC低通網路,所以比較器的正相輸入端的電壓比負相端輸入電壓延遲一定時間.而比較器的負相端網路的時間常數遠遠小於正相端RC網路的時間常數。
因此在正端電壓還沒有超過負端電壓時,比較器輸出低電平,經反相器後產生高電平.復位脈沖的寬度主要取決於正常電壓上升的速度.由於負端電壓放電迴路時間常數較大,因此對電源電壓的波動不敏感.但是容易產生以下二種不利現象:
(1)電源二次開關間隔太短時,復位不可靠:
(2)當電源電壓中有浪涌現象時,可能在浪涌消失後不能產生復位脈沖。
為此,將改進比較器重定電路,如圖9所示.這個改進電路可以消除第一種現象,並減少第二種現象的產生.為了徹底消除這二種現象,可以利用數字邏輯的方法和比較器配合,設計的比較器穗皮嘩重定電路。此電路稍加改進即可作為上電復位和看門狗復位電路共同復位的電路,大大提高了復位的可靠性。
Ⅶ C51單片機數碼管動態顯示工作原理是什麼
數碼管要正常顯示,就要用驅動電路來驅動數碼管的各個段碼,從而顯示出我們要的數字,因此根據數碼管的驅動方式的不同,可以分為靜態式和動態式兩類。
��① 靜態顯示驅動:靜態驅動也稱直流驅動。靜態驅動是指每個數碼管的每一個段碼都由一個單片機的I/O埠進行驅動,或者使用如BCD碼二-十進制解碼器解碼進行驅動。靜態驅動的優點是編程簡單,顯示亮度高,缺點是佔用I/O埠多,如驅動5個數碼管靜態顯示則需要5×8=40根I/O埠來驅動,要知道一個89S51單片盯脊機罩稿可用的I/O埠才32個呢:),實際應用時必須增加解碼驅動器進行驅動,增加了硬體電路的復雜性。
��② 動態顯示驅動:數碼管動態顯示介面是單片機中應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決於單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會凱悶滲亮。通過分時輪流控制各個數碼管的的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位數碼管的點亮時間為1~2ms,由於人的視覺暫留現象及發光二極體的余輝效應,盡管實際上各位數碼管並非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的I/O埠,而且功耗更低。