51單片機基礎入門教程(精華版)文末有驚喜

第一節、機基礎知識

一、單片機概念

1、單片機:在一片集成電路芯片上集成微處理器(CPU)、存儲器(ROM和RAM)、I/O接口電路,從而構成了單芯片微型計算機,即單片機(single chip Microcomputer)也叫微控制器(MCU)。
CPU( Central Processing Unit ):由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能寄存器;
RAM( Random-Access Memory ):用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據;
ROM (Read-Only Memory):用以存放程序、一些原始數據和表格;
I/O(input/output)口:四個8位並行I/O口,既可用作輸入,也可用作輸出;
T/C (timer/counter):兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;

Intel公司1980年推出了MCS-51系列單片機:集成 8位CPU、4K字節ROM、128字節RAM、4個8位並口、1個全雙工串行口、2個16位定時/計數器。尋址範圍64K,並有控制功能較強的布爾處理器。
80C51是MCS-51系列中的一個典型品種;其它廠商以8051爲基核開發出的CMOS工藝單片機產品統稱爲80C51系列。

主要的80C51單片機
Intel:80C31、80C51、80C32、80C52、87C52
ATMEL:AT89C51、AT89C52、AT89C2051等;
STC:89C51、89C52、90C51、STC15w
Philips:P80C54、P80C58、P87C54
華邦:W78C54、W78C58、W78E54
Siemens:C501-1R、C513A-H
等公司的許多產品 。

芯片封裝簡介

單片機用途
凡是與控制或簡單計算有關的電子設備都可以用單片機來實現,再根據具體實際情況選擇不同性能的單片機,如:atmel,stc,pic,avr,凌陽,80C51,arm等

工業自動化:數據採集、測控技術。

智能儀器儀表:數字示波器、數字信號源、數字萬用表、感應電流表等。

消費類電子產品:洗衣機、電冰箱、空調機、電視機、微波爐、手機、IC卡、汽車電子設備等。

通訊方面:調制解調器、程控交換技術、手機、小靈通等。

武器裝備:飛機、軍艦、坦克、導彈、航天飛機、魚雷制導、智能武器等。

學習51單片機C語言編程基本知識
電平特性
數字電路中只有兩種電平:高和低
單片機爲TTL電平: 高 +5V 低 0V
RS232電平:計算機的串口 高 -12V 低+12V
所以計算機與單片機之間通訊時需要加電平轉換芯片max232等其他芯片
二進制
數字電路中的兩種電平特性決定了它使用二進制運算
十進制
十六進制
二進制
十進制
十六進制
二進制
0
0x0
0000
1
0x1
0001
2
0x2
0010
3
0x3
0011
4
0x4
0100
5
0x5
0101
6
0x6
0110
7
0x7
0111
8
0x8
1000
9
0x9
1001
10
0xA
1010
11
0xB
1011
12
0xC
1100
13
0xD
1101
14
0xE
1110
15
0xF
1111
二進制邏輯運算
邏輯變量 : 只有兩個:“0”(假)和“1”(真)。
邏輯“與”(邏輯乘)運算L=A·B 或者 L=A∧B
“與”的運算法則爲:
0·0=0 , 0·1=0 ,
1·0=0 , 1·1=1
A·0=0,A·1=A,A·A=A

邏輯“或”(邏輯加)運算L=A+B 或者 L=A∨B
“或”的運算法則爲:
0+0=0 , 0+1=1
1+0=1 , 1+1=1
A+0=A ,A+1=1 ,A+A=A

邏輯“非”(邏輯取反)運算L= A
“非”的運算法則爲:
0 = 1 ,1 = 0
A + A = 1 ,
A·A = 0 ,A = A

“異或”
其運算規則是:

C語言基本數據類型

基本語法
變量定義
數據類型 變量名
int num1;
double num2 = 2;
unsigned short num3;
if()語句
if(條件){分支}
if(條件){分支1}else{分支2}
if(x>=0)
{
y=y/2;
}
else
{
y=y*x;
}
while()語句
while(條件){循環體}
while(i<10)
{
s+=k;
}
for()語句
for(表達式1;條件2;表達式3){循環體}
for(i=0;x!=y;j++)
{
z/=3;
}
函數定義
數據類型 函數名(形參列表){函數體}
int add(int num1,int num2)
{
return num1+num2;
}
三、80C51引腳簡介

  1. 電源引腳:Vcc (40腳):電源端,接+5V電源。
    Vss(Gnd) (20腳):接地端,接+5V電源地端
  2. 外接晶體引腳:XTAL1和XTAL2
    89C51內部有一個振盪器和時鐘產生電路。
    XTAL1(19腳): 片內振盪電路反相放大器輸入
    XTAL2(18腳):片內振盪電路反相放大器輸出 當採用內部時鐘時,片外連接石 英晶體和微調電容,產生原始 的振盪脈衝信號。
    採用外部時鐘時, XTAL1輸入 外部時鐘脈衝信號, XTAL2懸空.
  3. 控制信號引腳:RST、ALE、PSEN、EA
    RST (9腳) : 復位信號輸入端,高電平有效。
    保持兩個機器週期高電平時,完成復位操作。
    ALE/PROG (30腳) :
    地址鎖存允許輸出端/編程脈衝輸入端
    正常時,連續輸出振盪器頻率的1/6正脈衝信號。
    訪問片外存儲器時:
    作爲鎖存P0口低8位地址的控制信號。
    對8751片內 ROM編程寫入時:作爲編程脈衝輸入端。
    PSEN (29腳): 外部程序存儲器讀選通輸出信號
    訪問片外ROM時,輸出負脈衝作爲讀ROM選通.
    常連接到片外ROM芯片的輸出允許端(OE)作外部ROM的讀選通信號。
    EA/Vpp (31腳):
    外部程序存儲器地址使能輸入/編程電壓輸入端. 平常,接“1”時,CPU訪問片內4KB的ROM,當地址超4KB時,自動轉向片外ROM中的程序。當接“0”時,CPU只訪問片外ROM。 第2功能Vpp 對8051編程時,編程電壓輸入端。
  4. 輸入/輸出端口引腳 P0、P1、P2、P3
    4個8位的並行輸入/輸出端口,共32個引腳。作爲通用輸入/輸出端口
    通用輸入/輸出端口
    準雙向口: 作輸入時要先對鎖存器寫“1”。默認啓動初始化爲高電平
    P0端口(P0.0—P0.7,第39—32腳):
    漏極開路的準雙向口, 內部沒有上拉電阻,爲搞阻狀態,不能正常輸出高低電平,做I/O時需要接上拉電阻(10K)
    P1端口(P1.0—P1.7,第1—8腳):
    內部帶上拉電阻的準雙向口,在做輸入時要先1
    P2端口(P2.0—P2.7,第21—28腳):
    內部帶上拉電阻的準雙向口,與P1相似
    P3端口(P3.0—P3.7,第10—17腳):
    內部帶上拉電阻的準雙向口,做I/O時與P1相似,另外有第二功能
    P3口的第二功能

仿真軟件Proteus
Proteus 軟件是由英國 Labcenter Electronics 公司開發的EDA(Electronic Design Automation)工具軟件,已有近20年的歷史,在全球得到了廣泛應用。Proteus 軟件的功能強大,它集電路設計、製版及仿真等多種功能於一身,不僅能夠對電工、電子技術學科涉及的電路進行設計與分析,還能夠對微處理器進行設計和仿真,並且功能齊全,界面多彩,是近年來備受電子設計愛好者青睞的一款新型電子線路設計與仿真軟件。
在Proteus中,從原理圖設計、單片機編程、系統仿真到PCB設計一氣呵成,真正實現了從概念到產品的完整設計。
主要功能
ISIS——智能原理圖輸入系統,系統設計與仿真的基本平臺。
ARES ——高級PCB( Printed Circuit Board)佈線編輯軟件
VSM(虛擬仿真模式)
交互式仿真—— 實時直觀地反映電路設計的仿真結果;
基於圖表的仿真(ASF)—— 用來精確分析電路的各種性能,如頻率特性、噪聲特性等。
工具箱中各圖標按鈕對應的操作如下

庫元件的分類

  1. 大類(Category)
    在左側的“Category”中,共列出了以下幾個大類
    要從庫中拾取一個元件時,首先要清楚它的分類是位於哪一類,然後在打開的元件拾取對話框中,選中“Category”中相應的大類
    2子類(Sub-category)
    選取元件所在的大類(Category)後,再選子類(Sub-category),也可以直接選生產廠家(Manufacturer),這樣會在元件拾取對話框中間部分的查找結果(Results)中顯示符合條件的元件列表。從中找到所需的元件,雙擊該元件名稱,元件即被拾取到對象選擇器中去了。如果要繼續拾取其他元件,最好使用雙擊元件名稱的辦法,對話框不會關閉。如果只選取一個元件,可以單擊元件名稱後單擊“OK”按鈕,關閉對話框。如果選取大類後,沒有選取子類或生產廠家,則在元件拾取對話框中的查詢結果中,會把此大類下的所有元件按元件名稱首字母的升序排列出來
    各子類介紹
  2. Analog ICs
    模擬集成器件共有8個子類

2.Capacitors
電容共有23個分類

  1. CMOS 4000 series
    CMOS 4000系列數字電路共有16個分類

  2. Connectors
    接頭共有8個分類

  3. Data Converters
    數據轉換器共有4個分類

  4. Debugging Tools
    調試工具數據共有3個分類

  5. Diodes
    二極管共有8個分類

  6. Inductors
    電感共有3個分類

  7. Laplace Primitives
    拉普拉斯模型共有7個分類

  8. Memory ICs
    存儲器芯片共有7個分類

  9. Microprocessor ICs
    微處理器芯片共有13個分類

  10. Modelling Primitives
    建模源共有9個分類

  11. Operational Amplifiers
    運算放大器共有7個分類

14.Optoelectronics
光電器件共有11個分類

15.Resistors
電阻共有11個分類

16.Simulator Primitives
仿真源共有3個分類

17.Switches and Relays
開關和繼電器共有4個分類

  1. Switching Devices
    開關器件共有4個分類

19.Thermionic Valves
熱離子真空管共有4個分類

20.Transducers
傳感器共有2個分類

21.Transistors
晶體管共有8個分類

五.編譯軟件Keil
Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與彙編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil提供了包括C編譯器、宏彙編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。運行Keil軟件需要Windows操作系統。使用C語言編程,那麼Keil幾乎就是不二之選,即使不使用C語言而僅用彙編語言編程,其方便易用的集成環境、強大的軟件仿真調試工具也會令你事半功倍。
Keil C51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯後生成的彙編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的彙編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。
C51 有以下擴展關鍵字(共21個):
at alien bdata bit code compact data far idata interrupt large pdata priority reentrant sbit sfr sfr16 small task using xdata
常用關鍵字說明
sfr:sfr用來定義特殊功能寄存器
sfr16:定義一個16位的特殊功能寄存器
sbit:定義一個特殊功能寄存器的某一位
bit:定義位變量
code: 指定存儲位置位於程序存儲器
interrupt:聲明中斷服務程序
using:指定的寄存器組
擴展函數

需要包含intrins.h頭文件
常用函數
iroliror 對unsigned int數循環左移、右移
lrollror 對unsigned long數循環左移、右移
crol、_cror_對unsigned char數循環左移、右移
六、點亮第一個LED燈

LED發光二極管一般壓降爲1.7 V 電流3mA即可點亮,因此串聯1K電阻限流限壓,長腳的爲正極。
D1點亮 p1.0設置爲低電平,有電流流過,二極管發光
D2不亮 p1.1默認爲高電平,沒有點亮流過,二極管不會發光
仿真時 紅色代表高電平,藍色代表低電平,灰色代表高阻態
流水燈的實現
一、80c51的最小應用系統

電源+5v 3V接C6 (104 爲10 *104 0.1uF)和C5(10uF)提高抗干擾性
復位電路外部RST引腳復位就是從外部向RST引腳施加一定寬度的復位脈衝,從而實現單片機的復位。將RST復位管腳拉高並維持至少24個時鐘加10us後,單片機會進入復位狀態,將RST復位管腳拉回低電平後,單片機結束復位狀態並從用戶程序區的0000H處開始正常工作。
當系統上電時,電容充電會給rst引腳高電平,等電容穩定後將沒有電流流過.
振盪電路 振盪頻率越高表示單片機運行速度越快,但同時對存儲器的速度和印刷電路板的要求也就越高。如同木桶原理。同時單片機性能的好壞,不僅與CPU運算速度有關,而且與存儲器的速度、外設速度等都有很大關係。因此一般選用6~12MHZ。並聯諧振電路對電容的值沒有嚴格要求,但會影響振盪器的穩定、振盪器頻率高低、起振快速性等。一般根據手冊說明選定.
二、下載程序到stc90c51單片機

三、單片機工作的基本時序
(1) 振盪週期: 也稱時鐘週期, 是指爲單片機提供時鐘脈衝信號的振盪源的週期,常用12MHZ,11.0592MHZ。 
(2) 狀態週期: 每個狀態週期爲時鐘週期的 2 倍, 是振盪週期經二分頻後得到的。
(3) 機器週期: 一個機器週期包含 6 個狀態週期S1~S6, 也就是 12 個時鐘週期。 在一個機器週期內, CPU可以完成一個獨立的操作。 
(4) 指令週期: 它是指CPU完成一條操作所需的全部時間。 每條指令執行時間都是有一個或幾個機器週期組成。MCS - 51 系統中, 有單週期指令、雙週期指令和四周期指令。

四、簡單的軟件延時
使用keil查看程序執行時間

延時100ms函數

延時1s閃爍

流水燈設計
從上到下每隔500ms依次點亮

P0口上拉電阻
P0口是開路漏極只能輸出低電平,不能正常輸出高電平。所以做I/O時需要加上拉電阻

每隔500ms依次點亮其中一個

來回依次循環點亮一個led

加減速流水燈

花樣流水燈

利用_crol_、_cror_實現流水燈

多I/O口的流水燈

第三節、數碼管和定時器
顯示器及其接口
單片機系統中常用的顯示器有:
發光二極管LED(Light Emitting Diode)顯示器、液晶LCD(Liquid Crystal Display)顯示器、CRT顯示器等。LED、LCD顯示器有兩種顯示結構:段顯示(7段、米字型等)和點陣顯示(5×8、8×8點陣等)。
LED數碼顯示方式及電路

使用LED顯示器時,要注意區分這兩種不同的接法。爲了顯示數字或字符,必須對數字或字符進行編碼。七段數碼管加上一個小數點,共計8段。因此爲LED顯示器提供的編碼正好是一個字節。
靜態顯示方式
LED顯示器工作方式有兩種:靜態顯示方式和動態顯示方式。靜態顯示的特點是每個數碼管的段選必須接一個8位數據線來保持顯示的字形碼。當送入一次字形碼後,顯示字形可一直保持,直到送入新字形碼爲止。這種方法的優點是佔用CPU時間少,顯示便於監測和控制。缺點是硬件電路比較複雜,成本較高。
數碼管編碼表

動態顯示
動態顯示的特點是將所有位數碼管的段選線並聯在一起,由位選線控制是哪一位數碼管有效。選亮數碼管採用動態掃描顯示。所謂動態掃描顯示即輪流向各位數碼管送出字形碼和相應的位選,利用發光管的餘輝和人眼視覺暫留作用,使人的感覺好像各位數碼管同時都在顯示。動態顯示的亮度比靜態顯示要差一些,所以在選擇限流電阻時應略小於靜態顯示電路中的。

共陰時數碼管位選低電平有效,共陽時送高電平。
定時器和計數器
定時/計數器的結構和工作原理
一、定時/計數器的結構
定時/計數器的實質是加1計數器(16位),由高8位和低8位兩個寄存器組成。TMOD是定時/計數器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啓動和停止及設置溢出標誌。
加1計數器輸入的計數脈衝有兩個來源,一個是由系統的時鐘振盪器輸出脈衝經12分頻後送來;一個是T0或T1引腳輸入的外部脈衝源。每來一個脈衝計數器加1,當加到計數器爲全1時,再輸入一個脈衝就使計數器回零,且計數器的溢出使TCON中TF0或TF1置1,向CPU發出中斷請求(定時/計數器中斷允許時)。如果定時/計數器工作於定時模式,則表示定時時間已到;如果工作於計數模式,則表示計數值已滿。
可見,由溢出時計數器的值減去計數器初值纔是加1計數器的計數值。
設置爲定時器模式時,加1計數器是對內部機器週期計數(1個機器週期等於12個振盪週期,即計數頻率爲晶振頻率的1/12)。計數值N乘以機器週期Tcy就是定時時間t 。
設置爲計數器模式時,外部事件計數脈衝由T0或T1引腳輸入到計數器。在每個機器週期的S5P2期間採樣T0、T1引腳電平。當某週期採樣到一高電平輸入,而下一週期又採樣到一低電平時,則計數器加1,更新的計數值在下一個機器週期的S3P1期間裝入計數器。由於檢測一個從1到0的下降沿需要2個機器週期,因此要求被採樣的電平至少要維持一個機器週期。當晶振頻率爲12MHz時,最高計數頻率不超過1/2MHz,即計數脈衝的週期要大於2us。
定時器存儲寄存器

TCON—定時器控制寄存器的位分配(地址0x88、可位尋址)

TCON——定時器控制寄存器的位描述

TMOD—定時器模式寄存器的位分配(地址0x89、不可位尋址)

TMOD——定時器模式寄存器的位描述

TMOD——定時器模式寄存器M1/M0工作模式

IE—中斷使能寄存器的位分配(地址0xA8、可位尋址)

IE—中斷使能寄存器的位描述

IP—中斷優先級寄存器的位分配(地址0xB8、可位尋址)

IP—中斷優先級寄存器的位描述

使用定時器的方法
第一:設置特殊功能寄存器TMOD,配置好工作模式。
第二:設置計數寄存器TH0和TL0的初值。
第三:設置IE中斷允許位
第四:設置TCON,通過TR0置1來讓定時器開始計數。
第五:判斷TCON寄存器的TF0位,監測定時器溢出情況。

第四節、按鍵檢測、中斷系統
一、鍵盤的分類
鍵盤分編碼鍵盤和非編碼鍵盤。鍵盤上閉合鍵的識別由專用的硬件編碼器實現,併產生鍵編碼號或鍵值的稱爲編碼鍵盤,如計算機鍵盤。而靠軟件編程來識別的稱爲非編碼鍵盤;在單片機組成的各種系統中,用的最多的是非編碼鍵盤。也有用到編碼鍵盤的。
非編碼鍵盤有分爲:獨立鍵盤和行列式(又稱爲矩陣式)鍵盤。
獨立按鍵原理

按鍵檢測方法
先給I/O口寫入1,輸出高電平,當按鍵按下時,讀相應端口爲0低電平時表示按鍵按下
P0 = 0xff;//寫入1
if(P0 == 0xfe)
{
//P0.0按鍵按下
}

矩陣按鍵變獨立按鍵

矩陣鍵盤檢測使用行列掃描的辦法,當keyOut輸出高電平,再給keyIn某列送低電平其他送高電平從而確定列,然後檢測keyOut那行爲低電平確定行,行列確定即可確定那個按鍵按下。

按鍵在閉合和斷開時,觸點會存在抖動現象:

按鍵消抖方法
加10ms的延時再判斷是否按下或鬆開

2、檢查01的連續性

單片機中斷系統

引起CPU中斷的根源,稱爲中斷源。中斷源向CPU提出的中斷請求。CPU暫時中斷原來的事務A,轉去處理事件B。對事件B處理完畢後,再回到原來被中斷的地方(即斷點),稱爲中斷返回。實現上述中斷功能的部件稱爲中斷系統(中斷機構)。
隨着計算機技術的應用,人們發現中斷技術不僅解決了快速主機與慢速I/O設備的數據傳送問題,而且還具有如下優點:
分時操作:CPU可以分時爲多個I/O設備服務,提高了計算機的利用率;
實時響應:CPU能夠及時處理應用系統的隨機事件,系統的實時性大大增強;
可靠性高:CPU具有處理設備故障及掉電等突發性事件能力,從而使系統可靠性提高。
80C51的中斷系統有5箇中斷源(8052有 6個) ,2個優先級,可實現二級中斷嵌套 。

(P3.2)可由IT0(TCON.0)選擇其爲低電平有效還是下降沿有效。當CPU檢測到P3.2引腳上出現有效的中斷信號時,中斷標誌IE0(TCON.1)置1,向CPU申請中斷。
(P3.3)可由IT1(TCON.2)選擇其爲低電平有效還是下降沿有效。當CPU檢測到P3.3引腳上出現有效的中斷信號時,中斷標誌IE1(TCON.3)置1,向CPU申請中斷。
RI(SCON.0)或TI(SCON.1),串行口中斷請求標誌。當串行口接收完一幀串行數據時置位RI或當串行口發送完一幀串行數據時置位TI,向CPU申請中斷。
IT0(TCON.0),外部中斷0觸發方式控制位。
當IT0=0時,爲電平觸發方式。
當IT0=1時,爲邊沿觸發方式(下降沿有效)。
IE0(TCON.1),外部中斷0中斷請求標誌位。
IT1(TCON.2),外部中斷1觸發方式控制位。
IE1(TCON.3),外部中斷1中斷請求標誌位。
TF0(TCON.5),定時/計數器T0溢出中斷請求標誌位。
TF1(TCON.7),定時/計數器T1溢出中斷請求標誌位。
中斷允許控制,CPU對中斷系統所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。
EX0(IE.0),外部中斷0允許位;
ET0(IE.1),定時/計數器T0中斷允許位;
EX1(IE.2),外部中斷0允許位;
ET1(IE.3),定時/計數器T1中斷允許位;
ES(IE.4),串行口中斷允許位;
EA (IE.7), CPU中斷允許(總允許)位。
80C51單片機有兩個中斷優先級,即可實現二級中斷服務嵌套。每個中斷源的中斷優先級都是由中斷優先級寄存器IP中的相應位的狀態來規定的 。
PX0(IP.0),外部中斷0優先級設定位;
PT0(IP.1),定時/計數器T0優先級設定位;
PX1(IP.2),外部中斷0優先級設定位;
PT1(IP.3),定時/計數器T1優先級設定位;
PS (IP.4),串行口優先級設定位;
PT2 (IP.5) ,定時/計數器T2優先級設定位。
同一優先級中的中斷申請不止一個時,則有中斷優先權排隊問題。同一優先級的中斷優先權排隊,由中斷系統硬件確定的自然優先級形成,其排列如所示:

80C51單片機的中斷優先級有三條原則:
CPU同時接收到幾個中斷時,首先響應優先級別最高的中斷請求。
正在進行的中斷過程不能被新的同級或低優先級的中斷請求所中斷。
正在進行的低優先級中斷服務,能被高優先級中斷請求所中斷。
爲了實現上述後兩條原則,中斷系統內部設有兩個用戶不能尋址的優先級狀態觸發器。其中一個置1,表示正在響應高優先級的中斷,它將阻斷後來所有的中斷請求;另一個置1,表示正在響應低優先級中斷,它將阻斷後來所有的低優先級中斷請求。
80C51單片機中斷處理過程
中斷響應條件和時間
中斷源有中斷請求;
此中斷源的中斷允許位爲1;
CPU開中斷(即EA=1)。
以上三條同時滿足時,CPU纔有可能響應中斷。
第五節、串口通信
計算機串行通信基礎
隨着多微機系統的廣泛應用和計算機網絡技術的普及,計算機的通信功能愈來愈顯得重要。計算機通信是指計算機與外部設備或計算機與計算機之間的信息交換。通信有並行通信和串行通信兩種方式。在多微機系統以及現代測控系統中信息的交換多采用串行通信方式。
計算機通信是將計算機技術和通信技術的相結合,完成計算機與外部設備或計算機與計算機之間的信息交換 。可以分爲兩大類:並行通信與串行通信。
並行通信:通信時數據的各個位同時傳送,可以實現字節爲單位通信,但是通信線多佔用資源多,並行通信控制簡單、傳輸速度快;由於傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。

串行通信:將數據字節分成一位一位的形式在一條傳輸線上逐個地傳送。一次只能發送一位,要發送8次才能發送一個字節。
串行通信的特點:傳輸線少,長距離傳送時成本低,且可以利用電話網等現成的設備,但數據的傳送控制比並行通信複雜。

RS232通信接口

1、載波檢測DCD
2、接收數據RXD
3、發送數據TXD
4、數據終端準備好DTR
5、信號地線
6、數據準備好DSR
7、請求發送RTS
8、清除發送CTS
9、振鈴提示RI

TTL/CMOS電平標準:高電平‘1’ >2.x V 低電平’0’ <0.x V
232電平標準: 高電平‘1’ > -3V ~ -15V 低電平’0’ < +3V~ +15V
USB轉串口通信

串行通信的基本概念
異步通信與同步通信
1、異步通信
異步通信是指通信的發送與接收設備使用各自的時鐘控制數據的發送和接收過程。爲使雙方的收發協調,要求發送和接收設備的時鐘儘可能一致。

異步通信是以字符(構成的幀)爲單位進行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間不一定有“位間隔”的整數倍的關係,但同一字符內的各位之間的距離均爲“位間隔”的整數倍。
異步通信的數據格式 :
異步通信的特點:不要求收發雙方時鐘的嚴格一致,實現容易,設備開銷較小,但每個字符要附加2~3位用於起止位,各幀之間還有間隔,因此傳輸效率不高。

串行通信的錯誤校驗
1、奇偶校驗
在發送數據時,數據位尾隨的1位爲奇偶校驗位(1或0)。奇校驗時,數據中“1”的個數與校驗位“1”的個數之和應爲奇數;偶校驗時,數據中“1”的個數與校驗位“1”的個數之和應爲偶數。接收字符時,對“1”的個數進行校驗,若發現不一致,則說明傳輸數據過程中出現了差錯。
2、代碼和校驗
代碼和校驗是發送方將所發數據塊求和(或各字節異或),產生一個字節的校驗字符(校驗和)附加到數據塊末尾。接收方接收數據同時對數據塊(除校驗字節外)求和(或各字節異或),將所得的結果與發送方的“校驗和”進行比較,相符則無差錯,否則即認爲傳送過程中出現了差錯。
循環冗餘校驗
這種校驗是通過某種數學運算實現有效信息與校驗位之間的循環校驗,常用於對磁盤信息的傳輸、存儲區的完整性校驗等。這種校驗方法糾錯能力強,廣泛應用於同步通信中。
傳輸速率與傳輸距離
1、傳輸速率
比特率是每秒鐘傳輸二進制代碼的位數,單位是:位/秒(bps)。如每秒鐘傳送240個字符,而每個字符格式包含10位(1個起始位、1個停止位、8個數據位),這時的比特率爲:10位×240個/秒 = 2400 bps
2、傳輸距離與傳輸速率的關係
串行接口或終端直接傳送串行信息位流的最大距離與傳輸速率及傳輸線的電氣特性有關。當傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離隨傳輸速率的增加而減小。當比特率超過1000 bps 時,最大傳輸距離迅速下降,如9600 bps 時最大距離下降到只有76m(約250英尺)。
三種基本通信類型
單工通信:只允許一方向另外一方傳送信息,另一方不能回傳信息,比如電視遙控器、收音機廣播等。
半雙工通信:數據可以在雙方之間傳播,同一時刻只能其中一方發給另外一方,比如對講機就是典型半雙工。
全雙工通信:發送數據的同時也能夠接收數據,兩者同步進行,比如我們的電話通信。
80C51的串行口

有兩個物理上獨立的接收、發送緩衝器SBUF,它們佔用同一地址99H ;接收器是雙緩衝結構 ;發送緩衝器,因爲發送時CPU是主動的,不會產生重疊錯誤。
SCON——串行控制寄存器的位分配(地址0x98、可位尋址)

SCON——串行控制寄存器的位描述

SM0和SM1爲工作方式選擇位,可選擇四種工作方式:

SM2,多機通信控制位,主要用於方式2和方式3。當接收機的SM2=1時可以利用收到的RB8來控制是否激活RI(RB8=0時不激活RI,收到的信息丟棄;RB8=1時收到的數據進入SBUF,並激活RI,進而在中斷服務中將數據從SBUF讀走)。當SM2=0時,不論收到的RB8爲0和1,均可以使收到的數據進入SBUF,並激活RI(即此時RB8不具有控制RI激活的功能)。通過控制SM2,可以實現多機通信。
在方式0時,SM2必須是0。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1。REN,允許串行接收位。由軟件置REN=1,則啓動串行口接收數據;若軟件置REN=0,則禁止接收。
TB8,在方式2或方式3中,是發送數據的第九位,可以用軟件規定其作用。可以用作數據的奇偶校驗位,或在多機通信中,作爲地址幀/數據幀的標誌位。
在方式0和方式1中,該位未用。
RB8,在方式2或方式3中,是接收到數據的第九位,作爲奇偶校驗位或地址幀/數據幀的標誌位。在方式1時,若SM2=0,則RB8是接收到的停止位。
TI,發送中斷標誌位。在方式0時,當串行發送第8位數據結束時,或在其它方式,串行發送停止位的開始時,由內部硬件使TI置1,向CPU發中斷申請。在中斷服務程序中,必須用軟件將其清0,取消此中斷申請。
RI,接收中斷標誌位。在方式0時,當串行接收第8位數據結束時,或在其它方式,串行接收停止位的中間時,由內部硬件使RI置1,向CPU發中斷申請。也必須在中斷服務程序中,用軟件將其清0,取消此中斷申請。
PCON : 電源控制寄存器 (不可位尋址)

SMOD:波特率選擇位。當用軟件置位SMOD,即SMOD=1,則使串行通信方式1、2、3的波
特率加倍;SMOD=0,則各工作方式的波特率加倍。復位時SMOD=0。
SMOD0:幀錯誤檢測有效 控制位。當SMOD0=1,SCON寄存器中的SM0/FE位用於FE(幀錯誤檢測)功能;當SMOD0=0,SCON寄存器中的SM0/FE位用於SM0功能,和SM1一起指定串行口的工作方式。復位時SMOD0=0
串口通信程序的基本步驟
1、配置串口爲模式1。
2、配置定時器T1爲模式2,即自動重裝模式。
3、根據波特率計算TH1和TL1的初值,如果有需要可以使用PCON進行波特率加倍。
4、打開定時器控制寄存器TR1,讓定時器跑起來。
80C51串行口的工作方式
方式0
方式0時,串行口爲同步移位寄存器的輸入輸出方式。主要用於擴展並行輸入或輸出口。數據由RXD(P3.0)引腳輸入或輸出,同步移位脈衝由TXD(P3.1)引腳輸出。發送和接收均爲8位數據,低位在先,高位在後。波特率固定爲fosc/12。
1、方式0輸出

2、方式0輸入

方式1
方式1是10位數據的異步通信口。TXD爲數據發送引腳,RXD爲數據接收引腳,傳送一幀數據的格式如圖所示。其中1位起始位,8位數據位,1位停止位。

方式1輸出

方式1輸入

用軟件置REN爲1時,接收器以所選擇波特率的16倍速率採樣RXD引腳電平,檢測到RXD引腳輸入電平發生負跳變時,則說明起始位有效,將其移入輸入移位寄存器,並開始接收這一幀信息的其餘位。接收過程中,數據從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最後一次移位。當RI=0,且SM2=0(或接收到的停止位爲1)時,將接收到的9位數據的前8位數據裝入接收SBUF,第9位(停止位)進入RB8,並置RI=1,向CPU請求中斷。
方式2和方式3
方式2或方式3時爲11位數據的異步通信口。TXD爲數據發送引腳,RXD爲數據接收引腳 。

方式2和方式3時起始位1位,數據9位(含1位附加的第9位,發送時爲SCON中的TB8,接收時爲RB8),停止位1位,一幀數據爲11位。方式2的波特率固定爲晶振頻率的1/64或1/32,方式3的波特率由定時器T1的溢出率決定。
波特率的計算
在串行通信中,收發雙方對發送或接收數據的速率要有約定。通過軟件可對單片機串行口編程爲四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。
串行口的四種工作方式對應三種波特率。由於輸入的移位時鐘的來源不同,所以,各種方式的波特率計算公式也不相同。
方式0的波特率 = fosc/12
方式2的波特率 =(2SMOD/64)· fosc
方式1的波特率 =(2SMOD/32)·(T1溢出率)
方式3的波特率 =(2SMOD/32)·(T1溢出率)
當T1作爲波特率發生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啓動定時器)。這時溢出率取決於TH1中的計數值。
T1 溢出率 = fosc /{12×[256 -(TH1)]}
在單片機的應用中,常用的晶振頻率爲:12MHz和11.0592MHz。所以,選用的波特率也相對固定。常用的串行口波特率以及各參數的關係如表所示。

串行口工作之前,應對其進行初始化,主要是設置產生波特率的定時器1、串行口控制和中斷控制。具體步驟如下:
確定T1的工作方式(編程TMOD寄存器);
計算T1的初值,裝載TH1、TL1;
啓動T1(編程TCON中的TR1位);
確定串行口控制(編程SCON寄存器);
串行口在中斷方式工作時,要進行中斷設置(編程IE、IP寄存器)。
第六節、液晶顯示
1602液晶
工業字符型液晶,能夠同時顯示16x02即32個字符。1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因爲如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內容爲16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數字)。市面上字符液晶大多數是基於HD44780液晶芯片的,控制原理是完全相同的,因此基於HD44780寫的控制程序可以很方便地應用於市面上大部分的字符型液晶。
管腳功能
1602採用標準的16腳接口,其中:
第1腳:GND爲電源地
第2腳:VCC接5V電源正極
第3腳:V0爲液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。
第4腳:RS爲寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。
第5腳:RW爲讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。
第6腳:E(或EN)端爲使能(enable)端,高電平(1)時讀取信息,負跳變時執行指令。
第7~14腳:D0~D7爲8位雙向數據端。第15~16腳:空腳或背燈電
源。15腳背光正極,16腳背光負極。
特性
3.3V或5V工作電壓,對比度可調
內含復位電路提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能,有80字節顯示數據存儲器DDRAM,內建有192個5X7點陣的字型的字符發生器CGROM,8個可由用戶自定義的5X7的字符發生器CGRAM,應用微功耗、體積小、顯示內容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應用系統中。
操作控制
注:關於E=H脈衝——開始時初始化E爲0,然後置E爲1。
字符集
1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。在單片機編程中還可以用字符型常量或變量賦值,如’A’。因爲CGROM儲存的字符代碼與我們PC中的字符代碼是基本一致的,因此我們在向DDRAM寫C51字符代碼程序時甚至可以直接用P1=‘A’這樣的方法。PC在編譯時就把’A’先轉換爲41H代碼了。
字符代碼0x00~0x0F爲用戶自定義的字符圖形RAM(對於5X8點陣的字符,可以存放8組,5X10點陣的字符,存放4組),就是CGRAM了。
0x20~0x7F爲標準的ASCII碼,0xA0~0xFF爲日文字符和希臘文字符,其餘字符碼(0x10~0x1F及0x80~0x9F)沒有定義。
1602的16進制ASCII碼錶地址:讀的時候,先讀上面那行,再讀左邊那列,如:感嘆號!的ASCII爲0x21,字母B的ASCII爲0x42(前面加0x表示十六進制)。

8051模擬口接法

第七節、點陣LED顯示
8*8點陣外型和結構

8X8點陣LED工作原理說明 :8X8點陣共由64個發光二極管組成,且每個發光二極管是放置在行線和列線的交叉點上,當對應的某一列置1電平,某一行置0電平,則相應的二極管就 會點亮;因此要實現一根柱形的亮法,對應的一列爲一根豎柱,或者對應的一行爲一根橫柱,實現柱的亮的方法如下:一根豎柱:對應的列置1,而行則採用掃描的方法來實現。 一根橫柱:對應的行置0,而列則採用掃描的方法來實現。
第八節、紅外遙控
信號調製原理
基帶信號:從信號源發出沒有經過調製的原始信號,特點是頻率較低,信號頻率從0開始,頻譜較寬。
調製:就是用待傳送信號去控制某個高頻信號的幅度、相位、頻率等參量變化的過程,即用一個信號去裝載另一個信號。

紅外遙控發送接收原理圖

NEC協議紅外遙控器
NEC數據格式:引導碼、用戶碼、用戶碼(或者用戶碼反碼)、按鍵鍵碼和鍵碼反碼,最後一個停止位。
引導碼:9ms的載波+4.5ms的空閒。
比特值“0”:560us的載波+560us的空閒。
比特值“1”:560us的載波+1.68ms的空閒。

第九節、AD、DA轉化
A/D和D/A的基本概念
模擬量:任何兩個數字之間都有無限箇中間值,所以稱之爲連續變化的量,也就是模擬量。
數字量:數字間有一定的間隔,不是連續的,即離散的量稱之爲數字量。
A/D:Analog to Digital Converter,用模數轉換器實現模擬量到數字量的轉換,簡稱ADC。
D/A:Digital to Analog Converter,用數模轉換器實現數字量到模擬量的轉換,簡稱DAC。
A/D的主要指標
1、ADC的位數:1個n位的ADC表示這個ADC共有2的n次方個刻度。
2、基準源:也叫做基準電壓,是ADC的參考基準。
3、分辨率:數字量變化一個最小刻度,模擬信號的變化量,定義爲滿刻度量程與2n-1的比值。
4、INL(積分非線性度)和DNL(差分非線性度)
INL是指ADC器件在所有數值上對應的模擬值,和真實值之間誤差最大的那個點的誤差值,單位是LSB。LSB(Least Significant Bit)是最低有效位的意思,它實際上對應的就是ADC的分辨率。
DNL是指ADC相鄰兩個刻度之間最大的差異,單位也是LSB。
5、轉換速率:是指ADC每秒能進行採樣轉換的最大次數,單位是sps。
第十節 、實時時鐘DS1302
DS1302實時時鐘芯片

DS1302寄存器介紹

DS1302單字節寫操作時序

DS1302單字節讀操作時序

附送郭天祥十天學會51單片機精品教程

下載地址: https://pan.baidu.com/s/17sSfQEnpbv6U0xpFb_4Ddg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章