本书根据高职高专院校培养应用型技能人才的要求,紧紧围绕“理实一体化教学”的改革思想,结合高职学生特点,突出实用性,注重实践性,在内容的选取上以“理论够用,实践实用”为原则,在结构上打破传统的理论化教材形式,将理论知识点和实践技能结合,每章都采用理实一体形式展开,并可使用专门研发的学生开发板,配合教材项目使学生在课堂、课后都可以自由学习,为实践性教学提供了一个新的途径。本书共分10章,以飞思卡尔S08AC系列单片机为例系统介绍了各功能模块的原理结构与在嵌入式系统中的应用,内容涉及单片机与嵌入式系统基础、S08AC单片机硬件结构、输入/输出接口、人机接口技术、中断与系统配置、内部时钟发生器、定时器/PWM、AD转换器、嵌入式系统总线接口(SCI、SPI、IIC)等。每个章节按理论知识和项目实践环节开展,内容由浅入深,丰富实用,实践项目源于工程,涵盖范围广,适合电子、信息、电气、自动化、机电一体化等专业学生实用,也适合自学和从事单片机工作的工程技术人员参考。
采用先进的工业级单片机芯片(飞思卡尔S08系列)
“理实一体化”的实践性教材
深入、全面的给出工程应用的大量实例
丰富完善的“教、学、做”资源
HCS08系列微控制器是飞思卡尔(Freescale)半导体公司推出的新一代8位MCU。近几年,伴随工业自动化和汽车电子对高可靠性微控制器需求的快速增长,国内嵌入式系统及控制领域对Freescale半导体公司HCS08系列的关注度迅速上升。HCS08系列单片机内部集成了丰富的功能模块,并采用FLL锁频环技术,在同样的CPU总线速度下所用的时钟频率较其他系列微控制器低得多,甚至可以工作在无外部晶振状态,因而高频噪声极低,适合于恶劣的工业环境,其市场份额长期占据前列。目前,越来越多的企业和科研机构开始应用S08系列MCU研制新型、可靠的嵌入式产品。同时,Freescale公司大学计划部也顺应趋势,适时地在高校相关课程中大力开展教学推广,并与多所本科、高职院校建立了联合实验室,逐步推广Freescale MCU的教学。但是,现阶段国内公开出版的HCS08系列微控制器的“教学做一体化”实践类教材仍然较少。
本书以Freescale半导体公司的8位MCU中的典型型号MC9S08AC16为例,系统性地就HCS08结构、MCU工作模式、存储器结构和编址、CodeWarrior软件与嵌入式C语言的使用、MCU的中断机制以及各功能模块的原理及设计等内容进行了详细讲解,同时结合实际应用给出了大量典型范例,对读者具有很好的实践参考价值。同时,本书按照应用型技能人才的培养要求,紧紧围绕“理实一体化教学”的改革思想,突出实践性,重视实用性,将理论知识点和实践技能结合,每章都采用理实一体形式展开,结合教材项目使读者能自由练习实践,为嵌入式开发的学习提供了一个新的途径本书共分为12章,内容由浅入深,丰富实用。第1章主要介绍了单片机与嵌入式系统概述;第2章以HCS08系列单片机为例,系统介绍嵌入式微控制器的组成结构与性能特点,并给出了最小应用系统的设计实践;第3章以嵌入式开发工具为对象,介绍了CodeWarrior集成开发环境的使用方法和实践技巧;第4~12章以HCS08AC系列单片机为主线,系统全面地讲解了通用输入/输出接口,人机接口,中断系统,定时器/PWM,模-数转换,SCI、SPI及IIC模块等部件的结构、特点,寄存器设置和使用方法,并结合工程应用给出了调试通过的C语言例程和硬件电路设计。
本书由无锡商业职业技术学院李元熙主编,负责编写第1~10章和附录并统稿;无锡商业职业技术学院李泓编写第11、12章。本书在编写过程中得到了无锡商业职业技术学院—飞思卡尔校企合作实验室的大力支持与积极帮助,在此表示感谢。同时,特别感谢Freescale半导体公司中国大学计划负责人马莉和苏州大学王宜怀给予的帮助和支持!
由于个人经验和水平有限,加上编写时间仓促,书中难免会有错误和不当之处,恳请各位读者和专家批评指正。
编 者
李元熙,自2002年6月起在无锡商业职业技术学院电子工程系任教,先后担任过《单片机原理与嵌入式系统实践》、《微机机原理与接口技术》、《单片机原理与应用》、《智能电子技术实践》、《DSP原理与技术》、《C语言程序设计》、《数字信号处理》等课程的主讲教师,任教10年中先后被学院评为“优秀教师”、“教学优秀奖”等20余次,深受学生喜爱。
2007年2月起至2008年3月本人作为第一批专业课程教师被公派出国讲学,在韩国永进专门大学任教电子情报类课程的教学工作,讲授了《单片机与接口》、《电子专业英语》等课程,受到韩国学生和教授的广泛好评,评价等级排名位于外教前列。
2008年回国后兼职受聘于无锡530高科技企业成为研发部高级工程师。
2010年加入江苏省无线传感应用系统工程技术开发中心
前言
第1章 单片机与嵌入式系统概述
1.1 单片机与嵌入式系统
1.1.1 单片机的定义与特点
1.1.2 嵌入式系统的定义与特点
1.1.3 嵌入式技术的发展与应用
1.2 嵌入式系统的开发
1.2.1 嵌入式开发语言
1.2.2 嵌入式操作系统
1.2.3 嵌入式技术相关概念
1.3 单片机中的数制与码制
1.3.1 数制
1.3.2 数制间的转换
1.3.3 单片机中的码制
1.4 习题
第2章 HCS08单片机硬件结构与功能
2.1 飞思卡尔8位单片机概述
2.2 HCS08单片机结构与特性
2.2.1 HCS08单片机结构与引脚
2.2.2 HCS08单片机特性
2.3 单片机基本系统连接
2.3.1 电源
2.3.2 时钟与振荡器
2.3.3 复位
2.3.4 背景调试与模式选择
2.3.5 I/O和外围设备接口电路
2.4 系统时钟与总线周期
2.4.1 系统时钟
2.4.2 总线周期
2.5 HCS08单片机工作模式
2.5.1 运行模式
2.5.2 背景调试模式
2.5.3 等待模式
2.5.4 停止模式
2.6 HCS08片上存储器资源
2.6.1 存储器编址方式
2.6.2 HCS08单片机存储空间分配
2.6.3 RAM存储器
2.6.4 Flash存储器
2.7 项目实践 单片机最小应用系统硬件设计
2.8 习题
第3章 单片机与嵌入式系统开发工具
3.1 CodeWarrior集成开发环境
3.1.1 CodeWarrior简介
3.1.2 CodeWarrior的安装
3.1.3 CodeWarrior的使用
3.1.4 项目管理和设定
3.1.5 程序下载与BDM调试
3.2 嵌入式C语言编程
3.2.1 嵌入式C语言简介
3.2.2 嵌入式变量的使用
3.2.3 嵌入式C语法扩充
3.3 项目实践 CodeWarrior基本操作
3.4 习题
第4章 输入/输出接口技术
4.1 I/O接口概述
4.1.1 I/O接口基本功能
4.1.2 I/O接口分类与控制方式
4.2 HCS08单片机GPIO结构与原理
4.2.1 GPIO引脚分布与功能
4.2.2 GPIO结构与工作原理
4.2.3 端口相关寄存器设置
4.3 I/O接口外设驱动电路设计
4.3.1 端口的输入和输出电流
4.3.2 端口上拉与下拉电阻
4.4 项目实践
4.4.1 项目1 开关控制LED状态
4.4.2 项目2 流水霓虹灯的制作
4.5 习题
第5章 嵌入式系统人机接口技术
5.1 LED数码管显示器接口
5.1.1 数码管结构与显示原理
5.1.2 数码管的连接与驱动方法
5.1.3 数码管显示方式
5.1.4 连排数码管的结构与使用
5.2 LCD液晶显示器接口
5.2.1 液晶显示器原理与结构
5.2.2 液晶显示器分类与驱动方式
5.2.3 1602字符点阵型液晶模块
5.2.4 1602液晶控制指令与操作
5.3 键盘接口
5.3.1 键盘结构与按键识别
5.3.2 按键抖动与消除方法
5.3.3 键操作与键值处理
5.4 项目实践
5.4.1 项目1 数码日期显示牌
5.4.2 项目2 液晶信息显示牌
5.4.3 项目3 矩阵式键盘的使用
5.5 习题
第6章 中断与系统配置
6.1 中断概述
6.1.1 中断的实质与特点
6.1.2 中断相关术语
6.2 中断处理机制
6.2.1 中断处理流程
6.2.2 中断处理技术
6.2.3 嵌入式中断服务函数的编写
6.3 HCS08单片机中断与系统配置
6.3.1 HCS08单片机的中断处理
6.3.2 HCS08单片机的中断源与优先级
6.3.3 外部引脚中断(IRQ)
6.3.4 低电压检测系统(LVD)
6.3.5 实时中断(RTI)
6.3.6 系统配置寄存器
6.4 HCS08单片机复位
6.4.1 复位及其状态寄存器
6.4.2 COP看门狗
6.5 HCS08单片机键盘中断
6.5.1 键盘中断模块结构与原理
6.5.2 边沿与电平触发
6.5.3 相关寄存器及设置
6.6 项目实践
6.6.1 项目1 外部中断实践
6.6.2 项目2 实时时钟中断实践
6.7 习题
第7章 时钟系统与内部时钟发生器
7.1 HCS08单片机时钟系统
7.1.1 系统时钟分配
7.1.2 ICG组成结构
7.1.3 时钟系统性能特性
7.2 ICG的操作寄存器
7.2.1 ICG 控制寄存器1(ICGC1)
7.2.2 ICG 控制寄存器2(ICGC2)
7.2.3 ICG 状态寄存器1(ICGS1)
7.2.4 ICG 状态寄存器2(ICGS2)
7.2.5 ICG 滤波器寄存器(ICGFLTU和ICGFLTL)
7.2.6 ICG 调整寄存器(ICGTRM)
7.3 时钟模块工作模式
7.3.1 OFF模式
7.3.2 自时钟模式(SCM)
7.3.3 FLL内部时钟模式(FEI)
7.3.4 FLL旁路外部时钟模式(FBE)
7.3.5 FLL外部时钟模式(FEE)
7.4 时钟系统配置与应用
7.4.1 时钟选择方法
7.4.2 时钟系统初始化配置
7.4.3 ICG初始化应用实例
7.5 项目实践 内部时钟发生器模块
7.5.1 项目1 ICG功能基础实践
7.5.2 项目2 LED闪烁调速控制
7.6 习题
第8章 定时器/PWM模块
8.1 定时器模块结构与工作模式
8.1.1 定时实现方法
8.1.2 HCS08定时器模块结构
8.1.3 定时器模块工作模式
8.1.4 定时器模块引脚及其配置
8.2 定时器模块寄存器设置
8.2.1 基础寄存器及其设置
8.2.2 通道寄存器及其设置
8.3 定时器模块功能描述
8.3.1 定时计数功能
8.3.2 输入捕捉功能
8.3.3 输出比较功能
8.3.4 PWM功能
8.4 定时器模块中断操作
8.4.1 定时器溢出中断
8.4.2 通道事件中断
8.5 项目实践
8.5.1 项目1 电子秒表
8.5.2 项目2 周期检测器
8.5.3 项目3 方波发生器
8.5.4 项目4 LED亮度调节器
8.6 习题
第9章 A-D转换器
9.1 A-D转换技术
9.1.1 A-D转换流程与技术指标
9.1.2 A-D转换器种类与工作原理
9.2 HCS08内部ADC模块
9.2.1 模块结构与组成
9.2.2 模块引脚与功能
9.2.3 ADC工作过程
9.2.4 自动比较功能
9.3 ADC模块寄存器设置
9.3.1 状态和控制寄存器 1(ADC1SC1)
9.3.2 状态和控制寄存器2(ADC1SC2)
9.3.3 配置寄存器(ADC1CFG)
9.3.4 数据结果寄存器(ADC1RH: ADC1RL)
9.3.5 比较值寄存器(ADC1CVH:ADC1CVL)
9.3.6 引脚控制寄存器(APCTL1、APCTL2和APCTL3)
9.4 A-D转换操作与控制
9.4.1 A-D转换操作
9.4.2 A-D转换控制流程
9.4.3 A-D转换时间
9.5 项目实践 数字电压表
9.6 习题
第10章 串行通信接口
10.1 串行通信基础
10.1.1 数据传输分类与特点
10.1.2 数据传输速率
10.1.3 串行通信方式
10.1.4 RS-232C标准与电平转换
10.2 HCS08串行通信接口模块
10.2.1 波特率生成器
10.2.2 SCI发送器
10.2.3 SCI接收器
10.2.4 SCI中断和状态标志
10.3 SCI模块寄存器
10.3.1 波特率寄存器(SClxBDH:ClxBDL)
10.3.2 SCI 控制寄存器1 (SCIxC1)
10.3.3 SCI 控制寄存器2(SCIxC2)
10.3.4 SCI状态寄存器1(SCIxS1)
10.3.5 SCI状态寄存器2(SCIxS2)
10.3.6 SCI 控制寄存器3(SCIxC3)
10.3.7 SCI 数据寄存器(SCIxD)
10.4 项目实践
10.4.1 项目1 SCI模块数据发送
10.4.2 项目2 SCI模块数据接收
10.5 习题
第11章 串行外设(SPI)接口
11.1 SPI技术概述
11.1.1 SPI总线工作过程
11.1.2 SPI总线时序
11.2 HCS08的SPI模块
11.2.1 内部结构与功能
11.2.2 SPI模块引脚与功能
11.2.3 数据传输过程
11.2.4 SPI中断
11.2.5 模式故障检测
11.3 SPI模块寄存器
11.3.1 SPI控制寄存器1(SPIC1)
11.3.2 SPI 控制寄存器2(SPIC2)
11.3.3 SPI 比特率寄存器(SPIBR)
11.3.4 SPI 状态寄存器(SPIS)
11.3.5 SPI 数据寄存器(SPID)
11.4 项目实践 SPI模块数据传送
11.5 习题
第12章 IIC总线接口
12.1 IIC总线技术概述
12.1.1 IIC总线技术与特点
12.1.2 IIC总线协议与工作过程
12.2 HCS08的IIC模块
12.2.1 IIC模块功能与内部结构
12.2.2 IIC模块寄存器
12.2.3 IIC模块的中断
12.2.4 IIC模块使用方法
12.3 项目实践 IIC模块数据传送控制
12.4 习题
附录
附录A 飞思卡尔HCS08AC系列芯片引脚分布
附录B ASCⅡ码表
附录C ADC 参数表
参考文献