产品详情
手把手教你学单片机的
C语言程序设计目录
第1章 概述
1.1 提高编制单片机应用程序效率最好的办法是采用C语言编程
1.2 C语言具有突出的优点。
第2章 单片机简史及实验器材简介
2.1 单片机的发展简史及特点
2.1 单片机的发展简史及特点
2.2 单片机C语言入门的有效途径
2.3 实验器材介绍
2.3.1 Keil C51 Windows集成开发环境
2.3.2 51 MCU DEMO试验板
2.3.3 并口下载器
2.3.4 16x2字符型液晶显示模组(带背光照明)
2.3.5 128x64点阵图型液晶显示模组(带背光照明)
2.3.6 5V高稳定专用稳压电源
第3章 Keil C51集成开发环境及并口下载软件介绍
3.1 Keil C51集成开发平台安装
3.2 并口下载软件使用
第4章 单片机的基本知识及第一个C51程序
4.1 MCS-51单片机的基本结构
4.2 80C51的基本特征及引脚定义
4.2.1 80C51的基本特征
4.2.2 80C51的引脚定义及功能
4.3 80C51的内部结构
4.4 80C51的存储器配置和寄存器
4.5 第一个C51演示程序及效果
4.5.1 建立一个工程项目,选择芯片并确定选项
4.5.2 建立C源程序文件
4.5.3 添加文件到当前项目组中及编译文件
4.5.4 检查并修改源程序文件中的错误
4.5.5 软件模拟仿真调试
4.5.6 下载程序(编程操作)
4.5.7 观察程序运行的结果
第5章 C语言程序的基本结构
5.1 用函数调用方式完成LED1~LED8这8个二极管实现D0、D2、D4、D6及D1、D3、D5、D7的交替点亮的实验,周期约1秒
5.1.1 源程序文件
5.1.2 程序分析解释
5.2 C语言程序的组成结构
5.3 只用主函数完成LED1~LED8这8个二极管实现D0、D2、D4、D6及D1、D3、D5、D7的交替点亮的实验,周期约1秒
5.3.1 源程序文件
5.3.2 程序分析解释
5.4 文件包含处理
5.5 通用的C语言程序组成结构
5.6 将程序的若干个函数保存在几个源程序文件中,最后再将它们连接在一起,实现D0、D2、D4、D6及D1、D3、D5、D7这8个二极管的交替点亮的实验,周期约1秒
5.6.1 实现方法
5.6.2 源程序文件
5.6.3 程序分析解释
5.7 将程序的若干个函数保存在几个源程序文件中,最后用文件包含的方法将它们连接在一起,实现D0、D2、D4、D6及D1、D3、D5、D7这8个二极管的交替点亮的实验,周期约1秒
5.7.1 实现方法
5.7.2 源程序文件
5.7.3 程序分析解释
第6章 C语言的标识符、关键字和数据类型
6.1 标识符和关键字
6.2 在51 MCU DEMO试验板上实现:使右侧4个LED数码管从左至右显示“1234”
6.2.1 实现方法
6.2.2 源程序文件
6.2.3 程序分析解释
6.3 数据类型
6.3.1 对数据类型的分析
6.4 在51 MCU DEMO试验板上实现:使8个LED数码管从左至右扫描显示“00000000”,每位数码管点亮1mS,即刷新频率125Hz
6.4.1 实现方法
6.4.2 源程序文件
6.4.3 程序分析解释
6.5 修改程序后在51 MCU DEMO试验板上实现:使8个LED数码管从左至右扫描显示“00000000”,每位数码管点亮1000mS,即刷新频率0.125Hz
6.6 变量的数据类型选择
6.7 数据类型之间的转换
6.8 无符号字符型变量值与无符号整型变量值相乘的实验
6.8.1 实现方法
6.8.2 源程序文件
6.8.3 程序分析解释
6.9 无符号整型变量值与无符号整型变量值相乘的实验
6.9.1 实现方法
6.9.2 源程序文件
6.9.3 程序分析解释
第7章 常量、变量及存储器类型
7.1 常量
7.2 在51 MCU DEMO试验板上实现乘法运算:两个乘数分别为常量与变量,其积在数码管上显示(最大显示到50)。
7.2.1 实现方法
7.2.2 源程序文件
7.2.3 程序分析解释
7.3 变量
7.4 存储器类型
7.5 在51 MCU DEMO试验板上实现两个局部变量val1、val2的显示:val1的值在右边的个、十位2个数码管上显示,从1到99变化。Val2的值在右边的百、千位2个数码管上显示,从1到99显示奇数。
7.5.1 实现方法
7.5.2 源程序文件
7.5.3 程序分析解释
7.6 在51 MCU DEMO试验板上实现全局变量globe_x的显示。两个子函数模块分别对全局变量globe_x进行加或减操作。
7.6.1 实现方法
7.6.2 源程序文件
7.6.3 程序分析解释
第8章 编译预处理及重新定义数据类型
8.1 宏定义
8.1.1 不带参数的宏定义
8.1.2 带参数的宏定义
8.2 在51 MCU DEMO试验板上实现两数相加并输出结果,变量的数据类型用宏定义的缩写形式。
8.2.1 实现方法
8.2.2 源程序文件
8.2.3 程序分析解释
8.3 使用带参数的宏定义进行运算,结果送51 MCU DEMO试验板显示。
8.3.1 实现方法
8.3.2 源程序文件
8.3.3 程序分析解释
8.4 文件包含
8.4.1 文件包含预处理命令的一般形式
8.4.2 文件包含使用注意
8.5 条件编译
8.6 重新定义数据类型
8.7 用typedef重新定义数据类型,变量val赋值后送51 MCU DEMO试验板,使板上的8个LED模拟彩灯闪烁。
8.7.1 实现方法
8.7.2 源程序文件
8.7.3 程序分析解释
第9章 运算符与表达式
9.1 算术运算符与表达式
9.2 进行数学运算并将结果在51 MCU DEMO试验板上输出显示。
9.2.1 实现方法
9.2.2 源程序文件
9.2.3 程序分析解释
9.3 关系运算符与表达式
9.4 在51 MCU DEMO试验板上实现输入数的大小比较及判断
9.4.1 实现方法
9.4.2 源程序文件
9.4.3 程序分析解释
9.5 逻辑运算符与表达式
9.6 赋值运算符与表达式
9.6.1 简单赋值运算
9.6.2 复合赋值运算符
9.7 在51 MCU DEMO试验板上实现逻辑判断
9.7.1 实现方法
9.7.2 源程序文件
9.7.3 程序分析解释
9.8 自增和自减运算符与表达式
9.9 在51 MCU DEMO试验板上进行自增运算a++和++b
9.9.1 实现方法
9.9.2 源程序文件
9.9.3 程序分析解释
9.10 逗号运算符与表达式
9.11 条件运算符与表达式
9.12 位运算符与表达式
9.13 在51 MCU DEMO试验板上,实现两个变量x、y的位运算,其结果输出到8个LED上显示
9.13.1 实现方法
9.13.2 源程序文件
9.13.3 程序分析解释
9.14 强制类型转换运算符与表达式
9.15 sizeof运算符与表达式
第10章 表达式语句与复合语句
10.1 表达式语句
10.2 在51 MCU DEMO试验板上进行复合语句的实验。
10.2.1 源程序文件
10.2.2 程序分析解释
10.2.3 小结
10.3 程序的结构化设计
10.4 条件语句与控制结构
10.5 在51 MCU DEMO试验板上,进行
if(条件表达式) 语句1
else 语句2 的实验
10.5.1 实现方法
10.5.2 源程序文件
10.5.3 程序分析解释
10.6 在51 MCU DEMO试验板上,进行
if(条件表达式1) 语句1
else if (条件式表达2) 语句2
else if(条件式表达3) 语句3
┊
else if(条件表达式n) 语句m
else 语句n 的实验
10.6.1 实现方法
10.6.2 程序文件
10.6.3 程序分析解释
第11章 switch/case开关语句
11.1 switch/case开关语句的组成形式
11.2 在51 MCU DEMO试验板上进行实验:输入年份year和月份month后,程序计算出该月有多少天day。
11.2.1 实现方法
11.2.2 源程序文件
11.2.3 程序分析解释
11.3 循环语句
11.3.1 while语句
11.3.2 do-while话句
11.3.3 for语句
11.4 用while语句求1+2+…+100的结果并将结果在51 MCU DEMO试验板上显示。
11.4.1 源程序文件
11.4.2 程序分析解释
11.5 用for语句求50~100之间的偶数之和并将结果在51 MCU DEMO试验板上显示。
11.5.1 源程序文件
11.5.2 程序分析解释
11.6 goto话句
11.7 break语句和 continue语句
11.7.1 break语句
11.7.2 continue语句
11.8 用for语句在51 MCU DEMO试验板上做一个0~9递增数值测试,当数值小于5时,用break语句结束循环。
11.8.1 源程序文件
11.8.2 程序分析解释
11.8.3 小结
11.9 用for语句在51 MCU DEMO试验板上做一个0~9递增数值测试,当数值小于5时,用continue语句结束本次循环(进入下一次循环)。
11.9.1 源程序文件
11.9.2 程序分析解释
11.9.3 小结
第12章 函数的定义
12.1 函数定义的一般形式
12.2 函数的参数和函数返回值
12.3 无参数函数、有参数函数、及空函数
12.3.1 无参数函数
12.3.2 有参数函数
12.3.3 空函数
12.4 函数调用的三种方式
12.4.1 函数语句调用
12.4.2 函数表达式调用
12.4.3 作为函数参数调用
12.5 对被调用函数的说明
12.6 在51 MCU DEMO试验板上实现参数传递的函数调用。数码管的低2位显示“3”和“8”。S1键按下后(即P3.2为低)调用交换子函数swap,使得数码管的低2位交换显示为“8”和“3”。
12.6.1 实现方法
11.6.2 源程序文件
12.6.3 程序分析解释
12.7 在51 MCU DEMO试验板上实现三个数按大小自动排列,数码管的百、十、个位自动显示a、b、c三个数中的最大、中间、最小值。
12.7.1 实现方法
12.7.2 源程序文件
12.7.3 程序分析解释
12.8 在51 MCU DEMO试验板上,设计一个能进行华氏-摄氏温度转换的仪器。用按键S1、S2输入华氏温度值,按下S4键后显示出对应的摄氏温度值。
12.8.1 实现方法
12.8.2 源程序文件
12.8.3 程序分析解释
第13章 数组
13.1 一维数组的定义
13.2 二维及多维数组的定义
13.3 字符数组
13.4 数组元素赋初值
13.5 数组作为函数的参数
13.6 在51 MCU DEMO试验板上,输入数字“5”、“6”、“7”、“8”,将它们存入数组shuzu[4],然后让它们在数码管上显示。
13.6.1 源程序文件
13.6.2 程序分析解释
13.7 在51 MCU DEMO试验板上,输入10个整数(0~999之间),输出其中的最大数。
13.7.1 源程序文件
13.7.2 程序分析解释
13.8 在51 MCU DEMO试验板上,用选择法将数组shuzu[10]中的10个整数(0~999之间)进行从小到大排序,然后让它们在数码管上依序显示。
13.8.1 源程序文件
14.8.2 程序分析解释
13.9 在51 MCU DEMO试验板上,做出模拟的花样广告灯显示。虽然只控制8个LED,但由此我们看到单片机在控制灯光照明变化方面的强大功能。
13.9.1 源程序文件
14.9.2 程序分析解释
第14章 指针
14.1 指针与地址
14.2 指针变量的定义
14.3 指针变量的引用
14.4 数组指针与指向数组的指针变量
14.5 指针变量的运算
14.6 指向多维数组的指针和指针变量
14.7 在51 MCU DEMO试验板上,分别采用直接引用变量和间接引用变量的方法,将变量值显示在数码管上
14.7.1 源程序文件
15.7.2 程序分析解释
14.8 在51 MCU DEMO试验板上,分别用下标法和指针法引用数组元素并在数码管上显示
14.8.1 源程序文件
14.8.2 程序分析解释
14.9 地址传递的函数调用
14.9.1 源程序文件
15.9.2 程序分析解释
14.10 用数组名作为函数的参数进行传递
14.10.1 源程序文件
14.10.2 程序分析解释
第15章 结构体、共用体及枚举
15.1 结构体的概念
15.2 结构体类型变量的定义
15.2.1 先定义结构体类型再定义变量名
15.2.2 在定义结构体类型的同时定义结构体变量名
15.2.3 直接定义结构体变量
15.3 关于结构体类型有几点需要注意的地方:
15.4 结构体变量的引用
15.5 结构体变量的初始化
15.6 结构体数组
15.7 指向结构体类型数据的指针
15.8 用指向结构体变量的指针引用结构体成员
15.9 指向结构体数组的指针
15.10 将结构体变量和指向结构体的指针作函数参数
15.11 共用体的概念
15.12 共用体类型变量的定义
15.12.1 先定义共用体类型再定义变量名
15.12.2 在定义共用体类型的同时定义共用体变量名
15.12.3 直接定义共用体变量
15.13 共用体变量的引用
15.14 枚举类型
15.15 在51 MCU DEMO试验板上,设计一个计时器(待显时间存放于结构体变量中)
15.15.1 实现方法
15.15.2 源程序文件
15.15.3 程序分析解释
15.16 在51 MCU DEMO试验板上,设计一个跑表(计时时间存放于结构体变量中)
15.16.1 实现方法
15.16.2 源程序文件
15.16.3 程序分析解释
15.17 在51 MCU DEMO试验板上,设计一个计时器(计时时间存放于共用体变量中)
15.17.1 实现方法
15.17.2 源程序文件
15.15.3 程序分析解释
15.18 做一个枚举类型的实验,在51 MCU DEMO试验板上,设计一个显示一星期内天数的装置
15.18.1 实现方法
15.18.2 源程序文件
15.18.3 程序分析解释
第16章 定时器计数器控制及C51编程
16.1 定时/计数器的结构及工作原理
16.2 定时/计数器方式寄存器TMOD和控制寄存器TCON
16.3 定时/计数器的工作方式
16.3.1 方式0
16.3.2 方式1
16.3.3 方式2
16.3.4 方式3
16.4 定时器/计数器的初始化
16.5 使用定时器T1以方式0使单片机产生周期为1000μS等宽方波脉冲实验(1000Hz音频),在P3.5输出驱动蜂鸣器发音
16.5.1 实现方法
16.5.2 源程序文件
16.5.3 程序分析解释
16.6 使用定时器T1以方式1计数实验,计数值送数码管显示。
16.6.1 实现方法
16.6.2 源程序文件
16.6.3 程序分析解释
16.7 使用定时器T0以方式2定时实验,使8个发光管每2分钟变换一次点亮方式(高、低互换)。
16.7.1 实现方法
16.7.2 源程序文件
16.7.3 程序分析解释
第17章 串行接口及C51编程
17.1 串行□的控制与状态寄存器SCON
17.2 特殊功能寄存器PCON
17.3 串行口的工作方式
17.3.1 工作方式0
17.3.2 工作方式1
17.3.3 工作方式2
17.3.4 工作方式3
17.4 波特率选择
17.4.1 方式0和方式2
17.4.2方式1和方式3
17.5 在51 MCU DEMO试验板上,进行单片机与PC机(个人电脑)的通信试验1。
17.5.1 实现方法
17.5.2 源程序文件
17.5.3 程序分析解释
17.6 在51 MCU DEMO试验板上,进行单片机与PC机(个人电脑)的通信试验2。
17.6.1 实现方法
17.6.2 控制指令的定义
17.6.3 源程序文件
17.6.4 程序分析解释
第18章 中断控制及C51编程
18.1 中断的种类
18.1.1 外中断
18.1.2 内中断
18.2 MCS-51单片机的中断系统
18.2.1 中断源及控制
18.2.2 中断响应及C51编程
18.2.3 80C51单片机的常用中断源和中断向量
18.3 编写80C51单片机中断函数时应严格遵循的规则
18.4 在51 MCU DEMO试验板上做外中断的实验
18.4.1 实现方法
18.4.2 源程序文件
18.4.3 程序分析解释
18.5 在51 MCU DEMO试验板上做定时中断的实验
18.5.1 实现方法
18.5.2 源程序文件
18.5.3 程序分析解释
18.6 用定时中断的方法去扫描点亮8个数码管组成的简易万年历
18.6.1 实现方法
18.6.2 源程序文件
18.6.3 程序分析解释
第19章 键盘接口技术及C51编程
19.1 独立式键盘
19.2 行列式键盘
19.3 独立式键盘接口的编程模式
19.4 行列式键盘接口的编程模式
19.5 键盘工作方式
19.6 独立式键盘输入实验
19.6.1 实现方法
19.6.2 源程序文件
19.6.3 程序分析解释
19.7 行列式键盘输入实验
19.7.1 实现方法
19.7.2 源程序文件
19.7.3 程序分析解释
19.8 扫描方式的键盘输入实验
19.8.1 实现方法
19.8.2 源程序文件
19.8.3 程序分析解释
19.9 定时中断方式的键盘输入实验
19.9.1 实现方法
19.9.2 源程序文件
19.9.3 程序分析解释
第20章 LED显示器接口技术及C51编程
20.1 LED数码显示器的构造及特点
20.2 LED数码显示器的显示方法
20.2.1 静态显示法
20.2.2 动态扫描显示法
20.3 静态显示实验
20.3.1 实现方法
20.3.2 源程序文件
20.3.3 程序分析解释
20.4 从P0口依次慢速(时间为0.1S)送显87654321这8个字的实验
20.4.1 源程序文件
20.4.2 程序分析解释
20.5 从P0口依次快速(时间为1mS)送显87654321这8个字的实验
20.5.1 源程序文件
20.5.2 程序分析解释
20.6 在51 MCU DEMO试验板上做一个实时时钟实验
20.6.1 实现方法
20.6.2 源程序文件
20.6.3 程序分析解释
第21章 IIC串行接口器件24C01及C51编程
21.1 EEPROM AT24CXX的性能特点
21.1.1 AT24CXX引脚定义
21.1.2 AT24CXX系列存储器特点
21.1.3 AT24CXX系列EEPROM的内部结构
21.2 AT24CXX系列EEPROM 芯片的寻址
21.2.1 从器件地址
21.2.2 应答信号
21.2.3 数据地址分配
21.3 写操作方式
21.3.1 字节写
21.3.2 页写
21.3.3 应答查询
21.3.4 写保护
21.4 读操作方式
21.4.1 立即地址读取
21.4.2 随机地址读取
21.4.3 顺序地址读取
21.5 读写AT24C01的相关功能子程序
21.5.1 启动读写时序子函数
21.5.2 停止操作子函数
21.5.3 应答子函数
21.5.4 8位移位输出子函数
21.5.5 读24C01A中a地址单元的数据
21.5.6 将RAM中b地址单元的数据写入24C01A中a地址单元中
21.5.7 延时子函数
21.6 在51 MCU DEMO试验板上做读写AT24C01的实验
21.6.1 实现方法
21.6.2 源程序文件
21.6.3 程序分析解释
21.7 具有断电后记忆定时时间的实时时钟实验
21.7.1 实现方法
21.7.2 源程序文件
20.7.3 程序分析解释
第22章 16x2点阵字符液晶模块及C51驱动
22.1 16x2点阵字符液晶显示器概述
22.2 液晶显示器的突出优点
22.3 16x2字符型液晶显示模块(LCM)特性
22.4 16x2字符型液晶显示模块(LCM)引脚及功能
22.5 16x2字符型液晶显示模块(LCM)的内部结构
22.6 液晶显示控制驱动集成电路HD44780特点
22.7 HD44780工作原理
22.7.1 DDRAM—数据显示用RAM
22.7.2 CGROM—字符产生器ROM
22.7.3 CGRAM—字型、字符产生器RAM
22.7.4 IR—指令寄存器
22.7.5 DR—数据寄存器
22.7.6 BF—忙碌标志信号
22.7.7 AC—地址计数器
22.8 LCD控制器的指令
22.8.1 清除显示器
22.8.2 光标归位设定
22.8.3 设定字符进入模式
22.8.4 显示器开关
22.8.5 显示光标移位
22.8.6 功能设定
22.8.7 CGRAM地址设定
22.8.8 DDRAM地址设定
22.8.9 忙碌标志BF或AC地址读取
22.8.10 写数据到CGRAM或DDRAM中
22.8.11 从CGRAM或DDRAM中读取数据
22.9 LCM工作时序
22.10 16x2点阵字符液晶模块与单片机的连接方式
22.11 16x2点阵字符液晶模块及C51驱动子程序
22.11.1 写命令到LCM子程序
22.11.2 写数据到LCM子程序
22.11.3 检测忙信号子程序
22.11.4 显示光标定位子函数
22.11.5 显示指定座标的一个字符(x=0~15,y=0~1)子函数
22.11.6 演示第二行移动字符串子函数
22.11.7 显示指定座标的一串字符子函数1
22.11.8 显示指定座标的一串字符子函数2
22.12 在51 MCU DEMO试验板上实现16x2LCM演示程序1
22.12.1 实现方法
22.12.2 源程序文件
22.12.3 程序分析解释
22.13 在51 MCU DEMO试验板上实现16x2LCM演示程序2
22.13.1 实现方法
22.13.2 源程序文件
22.13.3 程序分析解释
第23章 点阵图形液晶模块及C51编程
23.1 128x64点阵图形液晶模块特性
23.2 128x64点阵图形液晶模块引脚及功能
23.3 128x64点阵图形液晶模块的内部结构
23.4 HD61203特点
23.5 HD61202特点
23.6 HD61202工作原理
23.6.1 I/O缓冲器
23.6.2 输入寄存器
23.6.3 输出寄存器
23.6.4 显示存储器电路
23.6.5 XY地址计数器
23.6.6 显示起始行寄存器
23.6.7 Z地址计数器
23.6.8 显示开/关触发器
23.6.9 指令寄存器
23.6.10 状态字寄存器
23.6.11 显示数据锁存器
23.7 HD61202的工作过程
23.8 点阵图形液晶模块的控制器指令
23.8.1 显示器开关
23.8.2 设置页(x地址)
23.8.3 读状态
23.8.4 显示开始行
23.8.5 设置Y地址
23.8.6 写显示数据
23.8.7 读显示数据
23.9 HD61202的操作时序图
23.10 12864点阵图形液晶模块与单片机的连接方式
23.11 128x64点阵图形液晶模块及C51驱动子程序
23.11.1 判LCM忙子函数
23.11.2写指令到LCM子函数
23.11.3写数据到LCM子函数
23.11.4 设定起始行子函数
23.11.5 定位x方向、y方向的子函数
23.11.6 屏幕开启、关闭子函数
23.11.7 复位子函数
23.11.8 根据x、y地址定位,将数据写入LCM左半屏或右半屏的子函数
23.11.9 显示汉字子函数
23.12 在51 MCU DEMO试验板上实现128x64LCM演示程序1
23.12.1 实现方法
23.12.2 源程序文件
23.12.3 程序分析解释
23.13 在51 MCU DEMO试验板上实现128x64LCM演示程序2
23.13.1 实现方法
23.13.2 源程序文件
23.13.3 程序分析解释
第24章 AT89S51看门狗定时器原理及使用
24.1看门狗定时器原理
24.2 在51 MCU DEMO试验板上,进行看门狗实验1(看门狗启动后在程序中定时清除它):D0~D7的8个LED(发光管)依次流水点亮,形成“流水灯”实验
24.2.1 实现方法
24.2.2 源程序文件
24.2.3 程序分析解释
24.3 在51 MCU DEMO试验板上,进行看门狗实验2(看门狗启动后在程序中不再清除它,模拟程序失控的情况):D0~D7的8个LED(发光管)依次流水点亮,形成“流水灯”实验
24.3.1 实现方法
24.3.2 源程序文件
24.3.3 程序分析解释