1、书 书 书前言单片机技术在家用电器、汽车电子、智能仪器、工业控制仪表等各个领域都有极为广泛的应用。单片机技术是电子工程师必须掌握的一门技术。近年来,作者一直致力于单片机课程的教学改革,通过精简和优化教学内容,在单片机课程教学中引入项目驱动教学法,构建理论与实践一体化的教学模式。该模式从学生实际出发,充分利用理论、实验、开放实验等有限的学时,注重单片机课程的实践性,建立了典型项目库,通过充分的实践引导学生循序渐进地掌握单片机的软硬件资源及工作原理。在总结教学改革成效的基础上,作者根据课程教学要求,以提高学生的实践动手能力和工程设计能力为目的,从应用的角度出发,采用C语言编程编写了本书。本书包括3
2、篇,依次为“准备篇”“基础篇”和“提升篇”。第1篇为准备篇,主要讲解单片机应用系统的开发流程和51单片机的主要开发工具及其使用方法,包括ARM公司的集成开发环境Keil uVision4,宏晶公司的STC-ISP的使用方法以及一款硬件学习载体51单片机学习板。通过学习本篇内容,读者将熟悉51单片机开发工具的使用,为后续学习做好准备。第2篇为基础篇,主要是基本功能模块实验,介绍了51单片机的主要基本功能模块,包括C51语言、51单片机I/O口基本功能、外部中断、定时器/计数器、串口通信、数码管显示控制以及独立按键和矩阵键盘的控制等,针对主要知识点设计有相应的实验内容。实验内容可采用软件仿真实现或
3、硬件实现。通过本篇内容的学习,读者将掌握51单片机主要基本功能模块的应用,这是后续完成完整系统设计的基础。第3篇为提升篇,主要是单片机的综合应用,其中包括五个综合实训项目,选取了基于51单片机的数字频率计设计、直流电机PWM脉宽调速、基于LCD1602液晶显示屏的矩阵键盘电子密码锁设计、基于DS18B20的温度报警器设计几个应用的设计实例,具有一定的代表意义和实用价值。本书的特色在于所有实验项目的安排都站在初学者的角度,遵循由易到难、循序渐进的原则,每个程序都有对应的硬件电路连接图,并对涉及的知识点进行了适当介绍,使读者更加容易理解,进而达到举一反三的目的。由于作者水平有限,书中难免存在纰漏,
4、敬请读者批评指正。如有意见请发至作者邮箱:yangchunli dali edu cn。作者2019年11月于大理1目录Part 1准备篇 51单片机开发工具介绍及使用1 1单片机应用系统开发流程简介21 2 Keil软件使用说明31 3 STC-ISP的使用说明121 4硬件载体 51单片机学习板13Part 2基础篇 51单片机基本功能模块实验2 1 I/O口的基本功能16 2 1 1实验目的16 2 1 2知识准备16 实验1点亮一个LED灯20 实验2点亮多个LED灯23 实验3单灯闪烁实验24 实验4流水灯实验272 2数码管显示31 2 2 1实验目的31 2 2 2知识准备31
5、实验5单个数码管显示33 实验6 LED数码管的静态显示34 实验7 LED数码管的动态显示36 实验8 LED数码管的自减382 3按键控制41 2 3 1实验目的41 2 3 2知识准备41 实验9独立按键控制数码管加减43 实验10 4路抢答器的设计47 实验11矩阵键盘控制数码管显示512 4外部中断54 2 4 1实验目的54 2 4 2知识准备54 实验12外部中断0的低电平触发方式571 实验13外部中断0、外部中断1混合使用592 5定时器/计数器及定时器中断64 2 5 1实验目的64 2 5 2知识准备64 实验14定时器/计数器产生方波67 实验15定时器/计数器T0、T
6、1控制数码管加减68 实验16交通灯的设计实验712 6单片机串口通信75 2 5 1实验目的75 2 5 2知识准备75 实验17串行口的工作方式077 实验18串行口的工作方式1向电脑发送数据79 实验19串行口的工作方式1从电脑接收数据812 7 LCD1602字符型液晶显示85 2 7 1实验目的85 2 7 2知识准备85 实验20 LCD1602液晶显示屏的静态显示89Part 3提升篇 51单片机系统综合运用实验实训1基于51单片机的数字频率计设计96实训2直流电机PWM脉宽调速实验100实训3基于LCD1602液晶显示屏的矩阵键盘电子密码锁设计105实训4基于DS18B20的温
7、度报警器设计113附录附录A 51单片机学习板原理图128附录B头文件129附录C头文件132附录D C51库函数133参考文献1412Part 1准备篇 51单片机开发工具介绍及使用本篇是51单片机开发的准备篇,主要讲解单片机应用系统的开发流程和51单片机的主要开发工具,包括ARM公司的集成开发环境Keil Vision4、宏晶公司的STC-ISP的使用方法以及一款硬件学习载体 51单片机学习板。通过学习本篇内容,读者将熟悉51单片机开发工具的使用,为后续学习做好准备。1 1单片机应用系统开发流程简介单片机应用系统是指以单片机为控制核心,配以一定的外围电路,能够实现一定功能的系统。一旦单片机
8、系统产品研发完成,软件就固化在硬件环境中。单片机软件是针对相应的单片机硬件系统开发的,是专用的。任何一个单片机系统产品都是软件和硬件的逻辑结合体,用户必须根据产品对系统功能、性能参数的要求,对软件和硬件统一考虑进行设计开发,才能达到最佳效果。开发设计单片机应用系统主要包括以下几个步骤(如图1 1 1所示):第一,项目分析、拟订设计方案;第二,根据拟订的设计方案进行软件、硬件设计;第三,系统联调、测试,结合项目要求修改软件、硬件设计,直至完全符合要求。图1 1 1单片机应用系统开发流程2单片机原理与应用实验指导(C语言版)1 2Keil软件使用说明Keil是美国Keil Software公司出品
9、的一套非常好用的8051系列单片机软件开发系统。Keil提供了包括C编译器、宏汇编、连接器、项目管理器和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。如果使用C语言编程,那么Keil几乎就是不二之选,即使不使用C语言而使用汇编语言编程,Keil方便易用的集成环境、强大的软件仿真调试工具也会令用户事半功倍。在后面的学习中,我们对Keil和Vision4两个术语不做严格的区分,一般多称呼为Keil Vision4,包含Vision4集成开发环境之意。Keil软件启动后,呈现的编辑状态的操作界面,如图1 2 1所示。图1 2 1 Keil
10、Vision4软件编辑状态下的操作界面Keil Vision4的项目开发流程主要包含以下步骤:运行Keil Vision4;创建项目文件;创建程序文件并保存;将源文件添加到项目文件中;编写程序代码;创建Hex文件;编译项目。下面以利用Keil Vision4创建一个LED程序为例,介绍使用Keil Vision4的项目开发流程。运行Keil Vision4。首先双击Keil Vision4文件图标,会弹出Keil界面,如图1 2 2所示。3Part 1准备篇 51单片机开发工具介绍及使用图1 2 2 Keil界面接着会自动进入Keil Vision4的开发环境,如图1 2 3所示。图1 2 3
11、 Keil Vision4开发环境创建项目文件。运行【Project】菜单中的【New Vision Project】,接着会弹出【Create New Project】对话框,如图1 2 4所示。我们可以选择工程需要保存的路径,输入工程文件名,然后点击【保存】按钮。4单片机原理与应用实验指导(C语言版)图1 2 4新建工程接下来会弹出如图1 2 5所示对话框,选择单片机的生产厂家以及型号。图1 2 5选择单片机厂家以及型号5Part 1准备篇 51单片机开发工具介绍及使用我们这里选择【Atmel】公司的【AT89C52】芯片,在如图1 2 6所示对话框的【De-scription】中可以看到
12、该单片机资源的简单介绍,然后点【OK】即可。图1 2 6选择相应的单片机接下来会弹出一个是否需要添加启动代码的对话框,如图1 2 7所示。我们这里选择【是】即可。添加进入工程的启动代码为“STARTUP A51”。图1 2 7添加启动代码6单片机原理与应用实验指导(C语言版)如图1 2 8所示,我们的工程已经创建成功了。图1 2 8工程创建成功创建程序文件并保存。工程创建完成后,接着我们来创建程序文件。单击【File】菜单中的【New】选项,或者单击界面上的快捷图标,然后会弹出如图1 2 9所示的界面。图1 2 9创建新文件单击【File】菜单中的【Save】选项,或者单击界面上的快捷图标,会
13、弹出如图1 2 10所示的对话框。在【文件名】中,我们输入相应的文件名(建议文件名和工程名起为相同的主名)。如果用C语言编写代码,则扩展名必须为 c,如图1 2 10所示;如果用汇编语言编写代码,则扩展名为 asm。最后点击【保存】按钮。7Part 1准备篇 51单片机开发工具介绍及使用图1 2 10保存文件将源文件添加到项目文件中。在左边工程窗口中用右键点击【Source Group 1】,在下拉菜单中选择【Add Files to Group Source Group I,如图1 2 11所示。图1 2 11将文件添加到工程菜单选择在如图1 2 10所示界面中保存的相应的C文件,单击【Ad
14、d】按钮,最后单击【Close】按钮,如图1 2 12所示。8单片机原理与应用实验指导(C语言版)图1 2 12选择要添加的文件编写程序代码。在文件编辑窗口中,编写程序代码,如图1 2 13所示。图1 2 13编写程序代码创建HEX文件。用右键单击工程窗口【Target1】下拉菜单中的【Options for TargetTarget 1】或者单击界面上的,如图1 2 14所示,在弹出的菜单中,选择【Output】选项,然后勾选【Create HEX File】,最后点【OK】,如图1 2 15所示。9Part 1准备篇 51单片机开发工具介绍及使用图1 2 14进入设置设备选项图1 2 15
15、勾选“Create HEX file”选项编译项目。单击如图1 2 16所示的工具栏上的【Build】按钮或【Rebuild】按钮,如果系统提示如图1 2 17所示的“0 Error(s),0 Warning(s)”,则表示系统编译成功(程序消除了语法错误,但不能保证没有逻辑错误);如果系统提示如图1 2 18所示的“Target not created”,则提示仍有错误,需根据错误指示修正源代码。代码修改后再次点击【Rebuild】按钮 重新编译,直至编译成功。01单片机原理与应用实验指导(C语言版)图1 2 16编译文件图1 2 17编译成功图1 2 18程序有错误系统编译成功后,会自动生
16、成扩展名为 hex的文件。HEX文件(全称Intel HEX)是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和常量数据的十六进制编码数字组成。Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。大多数EPROM编程器或模拟器使用Intel HEX文件。我们可以通过相应的烧录软件(如PROGISP或STC-ISP等)把HEX文件烧写到单片机的ROM中,让单片机按照我们编写的代码进行运行。11Part 1准备篇 51单片机开发工具介绍及使用1 3STC-ISP的使用说明本节以STC-ISP 4 83为例,介绍用STC-ISP下载STC90C516RD+单片机软件的方法。点击桌面上的快捷图标,打开STC-ISP 4 83软件,界面如图1 3 1所示。图1 3 1 STC-ISP 4 83软件界面使用步骤:在Select MCU Type中选择单片机芯片型号,我们这里选择STC90C516RD+。在Open File/打开文件下点击【打开程序文件】按钮,选择你要下载