
本书从控制器和显示设备两方面进行论述。书中以Microchip公司的PIC18系列微控制器为例讲解微控制器的体系结构、编程和接口技术,书中着重介绍了微控制器系统中的主要显示设备,如LED、数码管、LCD、GLCD等,介绍了每一种装置的原理和编程方法。并从工程开发的角度,以C语言为基础,采用十分流行的mikroC Pro for PIC编译器,介绍了PIC微控制器开发中使用的开发板和编译器。
书中列举了翔实的工程实例,针对每一种显示装置都给出了工程实例讲解,并配以文字、框图、电路图、源程序等资料,并对程序执行过程进行详细讲解。这些工程实例经过作者精心设计,内容循序渐进、由浅入深、全面丰富、实例众多,既有适合初学者的入门知识,又有复杂的经典案例。另外,每章都有简明扼要的小结和思考与练习题,便于读者复习和检验学习效果。
本书注重嵌入式微控制器和显示设备开发实践,十分适合用作高校电子与电气工程、自动化、计算机以及工程技术类相关专业的参考教材,还可用作专业嵌入式系统设计人员的参考书。本书的最大特色在于:
内容新颖: 本书重点讲解基于微控制器的显示设备开发,选题视角独特,目前市面上很少有这方面的参考书,对于从事显示设备的开发具有很大的借鉴意义。
实用性强: 书中对每一种显示设备都讲解了设备的原理及使用说明,列举了翔实的工程实例,这些实例都经过验证并能正确执行,所有的工程项目都给出了文字解释、框图、电路图、操作说明以及完整的源程序代码。所列举的工程实例稍加修改便可以应用。各章最后给出思考与练习题,便于检查学习效果。
覆盖面广: 本书内容主要与基于微控制器的显示设备开发相关,对微控制器系统开发中的显示设备进行了全面介绍,包括LED、7段数码管显示器、LCD、单色GLCD以及TFT彩色LCD等。针对每一种显示装置都以工程实例的形式予以说明和实践,基本覆盖了基于微控制器的显示器开发类型。
译者序
目前,嵌入式系统飞速发展,以微控制器为核心的嵌入式设备也在不断发展。嵌入式设备的性能既体现在微控制器的处理能力上,也体现在系统的输入输出设备上。在很多微控制器应用中,对显示设备的要求越来越高,从早期的LED指示,到数码管显示,到文本显示器显示,再到如今的触摸屏,甚至多点触碰电容屏等,新技术不断出现,也要求大家不断学习、更新知识结构。
本书从控制器和显示设备两方面进行论述。书中以Microchip公司的PIC18系列微控制器为例讲解微控制器的体系结构、编程和接口技术,书中着重介绍了微控制器系统中的主要显示设备,如LED、数码管、LCD、GLCD等,介绍了每一种装置的原理和编程方法。并从工程开发的角度,以C语言为基础,采用十分流行的mikroC Pro for PIC编译器,介绍了PIC微控制器开发中使用的开发板和编译器。
书中列举了翔实的工程实例,针对每一种显示装置都给出了工程实例讲解,并配以文字、框图、电路图、源程序等资料,并对程序执行过程进行详细讲解。这些工程实例经过作者精心设计,内容循序渐进、由浅入深、全面丰富、实例众多,既有适合初学者的入门知识,又有复杂的经典案例。另外,每章都有简明扼要的小结和思考与练习题,便于读者复习和检验学习效果。
本书注重嵌入式微控制器和显示设备开发实践,十分适合用作高校电子与电气工程、自动化、计算机以及工程技术类相关专业的参考教材,还可用作专业嵌入式系统设计人员的参考书。本书的最大特色在于:
内容新颖: 本书重点讲解基于微控制器的显示设备开发,选题视角独特,目前市面上很少有这方面的参考书,对于从事显示设备的开发具有很大的借鉴意义。
实用性强: 书中对每一种显示设备都讲解了设备的原理及使用说明,列举了翔实的工程实例,这些实例都经过验证并能正确执行,所有的工程项目都给出了文字解释、框图、电路图、操作说明以及完整的源程序代码。所列举的工程实例稍加修改便可以应用。各章最后给出思考与练习题,便于检查学习效果。
覆盖面广: 本书内容主要与基于微控制器的显示设备开发相关,对微控制器系统开发中的显示设备进行了全面介绍,包括LED、7段数码管显示器、LCD、单色GLCD以及TFT彩色LCD等。针对每一种显示装置都以工程实例的形式予以说明和实践,基本覆盖了基于微控制器的显示器开发类型。
本书由周艳博士和宋廷强博士共同翻译完成,由周艳负责全书的统稿工作。对于本书的出版,首先要感谢清华大学出版社的盛东亮老师和相关工作人员,是他们的努力促成了本书的顺利翻译与出版发行,使读者能够通过本书及时了解基于微控制器的显示设备开发相关技术,同时也感谢宫园园、路海滨、于鹏伟、段瑞响等给予本书的校对与检查。
在本书的翻译过程中,译者力求忠实于原著,但限于译者专业水平和翻译水平,书中难免存在各种翻译瑕玼,敬请读者批评指正,以便在重印时校正。
译者
2013年9月于青岛
微控制器是单芯片的微处理器系统,包含数据和程序存储器、串/并行接口、定时器以及外部及内部中断,所有这些功能都集成在一个芯片内部,价格低廉,不超过2英镑。在微控制器应用中,大约40%的应用和办公自动化相关,比如个人计算机、激光打印机、传真机、智能电话等。大约1/3的应用集中在消费电子商品,比如CD播放器、hifi设备、视频游戏、洗衣机、微波炉等产品。其他的应用领域主要集中在通信、汽车以及军事领域。
对于微控制器系统来说,输入和输出部分具有十分重要的作用。典型的输入装置有按键转换、键盘以及不同的模拟和数字传感器。典型的输出装置有发光二极管(Light Emitting Diodes,LED)、液晶显示屏(Liquid Crystal Display,LCD)、图形液晶显示屏(Graphics Liquid Crystal Display,GLCD)、电动机、执行器、蜂鸣器等。本书着重介绍微控制器系统中的显示装置,介绍其理论与应用。书中简要介绍了显示装置的使用原理,包括LED、7段数码管显示器、LCD、单色GLCD以及TFT彩色LCD等。另外,书中对每一种显示装置的使用方法进行了说明,并以经过验证的工程实例进行讲解。所有的工程项目都给出了文字解释、框图、电路图、操作说明以及完整的源程序代码,并都使用PIC18F系列高端微控制器。项目开发工具采用十分流行的mikroC Pro for PIC编译器。书中所有的工程项目都基于C语言开发,因此要求用户熟悉C语言,但对汇编语言不做要求,另外,如果用户至少熟悉一种PIC16F系列微控制器,将有益于对本书的理解。
本书面向学生、开发工程师以及有志从事基于PIC系列微控制器显示器开发的人员。
第1章介绍了微控制器的基本特征,以及显示装置的基本特点。
第2章回顾了PIC18系列微控制器。详细分析了PIC18系列微控制器的特点,并以PIC18F2410为例对微控制器进行详细介绍。
第3章给出了C语言的简要介绍,并测试了在PIC系列微控制器中使用mikroC Pro for PIC编译器的性能特点。
第4章介绍了微控制器开发工具,这些工具对开发者来说十分重要。本章对软件开发工具及硬件开发工具都做了详细的讨论。另外,还利用实例对微控制器模拟器以及在线调试器进行了讲述。
第5章给出了LED的基本原理。并用实例讲解了简单LED 7段数码管和复杂LED的使用。
第6章给出了一些利用PIC18系列微控制器和mikroC Pro for PIC C语言编译器的简单工程实例。本章列出的所有工程都是基于PIC18F452微控制器,并且都是经过测试,可正常工作。本章所介绍的内容对于PIC微控制器的初学者来说十分有用,对于想利用mikroC Pro for PIC语言来提高对PIC18F系列微控制器编程能力的人来说也将受益匪浅。
第7章介绍了LCD显示屏的原理,并通过实例详细阐述了LCD的基本工作原理和mikroC Pro for PIC内置的LCD函数。
第8章主要是关于描述软件操作的程序开发语言(Program Development Language,PDL)的使用,并介绍PDL中的各种结构模块。
第9章给出了基于LED的简单项目,这些项目包括简单的LED闪烁项目,也包括较为复杂的LED显示项目。
第10章主要是基于7段数码管的项目。本章给出了多个数码管项目实例,这些实例涉及一位及多位数码管的使用,所有项目都经过验证,可正常工作,并提供了相关工程的全部源代码。
第11章利用多个LCD实例讲述了LCD的使用。所列举的项目中,从在LCD上显示简单文本,到基于LCD的电压表项目,由浅入深,循序渐进。
第12章是关于GLCD在微控制器项目中的使用。本章所涉及项目中采用了分辨率为128×64的标准单色GLCD。
触摸屏在微控制器应用领域具有十分重要的作用。在第13章就给出了几个采用触摸屏实现图形应用的项目。
Visual GLCD软件包主要用于基于不同类型单色GLCD显示器的项目开发。第14章介绍了该软件包的使用,并给出了基于GLCD应用开发所需的步骤。本章以实例形式详细介绍了使用Visual GLCD软件包开发的多个项目,包含了分辨率为128×64及240×128的GLCD显示屏。
最后,第15章是利用Visual TFT软件包开发基于TFT的彩色图形应用。在本章使用MikroMMB图形开发板进行TFT显示屏开发,并介绍了创建基于微控制器的TFT图形应用所需的步骤。
Dogan Ibrahim
2012年于伦敦
致谢
本书中转载的材料都经过版权所有者的许可,未经版权所有者的同意,不得重印,或以任何形式转载。
图2.1~2.6,2.10,2.11,2.13,2.17,2.28,2.30,2.32~2.37取自Microchip Technology公司PIC18F2X1X/4X1X(DS39636D)的数据手册,图4.2~4.4取自Microchip Technology公司的网站。
图4.1取自microEngineering Lab公司网站。
图4.5和4.6取自Custom Computer Services公司网站。
图4.7取自Futurlec公司网站。
图4.8和图4.9取自mikroElektronica公司网站。
PIC,PICSTART和MPLAB都是Microchip Technology公司的商标。
译者序1
前言3
致谢5
第1章微控制器和显示系统简介
1.1微控制器和微处理器
1.2微控制器的发展
1.3微控制器的组成部分
1.3.1地址
1.3.2ALU
1.3.3模拟比较器
1.3.4模/数转换器
1.3.5掉电检测
1.3.6总线
1.3.7CAN
1.3.8CISC
1.3.9时钟
1.3.10CPU
1.3.11EEPROM
1.3.12EPROM
1.3.13Ethernet
1.3.14Flash存储器
1.3.15Harvard体系结构
1.3.16空闲模式
1.3.17中断
1.3.18LCD驱动器
1.3.19流水线
1.3.20上电复位
1.3.21PROM
1.3.22RAM
1.3.23实时时钟
1.3.24寄存器
1.3.25复位
1.3.26RISC
1.3.27ROM
1.3.28串行输入输出
1.3.29休眠模式
1.3.30供电电压
1.3.31定时器
1.3.32USB
1.3.33看门狗
1.4显示部件
1.4.1LED
1.4.27段数码管
1.4.3OLED
1.4.4LCD
小结
思考与练习题
第2章PIC18F微控制器
2.1PIC18F2410微控制器
2.2PIC18F2410体系结构
2.2.1程序存储器
2.2.2数据存储器
2.2.3供电要求
2.2.4振荡器配置
2.2.5复位
2.2.6并行I/O端口
2.2.7定时器模块
2.2.8A/D转换器模块
2.2.9CPU的特殊功能
2.2.10中断
2.2.11PWM模块
小结
思考与练习题
第3章C编程语言
3.1面向微控制器的C语言
3.2第一个mikroC Pro for PIC程序
3.2.1注释
3.2.2程序的开头和结尾
3.2.3空白符
3.2.4变量名
3.2.5保留字
3.2.6变量类型
3.2.7常量
3.2.8转义序列
3.2.9volatile变量
3.2.10变量的按位访问
3.2.11sbit类型
3.2.12bit类型
3.2.13数组
3.2.14指针
3.2.15结构
3.2.16联合
3.2.17mikroC Pro for PIC中的运算符
3.2.18程序流程控制
3.3mikroC Pro for PIC函数
3.3.1函数原型
3.3.2void 函数
3.3.3函数的参数传递
3.3.4向函数传递数组
3.3.5中断处理
3.4mikroC Pro for PIC内置函数
3.5mikroC Pro for PIC库
3.5.1ANSI C库
3.5.2Miscellaneous库
3.6mikroC Pro for PIC编译器的使用
3.6.1mikroC Pro for PIC集成开发环境
3.6.2创建一个源文件
3.6.3编译源文件
3.7mikroC Pro for PIC仿真器的使用
3.7.1设置断点
3.8mikroC Pro for PIC的其他特点
3.8.1查看统计
3.8.2查看汇编
3.8.3ASCII图表
3.8.4USART终端
3.8.57段数码管编辑器
3.8.6帮助
小结
思考与练习题
第4章PIC 微控制器及显示器开发工具
4.1PIC 硬件开发板
4.1.1Super Bundle 开发套件
4.1.2PIC18 Explorer开发板
4.1.3PIC18F4XK20 Starter开发套件
4.1.4PICDEM 4
4.1.5PIC16F887 开发套件
4.1.6FUTURLEC PIC18F4550 开发板
4.1.7EasyPIC16 开发板
4.1.8EasyPIC7 开发板
4.2PIC 微控制器显示器开发工具
4.2.1显示器开发硬件工具
4.2.2显示器软件开发工具
4.3EasyPIC7 开发板在线调试器的使用
小结
思考与练习题
第5章发光二极管
5.1典型LED
5.2LED的颜色
5.3LED的尺寸
5.4双色LED
5.5三色LED
5.6闪烁式LED
5.7其他LED形状
5.87段数码管
5.8.1显示数字
5.8.2多位7段数码管
5.9字母数字LED
5.10mikroC Pro for PIC 7段数码管编辑器
小结
思考与练习题
第6章LCD及mikroC Pro for PIC LCD函数
6.1HD44780 控制器
6.2显示用户定义数据
6.3DDRAM地址
6.4显示器的时序与控制
6.4.1清屏
6.4.2归位
6.4.3光标移动方向
6.4.4显示屏开/关
6.4.5光标、画面位移
6.4.6功能设置
6.4.7CGRAM地址设置
6.4.8DDRAM地址设置
6.4.9读取忙标志
6.4.10写数据
6.4.11读数据
6.5LCD初始化
6.5.18位模式初始化
6.5.24位模式初始化
6.6LCD显示器设置实例
6.7mikroC Pro for PIC LCD函数
6.7.1Lcd_Init
6.7.2Lcd_Out
6.7.3Lcd_Out_Cp
6.7.4Lcd_Chr
6.7.5Lcd_Chr_Cp
6.7.6Lcd_Cmd
小结
思考与练习题
第7章GLCD图形液晶显示器
7.1128×64像素GLCD
7.2GLCD显示器的操作
7.3mikroC Pro for PIC GLCD库函数
7.3.1Glcd_Init
7.3.2Glcd_Set_Side
7.3.3Glcd_Set_X
7.3.4Glcd_Set_Page
7.3.5Glcd_Write_Data
7.3.6Glcd_Fill
7.3.7Glcd_Dot
7.3.8Glcd_Line
7.3.9Glcd_V_Line
7.3.10Glcd_H_Line
7.3.11Glcd_Rectangle
7.3.12Glcd_Rectangle_Round_Edges
7.3.13Glcd_Rectangle_Round_Edges_Fill
7.3.14Glcd_Box
7.3.15Glcd_Circle
7.3.16Glcd_Circle_Fill
7.3.17Glcd_Set_Font
7.3.18Glcd_Set_Font_Adv
7.3.19Glcd_Write_Char
7.3.20Glcd_Write_Char_Adv
7.3.21Glcd_Write_Text
7.3.22Glcd_Write_Text_Adv
7.3.23Glcd_Write_Const_Text_Adv
7.3.24Glcd_Image
7.4GLCD显示器设计实例
7.5mikroC Pro for PIC位图编译器
7.6给GLCD增加触摸屏功能
7.6.1触屏显示器的类型
7.6.2电阻式触摸屏
小结
思考与练习题
第8章微控制器程序开发实践
8.1使用PDL语言和流程图
8.1.1BEGINEND
8.1.2顺序结构
8.1.3IFTHENELSEENDIF
8.1.4DOENDDO
8.1.5REPEATUNTIL
8.1.6调用子程序
8.1.7子程序结构
8.2开发实例
8.3流程图中for循环的表示
小结
思考与练习题
第9章LED开发实践
9.1工程(1): LED闪烁
9.1.1工程说明
9.1.2框图
9.1.3电路图
9.1.4PDL描述
9.1.5程序
9.1.6改进建议
9.2工程(2): 二进制数计数LED
9.2.1工程说明
9.2.2框图
9.2.3电路图
9.2.4PDL描述
9.2.5程序
9.2.6改进建议
9.3工程(3): 旋转发光LED
9.3.1工程说明
9.3.2框图
9.3.3电路图
9.3.4PDL描述
9.3.5程序
9.3.6程序改进
9.4工程(4): 旋转幸运日
9.4.1工程说明
9.4.2框图
9.4.3电路图
9.4.4PDL描述
9.4.5程序
9.4.6按键防抖
9.5工程(5): 随机闪烁LED
9.5.1工程说明
9.5.2框图
9.5.3电路图
9.5.4PDL描述
9.5.5程序
9.6工程(6): LED骰子
9.6.1工程说明
9.6.2框图
9.6.3电路图
9.6.4PDL描述
9.6.5程序
9.6.6改进建议
9.7工程(7): 多LED单端口引脚连接
9.7.1工程说明
9.7.2框图
9.7.3电路图
9.7.4PDL描述
9.7.5程序
9.7.6改进建议
9.8工程(8): 改变LED亮度
9.8.1工程说明
9.8.2框图
9.8.3电路图
9.8.4PDL描述
9.8.5程序
9.8.6使用定时器中断来产生PWM信号
9.8.7用PWM连续改变LED亮度
9.8.8改进建议
9.8.9使用微控制器内置PWM模块
9.8.10使用PWM模块改变LED亮度
9.9工程(9): LED蜡烛
9.9.1工程说明
9.9.2框图
9.9.3电路图
9.9.4PDL描述
9.9.5程序
小结
思考与练习题
第10章7段数码管开发实践
10.1工程(1): 1位增量计数7段数码管
10.1.1工程描述
10.1.2框图
10.1.3电路图
10.1.4PDL描述
10.1.5程序
10.1.6改进建议
10.2工程(2): 2位7段数码管数字显示
10.2.1工程描述
10.2.2框图
10.2.3电路图
10.2.4PDL描述
10.2.5程序
10.3工程(3): 2位7段数码管彩票号码显示
10.3.1工程描述
10.3.2框图
10.3.3电路图
10.3.4PDL描述
10.3.5程序
10.4工程(4): 4位7段数码管事件计数器
10.4.1工程描述
10.4.2框图
10.4.3电路图
10.4.4PDL描述
10.4.5程序
10.5工程(5): 基于中断的串行4位7段数码管事件计时器
10.5.1工程描述
10.5.2框图
10.5.3电路图
10.5.4PDL描述
10.5.5程序
小结
思考与练习题
第11章文本LCD开发实践
11.1工程(1): LCD文本显示
11.1.1工程描述
11.1.2框图
11.1.3电路图
11.1.4PDL程序描述
11.1.5程序
11.2工程(2): LCD文本的移动
11.2.1框图
11.2.2电路图
11.2.3PDL程序描述
11.2.4程序
11.3工程(3): 使用LCD计数
11.3.1框图
11.3.2电路图
11.3.3PDL程序描述
11.3.4程序
11.3.5改进建议
11.4工程(4): 在LCD上创建自定义字体
11.4.1框图
11.4.2电路图
11.4.3PDL程序描述
11.4.4程序
11.5工程(5): LCD骰子游戏
11.5.1框图
11.5.2电路图
11.5.3PDL程序描述
11.5.4程序
11.6工程(6): 数字电压表
11.6.1框图
11.6.2电路图
11.6.3PDL程序描述
11.6.4程序
11.7工程(7): 温度和压力显示
11.7.1框图
11.7.2电路图
11.7.3PDL程序描述
11.7.4程序
11.8工程(8): 高/低游戏
11.8.1键盘
11.8.2mikroC Pro for PIC键盘库函数
11.8.3随机数的生成
小结
思考与练习题
第12章GLCD开发实践
12.1工程(1): 创建和显示位图
12.1.1工程描述
12.1.2框图
12.1.3电路图
12.1.4PDL描述
12.1.5程序
12.2工程(2): 移动的小球
12.2.1工程描述
12.2.2框图
12.2.3电路图
12.2.4PDL描述
12.2.5程序
12.3工程(3): GLCD骰子
12.3.1工程描述
12.3.2框图
12.3.3电路图
12.3.4PDL描述
12.3.5程序
12.3.6程序改进
12.4工程(4): GLCD XY绘图
12.4.1工程描述
12.4.2框图
12.4.3电路图
12.4.4PDL描述
12.4.5程序
12.5工程(5): GLCD绘制温度曲线
12.5.1工程描述
12.5.2框图
12.5.3电路图
12.5.4PDL描述
12.5.5程序
12.5.6改进建议
12.6工程(6): 温度和相对湿度的测量
12.6.1工程描述
12.7SHT11的操作
12.7.1复位
12.7.2“启动传输”时序
12.7.3转换命令
12.8信息确认
12.8.1状态寄存器
12.8.2输出信号转换
12.8.3框图
12.8.4电路图
12.8.5PDL描述
12.8.6程序
小结
思考与练习题
第13章触摸屏开发实践
13.1工程(1): 触摸屏LED开关
13.1.1工程描述
13.1.2框图
13.1.3电路图
13.1.4PDL描述
13.1.5程序
13.2工程(2): LED可变闪烁速率
13.2.1工程描述
13.2.2框图
13.2.3电路图
13.2.4PDL描述
13.2.5程序
小结
思考与练习题
第14章Visual GLCD软件开发实践
14.1工程(1): LED反色显示
14.1.1工程描述
14.1.2框图
14.1.3电路图
14.2工程(2): 控制多个LED状态反转
14.2.1工程描述
14.2.2框图
14.2.3电路图
14.3工程(3): 迷你电子琴
14.3.1工程描述
14.3.2框图
14.3.3电路图
14.4工程(4): SmartGLCD开发
14.4.1工程描述
14.4.2框图
14.4.3电路图
14.5工程(5): SmartGLCD开发十进制与十六进制转换器
14.5.1工程描述
14.5.2屏幕布局
14.5.3电路图
小结
思考与练习题
第15章Visual TFT软件图形显示器开发实践
15.1工程(1): 倒计时器
15.1.1工程描述
15.1.2框图
15.2工程(2): 电子书
15.2.1工程描述
15.3工程(3): 图片展示程序
15.3.1工程描述
小结
思考与练习题