《51单片机C语言编程一学就会》以STC89C52(AT89S52)为例,介绍了51单片机的结构和特点、入门和提高所需的C语言知识,51单片机的输入/输出、定时器、中断、串行通信、AD和DA转换、交流和直流电动机及步进电动机的驱动。所有内容围绕着密切联系实际的典型应用(开发)示例而进行和展开。《51单片机C语言编程一学就会》充分考虑初学者的特点,对程序可能存在的疑难点进行了详细解释。
《51单片机C语言编程一学就会》适合单片机的初学者作自学教材,也适合职业院校电类专业作培训教材,还适合作中职单片机技能大赛的辅导用书。
9.1步进电动机简介
步进电动机是一种将电脉冲转化为角位移的执行机构,即当步进电动机的驱动器接受一个脉冲信号时,它就驱动步进电动机按设定的方向转动一个固定的角度(称为步距角)。步进电动机的旋转是以固定的角度一步一步运行的(所以称为步进电动机)。我们可以通过控制脉冲的个数来控制电动机转过的角度,从而达到精确定位的目的,还可以通过控制脉冲的频率来控制步进电动机的转速或加速度,从而达到柔和调速的目的。
步进电动机没有积累误差。一般步进电动机步距角的误差为的3%~5%,且不积累。
步进电动机外表允许的最高温度:步进电动机温度过高会使电动机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电动机外表允许的最高温度应取决于不同电动机磁性材料的退磁点。一般来讲,磁性材料的退磁点都在130qC以上,有的甚至高达200~2以上,所以步进电动机外表温度在80~90℃是正常的。
步进电动机的力矩会随转速的升高而下降:当步进电动机转动时,电动机各相绕组的电感将产生一个反向电动势;频率越高,反向电动势越大。在它的作用下,电动机随频率(或速度)的增大而相电流减小,从而导致力矩下降。
步进电动机低速时可以正常运转,但若速度高于一定的值就无法起动,并伴有啸叫声。
步进电动机有一个技术参数:空载起动频率,即步进电动机在空载情况下能够正常起动的脉冲频率,如果脉冲频率高于该值,电动机不能正常起动,可能发生失步或堵转。在有负载的情况下,起动频率应更低。如果要使电动机达到高速转动,脉冲频率应该有加速过程,即起动频率较低,然后按一定加速度升到所希望的高频(电动机转速从低速升到高速)。
步进电动机是一种控制用的特种电动机,广泛用于各种开环控制。目前常用的步进电动机种类见表9.1。
……
前言
第1篇 入门篇
第1章 学习单片机的必备基础
1.1单片机的基本概念
1.1.1初步了解单片机
1.1.2熟悉51单片机的引脚功能
1.1.3理解单片机的最小系统
1.2不同数制及相互转换简介
1.2.1十进制数
1.2.2二进制数
1.2.3十六进制数
1.2.4八进制数
1.2.5各种数制之间相互转换的方法
1.3搭建51单片机开发环境
1.3.1硬件开发系统
1.3.2搭建软件开发环境(Keil μVision)
1.3.3Keil μVision4的最基本应用--第一个C51工程
第2章 花样流水灯和电动机的控制
2.1花样流水灯电路精讲
2.1.1花样流水灯电路原理图
2.1.2单片机控制花样流水灯工作原理简介
2.2相关的C51语言知识精讲
2.2.1数据类型概述
2.2.2常量和变量
2.2.3标识符和关键字
2.2.4C51的函数简介
2.2.5单片机C语言程序的基本结构
2.2.6再论局部变量与全局变量
2.2.7C语言的算术运算符和算术表达式
2.2.8关系运算符和关系表达式
2.2.9自增减运算符
2.2.10单片机的几个周期介绍
2.2.11while循环语句和for循环语句
2.2.12不带参数和带参数函数的写法和调用
2.3"位操作"控制流水灯
2.3.1编程思路
2.3.2参考程序
2.3.3部分程序代码详解
2.4字节控制(即并行I/O口控制)流水灯
2.4.1编程思路
2.4.2参考程序
2.5使用移位运算符控制流水灯
2.5.1逻辑运算符和位运算符
2.5.2使用移位运算符控制流水灯的编程示例
2.6使用库函数实现流水灯
2.6.1循环移位函数
2.6.2使用循环移位函数实现流水灯
2.7使用条件语句实现流水灯
2.7.1条件语句
2.7.2使用if语句实现流水灯
2.8使用swtich语句控制流水灯
2.8.1switch语句介绍
2.8.2使用swtich语句控制流水灯
2.9使用数组控制流水灯
2.9.1C51的数组
2.9.2使用数组控制流水灯
2.10使用指针控制流水灯
2.10.1指针的概念和用法
2.10.2使用指针控制流水灯
2.11开关与灯的灵活控制
2.11.1钮子开关控制单片机
2.11.2轻触按键控制单片机
2.12按钮控制电动机的起动、停止、顺序起动、正反转、PWM调速
2.12.1按钮控制直流电动机和交流电动机的起动和停止
2.12.2按键控制交流电动机的顺序起动和正反转
2.13典型训练任务
第3章 数码管数字钟
3.1数码管的显示原理
3.2数码管的静态显示
3.3数码管的动态显示
3.3.1YL-236单片机实训台数码管显示电路
3.3.2数码管动态显示入门示例
3.4数码管24h时钟
3.4.1单片机的中断系统
3.4.2定时器T0和T1工作方式1应用示例
3.4.3独立按键调时的数字钟
3.5典型训练任务
第4章 综合应用之物料传送机模拟装置
4.1物料传送机模拟装置
4.1.1物料传送机模拟装置简介
4.1.2硬件连接
4.1.3程序代码示例
4.2典型训练任务
第2篇 提高篇
第5章 单片机的串行通信
5.1串行通信的基础知识
5.1.1串行通信标准和串行通信接口
5.1.2波特率
5.1.3同步通信与异步通信简介
5.1.4硬件连接
5.1.5读写串行口数据
5.1.6串行控制与状态寄存器
5.1.7串行口的工作方式
5.2串口通信设置
5.2.1计算机端串口通信设置
5.2.2单片机端串口通信的设置
5.3单片机串口通信的基础程序范例
5.4串口通信应用示例(用串口校准时间的数字钟)
第6章 自动恒温箱
6.1自动恒温箱介绍
6.2LED点阵显示屏的应用
6.2.1LED点阵显示屏基础
6.2.2YL-236单片机实训台LED点阵显示屏
6.2.3LED点阵显示屏的编程
6.3DS18B20温度传感器
6.3.1DS18B20简介
6.3.2DS18B20的控制方法
6.3.3DS18B20的编程方法示例
6.4自动恒温箱的实现
6.5典型训练任务
第7章 温度及市电电压监测仪
7.1温度及市电电压监测仪介绍
7.2A-D转换
7.2.1A-D和D-A转换简介
7.2.2典型A-D转换芯片ADC0809介绍
7.2.3ADC0809应用示例(I/O口方式编程)
7.3LM35温度传感器的认识和使用
7.3.1LM35的外形及特点
7.3.2LM35的典型应用电路分析
7.3.3LM35的应用电路连接及温度转换编程
7.4LCD1602液晶显示器的认识和使用
7.4.1LCD1602液晶显示器引脚功能
7.4.2LCD1602模块内部结构和工作原理
7.4.3LCD1602的时序
7.4.4LCD1602指令说明
7.4.5LCD1602的编程
7.5电压源介绍
7.6电子温度计及市电电压监测仪的程序代码示例及分析
7.7知识链接D-A转换芯片DAC0832及应用
7.7.1DAC0832的内部结构和引脚功能
7.7.2YL236实训台D-A转换模块介绍
7.7.3ADC0832采用I/O方式编程示例
7.7.4ADC0832采用扩展地址方式编程示例
7.8典型训练任务
第8章 电子密码锁(液晶显示器、矩阵键盘的综合应用)
8.1电子密码锁简介
8.2矩阵键盘的应用方法
8.2.1矩阵键盘的结构
8.2.2矩阵键盘的编程方法--扫描法和利用二维数组存储键值
8.3LCD12864
8.3.1LCD12864的引脚说明
8.3.2YL-236单片机实训台LCD12864模块介绍
8.3.3LCD12864的读写时序和指令说明
8.3.4LCD12864的点阵结构
8.3.5LCD12864的指令说明
8.3.6LCD12864字模的获取
8.3.7LCD12864的应用示例
8.4电子密码锁的实现
8.4.1硬件连接及编程思路和技巧
8.4.2程序代码示例及讲析
8.5拓展
8.5.1LCD12864的跨屏显示
8.5.2带字库的LCD12864的显示编程
8.6典型训练任务
第9章 步进电动机的控制
9.1步进电动机简介
9.2步进电动机的参数
9.3YL-236实训台的步进电动机模块介绍
9.3.1步进电动机及驱动器
9.3.2步进电动机位移装置与保护装置
9.4步进电动机的控制示例
9.4.1步进电动机模块游标的归零
9.4.2步进电动机的定位
9.5典型训练任务
第10章 单片机I/O口的扩展
10.18255芯片的认识及应用
10.1.18255芯片的认识
10.1.28255芯片的典型应用示例
10.274LS245芯片及其应用
10.3端口复用的一些经验
10.3.1端口复用的一些具体策略
10.3.2使用8255芯片时单片机及8255芯片的端口分配建议
第3篇 综合应用篇
第11章 方便面生产线控制系统模拟
11.1方便面模拟生产线任务书
11.2方便面模拟生产线的实现
11.2.1方便面模拟生产线硬件模块接线和编程思路
11.2.2程序代码示例
11.3模块化编程
第12章 煤矿自动运输车模拟控制系统
12.1煤矿自动运输车模拟装置系统说明
12.2煤矿自动运输车模拟系统的实现
12.2.1煤矿自动运输车模拟系统硬件接线
12.2.2煤矿自动运输车模拟系统的程序代码示例及解释
附录 C51中的关键字