嵌牛IT觀察之單片機系列

周漢棟? 學號:20049200135? 竹園一號書院

轉自:https://www.zhihu.com/tardis/sogou/art/85352306

【嵌牛導讀】:各類電子設備,自動化等已經(jīng)普及我們的生活,我們通過小小的芯片實現(xiàn)對世界更加精切的控制。

【嵌牛鼻子】:51 單片機? 基礎知識

【嵌牛提問】:芯片如何識別命令,來達到我們想要的效果?

【嵌牛正文】:

一、STC89C51單片機外部引腳簡介

電源及時鐘引腳:Vcc(40腳)、GND(20腳)、XTAL1(19腳)、XTAL2(18腳)。

Vcc、GND——單片機電源引腳,不同的型號單片機接入對應電壓電源,常壓為+5V,低壓為

+3.3V。

XTAL1、XTAL2——外接時鐘引腳。XTAL1為片內(nèi)震蕩電路的輸入端,XTAL2為片內(nèi)震蕩電路的輸出端。8051的時鐘有兩種方式,一種是片內(nèi)時鐘震蕩方式,需要在這兩個腳外接石英晶體和震蕩電容,震蕩電容的值一般取10p~30p;另一種是外部時鐘方式,將XTAL1接地,外部時鐘信號從XTAL2腳輸入。

編程控制引腳。如RST(復位)、PSEN(29腳)、ALE/PROG(30腳)、EA/Vpp(31腳)。

RST(9腳)——單片機復位引腳。當輸入連續(xù)兩個機器周期以上高點平時有效,用來完成單片機的復位初始化操作,復位后程序計數(shù)器PC=0000H,單片機從程序儲存器的0000H單元讀取第一條指令碼。即單片機從頭開始執(zhí)行程序。

PSEN(29腳)—— 程序存儲器允許輸出控制端。讀取外部程序存儲器時PSEN低電平有效,以實現(xiàn)外部程序存儲器單元的讀操作(了解即可)。

ALE/PROG(30腳)—— 在單片機擴展外部RAM時,ALE用于控制把P0口的輸出低8位地址送鎖存器鎖存器來,以實現(xiàn)地位地址和數(shù)據(jù)的隔離。(了解即可)。

EA/Vpp(31腳)—— EA接高電平時,單片機讀取內(nèi)部程序存儲器。當擴展有外部ROM時,當讀取完內(nèi)部ROM后自動讀取外部ROM。EA接低電平時,單片機直接讀取外部ROM。

I/O口引腳 —— P0口、P1口、P2口、P3口。

P0口(39-32腳)——雙向8位I/O口,每個口可獨立控制,沒有上拉電阻,為高阻態(tài),所以不能正常的輸出高低電平,因此該組IO口在使用時務必要接上拉電阻,一般選10千歐。

P1口(1-8腳)——準雙向8位IO口,每個口可獨立控制,內(nèi)帶上拉電阻,這種接口輸出沒有高阻狀態(tài),輸入也不能鎖存,故不是真正的雙向IO口。之所以稱它為準雙向,是因為該口在作為輸入使用前,要先向該口進行寫1操作,然后單片機內(nèi)部才可正確的讀出外部信號,也就是要使其先有個“準”備的過程,所以說才是準雙向接口。

P2口(21-28腳)—— 準雙向8位I/O口,每個口可獨立控制,內(nèi)帶上拉電阻,與P1口相似。

P3口(10-17腳)——準雙向8位IO口,每個口可獨立控制,內(nèi)帶上拉電阻。作為第一功能可以當做普通I/O口,與P1口相似。P3口可做第二功能使用。參照下表:

二、電平特性

單片機的輸入輸出電平為TTL電平,其中高電平為+5V,低電平為0V。計算機串口為RS-232電平,其中高電平為-12V,低電平為+12V。注意,RS-232為負邏輯電平。

三、單片機的幾個周期介紹

時鐘周期:也稱為震蕩周期,定義為時鐘頻率的倒數(shù)(可以這樣來理解,時鐘周期就是單片機外接晶振的倒數(shù),如12Mhz的晶振,它的時鐘周期就是1/12us),它是單片機中最基本的、最小的時間單位。在一個時鐘周期內(nèi),CPU僅完成這一個最基本的動作

狀態(tài)周期:它是時鐘周期的兩倍

機器周期:單片機的基本操作周期,在一個操作周期內(nèi),單片機完成一項基本操作,如取指令、存儲器讀寫等。它由12個時鐘周期(6個狀態(tài)周期)組成。

指令周期:他是指CPU執(zhí)行一條指令所需要的時間。一般一個指令周期含有1~4個機器周期。

四、移位操作

左移。C51操作符為“<<”,最低位補零

右移。同上

循環(huán)左移,最高位移入最低位,其他依次向左移一位。

五、數(shù)碼管顯示原理

電路方面有共陰極和共陽極之分,讓數(shù)碼管顯示不同的數(shù)字就是先定義一個保存16進制數(shù)的數(shù)組,然后在程序中把這個16進制數(shù)賦值給相應的引腳。

六、中斷概念

51單片機一共有6個中斷源

INT0——外部中斷0

INT1——外部中斷1

T0/1/2——計時器/定時器中斷,由計數(shù)器滿回零引起。

T1/R1——串行口中斷,串行端完成一幀字符發(fā)送/接收后引起。

七、單片機的定時器中斷

51單片機內(nèi)部共有兩個16位可編程的定時器/計數(shù)器,即定時器T0和定時器T1。它們既有定時功能又有計數(shù)功能。定時器/計數(shù)器的實質是加1計數(shù)器(16位),由高8位和底8位兩個寄存器組成,TMOD寄存器是定時器/計數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0,T1的啟動和停止以及設置溢出標志。

加一計數(shù)器的輸入計數(shù)脈沖有兩個來源,一個是由系統(tǒng)的時鐘振蕩器輸出脈沖經(jīng)12分頻后送來;另一個是T0或T1引腳輸入的外部脈沖源。如果定時器/計數(shù)器工作在定時模式,則表示時間已到;如果工作在計數(shù)模式,則表示計數(shù)值已經(jīng)滿了。

定時器初始化過程如下:

①對TMOD賦值,以確定T0和T1的工作方式

②計算初值,并將初值寫入TH0、TL0或TH1、TL1中。

③中斷方式時,則對IE賦值,開放中斷。

④使TR0或TR1置位,啟動定時器/計數(shù)器定時或計數(shù)

八、并行與串行基本通信方式

1、并行通信方式:將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時進行傳輸,每位數(shù)據(jù)都需要一條傳輸線。

2、串行通信方式:串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個的傳輸,此時只需要一條數(shù)據(jù)線

3、異步串行通信方式:指通信的接收與發(fā)送設備使用各自的時鐘控制數(shù)據(jù)的發(fā)送和接收過程。其特點是:不要求發(fā)送雙方時鐘嚴格一致,容易實現(xiàn),設備開銷小,但每個字符要附加2~3位,用于起始位、校驗位、停止位,各幀之間還有間隔,因此傳輸效率不高。在單片機與單片機之間,單片機與計算機之間通信時,通常采用異步串行通信方式。

4、同步串行通信方式:同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方完全達到同步。

九、RS-232電平與TTL電平的轉換

一般使用MAX232實現(xiàn)電平轉換

十、波特率與定時器初值的關系

1、波特率:單片機或計算機在串口通信時的速率用波特率表示,它定義為每秒傳輸二進制代碼的位數(shù),即1波特 = 1位/秒,單位是bps。

2、波特率的計算:在串行通信中,收、發(fā)雙方對發(fā)送或接受數(shù)據(jù)的速率有約定。通過編程可對單片機串行口設定四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。

3、為什么51系列單片機常用11.0592MHz的晶振設計?常用波特率通常按規(guī)范取1200,2400,4800,9600···,若采用晶振12Mhz或6Mhz,計算得出的T1定時初值將不是一個整數(shù),這樣通信時便會產(chǎn)生積累誤差。

十一、串行口結構描述

1、串行口結構:51單片機的串行口是一個可編程全雙工的通信接口,具有UART(通用異步收發(fā)器)的全部功能,能同時進行數(shù)據(jù)的發(fā)送和接收。串行口主要由兩個獨立的串行數(shù)據(jù)緩沖寄存器SBUF(一個發(fā)送緩沖寄存器,一個接收緩沖寄存器)和發(fā)送控制器、接收控制器、輸入移位寄存器以及若干控制門電路組成。執(zhí)行寫指令時,訪問串行發(fā)送寄存器;執(zhí)行讀指令時,訪問串行接收寄存器。與串口緊密相關的一個特殊功能寄存器是串行口控制寄存器SCON,它用來設定串行口的工作方式,接收/發(fā)送控制以及設置狀態(tài)標志位等。

2、串口方式簡介:重點介紹方式1:。方式1是十位數(shù)據(jù)的異步通信口,其中1為起始位,8為數(shù)據(jù)位,1位停止位。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳。其傳輸?shù)牟ㄌ芈适强勺兊?,對?1單片機,波特率由定時器1的溢出率決定。通常在做單片機與單片機串口通信、單片機與計算機串口通信、計算機與計算機串口通信時,基本都選擇方式1。

3、在具體操作串行口之前,需要對單片機的一些與串口有關的特殊功能寄存器進行初始化設置,主要是設置產(chǎn)生波特率的定時器1、串行口控制和中斷控制。①確定T1工作方式(編程TMOD寄存器)②計算T1的初值,裝載TH1,TL1③啟動T1(編程TCON寄存器的TR1位)④確定串行口工作方式(編程SCON寄存器)⑤串行口工作在中斷方式時,要進行中斷設置(編程IE、IP寄存器)

十二、I2C總線概述

1、I2C具有接線口少,控制簡單,器件封裝形式小,通信速率高等優(yōu)點。I2C總線由數(shù)據(jù)線SDA和時鐘線SCL兩條線構成通信線路,即可發(fā)送數(shù)據(jù),也可接受數(shù)據(jù)。

2、單片機模擬I2C總線通信,因為有許多單片機沒有I2C總線接口,如51單片機,不過我們可以在單片機應用系統(tǒng)中通過軟件模擬I2C總線的工作時序,在使用時,只需要正確調(diào)用各個函數(shù)就能方便地擴展I2C總線接口器件。

3、單片機在模擬I2C通信時,需要寫出如下幾個關鍵部分的程序:總線的初始化、啟動信號、應答信號、停止信號、寫一個字節(jié)、讀一個字節(jié)。

十三、單片機空閑與掉電模式

1、空閑模式:除CPU處于休眠狀態(tài)之外,其余硬件全部處于活動狀態(tài)。

2、掉電模式:也成為休眠模式,外部晶振停振,CPU,定時器、串行口全部停止工作,只有外部中斷繼續(xù)工作。

十四、看門狗概念

在由單片機構成的系統(tǒng)中,由于單片機的工作有可能受到外界電磁場的干擾,造成程序的跑飛,從而陷入死循環(huán),程序的正常運行被打斷,所以出于對單片機運行狀態(tài)進行實時監(jiān)測的考慮,便產(chǎn)生了一種專門用于監(jiān)測單片機程序運行狀態(tài)的芯片,俗稱看門狗。其工作過程如下:看門狗芯片和單片機的一個IO引腳相連,該IO引腳通過單片機程序控制,使他定時地往看門狗的這個引腳上送入高電平(或低電平),這一程序語句是分散的放在單片機其他控制語句中間的,一旦單片機由于干擾造成的程序跑飛而陷入某一程序段進入死循環(huán)狀態(tài)時,給看門狗引腳送電平的程序便不能被執(zhí)行到,這時看門狗電路會由于得不到單片機送來的信號,便對它與單片機復位引腳相連接的引腳送一個復位信號,使單片機復位。

十五、SPI接口

1、概述

SPI = Serial Peripheral Interface,是串行外圍設備接口,是一種高速,全雙工,同步的通信總線。常規(guī)只占用四根線,節(jié)約了芯片管腳,PCB的布局省空間。現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,常見的有EEPROM、FLASH、AD轉換器等。

優(yōu)點:

1、支持全雙工,push-pull的驅動性能相比open-drain信號完整性更好;

2、支持高速(100MHz以上);

3、協(xié)議支持字長不限于8bits,可根據(jù)應用特點靈活選擇消息字長;

4、硬件連接簡單;

缺點:

1、相比IIC多兩根線;

2、沒有尋址機制,只能靠片選選擇不同設備;

3、沒有從設備接受ACK,主設備對于發(fā)送成功與否不得而知;

4、典型應用只支持單主控;

5、相比RS232 RS485和CAN總線,SPI傳輸距離短;

2. 硬件結構

SPI總線定義兩個及以上設備間的數(shù)據(jù)通信,提供時鐘的設備為主設備Master,接收時鐘的設備為從設備Slave;

信號定義如下:

SCK : Serial Clock 串行時鐘

MOSI : Master Output, Slave Input 主發(fā)從收信號

MISO : Master Input, Slave Output 主收從發(fā)信號

SS/CS : Slave Select 片選信號

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容