描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302490890丛书名: 清华开发者书库
《51单片机C语言学习之道》体系完善、循序渐进、深入浅出,从*简单的编程实例入手,通过大量具有代表性的实例讲述了51单片机C语言编程方法、硬件结构及应用。共分三篇:入门篇、应用篇、综合篇。入门篇主要讲解单片机的基础知识、C语言调试软件Keil的使用方法、C51函数的用法。应用篇讲解了定时计数器和中断的用法,并介绍了一些常用器件的驱动。综合篇则结合一些生产和生活的实例,介绍了一些实际应用中的单片机系统软硬件设计方法。
本书从*简单的编程实例入手,由浅入深、循序渐进地讲述了51单片机C语言编程方法、硬件结构及应用,可以帮助读者快速掌握51单片机。 本书共分三大部分: 入门篇、应用篇、综合篇。入门篇主要讲解单片机和C51的基础知识、C语言调试软件Keil的使用方法、C51函数的用法; 应用篇讲解了定时计数器和中断的用法,分章节讲解一些常用器件的驱动,如数码管、LCD、键盘、串行口、温度传感器、时钟芯片等; 综合篇则结合实例,介绍了一些实际应用中的单片机系统软硬件设计方法。 本书特点体系完善、由浅入深、实例丰富,可以帮助单片机爱好者快速上手,大量实例具有代表性,可以使读者通过学习举一反三,快速提高设计水平。书中大部分内容来自科研和教学实践,许多C程序代码都经过配套单片机学习板调试通过,可以直接应用于工程项目中。 本书可作为单片机爱好者和工科电类相关专业大学生的学习用书,既适用于51单片机初学者,也可以作为51单片机项目开发人员的参考书。
入门篇
第1章基础知识
1.1什么是单片机
1.2如何学好单片机
1.3单片机中的数制和数制转换
1.3.1单片机的数制
1.3.2不同数制之间的转换
1.4二进制的逻辑运算
1.5单片机中的常用编码
1.6单片机的引脚功能
1.7单片机的C51基础
1.7.1C语言的突出优点
1.7.2语言程序的基本结构
1.7.3数据类型
1.7.4C51中的运算符
1.7.5C51中的函数
思考题
本章小结
第2章Keil软件使用方法
2.1Keil μVision4的工作界面
2.2Keil μVision4的菜单栏
2.3Keil工程的建立
2.4Keil程序的调试
2.4.1启动执行菜单
2.4.2调试步骤与事项
2.4.3调试窗口介绍
2.5点亮一个发光二极管
2.5.1原地踏步指令的应用
2.5.2延时程序设计
2.6流水灯的控制
2.6.1延时子程序的应用
2.6.2移位指令的应用
2.6.3循环移位指令的应用
思考题
本章小结
应用篇
第3章单片机C语言开发基础
3.1运算符的应用
3.2C语言的语句
3.2.1if语句
3.2.2switch…case多分支选择语句
3.2.3do…while循环语句
3.3C语言的数组
3.3.1一维数组
3.3.2二维数组
3.3.3字符数组
3.3.4数组的应用
3.3.5数组作为函数参数
3.4C语言的指针
3.4.1指针的定义和引用
3.4.2指针的应用
3.4.3指针作函数参数的应用
3.4.4函数型指针的应用
3.5C语言的编译预处理
思考题
本章小结
第4章单片机的定时器/计数器和中断
4.1单片机的定时器/计数器
4.1.1基本概念
4.1.2结构及工作原理
4.1.3控制寄存器与功能设置
4.2单片机的中断
4.2.1基本概念
4.2.2中断系统的结构及控制
4.3定时器/计数器和中断的应用
思考题
本章小结
第5章数码管的显示及驱动
5.1数码管显示原理
5.2数码管的静态和动态显示
5.3数码管显示的编程实现
5.4数码管计时显示的实现
思考题
本章小结
第6章键盘接口技术
6.1独立式键盘
6.1.1工作原理
6.1.2独立式键盘的编程实现
6.2矩阵式键盘
6.2.1工作原理
6.2.2矩阵式键盘的编程实现
思考题
本章小结
第7章A/D和D/A的应用
7.1D/A转换器的工作原理与性能指标
7.2A/D转换器的工作原理与性能指标
7.3XPT2046芯片功能
7.4D/A转换器DAC0832
7.5A/D和D/A转换的实现方法
7.6A/D转换的编程
7.7D/A转换的编程
思考题
本章小结
第8章串行口的应用
8.1基本概念
8.2串行口的结构
8.3串行口控制寄存器
8.4工作方式与波特率设置
8.5串行通信的实现
8.5.1硬件实现
8.5.2软件实现
思考题
本章小结
第9章液晶显示器的驱动
9.1字符型LCD1602的工作原理
9.2LCD1602的软件编程实现
9.3图形LCD12864工作原理
9.4LCD12864的软件编程实现
思考题
本章小结
第10章常用功能器件的应用
10.1IIC总线AT24C02芯片的应用
10.1.1AT24C02的工作原理
10.1.2AT24C02的编程应用
10.2DS1302时钟芯片的应用
10.2.1DS1302时钟芯片的工作原理
10.2.2DS1302的编程应用
10.3温度传感器DS18B20的应用
10.3.1DS18B20的工作原理
10.3.2DS18B20的编程实现
10.4红外检测的应用
10.4.1红外检测原理
10.4.2红外检测的软件编程实现
10.5LED点阵显示的应用
10.5.1LED点阵显示原理
10.5.2LED点阵显示的编程实现
思考题
本章小结
综合篇
第11章综合应用设计
11.1电子琴的设计
11.1.1电子琴工作原理
11.1.2软件设计
11.2带闹铃的电子万年历设计
11.3温控器设计
11.4一氧化碳浓度报警器设计
11.4.1硬件选型
11.4.2报警器电路设计
11.4.3报警器软件设计
11.5比赛计分器的设计
11.5.1计分器的硬件设计
11.5.2计分器的软件设计
11.6十字路口交通灯模拟控制
11.6.1设计任务分析
11.6.2交通灯软件设计
本章小结
附录: 学习板说明
参考文献
单片机是芯片级的微型计算机系统,具有性价比高、功耗低、易于开发等优点,可以嵌入各种应用系统中,以实现智能化控制。近20年来,嵌入式C语言的推广普及,片载Flash程序存储器及其在系统内可编程(InSystem Programming,ISP)和在应用中编程(InApplication Programming,IAP)技术的广泛采用,使得单片机越来越受到广大电子工程师的欢迎。
C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。用C语言来编写程序会大大缩短开发周期,可以明显增加程序的可读性,便于改进和扩充。采用C语言进行单片机程序设计是单片机开发与应用的必然趋势。本书侧重于实际应用,从单片机的基础知识入手,按照由浅入深、循序渐进的方式,让读者能够快速掌握单片机C51的编程方法。
传统的单片机教程都是开篇即介绍大量的单片机软件和硬件知识,这些知识点信息量大、不容易记忆,提高了读者入门的难度。而本书则结合单片机学习板,对于每个知识点都以一边学习、一边编程和调试的方式,让读者在边学边做中增加单片机的学习兴趣,以降低入门难度,使读者快速上手。
本书内容丰富、实用性强、图文并茂,各章内容相对独立,脉络清晰,既方便初学者自学,又方便项目开发人员查阅资料。本书还提供了大量在学习板上已调试通过的程序,软件编排上注意由浅入深,减少重复性,信息量大,内容覆盖面广,程序完善,讲解翔实,特别有利于初学者深入理解C语言的编程思路。基于C语言的可移植性,这些程序可以直接应用到工程项目的开发中,缩短开发周期。
本书配套资源包括本书全部源程序代码和大量单片机软件开发所需的资料。同时,作者还可提供配套单片机学习板,可帮助读者边学边练,提高单片机开发实践能力,达到使读者快速掌握单片机的目的。
本书内容共分3篇,分别为入门篇、应用篇、综合篇,对各篇内容编排及学习建议如下:
入门篇主要讲解单片机和C51的基础知识、C语言调试软件Keil的使用方法、C51函数的用法。读者对于第1章单片机的有关基础知识可以简单了解; 第2章可以从2.5节的“点亮一个发光二极管”开始,学习Keil软件的使用方法,包括工程建立、程序的编译、软件的调试,在遇到问题时再回头查询软件具体用法,通过实例快速掌握软件; 第3章要注意以具体程序分析为主,通过实例深入理解函数的用法。
应用篇讲解了定时计数器和中断的用法,并分章节主要讲解了一些常用器件的驱动,如数码管、LCD、键盘、串行口、温度传感器、时钟芯片等。这些元器件是构成常用单片机系统的器件,掌握好这些器件的用法,对单片机系统设计很有必要。同时,这里也提供了大量经过实际调试通过的程序,基于C语言的可移植性,51单片机项目开发人员可以直接把其中的一些子程序用于自己的项目中,缩短开发周期。
综合篇主要列举了几个基于单片机的系统软硬件设计方法。这些实例综合了前面各章的知识,具有一定代表性。深入学习这些知识,对于单片机爱好者从事单片机开发会很有帮助。
在本书编写过程中参考了大量的51单片机原理及相关著作,在此向这些作者表示感谢!由于编者知识水平和经验有限,书中难免存在缺点和错误,敬请广大读者给予批评指正。作者的电子邮箱地址为splyc [email protected],您在使用本书过程中遇到任何问题都可进行咨询。
本书由孙鹏主编,同时为编写工作提供帮助的老师还有宋一兵、冯新宇、管殿柱、王献红、李文秋、张忠林、赵景波、曹立文、郭方方、初航等,在此一并感谢。
感谢您选择了本书,希望我们的努力对您的工作和学习有所帮助,也希望您把对本书的意见和建议告诉我们。
第3章 单片机C语言开发基础
1.7节已经介绍了C语言的结构、数据类型、运算符、函数,本章将主要通过C语言编程控制学习板上的流水灯,学习如何灵活运用C语言中的运算符、控制语句、数组、指针、预处理。本章内容可以说是对C51知识点的一个完整总结,内容较多,初学者全面掌握有一定难度。初学者对其中一些知识点可做简单了解,在后续章节的学习中再结合具体应用,以加深理解。
3.1运算符的应用
C语言中的运算符主要包括: 算术运算符、关系运算符、逻辑运算符、赋值运算符等。以下就是几个应用运算符来编程的实例。
【例31】用单片机实现乘法78×18的运算,并通过P2口的发光二极管分时显示结果的高八位和低八位状态。
分析: 先设置两个字符型变量i和j,将它们分别赋值为78和18,可以先计算它们相乘的结果为1404,等于十六进制数0x057C,在程序中用变量s保存它们相乘的这个结果。因为i和j的值小于255,所以用字符型变量保存即可; 变量s的值大于255并小于65535,所以必须保存为整型变量。相乘的十六位结果在八位并口P2上显示,只能把它拆成高八位和低八位分别显示,显示时,为区别高八位和低八位,它们中间让发光二极管全灭,并停顿1s。变量s高八位的二进制数是0000 0101B,因为发光二极管的状态是并口为高时熄灭,所以高八位送显示时,将有最低位、倒数第二位的灯熄灭,其他灯亮; 变量s低八位的二进制数是0111 1100B,当高八位送显示时,将有最高位、最低位两位灯亮,其他灯熄灭。我们可以把以下程序下载到学习板,观察显示状态是否正确。
#include
#define uint unsigned int //宏定义
#define uchar unsigned char
delay()
{
uint m,n;
for(n=110;n>0;n–);
}
void main()
{
uint s;//保存乘法结果
uchar i,j; //保存相乘的因数
i=78;
j=18;
s=i*j;
while(1)
{
P2=s/256; //取乘积的高八位送P2口显示
delay();
P2=0xff;
delay();
P2=s%256; //取乘积的低八位送P2口显示
delay();
}
}
程序中用指令“P2=s/256”取变量s的高八位送显示,指令右面的算式变量s除以256后取整,所以P2得到的是乘积的高八位。而用指令P2=s%256取变量s的低八位送显示,符号“%”表示取s和256相除的余数,即变量s的低八位。通过这个例子,我们练习了除法和取余运算的用法。如果修改程序中i和j所赋的初值,还可以得到其他情况下乘法运算的结果。
这个程序里用到了宏定义,宏定义的格式为:
#define 新名称 原内容
#define命令的作用是: 用“新名称”代替后面的“原内容”,一般用于“原内容”比较长,又在程序里反复用到的情况。这样如果在程序中出现“原内容”,就可以用一个比较简短的“新名称”代替,使程序的书写更加简化。例如,本例在程序开始已经做了宏定义“#define uint unsigned int”,在此宏定义的后面,所有应该写unsigned int的地方,都用uint代替了。同一个程序中,宏定义对一个内容只能定义一次。
【例32】用16个发光二极管显示除法运算结果。
在学习板上除了P2口接的8个发光二极管以外,P3口利用串并转换接口芯片74HC595也扩展了8个发光二极管。电路如图31所示。
图31发光二极管硬件驱动电路图注: 接地符号与软件界面截图保持一致,全书同。
该引脚产生一个上升沿,将刚才移入的数据在QA~QH端并行输出。由74HC595的工作原理可见,仅用了这一个芯片,就可以只占用单片机的3个I/O口(即P3.4~P3.6)来驱动8个发光二极管,大大节约了硬件资源。感兴趣的读者可以把例31中乘法运算的程序修改一下,结果在图31的16位发光二极管上显示出来。
假设本例中除法运算为“10÷6”结果只保留一位小数,结果中整数部分可以在P2口的发光二极管上显示,结果中,小数部分在74HC595扩展的发光二极管上显示。程序如下:






评论
还没有评论。