書名: 零基礎(chǔ)學(xué)單片機(jī)C語言程序設(shè)計(jì)作者名: 趙建領(lǐng) 薛園園等編著本章字?jǐn)?shù): 3199字更新時間: 2018-12-31 21:41:24
1.1 單片機(jī)介紹
1946年,由美國賓夕法尼亞大學(xué)研制成功世界上第一臺電子數(shù)字計(jì)算機(jī)ENIAC。隨后,便引發(fā)了20世紀(jì)的電子工業(yè)革命。如今,計(jì)算機(jī)特別是單片微型計(jì)算機(jī)(簡稱單片機(jī))得到了迅猛發(fā)展。市場上的單片機(jī)種類繁多,為應(yīng)用設(shè)計(jì)者提供了多種選擇。
1.1.1 單片機(jī)簡介
單片機(jī)是將中央處理器(Central Processing Unit,CPU)、只讀存儲器(Read Only Memory,ROM)、隨機(jī)存取存儲器(Random Access Memory,RAM)、定時器/計(jì)數(shù)器以及I/O(Input/Output)接口等部件集成在一起的微芯片。單片機(jī)從產(chǎn)生至今,經(jīng)過30多年的發(fā)展,從4位單片機(jī)發(fā)展到8位、16位乃至32位單片機(jī),其性能越來越強(qiáng),價格越來越低。其中,應(yīng)用最為廣泛的便是51系列單片機(jī)。
51系列單片機(jī)是指由Intel公司發(fā)展起來的MCS-51系列以及和其具有兼容內(nèi)核的單片機(jī)。MCS-51系列單片機(jī)是最早、最基本的單片機(jī),功能也最簡單,包括8031、8051、8032、8052等。隨后,各大芯片公司均推出了51內(nèi)核的單片機(jī),和MCS-51系列單片機(jī)完全兼容,同時提高了性能并增加了更多功能。如Atmel公司的AT89C系列、AT89S系列和AT89LP系列,Philips公司的8XC552系列,Silicon Laboratories公司的C8051F系列等。
1.1.2 單片機(jī)的主要組成部分
單片機(jī)所特有的結(jié)構(gòu)和資源反映了單片機(jī)的性能,這些是單片機(jī)程序設(shè)計(jì)的基礎(chǔ)。下面首先介紹一下8051單片機(jī)基本結(jié)構(gòu)的主要組成部分。
1. 中央處理器
中央處理器(CPU)是整個單片機(jī)的核心部件。CPU主要由算術(shù)邏輯部件、控制器和專用寄存器3部分電路組成。它負(fù)責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入/輸出功能等操作。
2. 程序存儲器
程序存儲器(ROM)用于存放用戶程序、原始數(shù)據(jù)或表格等。8051單片機(jī)共有4096個8位ROM,有些增強(qiáng)型的單片機(jī)提供了更大的程序存儲器,有些甚至還采用的是Flash程序存儲器。
3. 數(shù)據(jù)存儲器
數(shù)據(jù)存儲器(RAM)可存放讀寫的數(shù)據(jù)、CPU運(yùn)算的中間結(jié)果或用戶定義的字型表等。8051單片機(jī)內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元。專用寄存器只能用于存放控制指令數(shù)據(jù),只能訪問而不能用于存放用戶數(shù)據(jù)。對于一些新推出的單片機(jī),其內(nèi)部RAM單元可能更多,例如AT89S52單片機(jī)內(nèi)部有256個RAM數(shù)據(jù)存儲單元。
4. 定時器/計(jì)數(shù)器
定時器/計(jì)數(shù)器用于單片機(jī)硬件的定時或者計(jì)數(shù)。一般包含兩個16位的可編程定時器/計(jì)數(shù)器,以實(shí)現(xiàn)定時或計(jì)數(shù)功能。它也可以產(chǎn)生中斷,從而在程序中控制程序轉(zhuǎn)向。部分新推出的單片機(jī)可能擁有更多的定時器/計(jì)數(shù)器。
5. 并行I/O口
單片機(jī)的并行I/O口主要用于和外部設(shè)備進(jìn)行并行的輸入和輸出通信,以便于處理外部的輸入和將運(yùn)算結(jié)果反饋到外部設(shè)備。
6. 全雙工串行口UART
全雙工串行通信口UART主要用于與其他設(shè)備間的串行數(shù)據(jù)傳送。一般均內(nèi)置一個全雙工串行通信口,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。部分新推出的單片機(jī)可能擁有更多的全雙工串行口。
7. 中斷系統(tǒng)
8051單片機(jī)具備較完善的中斷功能,包含兩個外部中斷、兩個定時器/計(jì)數(shù)器中斷和一個串行中斷。8051單片機(jī)的中斷系統(tǒng)具有兩級的優(yōu)先級別選擇。部分新推出的單片機(jī)可能擁有更多的中斷源。
8. 時鐘振蕩電路
時鐘振蕩電路主要用于為單片機(jī)提供CPU時鐘源。單片機(jī)可以采用內(nèi)部時鐘振蕩電路或者由外部提供時鐘源。其最大工作頻率根據(jù)單片機(jī)型號的不同而有所差別,例如AT89S52單片機(jī)的時鐘振蕩頻率為0~33MHz。
1.1.3 單片機(jī)引腳及功能
51系列單片機(jī)有各種封裝形式,這里以40引腳雙列直插DIP形式的封裝來進(jìn)行介紹,如圖1.1所示。其中正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用。

圖1-18051雙列直插式的引腳配置
有些新型的單片機(jī)在引腳數(shù)量以及功能上都略有區(qū)別,但都是基于51內(nèi)核。這里介紹的內(nèi)容同樣適用于新型的單片機(jī)。下面介紹51系列單片機(jī)的引腳功能,這些是學(xué)習(xí)單片機(jī)程序設(shè)計(jì)必須要了解和掌握的基礎(chǔ)知識。
? 電源引腳:主要負(fù)責(zé)單片機(jī)的供電,有兩根引腳。VCC(Pin40)為正電源端,接5.0V電壓;GND(Pin20)為接地端。
? 外接晶振或外部振蕩器引腳:主要負(fù)責(zé)為單片機(jī)的運(yùn)行提供時鐘振蕩器,主要有兩根引腳。其中,XTAL1(Pin19)為時鐘XTAL1腳,片內(nèi)振蕩電路的輸入端;XTAL2(Pin18)為時鐘XTAL2腳,片內(nèi)振蕩電路的輸出端。
8051單片機(jī)的時鐘振蕩器有兩種工作方式。一種是片內(nèi)時鐘振蕩方式,在18和19腳外接石英晶體和振蕩電容,振蕩電容的值一般取10~30pF。另外一種是外部時鐘方式,由外部直接提供時鐘源。
? P0口:即P0.0~P0.7(Pin39~Pin32),輸入輸出腳,可用于8位并行I/O口或分時復(fù)用為地址和數(shù)據(jù)總線。
P0定義為I/O口時,為準(zhǔn)雙向I/O口,需外接上拉電阻,在程序中向該端口寫入1后,成為高阻抗輸入口。P0口作為輸出口時,每個引腳可以負(fù)載8個TTL。在外擴(kuò)存儲器時,可定義為低8位地址/數(shù)據(jù)線。
? P1口:即P1.0~P1.7(Pin1~Pin8),輸入輸出腳,8位準(zhǔn)雙向并行I/O口。P1口內(nèi)部已經(jīng)具有上拉電阻,為8位準(zhǔn)雙向I/O口,能負(fù)載4個TTL;在Flash編程和校驗(yàn)時,定義為低8位地址線。
? P2口:即P2.0~P2.7(Pin21~Pin28),輸入輸出腳,8位準(zhǔn)雙向并行I/O口。P2口內(nèi)部已經(jīng)具有上拉電阻,為8位準(zhǔn)雙向I/O口,能負(fù)載4個TTL;當(dāng)訪問外部存儲器時,定義為高8位地址線。
? P3口:即P3.0~P3.7(Pin10~Pin17),輸入輸出腳,8位準(zhǔn)雙向并行I/O口。P3口內(nèi)部已經(jīng)具有上拉電阻,為8位準(zhǔn)雙向I/O口,能負(fù)載4個TTL。
P3口每個引腳都具有第二功能。引腳P3.0(RXD)和引腳P3.1(TXD)分別為串行數(shù)據(jù)的接收和發(fā)送端口,用于串行數(shù)據(jù)傳輸;引腳P3.2和引腳P3.3為外部中斷請求,分別用于I和
的中斷輸入;引腳P3.4(T0)和引腳P3.5(T1),分別為定時器/計(jì)數(shù)器T0和T1的外部計(jì)數(shù)輸入端;引腳
和引腳P3.7(RD)用于讀寫單片機(jī)片外RAM存儲器,分別是外部數(shù)據(jù)寫選通信號和讀選通信號。
? RST(Pin9):單片機(jī)內(nèi)部CPU的復(fù)位信號輸入端。在單片機(jī)的振蕩器啟動后,該引腳置兩個機(jī)器周期以上高電平,便可以實(shí)現(xiàn)復(fù)位。
? ALE/PROG(Pin30):地址鎖存使能端和編程脈沖輸入端。
當(dāng)訪問外部程序存儲器時,ALE引腳的負(fù)跳變將低8位地址打入鎖存;而非訪問內(nèi)部程序存儲器時,ALE引腳將有一個1/6振蕩頻率的正脈沖信號,該信號可以用于外部計(jì)數(shù)或時鐘信號。當(dāng)訪問外部數(shù)據(jù)存儲器(執(zhí)行MOVX類指令)時,ALE引腳會跳過一個脈沖。另外,對8EH單元的特殊功能寄存器的D0位置1,可禁止ALE輸出,只有在執(zhí)行MOVX或MOVC類指令時,ALE才被激活,仍輸出鎖存有效。在執(zhí)行片外程序代碼時,該設(shè)定禁止ALE位無效。
? :訪問外部程序存儲器的讀選通信號。
當(dāng)單片機(jī)訪問外部程序存儲器,讀取指令碼時,每個機(jī)器周期產(chǎn)生2次有效信號,即此腳輸出2個負(fù)脈沖選通信號;在執(zhí)行片內(nèi)程序存儲器以及讀寫外部數(shù)據(jù)時,不產(chǎn)生脈沖信號。
? :
為訪問內(nèi)部或外部程序存儲器選擇信號。
當(dāng)8051 CPU訪問外部程序存儲器時,則EA必須保持低電平;當(dāng)EA保持高電平時,則8051 CPU先從片內(nèi)0000H單元開始,執(zhí)行內(nèi)部程序存儲器程序;如果外部還有擴(kuò)展程序存儲器,則8051 CPU在執(zhí)行完內(nèi)部程序存儲器程序后,自動轉(zhuǎn)向執(zhí)行外部程序存儲器中的程序。
1.1.4 單片機(jī)的應(yīng)用領(lǐng)域
單片機(jī)以其高性價比、高速度、小體積、可重復(fù)編程和方便功能擴(kuò)展等優(yōu)點(diǎn),而得到廣泛的應(yīng)用。特別是51系列單片機(jī)更是達(dá)到百花齊放、百家爭鳴的程度。單片機(jī)主要應(yīng)用于如下幾個領(lǐng)域。
? 家電產(chǎn)品。例如在電視、空調(diào)、冰箱、洗衣機(jī)、家用防盜報警器等產(chǎn)品中實(shí)現(xiàn)智能控制。
? 智能玩具。由于單片機(jī)的價格低廉、功能強(qiáng)大,被廣泛應(yīng)用于智能型玩具的控制,例如發(fā)聲玩具、玩具機(jī)器人、遙控電動車等。
? 機(jī)電一體化設(shè)備。機(jī)電一體化設(shè)備是指將機(jī)械技術(shù)、微電子技術(shù)和計(jì)算機(jī)技術(shù)結(jié)合在一起,從而實(shí)現(xiàn)人性化智能控制的設(shè)備。單片機(jī)作為機(jī)電一體化設(shè)備的控制器,可以簡化機(jī)械產(chǎn)品的結(jié)構(gòu)設(shè)計(jì),并擴(kuò)展其功能。
? 計(jì)算機(jī)控制及通信。由于單片機(jī)均集成有串行通信接口,計(jì)算機(jī)可以通過該接口和單片機(jī)進(jìn)行通信,實(shí)現(xiàn)計(jì)算機(jī)的程序控制和數(shù)據(jù)傳輸?shù)取?/p>
? 智能測量設(shè)備。使用單片機(jī)強(qiáng)大的可編程和可擴(kuò)展能力,可以設(shè)計(jì)新一代的智能化儀表,如各種數(shù)字萬用表、示波器等。
? 自動測控系統(tǒng)。在自動控制和測量領(lǐng)域,可以采用單片機(jī)設(shè)計(jì)各種數(shù)據(jù)采集系統(tǒng)、自適應(yīng)控制系統(tǒng)等。例如溫度的自動控制、壓力的自動感應(yīng)、電壓電流的數(shù)據(jù)采集和分析等。
總之,單片機(jī)因其豐富的功能和強(qiáng)大的可擴(kuò)展性,可適用于一切需要智能控制的場合。
- Python數(shù)據(jù)分析入門與實(shí)戰(zhàn)
- Machine Learning with R Cookbook(Second Edition)
- Learning Salesforce Einstein
- SQL Server 2016數(shù)據(jù)庫應(yīng)用與開發(fā)
- Spring Boot Cookbook
- Working with Odoo
- Java網(wǎng)絡(luò)編程核心技術(shù)詳解(視頻微課版)
- Django實(shí)戰(zhàn):Python Web典型模塊與項(xiàng)目開發(fā)
- 工業(yè)機(jī)器人離線編程
- Django Design Patterns and Best Practices
- 大數(shù)據(jù)時代的企業(yè)升級之道(全3冊)
- Microsoft Exchange Server 2016 PowerShell Cookbook(Fourth Edition)
- Java從入門到精通(視頻實(shí)戰(zhàn)版)
- HTML5與CSS3權(quán)威指南
- 零基礎(chǔ)學(xué)SQL(升級版)