51单片机学习
單片機概述
1.什么是單片機
2.單片機的特點及應用領域
3.單片機的發展趨勢
4.學習51單片機需要哪些基礎知識
5.如何快速的掌握51單片機
微型計算機的應用形態
將cpu芯片、存儲器芯片、I/O接口芯片和簡單的I/O設備(小鍵盤、LED顯示器)等裝配在一塊印刷電路板上,再配上監控程序(固化在ROM中),就構成了一臺單板微型計算機(簡稱單板機)。單板微型計算機組成如圖所示。
主要應用于工業控制器、家用電器等
什么是單片機
單片機又稱單片微控制器,他不是完成某一個邏輯功能的芯片,而是把一個計算機系統集成到一個芯片上。概括的講:一塊芯片就成了一臺計算機。
在一片集成電路芯片上集成中央處理器(CPU)、存儲器(ROM/RAM)、I/O接口電路,從而構成了單芯片微型計算機,簡稱單片機。
常用英文字母的縮寫MCU表示單片機
單片機內部結構
單片機內部結構示意圖如圖所示,他由微處理器CPU、隨機存取存儲器RAM、只讀存儲器ROM、基本輸入Input/輸出Output(I/O)接口電路、定時器/計數器和中斷系統等部件組成,并把他們制作在一塊大規模集成電路芯片上,就構成一個完整的單片微型計算機
單片機應用系統的組成
單片機應用系統的組成如圖所示。單片機應用系統是以單片機為核心,再加上接口電路及外設等硬件電路和軟件,就構成了單片機應用系統。因此,單片機應用系統的設計人員必須從硬件和軟件的角度來研究單片機,這樣才能研究和開發出單片機應用系統產品。
80C51單片機系列
雖然目前單片機的種類很多,Intel公司在1980年推出80C51系列單片機,由于80C51單片機應用早,影響面很大,已經成為工業標準。后來很多著名廠商如ATmel.philps,STC等公司申請了版權,生產了各種與80C51兼容的單片機系列。雖然制造工藝在不斷的改進,但內核卻沒有變化,指令系統完全兼容,而且大多數管腳也兼容。我們把這些公司生產的與80C51兼容的單片機統稱為80C51系列
如:ATMEL公司的AT89S51 AT89S52 AT89S53等等…
STC公司的STC89C51 STC89C52 STC89C53 STC90C516等等…
單片機的特點及應用領域
單片機的特點
單片機芯片的集成度非常高,他將微型計算機的主要部件都集成在一塊芯片上,因此,具有如下特點:
1.體積小、重量輕、價格低、耗電少、易于產品化
2.控制性能
實時控制功能強,運行速度快。因為CPU可以對I/O端口直接進行指令操作,而且位指令操作能力更是其他計算機無法比擬的
3.可靠性高
由于CPU、存儲器及I/O口集成在同一芯片內,各部件間的連接緊湊,數據在傳送時受干擾的影響較小,且不易受環境條件的影響,所以單片機的可靠性非常高。
單片機的應用領域
1、家用電器:家用電器是單片機的重要應用領域之一,前景廣闊。如微波爐、電視機、電飯煲、空調器、電冰箱、洗衣機等。
2、在交通領域中:如交通燈、汽車、火車、飛機等均有單片機的廣泛應用。
3、智能儀器儀表:如各種智能電氣測量儀表、智能傳感器等。
4、機電一體化產品。如醫療設備(B超)、機器人、數控機床、自動包裝機、打印機、復印機等。
5、實時工業控制:如溫度控制、電機轉速控制、生產線控制等。
6、武器裝備:飛機、軍艦、坦克、導彈、航天飛機、魚雷制
導、無人機等。
單片機的發展趨勢 字長不斷提高 運行速度不斷提高
20世紀80年代以來,單片機有了新的發展,各半導體器件廠商也紛紛推出自己的產品系列。根據市場的需求要求,未來單片機的發展趨勢有如下幾個方面:
單片機的字長由4位、8位、16 位發展到32位。
目前8位的單片機仍然占主流地位,只有在精度要求特別高的場合如圖像處理等,才采用16位或32位的單片機,用戶可以根據需要進行字長的選擇。
運行速度不斷提高。
單片機的使用最高頻率由6MHz、12MHz 、24MHz、33MHz發展到 40MHz和更高,用戶可以根據產品的需要進行速度的選擇。
電子電路基礎
電平特性
單片機是一種數字集成芯片,數字電路中只有兩種電平:高電平和低電平。
高電平:5V
低電平:0V
TTL電平信號被利用的最多是因為通常數據表示采用二進制,5V等價于邏輯“1“,0V等價于邏輯零,TTL電平規定高電平輸出電壓>2.4V,低電平輸出電壓<0.4V
計算機串口使用的是RS232電平
高電平:-12V
低電平:+12V
單片機與計算機串口通信時需要使用電平轉換芯片,把RS232電平轉換為TTL電平后單片機才能識別
51單片機I/O口介紹
I/O口是基本輸入Input/輸出Output接口,單片機對外圍設備的控制都是通過I/O口來進行的(輸出高低電平)。接收外部控制也是通過I/O口來讀取外部電壓信號
初識電容電阻
電阻器縮寫為R,歐姆定律指出電壓、電流、電阻三者之間的關系為I=U/R,從中我們可以看出電阻在電路中是對電流有阻礙作用的一種電子元器件。電阻的基本單位是歐姆。用希臘字母來表示
電容的作用:儲能,濾波,通交流隔直流,旁路,耦合,補償,充放電等
初識電路原理圖:
原理圖:就是表示電路板上各器件之間連接原理的圖表。學習單片機和學硬件電路設計都是要通過分析原理圖,了解各種電子器件的功能和工作原理,才能得心應手的開展工作
在電路原理圖中有時器件相隔太遠不方便連接電氣走線可以采用網絡標號的形式進行電氣連接
網絡標號:電路原理圖中網咯標號相同的點表示實際相連接
單片機最小系統結構:
單片機需要運行起來最基本的條件需要有:
1.電源 (給整個系統提供能量)
2.單片機芯片 (運行程序/處理數據)
3.晶振電路 (給單片機工作提供節拍)
4.復位電路 (單片機上電時需要復位使程序從頭開始運行)
單片機工作的基本時序
振蕩周期:也稱時鐘周期,是指為單片機提供時鐘脈沖信號的振蕩源的周期。
機器周期:一個機器周期包含12個時鐘周期。在一個機器周期內,CPU可以完成一個獨立的操作。
重要
點亮LED燈
LED全稱為半導體發光二極管,采用半導體材料制成,以直接將電能轉化為光能,電信號轉化為光信號的發光器件;其特點是功耗低、高亮度、色彩艷麗、抗震動、壽命長(正常發光8-10萬小時)、冷光源等優點,是真正的”綠色照明“。以LED為光源的燈飾品在二十一世紀的將來,必然取代白熾燈,成為人類照明的又一次革命
LED工作參數
LED(發光二極管)在電路圖中的符號為:
它具有二極管的基本特性正向導通,反向截止。要想點亮LED那么需要從正向流過工作電流
普通發光二極管工作壓降:1.6V—2.1V
工作電流為:1—20ma
本節相關C語言知識
關鍵字:sbit
功能:位定義
一般格式:sbit 標識符 = 地址
流水燈
宏定義
用define進行宏定義的典型用法
#define uchar unsigned char
注意宏定義后面不能加分號,它是預處理器指令不是語句
其中用”uchar“直接替換了unsigned char
此時我們可以用uchar去定義變量類型如;uchar i;等價于 unsigned char i;
對于上面的宏定義我們是用來給已有數據類型區別名
對已有數據類型取別名一般還有使用關鍵字typedef,定義方法如下:
typedef 已有數據類型 新的數據類型;(要加分號)
函數的定義
函數就是將多條語句集合在一塊,來完成一種特定功能。
函數分為標準函數庫,和用戶自定義函數。
標準函數庫:KEIL編譯器提供的,不需要用戶進行定義。
自定義函數:用戶根據自己需要編寫的函數,他必須在使用前先定義。
自定義函數的一般格式為:
函數類型 函數名 (形式參數表)
{
局部變量定義
函數體語句
}
延時函數
自定義函數:延時函數delay(毫秒級)
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x–)
for(y = 144;y>0;y–)
}
給形參z賦值,如延時100毫秒:delay(100);
循環移位函數
標準庫函數:instrins.h
內部函數
字符型循環左移:crol
字符型循環右移:cror
#include <instrins.h>
void test_crol (void) {
unsigned char a;
unsigned char b;
a = 0xFE; //1111 1110
b=crol(a,1), //b now is 0xafd 二進制為 1111 1101
循環移位函數與左移和右移運算符的區別
使用字符型循環左移:
#include <intrins.h>
void test_crol (void) {
unsigned char a;
unsigned char b;
a = 0xFE; //1111 1110
b = crol(a,1); // b now is 0xFD 二進制為1111 1101
}
使用左移運算符
a = 0xFE; //1111 1110
b = a<<1; // b now is 0xFC 二進制為1111 1100
區別:循環左移是把最高位移到最低位,左移運算符是把最高位移除最低位補零
蜂鳴器的結構原理
1.壓電式蜂鳴器 壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發光二極管。
多諧振蕩器由晶體管或集成電路構成。當接通電源后(1.515V直流工作電壓),多諧振蕩器起振,輸出1.52.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發聲。
壓電蜂鳴片由鋯鈦酸鉛或鈮鎂酸鉛壓電陶瓷材料制成。在陶瓷片的兩面鍍上銀電極,經極化和老化處理后,再與黃銅片或不銹鋼片粘在一起。
2.電磁式蜂鳴器 電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。
接通電源后,振蕩器產生的音頻信號電流通過電磁線圈,使電磁線圈產生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發聲。
編輯本段蜂鳴器的制作
(1)制
蜂鳴器
備電磁鐵M:在長約6厘米的鐵螺栓上繞100圈導線,線端留下5厘米作引線,用透明膠布把線圈粘好,以免線圈松開,再用膠布把它粘在一個盒子上,電磁鐵就做好了.
(2)制備彈片P:從鐵罐頭盒上剪下一條寬約2厘米的長鐵片,彎成直角,把電磁鐵的一條引線接在彈片上,再用膠布把彈片緊貼在木板上.
(3)用曲別針做觸頭Q,用書把曲別針墊高,用膠布粘牢,引出一條導線,如圖連接好電路.
(4)調節M與P之間的距離(通過移動盒子),使電磁鐵能吸引彈片,調節觸點與彈片之間的距離,使它們能恰好接觸,通電后就可以聽到蜂鳴聲.
有源蜂鳴器和無源蜂鳴器
教你區分有源蜂鳴器和無源蜂鳴器
現在市場上出售的一種小型蜂鳴器因其體積小(直徑只有llmm)、重量輕、價格低、結構牢靠,而廣泛地應用在各種需要發聲的電器設備、電子制作和單片機等電路中。有源蜂鳴器和無源蜂鳴器的外觀如圖a、b所示。
圖:有源和無源蜂鳴器的外觀
a)有源 b)無源
從圖a、b外觀上看,兩種蜂鳴器好像一樣,但仔細看,兩者的高度略有區別,有源蜂鳴器a,高度為9mm,而無源蜂鳴器b的高度為8mm。如將兩種蜂鳴器的引腳郡朝上放置時,可以看出有綠色電路板的一種是無源蜂鳴器,沒有電路板而用黑膠封閉的一種是有源蜂鳴器。
迸一步判斷有源蜂鳴器和無源蜂鳴器,還可以用萬用表電阻檔Rxl檔測試:用黑表筆接蜂鳴器 "+"引腳,紅表筆在另一引腳上來回碰觸,如果觸發出咔、咔聲的且電阻只有8Ω(或16Ω)的是無源蜂
蜂鳴器
鳴器;如果能發出持續聲音的,且電阻在幾百歐以上的,是有源蜂鳴器。
有源蜂鳴器直接接上額定電源(新的蜂鳴器在標簽上都有注明)就可連續發聲;而無源蜂鳴器則和電磁揚聲器一樣,需要接在音頻輸出電路中才能發聲。
蜂鳴器驅動模塊
在單片機應用的設計上,很多方案都會用到蜂鳴器,大部分都是使用蜂鳴器來做提示或報警,比如按鍵按下、開始工作、工作結束或是故障等等。這里對單片機在蜂鳴器驅動上的應用作一下描述。
驅動方式
由于自激蜂鳴器是直流電壓驅動的,不需要利用交流信號進行驅動,只需對驅動口輸出驅動電平并通過三極管放大驅動電流就能使蜂鳴器發出聲音,很簡單,這里就不對自激蜂鳴器進行說明了。這里只對必須用1/2duty 的方波信號進行驅動的他激蜂鳴器進行說明。
單片機驅動他激蜂鳴器的方式有兩種:一種是PWM 輸出口直接驅動,另一種是利用I/O 定時翻轉電平產生驅動波形對蜂鳴器進行驅動。
PWM 輸出口直接驅動是利用PWM 輸出口本身可以輸出一定的方波來直接驅動蜂鳴器。在單片機的軟件設置中有幾個系統寄存器是用來設置PWM 口的輸出的,可以設置占空比、周期等等,通過設置這些寄存器產生符合蜂鳴器要求的頻率的波形之后,只要打開PWM 輸出,PWM 輸出口就能輸出該頻率的方波,這個時候利用這個波形就可以驅動蜂鳴器了。比如頻率為2000Hz 的蜂鳴器的驅動,可以知道周期為500μs,這樣只需要把PWM 的周期設置為500μs,占空比電平設置為250μs,就能產生一個頻率為2000Hz 的方波,通過這個方波再利用三極管就可以去驅動這個蜂鳴器了。
而利用I/O 定時翻轉電平來產生驅動波形的方式會比較麻煩一點,必須利用定時器來做定時,通過定時翻轉電平產生符合蜂鳴器要求的頻率的波形,這個波形就可以用來驅動蜂鳴器了。比如為2500Hz 的蜂鳴器的驅動,可以知道周期為400μs,這樣只需要驅動蜂鳴器的I/O 口每200μs 翻轉一次電平就可以產生一個頻率為2500Hz,占空比為1/2duty 的方波,再通過三極管放大就可以驅動這個蜂鳴器了。
蜂鳴器驅動電路
由于蜂鳴器的工作電流一般比較大,以致于單片機的I/O 口是無法直接驅動的,所以要利用放大電路來驅動,一般使用三極管來放大電流就可以了。
蜂鳴器驅動設計
由于這里要介紹兩種驅動方式的方法,所以在設計模塊系統中將兩種驅動方式做到一塊,即程序里邊不僅介紹了PWM 輸出口驅動蜂鳴器的方法,還要介紹I/O 口驅動蜂鳴器的方法。所以,我們將設計如下的一個系統來說明單片機對蜂鳴器的驅動:系統有兩個他激蜂鳴器,頻率都為2000Hz,一個由I/O 口進行控制,另一個由PWM 輸出口進行控制;系統還有兩個按鍵,一個按鍵為PORT 按鍵,I/O 口控制的蜂鳴器不鳴叫時按一次按鍵I/O 口控制的蜂鳴器鳴叫,再按一次停止鳴叫,另一個按鍵為PWM 按鍵,PWM 口控制的蜂鳴器不鳴叫時按一次按鍵PWM輸出口控制的蜂鳴器鳴叫,再按一次停止鳴叫。
電路原理圖
如圖1-3 所示,使用SH69P43 為控制芯片,使用4MHz 晶振作為主振蕩器。
PORTC.3/T0 作為I/O 口通過三極管Q2 來驅動蜂鳴器LS1,而PORTC.2/PWM0 則作為PWM 輸出口通過三極管Q1 來驅動蜂鳴器LS2。另外在PORTA.3 和PORTA.2 分別接了兩個按鍵,一個是PWM 按鍵,是用來控制PWM 輸出口驅動蜂鳴器使用的;另一個是PORT 按鍵,是用來控制I/O 口驅動蜂鳴器使用的。連接按鍵的I/O 口開內部上拉電阻。
軟件設計方法
先分析一下蜂鳴器。所使用的蜂鳴器的工作頻率是2000Hz,也就是說蜂鳴器的驅動信號波形周期是500μs,由于是1/2duty 的信號,所以一個周期內的高電平和低電平的時間寬度都為250μs。軟件設計上,我們將根據兩種驅動方式來進行說明。
a) PWM 輸出口直接驅動蜂鳴器方式
由于PWM 只控制固定頻率的蜂鳴器,所以可以在程序的系統初始化時就對PWM 的輸出波形進行設置。
首先根據SH69P43 的PWM 輸出的周期寬度是10 位數據來選擇PWM 時鐘。系統使用4MHz 的晶振作為主振蕩器,一個tosc 的時間就是0.25μs,若是將PWM 的時鐘設置為tosc 的話, 則蜂鳴器要求的波形周期500μs 的計數值為500μs/0.25μs=(2000)10=(7D0)16,7D0H 為11 位的數據,而SH69P43 的PWM
輸出周期寬度只是10 位數據,所以選擇PWM 的時鐘為tosc 是不能實現蜂鳴器所要的驅動波形的。
這里我們將PWM 的時鐘設置為4tosc,這樣一個PWM 的時鐘周期就是1μs 了,由此可以算出500μs 對應的計數值為500μs/1μs=(500)10=(1F4)16,即分別在周期寄存器的高2 位、中4 位和低4 位三個寄存器中填入1、F 和4,就完成了對輸出周期的設置。再來設置占空比寄存器,在PWM 輸出中占空比的實現是
通過設定一個周期內電平的寬度來實現的。當輸出模式選擇為普通模式時,占空比寄存器是用來設置高電平的寬度。250μs 的寬度計數值為250μs/1μs=(250)10=(0FA)16。只需要在占空比寄存器的高2 位、中4 位和低4 位中分別填入0、F 和A 就可以完成對占空比的設置了,設置占空比為1/2duty。
以后只需要打開PWM 輸出,PWM 輸出口自然就能輸出頻率為2000Hz、占空比為1/2duty 的方波。
b) I/O 口定時翻轉電平驅動蜂鳴器方式
使用I/O 口定時翻轉電平驅動蜂鳴器方式的設置比較簡單,只需要對波形分析一下。由于驅動的信號剛好為周期500μs,占空比為1/2duty 的方波,只需要每250μs 進行一次電平翻轉,就可以得到驅動蜂鳴器的方波信號。在程序上,可以使用TIMER0 來定時,將TIMER0 的預分頻設置為/1,選擇TIMER0 的始終為系統時鐘(主振蕩器時鐘/4),在TIMER0 的載入/計數寄存器的高4 位和低4 位分別寫入00H 和06H,就能將TIMER0 的中斷設置為250μs。當需要I/O 口驅動的蜂鳴器鳴叫時,只需要在進入TIMER0 中斷的時候對該
I/O 口的電平進行翻轉一次,直到蜂鳴器不需要鳴叫的時候,將I/O 口的電平設置為低電平即可。不鳴叫時將I/O 口的輸出電平設置為低電平是為了防止漏電
蜂鳴器
區別:這里的源不是指電源而是指震蕩源
也就是說,有源蜂鳴器內部帶震蕩源,所以只要一通電就會叫
而無源內部不帶震蕩源,所以如果用直流信號無法令其鳴叫。必須用2K–5K的方波去驅動它
有源蜂鳴器往往比無源的貴,就是因為里面多個震蕩電路
三極管工作原理
三極管8550是一種常用的普通三極管。他是一種低電壓,大電流,小信號的PNP型硅三極管
主要用途:開關應用、射頻放大
alldatasheet.com 芯片查詢地址
數碼管根據內部連接不同分為共陰極和共陽極。八段數碼管內部有八顆LED組成,如果想要顯示特定字形只需控制相應的LED亮起,其他LED熄滅即可。
靜態顯示與動態顯示
靜態顯示
LED顯示器工作方式有兩種:靜態顯示方式和動態顯示方式。靜態顯示的特點是每個數碼管的段選必須接一個8位數據線來保持顯示的字形碼。當送入一次字形碼后,顯示自行可一直保持,直到送入新字形碼為止。
動態顯示
動態顯示的特點是將所有位數碼管的段選線并聯在一起,由位選線控制是哪一位數碼管有效。選亮數碼管采用動態掃描顯示。所謂動態掃描顯示即輪流向各位數碼管送出字形碼和相應的位選,利用發光管的余暉和人眼視覺暫留作用,使人的感覺好像各位數碼管同時都在顯示。
上拉電阻的作用
上拉就是將不確定的信號通過一個電阻鉗位在高電平,電阻同時起限流作用。下拉同理,也是將不確定的信號通過一個電阻鉗位在低電平
當P0口作為輸入/輸出口時,上電復位后處于開開漏模式,P0口內部無上拉電阻,所以I/O口必須外接10K–4 .7K上拉電阻
數組的定義與引用
數組是一組有序數據的集合,數組中每一個數據都是同一數據類型。數組中的元素可以用數組名和下標來唯一確定
獨立鍵盤
鍵盤介紹
鍵盤是電子系統中人機對話的重要組成部分,是人向機器發出指令,輸入信息的必須設備
鍵盤在單片機應用系統中是使用最廣泛的一種數據輸入設備,鍵盤是由多個按鍵組成的
按鍵的工作原理
按鍵通常是一種常開型開關,常態下按鍵的兩個觸點處于斷開狀態,按下按鍵時他們才閉和
鍵盤類型
通常鍵盤有編碼鍵盤和非編碼鍵盤兩種。編碼鍵盤通過硬件電路產生被按按鍵的鍵值碼這種鍵盤使用方便,所需程序簡單,但硬件電路復雜,如計算機的鍵盤,單片機則通常不采用編碼鍵盤
而軟件程序來識別的稱為非編碼鍵盤,非編碼鍵盤的硬件電路簡單
在單片機組成的各種系統中,最常用的是非編碼鍵盤
獨立鍵盤和矩陣鍵盤的特點
非編碼鍵盤分為獨立鍵盤和矩陣鍵盤
獨立鍵盤特點:每個按鍵占用一個I/O口,當按鍵數量較多時,IO口利用率不高,但程序簡單,適用于所需按鍵較少的場合
矩陣鍵盤特點:電路連接復雜,但提高了Io口利用率,軟件編程較復雜,適用于使用大量按鍵的場合
相關原理圖分析:
按鍵一端與IO口相連接,另外一端接地,通過控制IO口輸出高電平即可檢測按鍵是否按下,當按下時IO口會被拉低,松開后IO口回到高電平。
按鍵特性
機械按鍵在按下或松開時會存在抖動現象
矩陣鍵盤
矩陣鍵盤識別方法
矩陣鍵盤相對于獨立鍵盤要復雜一些。右圖矩陣鍵盤一共有4行和4列一共16個按鍵組成。
確定矩陣鍵盤上哪一個按鍵被按下可以采用列掃描和行掃描。列掃描時先把接在列上面的所有IO口拉高,接在行上面的所有IO口置低。 當其中有一列內任何一個按鍵按下,那么整條列線都會被拉低
8*8點陣
LED點陣屏簡介
LED點陣屏通過LED(發光二極管)組成,以燈珠亮滅來顯示文字、圖片、動畫、視頻等
中斷系統
:
什么是中斷系統
基本解釋:
計算機執行某程序時,發生了緊急事件或有特殊請求,CPU暫停某程序的執行,轉而去處理上述事件或請求,處理完畢后再重新執行某程序的過程叫做中斷
中斷分為四個步驟:請求–響應–處理—返回
1.數據的輸入/輸出傳送方式
無條件傳送方式
一方對另一方來說總是準備好的。
查詢傳送方式:
傳送前一方先查詢另一方的狀態,若已經準備好就傳送,否則就繼續查詢/等待。
中斷傳送方式(IRQ):
一方通過申請中斷的方式與另一方進行數據傳送
直接存儲器存取方式(DMA):
雙方直接通過總線傳送數據,不經CPU中轉。適用于數據量大高速通訊的設備不占用CPU時間
2.中斷傳送方式特點
數據傳送的雙方平時各自做自己的工作,一旦甲方要求與乙方進行數據傳送,就主動發出信號提出申請,乙方接到申請后若同意傳送,安排好當前的工作,再響應與甲方發生數據傳送。完事后,回去繼續做打斷前的工作
中斷功能強弱是計算機性能優劣的重要標志
提高CPU效率 解決速度矛盾 實現并行工作
對中斷源 斷點 中斷系統過程描述的了解
51子系列允許5個中斷源
外部中斷源(2個):
INT0——由P3.2端口線引入,低電平或下降沿引起。
INT1——由P3.3端口線引入,低電平或下降沿引起。
這兩個外部中斷源標志和它們的觸發方式控制位由特殊功能寄存器TCON的低4位控制。
內部中斷源(3個):
T0——定時器/計數器0中斷,由T0回零溢出引起。
T1——定時器/計數器1中斷,由T1回零溢出引起。
TI/RI——串行I/O中斷,串行端口完成一幀字符發送/接收后引起。
這3個內部中斷源的控制位分別鎖存在特殊功能寄存器TCON和SCON中
51單片機中斷系統內部結構圖
定時/計數器
串口通信
計算機串行通信基礎
隨著多微機系統的廣泛應用。和計算機網絡技術的普及,計算機的通信功能愈來愈顯得重要計算機通信是指計算機與外部設備或計算機與計算機之間的信息交換
通信有并行通信和串行通信兩種方式。在多微機系統以及現代測控系統中信息的交換多采用串行通信方式。
計算機通信是將計算機技術和通信技術相結合,完成計算機與外部設備或計算機與計算機之間的信息交換,可以分為兩大類,并行和串行通信。
并行通信通常是將數據字節的各位用多條數據線同時進行傳送
并行通信控制簡單、傳輸速度快;由于傳輸線較多,長距離傳送時成本高且接收方的各位同時接受存在困難
串行通信是指,使用一條數據線,將數據一位一位的依次傳輸,每一位數據占據一個固定的時間長度。其只需要少數幾條線就可以在系統間交換信息,特別適用于計算機與計算機,計算機與外設之間的遠距離通信
串行通信的特點:傳輸線少,長距離傳送時成本低,但數據的傳送控制比并行通信復雜。
串行通信又可以分為異步通信和同步通信。
異步通信是指通信的發送與接收設備使用各自的時鐘控制數據的發送和接收過程。為使雙方的收發協調,要求發送和接受設備的時鐘盡可能一致
以上簡單說就是,同步是我一定要和你一起去吃飯,異步是我要去吃飯了,你愿吃不吃
異步通信是以字符(構成的幀)為單位進行傳輸,
字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間不一定有”位間隔“的整數倍的關系,但同一字符內的各位之間的距離均為”位間隔“的整數倍
串行通信常見的錯誤效驗
1.奇偶效驗
在發送數據時,數據位尾隨的一位為奇偶效驗位(1或0).奇效驗時,數據中”1“的個數與效驗位”1“的個數之和應為奇數;偶效驗時,數據中”1“的個數與效驗位”1“的個數之和應為偶數。接收字符時,對”1“的個數進行效驗,若發現不一致,則說明傳輸數據過程中出現了差錯。
2.代碼和效驗
代碼和效驗是發送方將所發數據塊求和(或各字節異或),產生一個字節的效驗字符(效驗和)附加到數據塊末尾。接收方接收數據同時對數據塊(除效驗字節外)求和(或各字節異或),將所得的結果與發送方的”效驗和“進行比較,相符則無差錯,否則即認為傳送過程中出現了差錯。
3.循環冗余效驗
這種效驗是通過某種數學運算實現有效信息與效驗位之間的循環效驗,常用于對磁盤信息的傳輸、存儲區的完整性效驗等。這種效驗方法糾錯能力強,廣泛應用于同步通信中。
傳輸速率:比特率是每秒鐘傳輸二進制代碼的位數,單位是:
串行通信接口標準
一、RS–232C接口
總結
- 上一篇: 常见的三个网络协议的区别:TCP/IP、
- 下一篇: 流水线上的思考——异步程序开发模型(2)