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