官术网_书友最值得收藏!

第1篇 基礎認識篇——原來我是個菜鳥

對于我們不認識或認識不深的內容,我們要有自知自明:“原來我是個菜鳥!”。雖然我們目前是菜鳥,但我們不會是永遠的菜鳥。

本篇包含6章,從認識什么是單片機到具體的單片機,從對單片機產生疑惑到解開該疑惑,不斷深入地講述單片機,帶領菜鳥一步一步地走入單片機這個領域。本篇的具體內容為:第1章到第6章分別講述單片機、單片機開發工具,AVR的I/O、USART(串口)、ADC(模數轉換器)和EEPROM;每章都給出了相應實驗的代碼及仿真結果。這6章都是使用仿真軟件來完成實驗的,從中也可以增加讀者對相關軟件的熟悉程度。

第1章 初識單片機——與單片機第一次接觸

當你第一次接觸單片機時,看著那些小的芯片,一定很好奇它們是如何工作的?它們是如何將我們設計好的程序燒錄進去?又是如何運行起來的?諸如此類的問題縈繞在你的腦海中,你一定渴望得到答案。下面就為此類問題給出答案,揭開屬于我們菜鳥自己的篇章。

1.1 什么是單片機

什么是單片機?單片機的全稱是單片微型計算機,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示它。單片機又稱為單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統集成到一個芯片上,相當于一個微型的計算機。和計算機相比,單片機只缺少了I/O的對應設備。概括來講,一片單片機就構成了一臺計算機。單片機的體積小、質量輕、價格便宜,為學習、應用和開發提供了便利條件。因此,學習使用單片機是了解計算機原理與結構的最佳選擇。

1.1.1 單片機發展的4個階段

單片機最早被用在工業控制領域。當今,單片機技術已成為計算機技術領域中的一個非常重要的分支。在不斷地發展與完善中,單片機技術已經建立起屬于自己的技術特征和應用環境等。按照單片機的生產技術水平,單片機的發展可分為以下4個過程。

1.4位單片機階段

1971年,美國得州儀器公司首次推出4位單片機TMS1000后,各個計算機生產公司也迅速推出了屬于自己的4位單片機。例如,大家熟知的美國國家半導體公司(National Semiconductor,NS)的COP4XX系列就是4位單片機系列,日本電氣公司(Nippon Electric Company,NEC)的μPD75 XX系列也是4位單片機系列。4位單片機的控制能力比較弱,多用于家用電器、電子玩具等控制器。

2.8位單片機階段

美國的Inter公司在1976年9月推出了MCS-48系列的8位單片機,將單片機技術引入了8位單片機時代。隨著半導體集成工藝的提高,各個MCU生產商紛紛推出了一些高性能的8位單片機。該類單片機集成了8位CPU、并行I/O、全雙工串口、8位定時/計數器、A/D轉換器,尋址范圍超過4KB,并且具有更大的片內RAM和ROM等。其實,各個生產商生產的MCU都大同小異,只是有的MCU增加了D/A轉換器、EEPROM及DMA傳輸功能等而已。8位單片機的控制能力較為出色,因此在各個行業中得到了廣泛的應用。

3.16位單片機

16位單片機是在1983年以后發展起來的。顧名思義,此類單片機的CPU是16位的,其運算速度普遍高于8位單片機,并且外設接口更加豐富,支持高級語言等,多用于智能儀表等復雜的應用控制領域。典型的產品有美國得州儀器公司推出的MSP430系列單片機,它是一種16位超低功耗、具有精簡指令集(RISC)的混合信號處理器(Mixed Signal Processor),稱為混合信號處理器。

4.32位單片機

隨著電子系統的迅速發展,32位單片機的應用前景廣泛。32位單片機的字長為32位,為單片機中的頂端產品,具有極高的運算速度,其中部分產品還集成了內存管理單元(MMU),多用于嵌入式系統。美國微芯科技公司的PIC32系列,美國愛特梅爾半導體公司(ATMEL)的AVR32系列等都屬于該類。

1.1.2 8位單片機的特點

從市場的需要情況看,當前8位單片機的市場依然最大。因此,8位單片機也有了新發展,主要體現在以下幾個方面。

1.CPU功能增強

CPU的功能增強體現在CPU的運算速度和運算精度上。一般來說,舊的megaAVR系列單片機的最高頻率為16MHz,新的兼容型單片機的最高頻率達到20MHz,而ATMEL的Xmage系列單片機的最高頻率可達到32MHz。

2.內部資源增加

在單片機硬件系統的設計中,都會考慮是否將資源集成到單片機內部,進而省去外部硬件開銷,有效地減小產品的體積,提高產品的可靠性。現在已從集成一些總線的資源,如I2 C、SPI、CAN發展到集成一些特定功能的資源,如LCD驅動、電能計量等。

3.低電壓、低功耗

當今社會一直都在提倡環保節能、降低能耗,在工業應用場合更注重這一方面。這對單片機系統的體積和功耗大小的要求是比較高的。單片機廠商改善工藝,紛紛推出了低功耗系列,其可用的最小電壓在不斷下降,并且提供了更多的模式來應對能耗的需求。

1.2 了解單片機

一般我們接觸到的都是8位單片機,而且它是市面上最為常見的。下面介紹幾種不同的8位單片機,并且給出一個例子來加以說明。

1.2.1 8051單片機

說起單片機,大家第一時間就會想到51單片機,大部分菜鳥起初接觸到或了解到的一定是該類單片機,而805 1單片機又是其中的經典,學電子的朋友對此應該不陌生,很多書籍及教科書都以它為模板來講述單片機這門課程。在805 1單片機中,又以Inter公司的MCS-5 1系列單片機較為有名。其以穩定的性能、高性價比及良好的兼容性,在各個領域得到了最為廣泛的應用。

805 1單片機由于生產廠商和型號的不同,在片內存儲器容量、外圍功能模塊、最高時鐘頻率及處理器速度等方面有很大的不同,但其內部結構基本相同,均包括算術邏輯單元ALU、片內RAM、片內ROM、I/O端口、定時系統、中斷系統等基本的功能單元。如圖1.1所示為805 1單片機的內部結構。

圖1.1 805 1 單片機的內部結構

1.算術邏輯單元ALU

805 1單片機內部包含一個8位的算術邏輯單元ALU,用于處理各種算術運算和邏輯運算,并且能夠完成數據傳送、移位、判斷和程序轉移等操作。

2.片內RAM/ROM

805 1單片機提供了128B的片內RAM和至少4KB的片內ROM。RAM的地址空間為00H~7FH,其中00H~1 FH為4組通用工作存儲器區,每個區包含8個編號為R0~R7的8位寄存器。此外,1 FH~2FH為位尋址空間。而ROM用于保存用戶的程序指令。

3.I/O端口

805 1單片機共有32個I/O,即4組并行8位接口,分別為P0、P1、P2和P3。

4.定時系統

805 1單片機包含兩個16位的定時/計數器,支持4種工作方式。

5.中斷系統

805 1單片機的中斷系統包含5個中斷源,兩級中斷優先級,其中每個中斷源的優先級是可編程的。

1.2.2 FREESCALE(飛思卡爾)單片機

接下來了解另一種單片機——FREESCALE(飛思卡爾)單片機。

飛思卡爾半導體已經成為全球最大的半導體公司之一,其主要的產品有8位微控制器、16位微控制器、32位微控制器與處理器、PowerArchitectureTM/PowerQUICCTM、高性能網絡處理器、高性能多媒體處理器、高性能工業控制處理器、模擬和混合信號、ASIC、手機平臺、CodeWarriorTM開發工具、數字信號處理器與控制器、電源管理、RF射頻功率放大器、高性能線性功率放大器GPA、音視頻家電射頻多媒體處理器、傳感器。在這里了解一下其生產的8位微控制器(以MC9S08AC系列為例進行介紹)。

MC9S08AC系列微控制器采用的是8位HCS08中央處理器,其CPU頻率可達到40MHz,內部總線頻率可達到20MHz,并且使用的是HC08的指令集。如圖1.2所示是MC9S08AC系列MCU的模塊結構圖。

從圖1.2可以看出,與51單片機相比,飛思卡爾單片機提供的外設是相當豐富的,除了一般的定時器、A/D轉換器等外,還增加了串行通信接口模塊、8位鍵盤中斷模塊及循環冗余校驗模塊。另外,其Flash與RAM更大了。這里具體介紹以下幾個模塊。

1.內部時鐘發生器

內部時鐘發生器提供多種時鐘源,這使得用戶能夠非常靈活地根據成本、精確度、電流消耗及性能要求進行選擇。該發生器包含四個功能子模塊,分別是振蕩器子模塊、內部參考發生器、鎖相環和時鐘功能選擇子模塊。在實際開發中,不同產品對時鐘的要求是不同的,不一定時鐘高的就是好的。

2.IIC模塊

IIC模塊提供了接口給不同器件間通信的方法。該模塊接口可以在最大的總線負載和時序下,支持最高100kbps的傳輸速率。器件也可以在較低總線負載下以更高的波特率(最高時鐘/20)在該模塊接口上運行。IIC模塊的最大通信長度和可以連接的器件數量受400pF的最高總線電容限制。IIC模塊的實際運用非常廣泛,在后面的章節有詳細的講解。

3.串行通信接口模塊

串行通信接口(SCI)也被稱為通用異步收發器(UART)。該接口是全雙工類型的,其發送器和接收器具有各自的雙緩沖,并可分別使能。它可根據通信要求設定所需的波特率。

圖1.2 MC9S08AC系列MCU的模塊結構圖

4.串行外設接口

串行外設接口(SPI)也是一個運用非常廣泛的接口。它支持主或從工作方式、全雙工或半雙工、發送比特率可編程、MSB優先移位或LSB優先移位等。

5.循環冗余校驗模塊

循環冗余檢驗(CRC)模塊是采用16位移位寄存器的硬件CRC發生器電路,其誤碼檢測功能可以檢測所有單、雙數誤碼及大多數多位誤碼,而且還能編程初始速率和進行高速的CRC計算。

1.2.3 其他單片機

了解了以上兩種單片機后,再來看看市場上還有哪些主流的單片機——AVR單片機、PIC單片機、STM單片機、MSP430單片機等。AVR單片機將是1.3節介紹的重點。每個單片機廠商生產的單片機都有屬于自己的CPU內核,架構不同,寄存器也都不相同,而且每個廠商提供的開發環境也不一樣,很少有一個開發環境兼容所有單片機類型。但是總的來說,單片機大體還是一樣的,因此只要針對一種比較典型的單片機進行深入學習、實踐即可,不需要對每一種單片機都進行從頭到尾的學習及實踐。對于不同類型的單片機,主要需要花時間學習的部分在于開發環境的熟悉與運用,以及和該單片機相關的寄存器的設置與運用。

1.3 接觸AVR單片機

本節重點介紹ATMEL公司生產的AVR單片機,該類單片機是當前市場上比較具有代表性的一款單片機。

1.3.1 AVR概述

1997年,ATMEL公司的挪威設計中心的A先生和V先生出于市場需求的考慮推出了全新配置的8位精減指令集微處理器(RISC-Reduced Instrction Sot CPU),并起名為AVR。

AVR是一種指令內核的統稱,其內部又分為ATtiny、AT90S和ATmega三大系列,分別對應AVR的低、中、高檔產品。ATtiny系列中常用的有ATtiny10、ATtiny1634、ATtiny25等產品。AT90S系列中常用的有AT90S2313、AT90S8535、AT90S8515等,其中AT90S2313的引腳兼容AT89C2051,而AT90S8515的引腳則兼容51單片機,因此它在設計中很容易替代51單片機。但是到目前,AT90S系列的絕大部分已停產。當某一個AT90S系列的產品停產后,ATMEL公司通常會在ATmega或ATtiny系列中推出一個新的替代產品,在引腳兼容的基礎上,該替代產品的內部資源和性能也得到了加強。例如,ATtiny2313作為AT90S2313的替代產品,在AT90S2313的基礎上增加了片內標定振蕩器、增強型上電復位、可編程的掉電檢測等多種功能。類似的,ATmega8515和ATmega8535分別作為AT90S8515和AT90S8535的替代產品繼承了很多Mega系列的特性。

ATmega48/88/168、ATmega8、ATmega16/32、ATmega64和ATmega128是ATmega系列的主流產品。值得關注的是ATmega8這一款單片機,它以豐富的片內資源、低廉的價格深受廣大設計人員的喜愛,并在國內得到了較好的推廣。然而ATmega48/88/168作為ATmega8的兼容產品,為用戶提供了更多功能的選擇。ATmega16也是一個用量較多的器件,它的引腳兼容AT90S8535,因此可以在某些應用場合用于替代AT90S8535。與ATmega8相比,ATmega16除了I/O引腳多之外,內部還集成了容量是ATmega8的兩倍(16K)的Flash程序存儲器。

隨著國內AVR用戶的增多,ATMEL公司也開始了主流器件數據手冊的中文翻譯工作。從互聯網上可以找到ATtiny25、ATmega48/88/168、ATmega8、ATmega16/32、ATmega64等器件的官方翻譯的中文數據手冊,這給人們學習和使用AVR器件提供了很大的幫助。

目前,AVR又推出了功能更強大的Xmega系列的單片機,它和上述AVR單片機具有同一種內核,只是功能及資源更加強大了。

1.3.2 AVR的特性

前面介紹了AVR的起源、AVR系列及主流產品,相信讀者對AVR單片機的總體有了一個大致的了解。接下來介紹AVR單片機的特性,并以ATmega系列中的ATmega88V/168V為例(其中以ATmega88V為主)進行介紹。

1.CPU

ATmega88V是一個具有高性能、低功耗的8位AVR微處理器,采用的是先進的RISC結構,擁有131條指令,并且大多數指令的執行時間為單個時鐘周期。當工作時鐘為16MHz時,它的指令處理速度高達16 MIPS(Million Instructions Per Second),且擁有32 ×8通用工作寄存器及只需兩個時鐘周期的硬件乘法器,使得運算更加快速。

2.存儲器

ATmega88V擁有系統內可編程8KB的Flash空間,擦寫壽命為10 000次,并且具有獨立鎖定位的可選Boot代碼區,可實現系統內編程及真正的同時讀/寫操作。除了Flash位外,它還具有5 12B的EEPROM及1 KB的片內SRAM。

3.特殊的微控制器特點

ATmega88V可以設置為上電復位及可編程的掉電檢測,并可設置幾個參考值來應對不同工作電壓下的掉電檢測。它擁有經過標定的片內RC振蕩器、片內/外中斷源及5種不同的休眠模式(空閑模式、ADC噪聲抑制模式、省電模式、掉電模式和Standby模式)。當產品要求在極低功耗下運行時,ATmega88V提供了以下工作模式來應對該要求:在正常模式下,當工作電壓為1.8V、頻率為1 MHz時,電流只有300μA;在掉電模式下,當電壓為1.8V時,電流僅有0.5 μA。

4.電壓范圍

ATmega88V可以工作在1.8~5.5V之間,其電壓范圍大,有利于硬件電路的設計。

1.3.3 AVR的外設

如圖1.3所示為AVR的結構方框圖,從圖中可以看出ATmega88V包括哪些外設資源。以下是對其中一些外設的簡單概述。

1.定時器/計數器

ATmega88V具有兩個有獨立預分頻器和比較器功能的8位定時器/計數器和一個有預分頻器、比較功能和捕捉功能的16位定時器/計數器,并且支持PWM功能,可以實現可變PWM;它擁有獨立的中斷源,即比較和溢出兩種中斷源。有的定時器/計數器還可以實現自動加載。

2.A/D轉換器

A/D轉換器具有10位精度,最高分辨率時的采樣率高達15 kSPS,且有6路復用的單端輸入通道。它有連續轉換和單次轉換兩種轉換模式。

圖1.3 AVR的結構方框圖

3.USART模塊

USART是一個高度靈活的串行通信設備,可以實現全雙工操作,擁有高精度的波特率發生器。它有3個獨立的中斷:發送結束中斷、發送數據寄存器空中斷及接收結束中斷,更方便運用。

4.串行外設接口(SPI)

SPI允許ATmega88V和其他AVR或其他類型的器件進行高速的同步數據傳輸。它可選擇工作在主機模式還是從機模式,可實現全雙工、3線同步數據傳輸。

5.兩線串行接口(I2 C)

I2 C支持主機/從機操作模式。它擁有7位地址空間,其主機模式可支持最大128個從機地址,且數據傳輸率高達400kHz。

6.看門狗定時器(WDT)

WDT由獨立的128kHz片內振蕩器驅動,可以觸發復位芯片的操作,用來防止程序進入死區。它還可以產生不同時間間隔的中斷。

本節大體講述了AVR的一些外設,關于其具體的設置與運用,將在往后的章節中一一與讀者分享。

1.4 小結

本章對單片機的發展及其發展做了一些闡述,并介紹了幾種市場主流的單片機類型。在介紹主流單片機時,著重對其結構給出了相應的圖片,以便讀者更好地了解所述類型的結構。1.3節介紹了本書中推崇的單片機類型——AVR,以讓讀者對AVR有一定的了解。

主站蜘蛛池模板: 肇东市| 棋牌| 平度市| 澜沧| 威远县| 丰城市| 雅安市| 宁河县| 舞阳县| 梧州市| 湟源县| 曲水县| 马边| 神池县| 四平市| 修水县| 古田县| 博白县| 新巴尔虎左旗| 牟定县| 汨罗市| 益阳市| 延寿县| 土默特右旗| 鹤壁市| 上饶县| 萝北县| 穆棱市| 洪洞县| 桐梓县| 大新县| 梅州市| 巢湖市| 沽源县| 兰溪市| 阳城县| 莒南县| 朝阳市| 拜泉县| 马边| 镇赉县|