第1課:單片機(jī)簡(jiǎn)敘
1.單片機(jī)可以做什么?
目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒(méi)有單片機(jī)的蹤跡。小到電話,玩具,手機(jī),各類刷卡機(jī),電腦鍵盤,彩電,冰箱,空調(diào),電磁爐,大到汽車,工業(yè)自動(dòng)控制,機(jī)器人,導(dǎo)彈導(dǎo)航裝置,甚至是美國(guó)的火星車,這些設(shè)備里面都含有一個(gè)或者多個(gè)單片機(jī) 。單片機(jī)的數(shù)量不僅遠(yuǎn)超過(guò)PC機(jī),甚至比人類的數(shù)量還要多。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一大批軟硬件工程師。
2. 學(xué)習(xí)單片機(jī)需要哪些基本條件?
模擬電路,數(shù)字電路基礎(chǔ),對(duì)C語(yǔ)言或匯編語(yǔ)言有一定的了解。當(dāng)然,這些也可以在學(xué)習(xí)過(guò)程中掌握。對(duì)此這套教程均有講解.
硬件條件的話:電腦一臺(tái),實(shí)驗(yàn)開發(fā)平臺(tái)一套。
3、單片機(jī)的結(jié)構(gòu)
一臺(tái)能夠工作的計(jì)算機(jī)要有這樣幾個(gè)部份構(gòu)成:CPU(進(jìn)行運(yùn)算、控制)、RAM(數(shù)據(jù)存儲(chǔ)-內(nèi)存)、ROM(程序存儲(chǔ))、輸入/輸出設(shè)備(例如:串行口、并行輸出口等)。在個(gè)人計(jì)算機(jī)上這些部份被分成若干塊芯片,安裝一個(gè)稱之為主板的印刷線路板上。而在單片機(jī)中,這些部份,全部被做到一塊集成電路芯片中了,所以就稱為單片機(jī)。
單片機(jī)是一種控制芯片,一個(gè)微型的計(jì)算機(jī),而加上晶振,存儲(chǔ)器,地址鎖存器,邏輯門,七段譯碼器(顯示器),按鈕(類似鍵盤),擴(kuò)展芯片,接口等那是單片機(jī)系統(tǒng)。
天!PC中的CPU一塊就要賣幾千塊錢,這么多東西做在一起,還不得買個(gè)天價(jià)!再說(shuō)這塊芯片也得非常大了。
不,價(jià)格并不高,從1元人民幣到幾十元人民幣,體積也不大,一般用40腳封裝,當(dāng)然功能多一些單片機(jī)也有引腳比較多的,如68引腳,功能少的只有10多個(gè)或20多個(gè)引腳,有的甚至只8只引腳。
為什么會(huì)這樣呢?
功能有強(qiáng)弱,打個(gè)比方,市場(chǎng)上面有的組合音響一套才賣幾百塊錢,可是有的一臺(tái)功放機(jī)就要賣好幾千。另外這種芯片的生產(chǎn)量很大,技術(shù)也很成熟,51系列的單片機(jī)已經(jīng)做了十幾年,所以價(jià)格就低了。
既然如此,單片機(jī)的功能肯定不強(qiáng),干嗎要學(xué)它呢?話不能這樣說(shuō),實(shí)際工作中并不是任何需要計(jì)算機(jī)的場(chǎng)合都要求計(jì)算機(jī)有很高的性能,一個(gè)控制電冰箱溫度的計(jì)算機(jī)難道要?jiǎng)佑靡慌_(tái)臺(tái)式電腦不成?應(yīng)用的關(guān)鍵是看是否夠用,是否有很好的性能價(jià)格比。所以8051出來(lái)十多年,依然沒(méi)有被淘汰,還在不斷的發(fā)展中。
4、MCS51單片機(jī)和8051、8031、89C51等的關(guān)系
我們平常老是講8051,又有什么8031,現(xiàn)在又有89C51,89s51它們之間究竟是什么關(guān)系?
MCS51是指由美國(guó)INTEL公司(對(duì)了,就是大名鼎鼎的INTEL)生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來(lái)的,所以人們習(xí)慣于用8051來(lái)稱呼MCS51系列單片機(jī),而8031是前些年在我國(guó)最流行的單片機(jī),所以很多場(chǎng)合會(huì)看到8031的名稱。
INTEL公司將MCS51的核心技術(shù)授權(quán)(賣)給了很多其它公司,所以有很多公司在做以8051為核心的單片機(jī),當(dāng)然,功能或多或少有些改變,以滿足不同的需求,其中89C51就是這幾年在我國(guó)非常流行的單片機(jī),以后我們將用89C51單片機(jī)來(lái)完成一系列的教學(xué)實(shí)驗(yàn)。如有錯(cuò)誤請(qǐng)?jiān)诒疚脑u(píng)論中批評(píng)指正.
5.該學(xué)匯編還是學(xué)C語(yǔ)言?
掌握用C語(yǔ)言單片機(jī)編程很重要,畢竟C容易寫,可讀性強(qiáng),可移植性強(qiáng)。但是光會(huì)C語(yǔ)言也還是不夠的,你還得了解匯編,實(shí)際上不是了解匯編指令,而是為了了解單片機(jī)的體系結(jié)構(gòu)。可以肯定的說(shuō),最好的C語(yǔ)言單片機(jī)工程師都是從匯編走出來(lái)的編程者,所以我以為學(xué)習(xí)單片機(jī),先學(xué)點(diǎn)匯編是必要的,但在以后的開發(fā)中主要用C語(yǔ)言,所以本系列教程將兼顧匯編和c兩種語(yǔ)言.
第2課:?jiǎn)纹瑱C(jī)引腳介紹
單片機(jī)的40個(gè)引腳大致可分為4類:電源、時(shí)鐘、控制和I/O引腳。
⒈ 電源:
⑴ VCC - 芯片電源,接+5V;
⑵ VSS - 接地端;
⒉ 時(shí)鐘:
XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。
⒊ 控制線:
控制線共有4根
⑴ ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖
① ALE功能:用來(lái)鎖存P0口送出的低8位地址
② PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。
⑵ PSEN:外ROM讀選通信號(hào)。
⑶ RST/VPD:復(fù)位/備用電源。
① RST(Reset)功能:復(fù)位信號(hào)輸入端。
② VPD功能:在Vcc掉電情況下,接備用電源。
⑷ EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。
① EA功能:內(nèi)外ROM選擇端。
② Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。
⒋ I/O線
80C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。P3口還具有第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線)。
拿到一塊芯片,想要使用它,首先必須要知道怎樣連線,我們用的一塊稱之為89C51的芯片,下面我們就看一下如何給它連線。
1、 電源:這當(dāng)然是必不可少的了。單片機(jī)使用的是5V電源,其中正極接40管腳,負(fù)極(地)接20管腳。
2、 振蒎電路:?jiǎn)纹瑱C(jī)是一種時(shí)序電路,必須供給脈沖信號(hào)才能正常工作,在單片機(jī)內(nèi)部已集成了振蕩器,使用晶體振蕩器,接18、19腳。只要買來(lái)晶體震蕩器,電容,連上就能了,按圖1接上即可。
3、 復(fù)位管腳:按圖1中畫法連好,至于復(fù)位是何含義及為何需要復(fù)要復(fù)位,在單片機(jī)功能中介紹。
4、 EA管腳:EA管腳接到正電源端。至此,一個(gè)單片機(jī)就接好,通上電,單片機(jī)就開始工作了。
我們的第一個(gè)任務(wù)是要用單片機(jī)點(diǎn)亮一只發(fā)光二極管LED,顯然,這個(gè)LED必須要和單片機(jī)的某個(gè)管腳相連,不然單片機(jī)就沒(méi)法控制它了,那么和哪個(gè)管腳相連呢?單片機(jī)上除了剛才用掉的5個(gè)管腳,還有35個(gè),我們將這個(gè)LED和1腳相連。(見圖1,其中R1是限流電阻)
按照這個(gè)圖的接法,當(dāng)1腳是高電平時(shí),LED不亮,只有1腳是低電平時(shí),LED才發(fā)亮。因此要1腳我們要能夠控制,也就是說(shuō),我們要能夠讓1管腳按要求變?yōu)楦呋虻碗娖?。即然我們要控?腳,就得給它起個(gè)名字,總不能就叫它一腳吧?叫它什么名字呢?設(shè)計(jì)51芯片的INTEL公司已經(jīng)起好了,就叫它P1.0,這是規(guī)定,不能由我們來(lái)更改。
圖1
名字有了,我們又怎樣讓它變'高'或變'低'呢?叫人做事,說(shuō)一聲就能,這叫發(fā)布命令,要計(jì)算機(jī)做事,也得要向計(jì)算機(jī)發(fā)命令,計(jì)算機(jī)能聽得懂的命令稱之為計(jì)算機(jī)的指令。讓一個(gè)管腳輸出高電平的指令是SETB,讓一個(gè)管腳輸出低電平的指令是CLR。因此,我們要P1.0輸出高電平,只要寫SETB P1.0,要P1.0輸出低電平,只要寫 CLR P1.0就能了。
現(xiàn)在我們已經(jīng)有辦法讓計(jì)算機(jī)去將P10輸出高或低電平了,但是我們?cè)鯓硬拍苡?jì)算機(jī)執(zhí)行這條指令呢?總不能也對(duì)計(jì)算機(jī)也說(shuō)一聲了事吧。要解決這個(gè)問(wèn)題,還得有幾步要走。
第一,計(jì)算機(jī)看不懂SETB CLR之類的指令,我們得把指令翻譯成計(jì)算機(jī)能懂的方式,再讓計(jì)算機(jī)去讀。計(jì)算機(jī)能懂什么呢?它只懂一樣?xùn)|西——數(shù)字。因此我們得把SETB P1.0變?yōu)椋―2H,90H ),把CLR P1.0變?yōu)?(C2H,90H ),至于為什么是這兩個(gè)數(shù)字,這也是由51芯片的設(shè)計(jì)者--INTEL規(guī)定的,我們不去研究。
第二步,在得到這兩個(gè)數(shù)字后,怎樣讓這兩個(gè)數(shù)字進(jìn)入單片機(jī)的內(nèi)部呢?這要借助于一個(gè)硬件工具"編程器"。如果你還不知道是什么是編程器,我來(lái)介紹一下,就是把你在電腦上寫出來(lái)來(lái)的代碼用匯編器等編譯器生成的一個(gè)目標(biāo)燒寫到單片機(jī)的eprom里面去的工具,80c51這種類型的單片機(jī)編程是一件很麻煩的事情,必要要先裝到編程器上編程后才能在設(shè)備上使用,而目前最新的AT89s51或者STC89C51單片機(jī)能支持在線編程(isp)功能,不用拔出來(lái)利用簡(jiǎn)單的電路就可以實(shí)現(xiàn)把代碼寫入單片機(jī)內(nèi)部。
下面我們來(lái)實(shí)戰(zhàn)一下:下圖(圖2)所示的軟件名字叫keil —>點(diǎn)此下載,是用來(lái)編寫程序代碼并生成一個(gè)可以寫入到單片機(jī)芯片的Hex文件(我們?nèi)艘刂茊纹瑱C(jī)只能用匯編語(yǔ)言或者C語(yǔ)言而單片機(jī)不認(rèn)識(shí)怎么辦呢?所以keil這個(gè)軟件就把程序語(yǔ)言轉(zhuǎn)換成了一種特定格式的Hex文件,只要把這個(gè)文件下載到單片機(jī)芯片單片機(jī)就會(huì)按我們程序的思路來(lái)運(yùn)行)
圖2 (keil編程軟件)
圖3(下載軟件)
好了…… ,我們把 SETB P1.0 這條匯編語(yǔ)句用keil軟件編譯生成Hex文件,然后用圖3所示的軟件和圖1所示的硬件(用串口連接電腦)下載到我們已經(jīng)做好的電路板上的單片機(jī)芯片里去(圖省事的話建議直接買個(gè)開發(fā)板),然后接通電源……什么?燈不亮?這就對(duì)了,因?yàn)槲覀儗戇M(jìn)去的指令就是讓P10輸出高電平,燈當(dāng)然不亮,要是亮就錯(cuò)了。所以要將keil編緝區(qū)的內(nèi)容改為CLR P1.0,重新編譯生成Hex文件,重新下載,接電,好,燈亮了。因?yàn)槲覀儗懭氲腍ex就是讓P10輸出低電平的指令。這樣我們看到,硬件電路的連線沒(méi)有做任何改變,只要改變寫入單片機(jī)中的內(nèi)容,就能改變電路的輸出效果。
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44491瀏覽量
632010 -
機(jī)器人
+關(guān)注
關(guān)注
210文章
28108瀏覽量
205860 -
引腳
+關(guān)注
關(guān)注
16文章
1172瀏覽量
50157
原文標(biāo)題:?jiǎn)纹瑱C(jī)的引腳,你都清楚嗎?
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論