单片机C语言案例教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-06 01:57:27

点击下载

作者:白炽贵,余明飞,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

单片机C语言案例教程

单片机C语言案例教程试读:

前言

中职学校机电类专业学生学习单片机技术,有利于提高中职学生的职业技能和就业创业能力,有利于中职学生的继续学习和终身学习。结合中等职业学校的教学实际和中职学生的学习特点,我们编写了这本《单片机C语言案例教程》。

学习从兴趣起步!兴趣是最好的老师!激发和发展学生的单片机学习兴趣,是本书的编写宗旨;强化单片机学习的操作和实践,是本书的编写风格。本书以“案例+项目”的形式展开中职学生单片机的学习开发过程。用案例为项目做铺垫,用项目整合案例,用项目向学生展现其学习价值和使用价值。

全书共13章。

第1章简要介绍了MCS-51单片机的内部结构和本书单片机学习板的电原理图及其印制电路板图,详细介绍了用Keil C51编译器和STC-ISP下载软件完成单片机编程的整个过程步骤,并用6个案例展示了C语言对单片机编程的易用性。

第2章集中介绍了单片机C语言编程的基本知识和简明方法,以作为全书各案例源程序分析时的理论依据,可以不按其小节顺序讲授。

第3章以数码管的花样显示为要求,用6个案例说明了单片机C语言编程中“谋篇布局”的思谋策略。

第4章简要介绍了中断的概念和单片机中的中断资源,用5个案例说明了如何设置中断允许寄存器IE和中断优先级寄存器IP,展示了如何使用两个外中断、两个内中断的具体方法,演示了中断嵌套和中断串接的特点。

第5章介绍了对三总线器件的编程要点,用一个案例展示了对三总线器件DS1302编程的软、硬件设计。

第6章介绍了对二总线器件的编程要点,用一个案例展示了对二总线器件AT24C02编程的软、硬件设计。

第7章介绍了对单总线器件的编程要点,用一个案例展示了对单总线器件DS18B20编程的软、硬件设计。

第8章介绍了单片机开发中的编程整合技术,即用“有时控功能和温度显示的电子钟”这一项目,展示了将三总线器件DS1302案例、二总线器件AT24C02案例、单总线器件DS18B20案例整合成一个产品项目的单片机学习开发技术。在这个项目中,还根据项目所需,综合使用了单片机中的四个中断资源。

第9章介绍了16×16点阵LED汉字显示屏的软、硬件设计。用16×16点阵LED汉字显示屏这一项目,展示了用C语言开发小型LED汉字显示屏的实用技术方案。2

第10章介绍了基于宏晶公司技术资料的STC单片机片内EPROM2编程技术。用一个案例演示了STC单片机片内EPROM的编程效果,用另一项目提升了“有时控功能和温度显示的电子钟”的开发价值。

第11章介绍了单片机与PC间的串行通信技术。用一个案例展示了单片机与PC间串行通信的实用方法及其效果。

第12章介绍了单片机扩充片外数据存储器的接口电路,用两个案例示范了HM62256和W29C020的硬件接口和读写技术,用两个项目展示了使用片外数据存储器的LED汉字显示屏的技术升级方案。

第13章介绍了模数转换和数模转换知识,用一个案例展示了ADC0809的接口电路和模数转换效果,用另一个案例展示了DAC0832的接口电路和数模转换效果。

除第2章外,本书各章均配有电子教案。每章的电子教案均按节的顺序组织。对书中的每一案例的下载操作和运行效果,电子教案中都制作有一段视频演示利于提高教学效果。

本书还有一篇讲解本书所用单片机学习板印刷电路图设计的电子教程,读者能在该电子教程的辅导下完成本书学习板电路的印制电路设计,设计出来的PCB与本书正文中的图1-4完全一致。这就能指导读者,全程走通,从单片机的程序设计,到单片机的项目开发,再到单片机的电路制版的整个单片机产品研制过程。

本书全书由重庆市綦江职业教育中心白炽贵统稿。第1~4章由罗永编写,第5~8章由余明飞编写,第9~13章由白炽贵编写。由于编者水平有限,书中难免有错谬之处,敬请广大读者指正。

本书配有电子教案、教学指南、案例源程序、习题解答、PCB制作电子教程和用于实际制版加工的PCB文件,能更多地满足读者在各方面的实用需求。请有此需要的教师登录华信教育网(www.hxedu.com.cn)免费注册后进行下载,有问题时请在网站留言板留言或与电子工业出版社联系(E-mail:hxedu@phei.com.cn)。有关本书的意见和问题,可以发送电子邮件至qjgbai@163.com。

编著者

2010年8月第1章 单片机基础1.1 单片机简介

单片机本身是一块集成电路芯片,包含几大组成部分,如图1-1所示。用它再增添很少的一些电子元件,就可构成一个单片机基本应用系统。大大小小的单片机系统都有最基本、最起码的操作,即用程序设计语言来对其编程,以实现其系统功能。学习单片机技术,最主要的任务就是把单片机组成具体应用系统,并对其编程来实现所需功能。单片机系列众多,本书只介绍MCS-51系列,书中各案例均采用STC89C52RC型单片机。

下面,先介绍常用的MCS-51单片机的各引脚名称,其引脚排列如图1-2所示。图1-1 MCS-51单片机内部结构图图1-2 MCS-51单片机引脚图(1)电源引脚。电源引脚VCC(40)、地GND(20)。(2)时钟电路引脚。XTAL1(19)、XTAL2(18)。(3)控制信号引脚。

① 复位信号RST(9):其作用是在单片机启动时,使系统从一个确定的初始状态开始运行。

② 锁存信号ALE(30):当访问外部存储器时,其输出用于锁存地址的低位字节。

③ 选通信号PSEN(29):外部程序存储器读选通信号。

④ 选择信号EA:当EA为高电平时,执行片内程序存储器,当EA为低电平时,执行片外程序存储器。(4)输入/输出引脚。输入/输出引脚共有32只,组成四个口,依次称为P0、P1、P2、P3。每口均为8位双向I/O端口。一般地,用“P0.0”表示P0口的第0位引脚,用“P0.1”表示P0口的第1位引脚,用“P3.3”表示P3口的第3位引脚,注意,“口”和“位”都从0开始编号。

所有对单片机编程的最终目的,就是让某些口的某些位,按需要输出高电平或低电平,以驱动被控电路。这32只I/O引脚,既可作为输出引脚,也可作为输入引脚,即程序也可从检测某引脚为高电平还是低电平,据此来判定程序流程该如何应对。1.2 用单片机芯片组成单片机应用系统

用STC89C52RC单片机芯片、四位LED数码管(共阳极)、六个PNP三极管、实时日历时钟芯片DS1302、存储器芯片AT24C02和串行接口芯片MAX232,再加上两个晶振和一些阻容元件,来组装一个单片机应用系统。组装时所用的电原理图如图1-3所示,根据原理图而设计的印刷电路图如图1-4所示。本书中各个案例中的源程序,都是按如图1-3所示的连接线路来考虑的。换在其他电路图版本的单片机应用系统上,可能没有相应的效果。

在原理图中,用相同的网络标识符来表示的电路各节点要相互连通。对照电路原理图和印刷电路图,把集成电路插座等元件对号入座地焊在电路板上,就能安装好本书实验所需的单片机学习板。在开始编程操作的第一次实训前,先掌握四位LED数码管的显示要领,从而掌握在单片机系统中的对数码管编程的基本方法。在我们即将开始的绝大多数单片机案例学习中,其程序运作的实况都要借助数码管的显示来反映。

单片机系统中四位数码管电路的具体线路如图1-5所示。这个电路图告诉我们,每位数码管由7个发光二极管组成,其7个发光二极管的正极是连接在一起(称为共阳极)而再接在PNP管的集电极上的。要使这些二极管正向导通而发光,一方面该PNP管的基极限流电阻左端必须加0电平(低电平),从而让该PNP管导通;另一方面还要让需发光的二极管的负极加0(低电平)电平,数码管中的发光二极管才能发光。图1-5中的“P0.0”、“P0.1”、“P2.0”、“P2.1”等,都是指单片机某I/O引脚。

从数码管的笔画组成图可知,要让数码管显示数码“1”,它的7个笔画中的b、c两笔画的发光二极管要点亮,而其余笔画的发光二极管应熄灭。由于a~g这7个笔画是顺次接在P0口的第0~6位引脚上的,这就需要P0口对应笔画b、c的引脚P0.1、P0.2输出0电平,而其余笔画对应的P0口其他引脚输出1电平。要让P0口输出满足这一要求的数字电平,只需在编程中使用一条“P0=0xf9;”语句即可。在C语言中,0x是十六进制数的标记。0x后面是具体的十六进制数码(0~9,a~f)。图1-3 单片机学习板电原理图图1-4 单片机学习板印制电路板图图1-5 四位数码管连接电路图

在上面式子中的“0xf9”,就是用两位十六进制数来设置P0口8个电极的输出电平。而这两位十六进制数的来历,是由7个笔画的显示要求来确定的。把笔画a、b、c、d、e、f、g依次排为由低位到高位的7位二进制数“gfedcba”。由于P0口的P0.7位接的是小数点的二极管的阴极,在不考虑小数点显示时,可在那7位二进制数的最左边添上一个1(不让小数点发亮),来构成8位二进制数“1gfedcba”。组成具体的8位二进制数时,把发光的笔画用0表示,把不发光的笔画用1表示即可。此后,再把所得的8位二进制数“11111001”,转换成两位十六进制数,也就是把高4位“1111”转换成十六进制的“f”,低4位“1001”转换成“9”,再在前面加上表示十六进制数的“0x”标记,就得到十六进制数0xf9。

经过上面的分析可知,要让数码管显示“2”,就得让笔画a、b、d、e、g发光而其余笔画不发光,因此在要表示成二进制的数码串“1gfedcba”中,a、b、d、e、g对应的位用0表示,其余的位用1表示,这就得到8位二进制数“10100100”,用十六进制数表示,就是“0xa4”,即只需有“P0=0xa4;”这一句,数码管就显示“2”。要显示“3”或其他的数码可以此类推。

从单片机电原理图上看到,四个数码管的同名笔画都是并接在一起的,因此,在同一时刻,只能显示同一数字。要让四个数码管显示出“1234”这种各位不同的数字,则需要四位数码管按位分时轮回重复显示,因此,每个数码管必须要都能被单独通电以受控制。正是这一原因,每个数码管的7个发光二极管共阳极引出线要接在一个PNP三极管的集电极上,且这个三极管的基极要接在P2口低四位中的一个电极上,从而可用对P2口低4位的位寻址变量赋0或赋1,来开通或关闭某位数码管的显示。1.3 对单片机编程以实现单片机系统的功能

单片机应用系统加电工作时,如果还没对单片机芯片编程,单片机系统还是不能达到使用目的,则必须用单片机编程语言对单片机先编入程序,让单片机按程序运行,单片机系统才能实现我们的意图。

对单片机编写程序可以采用汇编语言或C语言,即用键盘上的字符,按相应的语法规则来“打”成一篇“文章”,从而让单片机完全按照这篇“文章”的指挥来工作。对初学者而言,用C语言来学习单片机程序的编写,其起步与入门都要容易得多。下面,我们就用C语言,来对单片机编写一个简单程序,以实现单片机系统的一个简单功能。【案例1】在4位数码管的最左位上显示“8.”【源程序】【源程序要点提示】

程序的第1行称为预处理命令。“#”是预处理命令的标志,“include”是包含文件的预处理命令,“reg51.h”是所包含文件的文件名。

第2行是定义位寻址变量。“sbit”用来定义位变量,“qw”是被定义的位变量,P2表示单片机的I/O口2,“^0”指定P2口的第0位。这个定义就是用“qw”表示P2口的第0位。

第3~7行是程序的主函数。C程序是由若干个C函数组成的,其中必须有一个也只能有一个名为“main”的函数。main函数就是主函数。C语言中,函数由函数头和函数体这两部分组成。第3行称为函数头,第4~7行称为函数体,第4行的大括号“{”称为函数体的开始标志,第7行的“}”称为函数体的结束标志,开始标志与结束标志之间是若干语句。语句以分号“;”为结束标志。在C语言中,程序由函数组成,并由函数来实现程序的系统功能,函数则用其内的语句完成具体操作。

第5行是赋值语句。其中的符号“=”称为赋值号,它的作用就是把其右边的数值赋给其左边的变量。在此是把0值赋给P0,P0是单片机I/O口0的代名词。MCS-51单片机中,各I/O口都是8位的,语句“P0=0;”就是使I/O口0的8个I/O引脚全部输出低电平。

第6行也是赋值语句。qw是我们给I/O口2的最低位引脚取的代名词。语句“qw=0;”就是使口2的最低位引脚P2.0输出低电平。

这个程序运行时的所有功能,是由两个赋值语句具体实现的。赋值语句“P0=0;”使I/O口0的8个引脚,即单片机芯片的第39、38、37、36、35、34、33、32全部输出低电平,从而使四位数码管的所有(32只)发光二极管的负极均为低电平;赋值语句“qw=0;”使I/O口2的最低位引脚P2.0,即单片机芯片的第21脚为低电平,这就使单片机学习板上的PNP管Q3的基极为低电平而导通,从而使最左边位数码管的8只发光二极管正极为高电平。

于是,程序用两个赋值语句来实现了仅让最左边位置的七段数码管及其小数点发光,即四位数码管显示为“8.”。1.4 把程序写入单片机芯片的操作平台的操作步骤

随着单片机芯片制造业的发展,特别是我国单片机芯片产业的发展,把单片机程序写入单片机芯片的操作已经非常简单,即可以不必非要借助各种编程器来开发单片机系统了。本书所有案例中的单片机芯片,均采用是深圳宏晶科技有限公司生产的STC系列兼容单片机。该公司专门为其STC系列单片机配备了STC-ISP下载烧片编程软件,此软件可在该公司网站上下载。因此,对于STC系列单片机,借助PC,只须用Keil C51单片机软件来编译出相应格式的二进制文件,再用STC-ISP下载软件把其下载(烧写)到单片机芯片中,即可开发出单片机应用项目。

下面,首先简要介绍如何在PC上建立开发平台,然后再通过把案例1中显示“8.”的单片机C语言程序,最终写入STC89C52RC芯片并实际运行的过程,来说明完成单片机编程的一般步骤。

要在PC上建立单片机的开发平台,需要一个编译软件和一个下载(烧片)软件。本书选用Keil C51和STC-ISP。这两个软件都可从网上下载而得,同时,这两个软件的安装也很简单。PC的操作系统可用一般的Windows XP。

编程前要在D盘上建立一个名为“STC89C52”的文件夹,从而把操作过程中所产生的文件都存入其中,以便于管理。

在桌面上双击Keil的图标即可进入该软件的初始界面,如,图1-6所示。图1-6 Keil软件运行的初始界面

1.建立新nVisionz工程(1)在Keil中是以“工程”的形式来组织C51程序的。在图1-6中,单击菜单栏中的Project菜单中的子菜单New Project,如图1-7所示,弹出建立新nVisionz工程项目对话框,如图1-8所示。(2)在“保存在(I)”下拉列表框中选择D盘下的“STC89C52”文件夹,在文件名文本框中,输入工程名“STC89C52”,然后单击“保存”按钮。此时,系统将弹出CPU选择窗口,如图1-9所示。(3)在列表框中选择并展开“Atmel”,如图1-10所示。(4)在图1-10中往下拉滚动条,选中“AT89C52”,如图1-11所示。(5)选中后单击“确定”按钮。随后,在弹出的询问框中,选择“是(Y)”按钮即可。图1-7 建立Keil新工程的菜单操作图1-8 保存工程文件的操作界面图1-9 选择单片机品牌界面图1-10 选择单片机型号图1-11 选定AT89C52芯片

2.建立程序文件(1)在菜单栏中选择菜单命令“File”→“New”,此时在工作界面中会弹出文本编辑窗口,如图1-12所示。图1-12 文本编辑窗口(2)单片机程序的编写是在图1-12中完成的。此时,把在四位数码管左边显示“8.”的C源程序,从键盘上照着输入进去,如图1-13所示。图1-13 编辑程序代码(3)程序输入完成后,执行菜单命令“File”→“Save”,如图1-14所示。图1-14 保存源程序文件(4)在弹出“保存”对话框,在文件名文本框中输入相应的文件名“STC89C52.c”,如图1-15所示。图1-15 用“.c”扩展名保存程序文件

注意

这里必须输入C51源程序的扩展名“.c”来保存。

3.把程序文件加载到工程项目中(1)在Project Windows窗口内,展开Target 1后,右击Source Group1,如图1-16所示。(2)在图1-16的菜单中单击“Add Files to Group‘Source Group1’”,则弹出如图1-17所示的对话框。(3)选中“STC89C52.c”文件后单击“Add”按钮,再单击“Close”按钮,则加载工作结束。此时若展开Source Group1,就能看到STC89C52.c已经加入其中,如图1-18所示。

4.设置编译和链接环境(1)选择菜单命令“ProjectA”→“Option for Target‘Target1’”,如图1-19所示,设置编译选项。(2)弹出编译链接设置界面,如图1-20所示。(3)单击Output标签后,如图1-21所示,在复选框“Creat HEX Fi”上打“√”,其余可用默认值,单击“确定”按钮。图1-16 把程序文件加入工程图1-17 选择要加入工程的程序文件图1-18 加入工程后程序文件的显示图1-19 设置编译选项图1-20 编译选项设置操作图1-21 勾选生成.hex文件选项

5.编译成.hex文件

选择菜单命令“Project”→“Build all target files”,系统就将.c源程序文件编译成指定格式的.hex文件,如图1-22所示。图1-22 编译程序文件

图1-22的编译信息窗中最后一行告诉我们,源程序有0个错误和0个警告。这是最好的结果。有1个错误都不能通过编译,必须针对错误提示信息进行修改。对警告则可改可不改。

6.将产生的.hex文件下载到单片机芯片中(1)把单片机学习板上的电源和串口连线与PC接通,用鼠标依次单击“开始”→“程序”→“STC_ISP_V4.80”→“STC_ISP_V4.80”,即可进入STC-ISP.exe运行界面,如图1-23所示。(2)在MCU类型的下拉列表框中选择“STC89C52RC”,再单击“打开程序文件”按钮,弹出“Open file(*.hex or*.bin)”对话框,如图1-24所示。(3)在图1-24的下拉列表框中打开“D:\STC89C52”文件夹,随之就出现“STC8051.hex”文件,单击该文件后再单击“打开”按钮,就返回到下载界面,如图1-25所示。(4)单击“Download/下载”按钮,依据下载软件的提示,关闭一下单片机电源再打开,就可看到下载过程和进度,下载完成后,就可看到单片机四位数码管左边显示的“8.”。图1-23 运行界面图1-24 打开要下载的.hex文件图1-25 ISP下载操作界面1.5 从数码管显示学单片机编程

数码管是单片机系统中最基本、最简单的输出设备,从数码管的显示编程起步学单片机,最为直观和简单。让我们从玩转数码管的显示花样,来一步步地学习单片机C语言编程。从第1个只显示“8.”的C程序,逐步扩充成显示“8051”的C程序,从而逐步掌握单片机C语言编程的基本知识。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载