周漢棟? 學(xué)號(hào):20049200135? 竹園一號(hào)書(shū)院
轉(zhuǎn)自:https://www.zhihu.com/tardis/sogou/art/85352306
【嵌牛導(dǎo)讀】:各類電子設(shè)備货徙,自動(dòng)化等已經(jīng)普及我們的生活,我們通過(guò)小小的芯片實(shí)現(xiàn)對(duì)世界更加精切的控制。
【嵌牛鼻子】:51 單片機(jī)? 基礎(chǔ)知識(shí)
【嵌牛提問(wèn)】:芯片如何識(shí)別命令,來(lái)達(dá)到我們想要的效果?
【嵌牛正文】:
一撒顿、STC89C51單片機(jī)外部引腳簡(jiǎn)介
電源及時(shí)鐘引腳:Vcc(40腳)、GND(20腳)、XTAL1(19腳)突想、XTAL2(18腳)。
Vcc究抓、GND——單片機(jī)電源引腳猾担,不同的型號(hào)單片機(jī)接入對(duì)應(yīng)電壓電源,常壓為+5V刺下,低壓為
+3.3V绑嘹。
XTAL1、XTAL2——外接時(shí)鐘引腳橘茉。XTAL1為片內(nèi)震蕩電路的輸入端工腋,XTAL2為片內(nèi)震蕩電路的輸出端姨丈。8051的時(shí)鐘有兩種方式,一種是片內(nèi)時(shí)鐘震蕩方式擅腰,需要在這兩個(gè)腳外接石英晶體和震蕩電容蟋恬,震蕩電容的值一般取10p~30p;另一種是外部時(shí)鐘方式趁冈,將XTAL1接地歼争,外部時(shí)鐘信號(hào)從XTAL2腳輸入。
編程控制引腳渗勘。如RST(復(fù)位)沐绒、PSEN(29腳)、ALE/PROG(30腳)呀邢、EA/Vpp(31腳)洒沦。
RST(9腳)——單片機(jī)復(fù)位引腳。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高點(diǎn)平時(shí)有效价淌,用來(lái)完成單片機(jī)的復(fù)位初始化操作申眼,復(fù)位后程序計(jì)數(shù)器PC=0000H,單片機(jī)從程序儲(chǔ)存器的0000H單元讀取第一條指令碼蝉衣。即單片機(jī)從頭開(kāi)始執(zhí)行程序括尸。
PSEN(29腳)—— 程序存儲(chǔ)器允許輸出控制端。讀取外部程序存儲(chǔ)器時(shí)PSEN低電平有效病毡,以實(shí)現(xiàn)外部程序存儲(chǔ)器單元的讀操作(了解即可)濒翻。
ALE/PROG(30腳)—— 在單片機(jī)擴(kuò)展外部RAM時(shí),ALE用于控制把P0口的輸出低8位地址送鎖存器鎖存器來(lái)啦膜,以實(shí)現(xiàn)地位地址和數(shù)據(jù)的隔離有送。(了解即可)。
EA/Vpp(31腳)—— EA接高電平時(shí)僧家,單片機(jī)讀取內(nèi)部程序存儲(chǔ)器雀摘。當(dāng)擴(kuò)展有外部ROM時(shí),當(dāng)讀取完內(nèi)部ROM后自動(dòng)讀取外部ROM八拱。EA接低電平時(shí)阵赠,單片機(jī)直接讀取外部ROM。
I/O口引腳 —— P0口肌稻、P1口清蚀、P2口、P3口爹谭。
P0口(39-32腳)——雙向8位I/O口枷邪,每個(gè)口可獨(dú)立控制,沒(méi)有上拉電阻诺凡,為高阻態(tài)齿风,所以不能正常的輸出高低電平药薯,因此該組IO口在使用時(shí)務(wù)必要接上拉電阻,一般選10千歐救斑。
P1口(1-8腳)——準(zhǔn)雙向8位IO口,每個(gè)口可獨(dú)立控制真屯,內(nèi)帶上拉電阻脸候,這種接口輸出沒(méi)有高阻狀態(tài),輸入也不能鎖存绑蔫,故不是真正的雙向IO口运沦。之所以稱它為準(zhǔn)雙向,是因?yàn)樵摽谠谧鳛檩斎胧褂们芭渖睿认蛟摽谶M(jìn)行寫(xiě)1操作携添,然后單片機(jī)內(nèi)部才可正確的讀出外部信號(hào),也就是要使其先有個(gè)“準(zhǔn)”備的過(guò)程篓叶,所以說(shuō)才是準(zhǔn)雙向接口烈掠。
P2口(21-28腳)—— 準(zhǔn)雙向8位I/O口,每個(gè)口可獨(dú)立控制缸托,內(nèi)帶上拉電阻左敌,與P1口相似。
P3口(10-17腳)——準(zhǔn)雙向8位IO口俐镐,每個(gè)口可獨(dú)立控制矫限,內(nèi)帶上拉電阻。作為第一功能可以當(dāng)做普通I/O口佩抹,與P1口相似叼风。P3口可做第二功能使用。參照下表:
二棍苹、電平特性
單片機(jī)的輸入輸出電平為T(mén)TL電平无宿,其中高電平為+5V,低電平為0V廊勃。計(jì)算機(jī)串口為RS-232電平懈贺,其中高電平為-12V,低電平為+12V坡垫。注意梭灿,RS-232為負(fù)邏輯電平。
三冰悠、單片機(jī)的幾個(gè)周期介紹
時(shí)鐘周期:也稱為震蕩周期堡妒,定義為時(shí)鐘頻率的倒數(shù)(可以這樣來(lái)理解,時(shí)鐘周期就是單片機(jī)外接晶振的倒數(shù)溉卓,如12Mhz的晶振皮迟,它的時(shí)鐘周期就是1/12us),它是單片機(jī)中最基本的搬泥、最小的時(shí)間單位。在一個(gè)時(shí)鐘周期內(nèi)伏尼,CPU僅完成這一個(gè)最基本的動(dòng)作
狀態(tài)周期:它是時(shí)鐘周期的兩倍
機(jī)器周期:?jiǎn)纹瑱C(jī)的基本操作周期忿檩,在一個(gè)操作周期內(nèi),單片機(jī)完成一項(xiàng)基本操作爆阶,如取指令燥透、存儲(chǔ)器讀寫(xiě)等。它由12個(gè)時(shí)鐘周期(6個(gè)狀態(tài)周期)組成辨图。
指令周期:他是指CPU執(zhí)行一條指令所需要的時(shí)間班套。一般一個(gè)指令周期含有1~4個(gè)機(jī)器周期。
四故河、移位操作
左移吱韭。C51操作符為“<<”,最低位補(bǔ)零
右移鱼的。同上
循環(huán)左移理盆,最高位移入最低位,其他依次向左移一位鸳吸。
五熏挎、數(shù)碼管顯示原理
電路方面有共陰極和共陽(yáng)極之分,讓數(shù)碼管顯示不同的數(shù)字就是先定義一個(gè)保存16進(jìn)制數(shù)的數(shù)組晌砾,然后在程序中把這個(gè)16進(jìn)制數(shù)賦值給相應(yīng)的引腳坎拐。
六、中斷概念
51單片機(jī)一共有6個(gè)中斷源
INT0——外部中斷0
INT1——外部中斷1
T0/1/2——計(jì)時(shí)器/定時(shí)器中斷养匈,由計(jì)數(shù)器滿回零引起哼勇。
T1/R1——串行口中斷,串行端完成一幀字符發(fā)送/接收后引起呕乎。
七积担、單片機(jī)的定時(shí)器中斷
51單片機(jī)內(nèi)部共有兩個(gè)16位可編程的定時(shí)器/計(jì)數(shù)器,即定時(shí)器T0和定時(shí)器T1猬仁。它們既有定時(shí)功能又有計(jì)數(shù)功能帝璧。定時(shí)器/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和底8位兩個(gè)寄存器組成湿刽,TMOD寄存器是定時(shí)器/計(jì)數(shù)器的工作方式寄存器的烁,確定工作方式和功能;TCON是控制寄存器诈闺,控制T0渴庆,T1的啟動(dòng)和停止以及設(shè)置溢出標(biāo)志。
加一計(jì)數(shù)器的輸入計(jì)數(shù)脈沖有兩個(gè)來(lái)源,一個(gè)是由系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)12分頻后送來(lái)襟雷;另一個(gè)是T0或T1引腳輸入的外部脈沖源刃滓。如果定時(shí)器/計(jì)數(shù)器工作在定時(shí)模式,則表示時(shí)間已到耸弄;如果工作在計(jì)數(shù)模式咧虎,則表示計(jì)數(shù)值已經(jīng)滿了。
定時(shí)器初始化過(guò)程如下:
①對(duì)TMOD賦值计呈,以確定T0和T1的工作方式
②計(jì)算初值老客,并將初值寫(xiě)入TH0、TL0或TH1震叮、TL1中。
③中斷方式時(shí)鳍鸵,則對(duì)IE賦值苇瓣,開(kāi)放中斷。
④使TR0或TR1置位偿乖,啟動(dòng)定時(shí)器/計(jì)數(shù)器定時(shí)或計(jì)數(shù)
八击罪、并行與串行基本通信方式
1、并行通信方式:將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時(shí)進(jìn)行傳輸贪薪,每位數(shù)據(jù)都需要一條傳輸線媳禁。
2、串行通信方式:串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個(gè)的傳輸画切,此時(shí)只需要一條數(shù)據(jù)線
3竣稽、異步串行通信方式:指通信的接收與發(fā)送設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過(guò)程。其特點(diǎn)是:不要求發(fā)送雙方時(shí)鐘嚴(yán)格一致霍弹,容易實(shí)現(xiàn)毫别,設(shè)備開(kāi)銷小,但每個(gè)字符要附加2~3位典格,用于起始位岛宦、校驗(yàn)位、停止位耍缴,各幀之間還有間隔砾肺,因此傳輸效率不高。在單片機(jī)與單片機(jī)之間防嗡,單片機(jī)與計(jì)算機(jī)之間通信時(shí)变汪,通常采用異步串行通信方式。
4本鸣、同步串行通信方式:同步通信時(shí)要建立發(fā)送方時(shí)鐘對(duì)接收方時(shí)鐘的直接控制疫衩,使雙方完全達(dá)到同步。
九、RS-232電平與TTL電平的轉(zhuǎn)換
一般使用MAX232實(shí)現(xiàn)電平轉(zhuǎn)換
十闷煤、波特率與定時(shí)器初值的關(guān)系
1童芹、波特率:?jiǎn)纹瑱C(jī)或計(jì)算機(jī)在串口通信時(shí)的速率用波特率表示,它定義為每秒傳輸二進(jìn)制代碼的位數(shù)鲤拿,即1波特 = 1位/秒假褪,單位是bps。
2近顷、波特率的計(jì)算:在串行通信中生音,收、發(fā)雙方對(duì)發(fā)送或接受數(shù)據(jù)的速率有約定窒升。通過(guò)編程可對(duì)單片機(jī)串行口設(shè)定四種工作方式缀遍,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的饱须,由定時(shí)器T1的溢出率來(lái)決定域醇。
3、為什么51系列單片機(jī)常用11.0592MHz的晶振設(shè)計(jì)蓉媳?常用波特率通常按規(guī)范取1200,2400,4800,9600···譬挚,若采用晶振12Mhz或6Mhz,計(jì)算得出的T1定時(shí)初值將不是一個(gè)整數(shù)酪呻,這樣通信時(shí)便會(huì)產(chǎn)生積累誤差减宣。
十一、串行口結(jié)構(gòu)描述
1玩荠、串行口結(jié)構(gòu):51單片機(jī)的串行口是一個(gè)可編程全雙工的通信接口漆腌,具有UART(通用異步收發(fā)器)的全部功能,能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收姨蟋。串行口主要由兩個(gè)獨(dú)立的串行數(shù)據(jù)緩沖寄存器SBUF(一個(gè)發(fā)送緩沖寄存器屉凯,一個(gè)接收緩沖寄存器)和發(fā)送控制器、接收控制器眼溶、輸入移位寄存器以及若干控制門(mén)電路組成悠砚。執(zhí)行寫(xiě)指令時(shí),訪問(wèn)串行發(fā)送寄存器堂飞;執(zhí)行讀指令時(shí)灌旧,訪問(wèn)串行接收寄存器。與串口緊密相關(guān)的一個(gè)特殊功能寄存器是串行口控制寄存器SCON绰筛,它用來(lái)設(shè)定串行口的工作方式枢泰,接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志位等。
2铝噩、串口方式簡(jiǎn)介:重點(diǎn)介紹方式1:衡蚂。方式1是十位數(shù)據(jù)的異步通信口,其中1為起始位,8為數(shù)據(jù)位毛甲,1位停止位年叮。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳玻募。其傳輸?shù)牟ㄌ芈适强勺兊闹凰穑瑢?duì)于51單片機(jī),波特率由定時(shí)器1的溢出率決定七咧。通常在做單片機(jī)與單片機(jī)串口通信跃惫、單片機(jī)與計(jì)算機(jī)串口通信、計(jì)算機(jī)與計(jì)算機(jī)串口通信時(shí)艾栋,基本都選擇方式1爆存。
3、在具體操作串行口之前蝗砾,需要對(duì)單片機(jī)的一些與串口有關(guān)的特殊功能寄存器進(jìn)行初始化設(shè)置终蒂,主要是設(shè)置產(chǎn)生波特率的定時(shí)器1、串行口控制和中斷控制遥诉。①確定T1工作方式(編程TMOD寄存器)②計(jì)算T1的初值,裝載TH1噪叙,TL1③啟動(dòng)T1(編程TCON寄存器的TR1位)④確定串行口工作方式(編程SCON寄存器)⑤串行口工作在中斷方式時(shí)矮锈,要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)
十二睁蕾、I2C總線概述
1苞笨、I2C具有接線口少,控制簡(jiǎn)單子眶,器件封裝形式小瀑凝,通信速率高等優(yōu)點(diǎn)。I2C總線由數(shù)據(jù)線SDA和時(shí)鐘線SCL兩條線構(gòu)成通信線路臭杰,即可發(fā)送數(shù)據(jù)粤咪,也可接受數(shù)據(jù)。
2渴杆、單片機(jī)模擬I2C總線通信寥枝,因?yàn)橛性S多單片機(jī)沒(méi)有I2C總線接口,如51單片機(jī)磁奖,不過(guò)我們可以在單片機(jī)應(yīng)用系統(tǒng)中通過(guò)軟件模擬I2C總線的工作時(shí)序囊拜,在使用時(shí),只需要正確調(diào)用各個(gè)函數(shù)就能方便地?cái)U(kuò)展I2C總線接口器件比搭。
3冠跷、單片機(jī)在模擬I2C通信時(shí),需要寫(xiě)出如下幾個(gè)關(guān)鍵部分的程序:總線的初始化、啟動(dòng)信號(hào)蜜托、應(yīng)答信號(hào)抄囚、停止信號(hào)、寫(xiě)一個(gè)字節(jié)盗冷、讀一個(gè)字節(jié)怠苔。
十三、單片機(jī)空閑與掉電模式
1仪糖、空閑模式:除CPU處于休眠狀態(tài)之外柑司,其余硬件全部處于活動(dòng)狀態(tài)。
2锅劝、掉電模式:也成為休眠模式攒驰,外部晶振停振,CPU,定時(shí)器故爵、串行口全部停止工作玻粪,只有外部中斷繼續(xù)工作。
十四诬垂、看門(mén)狗概念
在由單片機(jī)構(gòu)成的系統(tǒng)中劲室,由于單片機(jī)的工作有可能受到外界電磁場(chǎng)的干擾,造成程序的跑飛结窘,從而陷入死循環(huán)很洋,程序的正常運(yùn)行被打斷,所以出于對(duì)單片機(jī)運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè)的考慮隧枫,便產(chǎn)生了一種專門(mén)用于監(jiān)測(cè)單片機(jī)程序運(yùn)行狀態(tài)的芯片喉磁,俗稱看門(mén)狗。其工作過(guò)程如下:看門(mén)狗芯片和單片機(jī)的一個(gè)IO引腳相連官脓,該IO引腳通過(guò)單片機(jī)程序控制协怒,使他定時(shí)地往看門(mén)狗的這個(gè)引腳上送入高電平(或低電平),這一程序語(yǔ)句是分散的放在單片機(jī)其他控制語(yǔ)句中間的卑笨,一旦單片機(jī)由于干擾造成的程序跑飛而陷入某一程序段進(jìn)入死循環(huán)狀態(tài)時(shí)孕暇,給看門(mén)狗引腳送電平的程序便不能被執(zhí)行到,這時(shí)看門(mén)狗電路會(huì)由于得不到單片機(jī)送來(lái)的信號(hào)赤兴,便對(duì)它與單片機(jī)復(fù)位引腳相連接的引腳送一個(gè)復(fù)位信號(hào)芭商,使單片機(jī)復(fù)位。
十五搀缠、SPI接口
1铛楣、概述
SPI = Serial Peripheral Interface,是串行外圍設(shè)備接口艺普,是一種高速簸州,全雙工鉴竭,同步的通信總線。常規(guī)只占用四根線岸浑,節(jié)約了芯片管腳搏存,PCB的布局省空間。現(xiàn)在越來(lái)越多的芯片集成了這種通信協(xié)議矢洲,常見(jiàn)的有EEPROM璧眠、FLASH、AD轉(zhuǎn)換器等读虏。
優(yōu)點(diǎn):
1责静、支持全雙工,push-pull的驅(qū)動(dòng)性能相比open-drain信號(hào)完整性更好盖桥;
2灾螃、支持高速(100MHz以上);
3揩徊、協(xié)議支持字長(zhǎng)不限于8bits腰鬼,可根據(jù)應(yīng)用特點(diǎn)靈活選擇消息字長(zhǎng);
4塑荒、硬件連接簡(jiǎn)單熄赡;
缺點(diǎn):
1、相比IIC多兩根線齿税;
2本谜、沒(méi)有尋址機(jī)制,只能靠片選選擇不同設(shè)備偎窘;
3、沒(méi)有從設(shè)備接受ACK溜在,主設(shè)備對(duì)于發(fā)送成功與否不得而知陌知;
4、典型應(yīng)用只支持單主控掖肋;
5仆葡、相比RS232 RS485和CAN總線,SPI傳輸距離短志笼;
2. 硬件結(jié)構(gòu)
SPI總線定義兩個(gè)及以上設(shè)備間的數(shù)據(jù)通信沿盅,提供時(shí)鐘的設(shè)備為主設(shè)備Master,接收時(shí)鐘的設(shè)備為從設(shè)備Slave纫溃;
信號(hào)定義如下:
SCK : Serial Clock 串行時(shí)鐘
MOSI : Master Output, Slave Input 主發(fā)從收信號(hào)
MISO : Master Input, Slave Output 主收從發(fā)信號(hào)
SS/CS : Slave Select 片選信號(hào)