本书以STC89C52(AT89S52)为例,介绍了51单片机的结构和特点、入门和提高所需的C语言知识,单片机常用内部和外部资源的使用,以及使用C语言编程解决实际问题的方法和技巧。所有内容围绕着密切联系实际的典型应用示例进行和展开;充分考虑了初学者的特点,对程序可能的疑难点进行了详细解释。
何应俊。中学高级教师、家用电子产品维修技师、制冷设备维修技师、宜昌市国家职业技能鉴定注册考评员;写作方向:电子技术;主要作品有:《图解电子元器件即学即用》,电子工业出版社,2012年12月。
目 录
第1篇 入 门 篇
第1章 学习单片机的必备基础 (2)
1.1 单片机的基本知识 (2)
1.1.1 单片机的结构 (2)
1.1.2 单片机封装示例 (3)
1.1.3 单片机的应用场合 (4)
1.1.4 单片机控制系统的基本结构 (4)
1.1.5 单片机控制系统的开发过程 (5)
1.2 51单片机的引脚 (5)
1.2.1 51单片机的引脚功能 (5)
1.2.2 TTL电平和COMS电平的概念 (7)
1.3 单片机的最小系统 (8)
1.3.1 直流供电 (8)
1.3.2 时钟电路 (8)
1.3.3 复位电路 (9)
1.4 数制及相互转换简介 (10)
1.4.1 十进制数 (10)
1.4.2 二进制数 (10)
1.4.3 十六进制数 (10)
1.4.4 八进制数 (11)
1.4.5 各种数制之间相互转换的方法 (11)
1.5 搭建51单片机开发环境 (13)
1.5.1 搭建硬件系统 (13)
1.5.2 搭建软件开发环境(Keil ?Vision) (17)
1.5.3 Keil ?Vision4的最基本应用―第一个C51工程 (17)
第2章 入门关―花样流水灯的实现 (28)
2.1 花样流水灯电路精讲 (28)
2.1.1 花样流水灯原理图 (28)
2.1.2 单片机控制花样流水灯的工作原理 (30)
2.2 本章相关的C51语言知识精讲 (31)
2.2.1 C51的函数简介 (31)
2.2.2 数据类型 (33)
2.2.3 常量 (34)
2.2.4 变量 (35)
2.2.5 标识符和关键字 (37)
2.2.6 单片机C语言程序的基本结构 (38)
2.2.7 算术运算符和算术表达式 (38)
2.2.8 关系运算符和关系表达式 (39)
2.2.9 自增减运算符 (40)
2.2.10 单片机的周期 (40)
2.2.11 while循环语句和for循环语句 (40)
2.2.12 不带参数和带参数函数的声明、定义和调用 (43)
2.3 使用“位操作”控制流水灯 (45)
2.3.1 编程思路 (45)
2.3.2 参考程序及解释 (45)
2.3.3 观察效果 (46)
2.4 使用字节控制(即并行I/O口控制)流水灯 (46)
2.4.1 编程思路 (46)
2.4.2 参考程序及解释 (47)
2.5 使用移位运算符控制流水灯 (47)
2.5.1 逻辑运算符和位运算符 (47)
2.5.2 使用移位运算符控制流水灯的编程示例 (49)
2.6 使用库函数实现流水灯 (50)
2.6.1 循环移位函数 (50)
2.6.2 使用循环移位函数实现流水灯 (51)
2.7 使用条件语句实现流水灯 (52)
2.7.1 条件语句 (52)
2.7.2 使用if语句实现流水灯 (53)
2.8 使用switch语句控制流水灯 (54)
2.8.1 switch语句介绍 (54)
2.8.2 使用switch语句控制流水灯的编程示例 (55)
2.9 使用数组控制流水灯 (56)
2.9.1 C51语言的数组 (56)
2.9.2 使用数组控制流水灯的编程示例 (57)
2.10 使用指针实现流水灯 (58)
2.10.1 指针的概念和用法 (58)
2.10.2 使用指针实现流水灯的编程示例 (59)
第2篇 常用资源使用
第3章 按键和单片机对灯和电机等器件的控制 (62)
3.1 独立按键的原理及应用 (62)
3.1.1 常见的轻触按键的实物 (62)
3.1.2 轻触按键的通、断过程及消抖 (63)
3.1.3 实现按键给单片机传指令的硬件结构 (64)
3.1.4 独立按键的典型应用示例──按键控制蜂鸣器鸣响 (65)
3.2 矩阵按键的应用 (68)
3.2.1 矩阵按键的原理和硬件设计 (68)
3.2.2 矩阵键盘的典型编程方法―扫描法和利用二维数组存储键值 (69)
3.3 按键和单片机控制电机的运行状态 (74)
3.3.1 按钮控制直流电机和交流电机的启动和停止 (74)
3.3.2 按键控制交流电机的顺序启动 (76)
3.3.3 按键控制电机的正反转 (80)
3.3.4 直流电机的PWM调速 (82)
3.4 开关与灯的灵活控制 (84)
3.4.1 钮子开关控制单片机实现停电自锁与来电提示 (85)
3.4.2 按键和单片机控制灯 (86)
第4章 单片机的中断系统及应用示例 (88)
4.1 单片机的中断系统 (88)
4.1.1 中断的基本概念 (88)
4.1.2 中断优先级和中断嵌套 (90)
4.1.3 应用中断需要设置的4个寄存器 (91)
4.1.4 中断服务程序的写法(格式) (94)
4.2 定时器T0和T1的工作方式1 (94)
4.2.1 单片机的几个周期 (94)
4.2.2 定时器的工作方式1工作过程详解 (94)
4.2.3 定时器T0和T1的工作方式1应用示例 (95)
4.3 外部中断的应用 (96)
4.3.1 低电平触发外部中断的应用示例 (96)
4.3.2 下降沿触发外部中断的应用示例 (99)
第5章 数码管的静态显示和动态显示 (100)
5.1 数码管的显示原理 (100)
5.2 数码管的静态显示 (102)
5.3 数码管的动态显示 (105)
5.3.1 典型数码管显示电路 (105)
5.3.2 数码管动态显示编程入门示例 (109)
5.4 使用数码管实现24小时时钟 (110)
5.4.1 任务书 (110)
5.4.2 典型程序示例及解释 (111)
第6章 单片机的串行通信 (117)
6.1 RS-232串行通信的基础知识 (117)
6.1.1 串行通信标准和串行通信接口 (117)
6.1.2 通信的几个基本概念 (120)
6.1.3 RS-232串行通信的硬件连接 (121)
6.1.4 读写串口数据 (122)
6.1.5 串行控制与状态寄存器 (123)
6.1.6 串口的工作方式 (123)
6.2 串口通信设置 (124)
6.2.1 计算机串口通信设置 (124)
6.2.2 单片机串口通信设置 (125)
6.3 单片机串口通信的基础程序范例 (126)
6.4 串口通信应用示例(用串口校准时间的数字钟) (127)
6.5 知识链接 (131)
6.5.1 字符型数据 (131)
6.5.2 单片机与单片机之间的通信 (132)
6.5.3 字符串数组 (132)
第7章 液晶显示屏和OLED屏的使用 (133)
7.1 LCD1602的认识和使用 (133)
7.1.1 LCD1602的引脚功能及其和单片机的连接 (134)
7.1.2 LCD1602模块的内部结构和工作原理 (135)
7.1.3 LCD1602的工作时序 (137)
7.1.4 LCD1602的指令说明 (138)
7.1.5 LCD1602的编程 (139)
7.2 不带字库LCD12864的使用 (142)
7.2.1 LCD12864的引脚说明 (142)
7.2.2 LCD12864的模块介绍 (143)
7.2.3 不带字库LCD12864的读写时序 (144)
7.3 LCD12864的点阵结构 (145)
7.4 LCD12864的指令说明 (146)
7.5 LCD12864显示字符的取模方法 (147)
7.6 LCD12864显示信息操作示例 (147)
7.7 LCD12864的跨屏显示 (151)
7.8 带字库LCD12864的显示编程 (153)
7.8.1 带字库LCD12864简介 (153)
7.8.2 带字库LCD12864的基本指令 (154)
7.8.3 汉字显示坐标 (155)
7.8.4 带字库LCD12864显示编程示例 (156)
7.9 OLED屏 (158)
7.9.1 OLED简介 (158)
7.9.2 OLED屏的应用(模块化编程示例) (160)
第8章 A/D与D/A的应用入门 (171)
8.1 任务书―温度及电压监测仪 (171)
8.2 A/D转换 (172)
8.2.1 A/D和D/A简介 (172)
8.2.2 典型A/D芯片ADC0809介绍 (173)
8.2.3 ADC0809应用示例 (176)
8.3 LM35温度传感器的认识和使用 (177)
8.3.1 LM35的外形及特点 (177)
8.3.2 LM35的典型应用电路分析 (178)
8.3.3 LM35的应用电路连接及温度转换编程 (179)
8.4 电压源 (179)
8.5 温度及电压监测仪的程序代码示例及分析 (180)
8.6 知识链接―D/A转换芯片DAC0832及应用 (183)
8.6.1 DAC0832的内部结构和引脚功能 (183)
8.6.2 单片机实训台典型D/A模块介绍 (184)
8.6.3 ADC0832采用I/O方式编程示例 (185)
8.6.4 ADC0832采用扩展地址方式编程示例 (186)
第3篇 综合应用―实践篇
第9章 步进电机的控制 (190)
9.1 步进电机的基础知识 (190)
9.2 步进电机的参数 (192)
9.3 步进电机的驱动及精确定位系统示例 (193)
9.3.1 步进电机及驱动器 (193)
9.3.2 步进电机的位移装置及保护装置 (194)
9.4 单片机实训台的典型步进电机模块 (196)
9.5 步进电机的控制示例 (197)
9.5.1 步进电机模块游标的归零 (197)
9.5.2 步进电机的定位 (198)
9.6 典型训练任务―自动流水线系统 (200)
第10章 DS18B20温度传感器及智能换气扇 (203)
10.1 智能换气扇任务书 (203)
10.2 智能换气扇实现思路 (205)
10.3 DS18B20温度传感器 (206)
10.3.1 DS18B20简介 (206)
10.3.2 DS18B20的控制方法 (209)
10.4 模拟智能换气扇的程序代码示例及讲解 (213)
第11章 电子密码锁 (液晶、矩阵键盘的综合应用) (223)
11.1 电子密码锁简介 (223)
11.2 电子密码锁的实现 (225)
11.2.1 硬件接线及编程思路和技巧 (225)
11.2.2 程序代码示例及讲析 (226)
11.3 典型训练任务 (240)
任务一 增设控制键 (240)
任务二 自动点焊机控制系统的实现 (240)
附录 (242)
附录A C51中的关键字 (242)
附录B ASCII码表 (244)
附录C C语言知识补充 (247)