本書從基礎入手, 從一個初學者的角度出發(fā), 現(xiàn)任是單片機, 然后再通過具體例子, 逐步掌握單片機基本使用, 以及外圍功能模塊的具體應用。本書針對單片機的程序設計、定時器、通信模塊、AD/DA等內部功能模塊作了詳盡的介紹, 同時還針對一些常用的外圍模塊, 如LCD、時鐘芯片、溫度傳感器、紅外、無線模塊、電機驅動等模塊的具體應用通過實例的方式一一作了詳盡講解。
本書最大特點是配套了實驗臺和口袋實驗板,書中所有例子均有實際硬件支持,本書結合案例化、項目化教學思路,全書通篇采用由具體案例引入知識點的形式,在具體案例的設計上,從初學者的角度出發(fā),從單一到綜合、由易到難、逐步提升、層層關聯(lián),注重知識點的引入順序和積累,強調實踐動手能力的訓練。讀者掌握了本書的知識,就基本上達到了單片機應用的入門級別,剩下的就是一步步的經(jīng)驗積累,為進一步從事單片機開發(fā)打下堅實基礎?傊,本書對那些想從事單片機開發(fā)的初學者無疑是本不錯的參考書。
本書可作為高等院校電子信息、自動化和計算機等專業(yè)的本、?茖W生學習單片機的教材或參考書,也可供廣大愛好單片機的初學者作為入門工具書。
單片機應用技術是電子信息工程、電子科學與技術、計算機、機電一體化等專業(yè)的重要專業(yè)課程之一,是一門比較基礎的應用性課程,是軟硬件結合的一個初級平臺,也是嵌入式、DSP等高起點課程的重要基礎,同時也是工科學生必備的基礎能力。
本書選用的MSP430單片機是TI公司于1996年開始推向市場的一種16位超低功耗、具有精簡指令集的混合信號處理器。它集多種領先技術于一體,以16位RISC處理器、超低功耗、高性能模擬技術及豐富的片內外設、JTAG仿真調試定義了新一代單片機的概念,給人以耳目一新的感覺。
本書從解決基本問題著手,重基礎、重實踐。從最基本的應用開始,通過實例結合仿真調試軟件的使用逐步引導,使讀者通過學習,能夠真正掌握MSP430單片機基本硬件電路的設計、C程序設計以及編譯與仿真軟件的使用等知識和技能,從而為以后的提高打下良好的基礎。
全書共由以下8章組成。
第1章MSP430系列單片機概述,內容包括單片機的基本概念、單片機的應用領域、單片機的種類以及MSP430單片機的基本結構。
第2章MSP430F149簡介,內容包括MSP430單片機的總體架構、結構特點、存儲器結構、時鐘系統(tǒng)、工作模式以及中斷系統(tǒng),學習本章有利于掌握MSP430單片機的結構和工作原理。
第3章IAR集成開發(fā)環(huán)境的使用,介紹MSP430單片機的開發(fā)環(huán)境IAR軟件的應用。
第4章I/O端口應用,通過11個具體的設計任務,從易到難逐步讓讀者掌握I/O端口的控制方式,同時也掌握單片機驅動鍵盤、數(shù)碼管、點陣等常見外圍模塊。
第5章定時器,主要介紹看門狗定時器和定時器A、B的基本應用,并通過9個案例依次介紹WDT、定時器的4種工作模式、捕獲模式以及定時器輸出單元的基本應用。
第6章單片機的串行通信,依次介紹通用串行異步通信UART的應用、通用串行通信同步模式——SPI以及I2C總線的應用,使讀者掌握單片機系統(tǒng)中最常用的串行總線通信方式。
第7章ADC12/DAC12轉換模塊,介紹MSP430F149單片機內部A/D轉換模塊的基本應用;介紹TLC5616DA芯片,讓讀者了解D/A轉換的基本原理和應用。
第8章單片機應用實例,主要介紹單片機常用的外圍模塊,包括LCD1602、LCD12864、時鐘芯片、溫度傳感器、紅外模塊、NRF24L01無線模塊、PS2鍵盤、步進電動機、超聲模塊等。本章是對單片機應用的綜合性訓練。通過本章的學習,讀者對單片機的應用能力將得到進一步的提升。
本書的最大特點是配套了實驗臺和口袋實驗板,書中所有例子均有實際硬件支持。本書結合案例化、項目化教學思路,通篇采用由具體案例引入知識點的形式,在具體案例的設計上,從初學者的角度出發(fā),從單一到綜合、由易到難、逐步提升、層層關聯(lián),注重知識點的引入順序和積累,強調實踐動手能力的訓練。讀者掌握了本書的知識,就基本上達到了單片機應用的入門級別,剩下的就是一步步的經(jīng)驗積累,為進一步從事單片機開發(fā)打下堅實基礎?傊,本書對那些想從事單片機開發(fā)的初學者無疑是一本不錯的參考書。
本書由尹麗菊、萬隆主編,參與本書編寫的人員還有巴奉麗、鞏秀鋼、宿寶臣、李義明、王勃、朱鈺瑩。
李義明、王勃兩位工程師設計開發(fā)了與本書配套的實驗平臺和口袋實驗板,朱鈺瑩、李曉雄兩位同學參與編寫了配套實驗指導書,為本書增色不少,在此一并致謝!
本書免費提供電子課件和配套源代碼以及相關教學資料,如有兄弟院校對配套的實驗臺和口袋實驗板感興趣可以直接跟作者聯(lián)系。
書中難免存在疏漏和不妥之處,懇請廣大讀者批評與指正。作者電子郵箱:sdlgwanlong@163.com。
編者
2017年5月
第1章MSP430系列單片機概述
1.1單片機的基本概念
1.2單片機的發(fā)展及應用領域
1.3常見單片機種類
1.4MSP430系列單片機簡介
1.4.1MSP430系列單片機的特點
1.4.2MSP430的基本結構
1.4.3MSP430單片機系列介紹
第2章MSP430F149簡介
2.1MSP430的總體架構
2.2CPU的結構和特點
2.2.1MSP430系列單片機芯片特征
2.2.2MSP430特殊寄存器介紹
2.3MSP430存儲器
2.3.1程序存儲器
2.3.2數(shù)據(jù)存儲器
2.3.3Flash存儲器
2.4MSP430的時鐘系統(tǒng)
2.4.1案例介紹與分析
2.4.2MSP430的時鐘源
2.4.3MSP430的時鐘信號
2.4.4基本時鐘寄存器
2.5MSP430的系統(tǒng)復位和低功耗工作模式
2.5.1系統(tǒng)復位和初始化
2.5.2低功耗工作模式
2.6中斷系統(tǒng)
2.6.1中斷的概念和類型
2.6.2中斷響應及返回過程
2.6.3中斷嵌套
2.6.4中斷向量和中斷相關寄存器
第3章IAR集成開發(fā)環(huán)境的使用
3.1IAR開發(fā)平臺的安裝與使用
3.1.1IAR的下載、安裝
3.1.2IAR的初始化界面
3.1.3IAR菜單
3.1.4工具欄
3.1.5IAR的窗口
3.2IAR工程的建立與設置
3.2.1創(chuàng)建工作空間
3.2.2新建文件并添加到工程
3.2.3配置工程
3.3CSPY硬件仿真調試
3.3.1仿真器的驅動及硬件連接
3.3.2仿真器的使用
第4章I/O端口應用
4.1任務1點亮第一個LED小燈
4.1.1案例介紹與實現(xiàn)
4.1.2I/O端口的特點及結構
4.1.3相關寄存器
4.2任務21s流水燈
4.2.1案例介紹與實現(xiàn)
4.2.2本書常用的自定義頭文件簡介
4.3任務34種模式切換的流水燈
4.4任務4獨立按鍵的應用
4.4.1案例介紹與實現(xiàn)
4.4.2獨立按鍵原理
4.4.3獨立按鍵消抖
4.5任務5I/O中斷控制LED
4.5.1案例介紹與實現(xiàn)
4.5.2相關寄存器配置
4.5.3I/O端口操作的基本流程
4.6任務6矩陣按鍵的應用
4.6.1案例介紹與實現(xiàn)
4.6.2矩陣鍵盤的工作原理
4.6.3行列掃描法原理
4.7任務78位數(shù)碼管全顯0
4.8任務88位數(shù)碼管統(tǒng)一從0到F循環(huán)顯示
4.8.1案例介紹與實現(xiàn)
4.8.2數(shù)碼管的編碼原理
4.8.3靜態(tài)顯示原理
4.9任務9數(shù)碼管的輪流顯示及動態(tài)顯示
4.9.1案例介紹與實現(xiàn)
4.9.2數(shù)碼管的動態(tài)顯示原理
4.9.3數(shù)碼管動態(tài)顯示的消影
4.10任務10數(shù)碼管顯示按鍵鍵值
4.11任務11點陣顯示
4.11.1案例介紹與實現(xiàn)
4.11.2點陣的基礎知識
4.11.3字符編碼原理
第5章定時器
5.1任務1看門狗
5.1.1案例介紹與分析
5.1.2WDT的基本結構及工作原理
5.1.3WDT相關寄存器
5.1.4看門狗的定時模式
5.2任務2定時器A增計數(shù)應用
5.2.1案例介紹與分析
5.2.2定時器A的基本結構
5.2.3定時器A的工作模式——停止模式/增計數(shù)模式
5.2.4定時器A相關寄存器
5.3任務3定時器A的基本應用——連續(xù)計數(shù)模式
5.3.1案例介紹與分析
5.3.2連續(xù)工作模式的工作方式
5.3.3定時/計數(shù)器的中斷
5.4任務4定時器A的基本應用——增減計數(shù)模式
5.4.1案例介紹與分析
5.4.2增/減計數(shù)模式的工作方式
5.5任務5捕獲/比較部件
5.5.1案例介紹與分析
5.5.2相關寄存器
5.5.3比較單元
5.5.4捕獲單元
5.6任務6單片機輸出單元應用一
5.6.1案例介紹與分析
5.6.2輸出單元的基本結構
5.6.3輸出單元的工作方式
5.7任務7單片機輸出單元應用二
5.8任務8單片機輸出單元應用三
5.9任務9定時器B
5.9.1案例介紹與分析
5.9.2定時器B的基本結構和特點
5.9.3比較/捕獲部件
第6章單片機的串行通信
6.1任務1通用串行異步通信UART的應用一
6.1.1案例介紹與實現(xiàn)
6.1.2串行通信的基本概念
6.1.3UART的工作原理
6.1.4USART相關的控制寄存器
6.1.5多機通信模式
6.2任務2通用串行異步通信UART的應用二
6.2.1案例介紹與實現(xiàn)
6.2.2USART接收部件的工作原理
6.2.3USART相關寄存器
6.3任務3通用串行通信同步模式——SPI
6.3.1案例介紹與實現(xiàn)
6.3.2SPI的工作原理
6.3.3同步模式寄存器
6.4任務4I2C總線
6.4.1案例介紹與實現(xiàn)
6.4.224C02的基本特性和引腳說明
6.4.3I2C總線協(xié)議簡介
6.4.424C02的具體操作
第7章ADC12/DAC12轉換模塊
7.1任務1ADC單通道單次轉換模式
7.1.1案例介紹與實現(xiàn)
7.1.2ADC12的基本結構與工作原理
7.1.3ADC12寄存器
7.2任務2ADC單通道多次轉換模式
7.2.1案例介紹與分析
7.2.2ADC12的4種轉換模式與使用
7.2.3ADC12的操作步驟
7.3任務3ADC序列通道單次轉換模式
7.4任務4ADC序列通道多次轉換模式
7.5任務5DAC12的芯片
7.5.1案例介紹與分析
7.5.2芯片TLC5615概述
7.5.3TLC5615的工作原理
第8章單片機應用實例
8.1任務1LCD1602
8.1.1案例介紹與實現(xiàn)
8.1.2LCD1602概述
8.1.3LCD1602的操作流程
8.2任務2LCD12864
8.2.1案例介紹與分析
8.2.2LCD12864概述
8.2.3LCD12864操作流程
8.3任務3時鐘芯片DS1302
8.3.1案例介紹與分析
8.3.2DS1302概述
8.3.3DS1302的讀寫操作和寄存器配置
8.4任務4DS18B20
8.4.1案例分析與介紹
8.4.2DS18B20概述
8.4.3DS18B20寄存器配置
8.4.4DS18B20的初始化與數(shù)據(jù)讀取
8.5任務5HS0038紅外通信
8.5.1案例介紹與分析
8.5.2紅外線接收器HS0038概述
8.5.3紅外接收操作
8.6任務6NRF24L01無線模塊
8.6.1案例介紹與分析
8.6.2NRF24L01概述
8.6.3NRF24L01的工作模式
8.6.4NRF24L01寄存器配置
8.6.5NRF24L01模塊的操作與配置
8.7任務7PS2鍵盤
8.7.1案例介紹與分析
8.7.2PS2鍵盤概述
8.7.3PS2鍵盤的數(shù)據(jù)發(fā)送
8.8任務8步進電動機
8.8.1案例介紹與分析
8.8.228BYJ48步進電動機概述
8.8.3芯片ULN2003簡介
8.9任務9超聲波模塊應用——測距
8.9.1案例介紹與分析
8.9.2HCSR04概述
8.9.3電氣參數(shù)
8.9.4超聲波工作時序圖
附錄MSP430F149引腳功能對照表
第5章定時器
5.1任務1看門狗
5.1.1案例介紹與分析
看門狗定時器(WDT)是MSP430系列單片機中用于系統(tǒng)監(jiān)測和內部定時使用的一種模塊,當程序發(fā)生故障時能使受控系統(tǒng)重新啟動,也可作為一般內部定時器使用。
任務要求:
使用看門狗的定時功能定時產(chǎn)生一個方波,由P5.1輸出?撮T狗定時器結構圖如圖51所示。
圖51看門狗定時器結構圖
程序示例:
#include
voidmain(void)
{
WDTCTL=WDT_ADLY_250;//設置看門狗定時時間為250ms
IE1|=WDTIE;//WDT使能
P5DIR|=0x02;//設置P5.1為輸出
_EINT();//中斷允許
for(;;)
{
_BIS_SR(LPM3_bits);//進入LPM3
_NOP();//驗證,可用C-SPY觀察
}
}
//看門狗中斷服務子程序
#pragmavector=WDT_VECTOR
interruptvoidwatchdog_timer(void)
{
P5OUT^=0x02;//P5.1輸出取反
}
問題及知識點引入
(1)了解WDT的基本機構、特點、工作原理。
(2)WDT有哪些工作模式?
5.1.2WDT的基本結構及工作原理
看門狗定時器實質上是一個定時器,其主要功能是當程序發(fā)生故障時能使受控系統(tǒng)重新啟動。如果WDT超過WDT所定時的時間,則發(fā)生系統(tǒng)復位。當系統(tǒng)不需要看門狗功能時,也可將它當普通的定時器使用,當?shù)竭_WDT所定時的時間時能產(chǎn)生中斷。此外,WDT還可以完全停止活動以支持超低功耗應用。
在工業(yè)現(xiàn)場,由于供電電源、空間電磁干擾或其他原因往往會引起強烈的噪聲干擾。這些干擾作用于數(shù)字器件,極易使其產(chǎn)生誤動作,引起微控制器發(fā)生“程序跑飛”事故。若不進行有效處理,程序就不能回到正常工作狀態(tài),從而失去應有的控制功能。MSP430的看門狗定時器正是為了解決這類問題而設計的,尤其是在具有循環(huán)結構的程序任務中更為有效。當WDT超過WDT所定時的時間時,能發(fā)生復位操作。如果通過編制程序使WDT定時時間稍大于程序執(zhí)行一遍所用的時間,并且程序執(zhí)行過程中加入對看門狗定時器清零的指令,使計數(shù)器重新計數(shù),則當程序正常運行時,就會在WDT定時時間到達之前執(zhí)行WDT清零指令,不會產(chǎn)生WDT溢出。如果由于干擾使程序跑飛,則不會在WDT定時時間到達之前執(zhí)行WDT清零指令,WDT就會溢出,從而產(chǎn)生系統(tǒng)復位,CPU需要重新運行用戶程序,這樣程序就可以又恢復正常運行狀態(tài)。
5.1.3WDT相關寄存器
WDT的寄存器是由控制寄存器WDTCTL和計數(shù)單元WDTCNT組成的,它的中斷允許和中斷標志位在SFR中。
1.計數(shù)單元WDTCNT
WDTCNT是一個16位增計數(shù)器,由MSP430所選定的時鐘電路產(chǎn)生的固定周期脈沖信號對計數(shù)器進行加法計數(shù)。如果計數(shù)器事先被預置的初始狀態(tài)不同,那么從開始計數(shù)到計數(shù)溢出為止所用的時間就不同。WDTCNT不能直接通過軟件存取,必須通過看門狗定時器的控制寄存器WDTCTL(地址為0120H)進行訪問。
2.控制寄存器WDTCTL
WDTCTL由兩部分組成,其中高8位被用作口令,低8位是對WDT操作的控制命令。要寫入操作WDT的控制命令,必須先正確寫入高字節(jié)看門狗口令,口令為5AH,如果口令寫錯將導致系統(tǒng)復位。在讀WDTCTL時不需要口令,可直接讀取地址120H中的內容,讀出數(shù)據(jù)低字節(jié)為WDTCTL的值,高字節(jié)始終為69H。WDTCTL除了有看門狗定時器的控制位之外,還有兩個位用于設置NMI引腳功能。下面是WDTCTL寄存器各位的定義。