- ATmega16單片機C語言程序設計經典實例
- 陳忠平編著
- 5670字
- 2018-12-29 12:52:00
任務1 認識單片機
微型化是計算機的主要發展方向之一。在微型計算機中,單片微型計算機(簡稱單片機)是其重要的組成部分。單片機依靠一定的硬件基礎,根據特定環境,完成特定的需求。目前,單片機已經滲透到日常生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。例如,導彈的導航裝置,飛機上各種儀器和儀表的控制,計算機的網絡通信與數據傳輸,工業自動化過程的實時監控與數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,攝像機、全自動洗衣機的控制,以及無線遙控玩具、電子寵物等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫療器械了。所以,認識單片機,學習單片機,掌握單片機的開發與應用,是電子信息、計算機應用、通信工程、自動控制等專業領域工程技術人員必備的技能。
1.單片機的定義
單片機是單片微型計算機(Single Chip Microcomputer,SCM)的簡稱,它是在一塊芯片上集成了中央處理部件(Central Processing Unit,CPU)、數據存儲器(Random Access Memory,RAM)、程序存儲器(Read Only Memory,ROM)定時器/計數器和多種輸入/輸出(I/O)接口等功能部件,片內各功能部件通過內部總線相互連接起來的微型計算機。
單片機特別適合于控制領域,因此國外大多數廠商、學者普遍將其稱為微處理器(Micro Controller),縮寫為MCU(Micro Controller Unit),國內習慣性將其稱為單片機。
2.單片機的特點
?性價比高;
?控制功能強;
?高集成度、高可靠性、體積小;
?低電壓、低功耗;
?易擴展。
3.單片機的應用領域
單片機已經滲透到人們生活的各個領域,在工業控制、智能儀表、家用電器、軍事裝置等方面都得到了極為廣泛的應用。
【在智能儀器儀表中的應用】用單片機制作的儀器儀表,廣泛應用于實驗室、交通運輸工具、計量等領域。能使儀器儀表數字化、智能化、多功能化,提高測試的自動化程度和精度,簡化硬件結構,減少質量,縮小體積,便于攜帶和使用,同時降低成本,提高性能價格比。典型應用如數字式存儲示波器、數字式RLC測量儀、智能轉速表等。
【在工業控制方面的應用】在工業控制中,工作環境惡劣,各種干擾比較強,還需實時控制,這對控制設備的要求比較高。單片機由于集成度高、體積小、可靠性高、控制功能強,能對設備進行實時控制,所以被廣泛應用于工業過程控制中,如電鍍生產線、工業機器人、電動機控制、煉鋼、化工等領域。
【在軍事裝置中的應用】利用單片機的可靠性高,適用溫度范圍寬,能工作在各種惡劣環境等特點,將其應用在航天航空導航系統、電子干擾系統、宇宙飛船等尖端武器、導彈控制、智能武器裝置、魚雷制導控制等方面。
【在民用電子產品中的應用】在民用電子產品中,目前單片機廣泛應用于通信與各種家用電器,如手機、數碼相機、MP3播放機、智能空調等。
4.單片機的發展
自從1974年美國仙童(Fairchild)公司運用計算機技術生產了世界上第一塊單片機(F8)以來,在短短的數十年中,單片機的發展主要經歷了以下4個階段。
?初級階段(1974—1976年):此階段的單片機結構比較簡單,控制功能比較單一。例如,仙童公司的F8系列單片機,只包含了中央處理器CPU、64Kbit的RAM和兩個并行口,還需外接具有ROM、定時器/計數器、并行接口的芯片。
?低性能階段(1976—1978年):以Intel公司的MCS-48系列為代表,其特點是采用專門的結構設計,但內部資源不夠豐富。該系列的單片機片內集成了8位CPU、并行I/O端口、8位定時器/計數器、RAM、ROM等。無串行I/O口,中斷處理系統也比較簡單,片內RAM、ROM容量較小,且尋址范圍小于4KB(B為Byte,即字節)。
?高性能階段(1978—1983年):以Intel公司的MCS-51系列為代表,它完善了外部總線,豐富了內部資源,并確立了單片機的控制功能。采用16位的外部并行地址總線,能對外部64KB的程序存儲器和數據存儲器空間進行尋址;還有8位數據總線及相應的控制總線,形成完整的并行三總線結構。同時還提供了多機通信功能的串行I/O端口,具有多級中斷處理,16位的定時器/計數器,片內的RAM和ROM容量增大,尋址范圍可達64KB。有的單片機片內還帶有A/D轉換接口、DMA接口、PSW等功能模塊。
在MCS-51單片機指令系統中,增加了大量的功能指令,如在基本控制功能方面設置了大量的位操作指令,使它和片內的位地址空間構成了單片機所獨有的布爾邏輯操作系統,增強了單片機的位操作控制功能;還有許多條件跳轉、無條件跳轉指令,從而增強了指令系統的控制功能。在單片機的片內設置了特殊功能寄存器(Special Function Register,SFR),為外圍功能電路的集中管理提供了方便。
?8位超高性能單片機的鞏固發展及16位、32位、64位單片機的推出與發展階段(1983年至今):超8位單片機增加了DMA(Direct Memory Access)直接數據存儲存取通道、特殊串行接口等。16位單片機的CPU為16位,片內RAM和ROM的容量進一步增大,片內RAM為232B,ROM為8KB,片內帶有高速I/O部件,多通道10位A/D轉換器,8級中斷處理功能,實時處理能力更強,并開發了片內帶FLASH程序存儲器(Flash Memory)等功能。
5.單片機的系列
按指令集的不同,單片機主要有復雜指令集(Complex Instruction Set Computing,CISC)結構和精簡指令集(Reduced Instruction Set Computing,RISC)結構兩大類。
采用CISC結構的單片機,其指令豐富,功能較強,但取指令和取數據不能同時進行,速度受限,價格偏高。
采用RISC結構的單片機,取指令和取數據能夠同時進行,便于采用流水線操作,且大部分指令為單指令周期,運行速度快;同時,程序存儲器的空間利用率高,有利于實現超小型化。
CISC結構的單片機有Intel MCS-51系列、Motorola M68HC系列、Atmel AT89系列、STC89系列、華邦公司的W77/W78系列等;RISC結構的單片機有Microchip PIC系列、韓國三星KS57C系列4位單片機、中國臺灣義隆EM-78系列、Atmel AVR系列、NXP(原Philips)P89LPC90系列等。一般在控制關系較簡單的小家電中可以采用RISC結構單片機;在控制關系復雜的場合應采用CISC結構單片機。
6.市場上的主流單片機
【80C51單片機】應用最廣泛的8位單片機首推Intel的MCS-51系列。因其硬件結構合理,指令系統規范,加之生產歷史“悠久”,有先入為主的優勢。由于Intel公司在嵌入式應用方面將重點放在x86、奔騰等與PC類兼容的高檔芯片的開發上,所以Intel公司以專利互換和專利出售的方式將80C51內核授權給其他多家集成電路制造商,如Philips、NEC、Atmel、AMD、華邦公司等。拿到該授權的廠商,在原有基礎上進行性能上的擴充,使得芯片得到進一步的完善,形成了一個龐大的體系,直到現在仍在不斷翻新,把單片機世界炒得沸沸揚揚。這樣,80C51單片機就變成了眾多芯片制造廠商支持的大家族,統稱為80C51單片機,有時也簡稱51系列單片機。客觀事實證明,80C51已成為8位單片機的主流,成了事實上的標準MCU芯片。目前國內許多學校仍以它作為典型機來進行單片機的教學。
【NXP單片機】2007年Philips半導體公司更名為NXP,在我國又稱為恩智浦。NXP公司的單片機是基于80C51內核的單片機,嵌入了掉電檢測、模擬及片內RC振蕩器等功能。與標準8051單片機相比,它還增加了一個定時器/計數器并提供兩種工作模式,有些型號的單片機還提供了I2C或SPI串行接口。NXP單片機具有集成度高、成本低、低功耗等特點,在應用設計中可以滿足多方面的性能要求。
【Motorola單片機】Motorola是世界上最大的單片機廠商,該公司生產的單片機品種全、選擇余地大、新產品多。從M6800開始,開發了眾多的品種,4位、8位、16位和32位的單片機都能生產。在8位機方面,有M68HC05系列和升級產品M68HC08、M68HC11、M68HC12,其中M68HC05有30多個系列、200多個品種,產量已超過20億片。16位機M68HC16也有10多個品種,32位機M683XX也有數十個品種。Motorola單片機的特點之一是在同樣單片機種類的速度下所用的時鐘頻率較Intel類單片機低得多,因而使得高頻噪聲低、抗干擾能力強,更適合于工控領域及惡劣的環境。
【Atmel單片機】Atmel公司生產的單片機主要有兩大類,即CISC架構的AT89系列和RISC架構的AVR系列單片機。
AT89系列單片機是Atmel公司基于Intel公司的MCS-51系列單片機研發出來的與MCS-51兼容但性能高于MCS-51的單片機。它一問世就以其優良的性能和實惠的價格贏得了國內研究人員的廣泛歡迎。
AVR系列單片機是增強型RISC架構、內置Flash存儲器的單片機,具有高速處理能力,在一個時鐘周期內可執行復雜的指令,每MHz可實現1 MIPS(Million Instructions Per Second,每秒處理的百萬級的機器語言指令數)的處理能力。AVR單片機工作電壓為2.7~6.0V,可以實現耗電最優化。AVR單片機廣泛應用于計算機外部設備、工業實時控制、儀器儀表、通信設備、家用電器、宇航設備等各個領域。
【STC單片機】STC89系列單片機是MCS-51系列單片機的派生產品。它在指令系統、硬件結構和片內資源上與標準8052單片機完全兼容。STC89系列單片機具有高速(最高時鐘頻率90MHz)運行、低功耗、在系統(In-System Program,ISP)/在應用可編程(In-Application Program,IAP)、不占用戶資源等特點。與AT89系列單片機相比,二者的主要區別是:①下載方式不同,AT89系列(如AT89S51/S52)主要是并行下載方式,而STC89C51/52采用串口下載方式;②內存大小有所不同,AT89S51/52的片內RAM為128/256B,而STC89C51/52片內RAM為512B;③部分特殊功能寄存器不同;④STC單片機相對執行速度更快,功能更加強大。
【華邦(Winbond)單片機】W77/W78系列8位單片機是華邦公司推出CMOS型單片機,其引腳和指令集與8051兼容,但每個指令周期只需要4個時鐘周期,速度提高了3倍,工作頻率最高可達40MHz。同時增加了Watch Dog Timer、6組外部中斷源、2組UART、2組Data Pointer及Wait State Control Pin。W77/W78系列單片機具有性價比高、功能強、型號多,可以滿足各種不同應用場合等特點。
【Microchip單片機】Microchip單片機是市場份額增長較快的單片機,主要產品是PIC 16C系列和PIC 17C系列8位單片機。CPU采用RISC結構,PIC 16C系列僅有33條指令,采用Harvard雙總線結構,具有運行速度快、低工作電壓、低功耗、較大的I/O直接驅動能力、價格低、一次性編程、體積小等特點,適用于用量大、檔次低、價格便宜的產品,在辦公自動化設備、消費電子產品、電訊通信、智能儀器儀表、汽車電子、金融電子、工業控制等領域都有廣泛的應用。
【NEC單片機】NEC單片機自成體系,以8位單片機78K系列產量最高,也有16位、32位單片機。其單片機內置高精度的環形振蕩器,在-40~85℃時精度可達0.1%,并且還內置上電復位清零電路、低電壓偵測電路和獨立源看門狗電路。16位以上單片機采用內部倍頻技術,以降低外時鐘頻率。有的單片機采用內置操作系統。
【東芝單片機】東芝單片機從4位機到64位機,門類齊全。4位機在家電領域有很大市場;8位機主要有870系列和90系列等,該類單片機允許使用慢模式,采用32kHz時鐘時,功耗降至10μA數量級。CPU內部多組寄存器的使用,使得中斷響應與處理更加快捷。東芝的32位單片機采用MIPS 3000A RISC的CPU結構,面向DVD、數碼相機、圖像處理等市場。
【富士通單片機】為滿足對靈活性日益增長的需求,富士通不僅提供8位和16位的單片機,同時還提供高性能的32位RISC控制器。8位機使用的是16位機的CPU內核,也就是說8位機與16位機所用的指令相同,使得開發比較容易。8位單片機有著名的MB8900系列,16位機有MB90系列。富士通單片機具有加密性強、快捷的運算能力、強大的抗電磁干擾能力、在線燒錄和在線調試等特點,主要應用于汽車、工業、通信、消費電子和計算機外圍設備。
【LG公司的GMS90系列單片機】LG公司生產的GMS90系列單片機與Intel MCS-51系列,Atmel 89C51/52、AT89C2051等單片機兼容,采用CMOS技術,高達40MHz的時鐘頻率,應用于多功能電話、智能傳感器、電表、工業控制、防盜報警裝置、計費器、IC卡裝置、DVD、VCD、CD-ROM等。
【凌陽16位單片機SPCE】中國臺灣凌陽公司推出的內核為16位微處理器的芯片,即SPCE系列單片機。該系列主要有集成度高、體積小、可靠性高、低功耗、低電壓、性價比高、適合各種控制應用等特點。如SPCE061A型單片機,內嵌32KB的Flash存儲器,具有DPS功能,有很強的信息處理能力,最高時鐘可達49MHz,尤其適用于數字語音播報與識別等應用領域,是數字語音識別與語音信息處理的理想產品。
【Scenix單片機】Scenix公司推出的8位RISC結構SX系列單片機在技術上有其獨到之處。SX系列單片機只有雙時鐘設置,指令運行速度可達50/75/100MIPS;具有虛擬外設功能,柔性化I/O端口,所有I/O端口都可單獨編程設定,提供各種I/O的庫函數,用于實現各種I/O模塊的功能,如多路UART、多路A/D、PWM、SPI、DTMF、FS、LCD驅動等。采用E2PROM/Flash程序存儲器,可以實現在線系統編程。通過計算機RS-232C接口,采用專用串行電纜,即可對目標系統進行在線實時仿真。
【EPSON單片機】EPSON單片機以低電壓、低功耗和內置LCD驅動器等特點著稱,尤其是LCD驅動部分做得很好,廣泛用于工業控制、醫療設備、家用電器、儀器儀表、通信設備和手持式消費類產品等領域。目前,EPSON已推出4位單片機SMC62系列、SMC63系列、SMC60系列和8位單片機SMC88系列。
【三星單片機】三星單片機有KS51和KS57系列4位單片機、KS86和KS88系列8位單片機、KS17系列16位單片機和KS32系列32位單片機。三星單片機為OTP型(One Time Programmable,一次性可編程)ISP在片編程功能。三星公司在單片機技術上以引進消化發達國家的技術、生產與之兼容的產品,然后以價格優勢取勝。例如,在4位機上采用NEC的技術,8位機上引進Zilog公司Z8的技術,在32位機上購買了ARM7內核,還有DEC的技術、東芝的技術等。
【MSP430單片機】MSP430系列單片機是美國德州儀器公司(TI)1996年開始推向市場的一種16位超低功耗、具有精簡指令集(RISC)的混合信號處理器(Mixed Signal Processor)。該系列單片機多應用于需要電池供電的便攜式儀器儀表中。
7.學習單片機的方法
【熟悉和了解單片機的內部和外部資源】因為單片機芯片的內部及外部資源都需要開發者自己管理,且在開發過程中,根據實際需求,開發者還得自己設計單片機外圍電路,所以需要熟悉和了解一定的硬件知識。
【了解并掌握單片機指令系統】開發者是通過程序對單片機進行相應的控制,而這些程序是通過相應的指令來編寫的。單片機的指令系統主要有匯編語言或單片機C語言,開發者可以只使用其中一種,或者使用這兩種語言進行程序的編寫。由于單片機C語言具有編程和調試靈活方便,生成的代碼編譯效率高,完全模塊化,可移植性好,便于項目維護管理,可以直接操作單片機硬件等特點,所以現在許多單片機程序開發者均采用單片機C語言進行單片機系統的開發。
【了解并熟練掌握常用軟件的使用方法】進行單片機系統開發時,需要用到許多軟件,不要求開發者對每個軟件都很熟悉,但對于常用軟件的使用應該特別熟悉。例如,使用Keil C51進行源程序的編譯與調試,使用Proteus軟件進行硬件仿真,單片機的程序固化軟件的使用等。
【堅持手、腦并用的原則】在單片機的學習過程中,一定要堅持手、腦并用的原則,多做、多看、多想,先看別人編寫的程序,再學習修改別人的程序并仿寫類似的程序,最后自己設計、編寫程序,也就是“看程序→仿程序→寫程序”的過程,做到“實踐、實踐、再實踐”。
- 深度實踐OpenStack:基于Python的OpenStack組件開發
- C語言程序設計(第3版)
- 深入實踐Spring Boot
- Visual C++實例精通
- 網店設計看這本就夠了
- Swift細致入門與最佳實踐
- Kotlin編程實戰:創建優雅、富于表現力和高性能的JVM與Android應用程序
- Android嵌入式系統程序開發:基于Cortex-A8(第2版)
- Python數據可視化之美:專業圖表繪制指南(全彩)
- Practical Maya Programming with Python
- HTML5游戲開發實戰
- Offer來了:Java面試核心知識點精講(框架篇)
- C++標準庫(第2版)
- HTML 5與CSS 3權威指南(第4版·下冊)
- Storm Real-Time Processing Cookbook