本书从基础入手, 从一个初学者的角度出发, 现任是单片机, 然后再通过具体例子, 逐步掌握单片机基本使用, 以及外围功能模块的具体应用。本书针对单片机的程序设计、定时器、通信模块、AD/DA等内部功能模块作了详尽的介绍, 同时还针对一些常用的外围模块, 如LCD、时钟芯片、温度传感器、红外、无线模块、电机驱动等模块的具体应用通过实例的方式一一作了详尽讲解。
本书最大特点是配套了实验台和口袋实验板,书中所有例子均有实际硬件支持,本书结合案例化、项目化教学思路,全书通篇采用由具体案例引入知识点的形式,在具体案例的设计上,从初学者的角度出发,从单一到综合、由易到难、逐步提升、层层关联,注重知识点的引入顺序和积累,强调实践动手能力的训练。读者掌握了本书的知识,就基本上达到了单片机应用的入门级别,剩下的就是一步步的经验积累,为进一步从事单片机开发打下坚实基础。总之,本书对那些想从事单片机开发的初学者无疑是本不错的参考书。
本书可作为高等院校电子信息、自动化和计算机等专业的本、专科学生学习单片机的教材或参考书,也可供广大爱好单片机的初学者作为入门工具书。
单片机应用技术是电子信息工程、电子科学与技术、计算机、机电一体化等专业的重要专业课程之一,是一门比较基础的应用性课程,是软硬件结合的一个初级平台,也是嵌入式、DSP等高起点课程的重要基础,同时也是工科学生必备的基础能力。
本书选用的MSP430单片机是TI公司于1996年开始推向市场的一种16位超低功耗、具有精简指令集的混合信号处理器。它集多种领先技术于一体,以16位RISC处理器、超低功耗、高性能模拟技术及丰富的片内外设、JTAG仿真调试定义了新一代单片机的概念,给人以耳目一新的感觉。
本书从解决基本问题着手,重基础、重实践。从最基本的应用开始,通过实例结合仿真调试软件的使用逐步引导,使读者通过学习,能够真正掌握MSP430单片机基本硬件电路的设计、C程序设计以及编译与仿真软件的使用等知识和技能,从而为以后的提高打下良好的基础。
全书共由以下8章组成。
第1章MSP430系列单片机概述,内容包括单片机的基本概念、单片机的应用领域、单片机的种类以及MSP430单片机的基本结构。
第2章MSP430F149简介,内容包括MSP430单片机的总体架构、结构特点、存储器结构、时钟系统、工作模式以及中断系统,学习本章有利于掌握MSP430单片机的结构和工作原理。
第3章IAR集成开发环境的使用,介绍MSP430单片机的开发环境IAR软件的应用。
第4章I/O端口应用,通过11个具体的设计任务,从易到难逐步让读者掌握I/O端口的控制方式,同时也掌握单片机驱动键盘、数码管、点阵等常见外围模块。
第5章定时器,主要介绍看门狗定时器和定时器A、B的基本应用,并通过9个案例依次介绍WDT、定时器的4种工作模式、捕获模式以及定时器输出单元的基本应用。
第6章单片机的串行通信,依次介绍通用串行异步通信UART的应用、通用串行通信同步模式——SPI以及I2C总线的应用,使读者掌握单片机系统中最常用的串行总线通信方式。
第7章ADC12/DAC12转换模块,介绍MSP430F149单片机内部A/D转换模块的基本应用;介绍TLC5616DA芯片,让读者了解D/A转换的基本原理和应用。
第8章单片机应用实例,主要介绍单片机常用的外围模块,包括LCD1602、LCD12864、时钟芯片、温度传感器、红外模块、NRF24L01无线模块、PS2键盘、步进电动机、超声模块等。本章是对单片机应用的综合性训练。通过本章的学习,读者对单片机的应用能力将得到进一步的提升。
本书的最大特点是配套了实验台和口袋实验板,书中所有例子均有实际硬件支持。本书结合案例化、项目化教学思路,通篇采用由具体案例引入知识点的形式,在具体案例的设计上,从初学者的角度出发,从单一到综合、由易到难、逐步提升、层层关联,注重知识点的引入顺序和积累,强调实践动手能力的训练。读者掌握了本书的知识,就基本上达到了单片机应用的入门级别,剩下的就是一步步的经验积累,为进一步从事单片机开发打下坚实基础。总之,本书对那些想从事单片机开发的初学者无疑是一本不错的参考书。
本书由尹丽菊、万隆主编,参与本书编写的人员还有巴奉丽、巩秀钢、宿宝臣、李义明、王勃、朱钰莹。
李义明、王勃两位工程师设计开发了与本书配套的实验平台和口袋实验板,朱钰莹、李晓雄两位同学参与编写了配套实验指导书,为本书增色不少,在此一并致谢!
本书免费提供电子课件和配套源代码以及相关教学资料,如有兄弟院校对配套的实验台和口袋实验板感兴趣可以直接跟作者联系。
书中难免存在疏漏和不妥之处,恳请广大读者批评与指正。作者电子邮箱:sdlgwanlong@163.com。
编者
2017年5月
第1章MSP430系列单片机概述
1.1单片机的基本概念
1.2单片机的发展及应用领域
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数据存储器
2.3.3Flash存储器
2.4MSP430的时钟系统
2.4.1案例介绍与分析
2.4.2MSP430的时钟源
2.4.3MSP430的时钟信号
2.4.4基本时钟寄存器
2.5MSP430的系统复位和低功耗工作模式
2.5.1系统复位和初始化
2.5.2低功耗工作模式
2.6中断系统
2.6.1中断的概念和类型
2.6.2中断响应及返回过程
2.6.3中断嵌套
2.6.4中断向量和中断相关寄存器
第3章IAR集成开发环境的使用
3.1IAR开发平台的安装与使用
3.1.1IAR的下载、安装
3.1.2IAR的初始化界面
3.1.3IAR菜单
3.1.4工具栏
3.1.5IAR的窗口
3.2IAR工程的建立与设置
3.2.1创建工作空间
3.2.2新建文件并添加到工程
3.2.3配置工程
3.3CSPY硬件仿真调试
3.3.1仿真器的驱动及硬件连接
3.3.2仿真器的使用
第4章I/O端口应用
4.1任务1点亮第一个LED小灯
4.1.1案例介绍与实现
4.1.2I/O端口的特点及结构
4.1.3相关寄存器
4.2任务21s流水灯
4.2.1案例介绍与实现
4.2.2本书常用的自定义头文件简介
4.3任务34种模式切换的流水灯
4.4任务4独立按键的应用
4.4.1案例介绍与实现
4.4.2独立按键原理
4.4.3独立按键消抖
4.5任务5I/O中断控制LED
4.5.1案例介绍与实现
4.5.2相关寄存器配置
4.5.3I/O端口操作的基本流程
4.6任务6矩阵按键的应用
4.6.1案例介绍与实现
4.6.2矩阵键盘的工作原理
4.6.3行列扫描法原理
4.7任务78位数码管全显0
4.8任务88位数码管统一从0到F循环显示
4.8.1案例介绍与实现
4.8.2数码管的编码原理
4.8.3静态显示原理
4.9任务9数码管的轮流显示及动态显示
4.9.1案例介绍与实现
4.9.2数码管的动态显示原理
4.9.3数码管动态显示的消影
4.10任务10数码管显示按键键值
4.11任务11点阵显示
4.11.1案例介绍与实现
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增计数应用
5.2.1案例介绍与分析
5.2.2定时器A的基本结构
5.2.3定时器A的工作模式——停止模式/增计数模式
5.2.4定时器A相关寄存器
5.3任务3定时器A的基本应用——连续计数模式
5.3.1案例介绍与分析
5.3.2连续工作模式的工作方式
5.3.3定时/计数器的中断
5.4任务4定时器A的基本应用——增减计数模式
5.4.1案例介绍与分析
5.4.2增/减计数模式的工作方式
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案例介绍与实现
6.1.2串行通信的基本概念
6.1.3UART的工作原理
6.1.4USART相关的控制寄存器
6.1.5多机通信模式
6.2任务2通用串行异步通信UART的应用二
6.2.1案例介绍与实现
6.2.2USART接收部件的工作原理
6.2.3USART相关寄存器
6.3任务3通用串行通信同步模式——SPI
6.3.1案例介绍与实现
6.3.2SPI的工作原理
6.3.3同步模式寄存器
6.4任务4I2C总线
6.4.1案例介绍与实现
6.4.224C02的基本特性和引脚说明
6.4.3I2C总线协议简介
6.4.424C02的具体操作
第7章ADC12/DAC12转换模块
7.1任务1ADC单通道单次转换模式
7.1.1案例介绍与实现
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案例介绍与实现
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的初始化与数据读取
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键盘的数据发送
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电气参数
8.9.4超声波工作时序图
附录MSP430F149引脚功能对照表
第5章定时器
5.1任务1看门狗
5.1.1案例介绍与分析
看门狗定时器(WDT)是MSP430系列单片机中用于系统监测和内部定时使用的一种模块,当程序发生故障时能使受控系统重新启动,也可作为一般内部定时器使用。
任务要求:
使用看门狗的定时功能定时产生一个方波,由P5.1输出。看门狗定时器结构图如图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的基本结构及工作原理
看门狗定时器实质上是一个定时器,其主要功能是当程序发生故障时能使受控系统重新启动。如果WDT超过WDT所定时的时间,则发生系统复位。当系统不需要看门狗功能时,也可将它当普通的定时器使用,当到达WDT所定时的时间时能产生中断。此外,WDT还可以完全停止活动以支持超低功耗应用。
在工业现场,由于供电电源、空间电磁干扰或其他原因往往会引起强烈的噪声干扰。这些干扰作用于数字器件,极易使其产生误动作,引起微控制器发生“程序跑飞”事故。若不进行有效处理,程序就不能回到正常工作状态,从而失去应有的控制功能。MSP430的看门狗定时器正是为了解决这类问题而设计的,尤其是在具有循环结构的程序任务中更为有效。当WDT超过WDT所定时的时间时,能发生复位操作。如果通过编制程序使WDT定时时间稍大于程序执行一遍所用的时间,并且程序执行过程中加入对看门狗定时器清零的指令,使计数器重新计数,则当程序正常运行时,就会在WDT定时时间到达之前执行WDT清零指令,不会产生WDT溢出。如果由于干扰使程序跑飞,则不会在WDT定时时间到达之前执行WDT清零指令,WDT就会溢出,从而产生系统复位,CPU需要重新运行用户程序,这样程序就可以又恢复正常运行状态。
5.1.3WDT相关寄存器
WDT的寄存器是由控制寄存器WDTCTL和计数单元WDTCNT组成的,它的中断允许和中断标志位在SFR中。
1.计数单元WDTCNT
WDTCNT是一个16位增计数器,由MSP430所选定的时钟电路产生的固定周期脉冲信号对计数器进行加法计数。如果计数器事先被预置的初始状态不同,那么从开始计数到计数溢出为止所用的时间就不同。WDTCNT不能直接通过软件存取,必须通过看门狗定时器的控制寄存器WDTCTL(地址为0120H)进行访问。
2.控制寄存器WDTCTL
WDTCTL由两部分组成,其中高8位被用作口令,低8位是对WDT操作的控制命令。要写入操作WDT的控制命令,必须先正确写入高字节看门狗口令,口令为5AH,如果口令写错将导致系统复位。在读WDTCTL时不需要口令,可直接读取地址120H中的内容,读出数据低字节为WDTCTL的值,高字节始终为69H。WDTCTL除了有看门狗定时器的控制位之外,还有两个位用于设置NMI引脚功能。下面是WDTCTL寄存器各位的定义。