欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    51单片机C语言教程郭天祥PDF转word版第二章Word文档格式.docx

    • 资源ID:4321651       资源大小:3.27MB        全文页数:48页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    51单片机C语言教程郭天祥PDF转word版第二章Word文档格式.docx

    1、图2.1.6添加完单片机后的窗口界面到此为止,我们还没有建立好一个完整的工程,虽然工程名有了,但工程当中还没有任 何文件及代码,接下来我们添加文件及代码。(5)如图2.1.7所示,单击New菜单项,或单击界面上的快捷图标。新建文件后窗口界面如图2.1.8所示。图2.1.7添加文件图2.1.8添加完文件后的窗口界面此时光标在编辑窗口中闪烁,可以输入用户的应用程序,但此时这个新建文件与我们刚 才建立的工程还没有直接的联系,单击图标H,窗口界面如图2.1.9所示,在编辑框中,输入要保存的文件名,同时必须输入正确的扩展名。注意,如果用c语言编写程 序,则扩展名必须为.c;如果用汇编语言编写程序,则扩展

    2、名必须为.asm。这里的文件名不一 定要和工程名相同,用户可以随意填写文件名,然后单击图2.1.9保存文件(6)回到编辑界面,单击前面的“+”号,然后在选项上(7)单击右键,弹出如图2.1.10所示菜单。然后选择KAdd Files to Group Source Group F3菜单项, 对话框如图2.1.11所示。图2.1.10将文件加入工程的菜单图2.1.11选中文件后的对话框选中,单击,再单击按钮,然后我们再单击左侧前面的“ + ”号,屏幕窗口如图2.1.12所示。图2.1.12将文件加入工程后的屏幕窗口这时我们注意到文件夹中多了一个子项,当一个工程中有多个代码文件时,都要加在这个文件

    3、夹下,这时源代码文件就与工程关联起来了。通过以上(1)(6)步我们学习了如何在Keil编译环境下建立一个工程,在开始编写 程序之前,我们有必要先学习编辑界面上一些常用的按钮功能与用法。2.1.2常用按钮介绍按钮用于显示或隐藏项目窗口,我们可单击该按钮观察其现象,项目窗口如图2.1.13所示。按钮一用于显示或隐藏输出信息窗口,当我们进行程序编译时可查看输出信息窗口, 查看程序代码是否有错误,是否成功编译,是否生成单片机程序文件等。我们可单击该按钮 观察其现象,输出信息窗口如图2.1.14所示。按钮用于编译我们正在操作的文件。按钮用于编译修改过的文件,并生成应用程序供单片机直接下载。按钮用于重新编

    4、译当前工程中的所有文件,并生成应用程序供单片机直接下载。因 为很多工程有不止一个文件,当有多个文件时,我们可使用此按钮进行编译。按钮用于打开OprionsforTarget对话框,也就是为当前工程设置选项。使用该对话框可以对当前工程进行详细设置,关于该对话框的设置方法将在使用时再做详细讲解。以上是使用频率最多的几个按钮的功能,大家千万不要被一打开软件时呈现在眼前令人 的眼花缭乱的众多按钮所吓着哟。其他一些调试时用到的按钮等我们具体用到时再做介绍。2.2点亮第一个发光二极管大家是不是已经迫不及待地想编写程序了,接下来我们就用C语言编写一个点亮TX-1C 实验板上第一个发光二极管的程序。由于这是本

    5、书的第一个程序,看懂了它,也就意味着你 已经踏入了单片机C语言编程的第一道门槛,因此我们在这里要花些时间讲解它,大家一定 要有耐心,认真地弄明白它。我们先回到2.1节最后的编辑界面“part2一l.c”下,在当前编辑框中输入如下的C语言源程序,注意:在输入源代码时务必将输入法切换成英文半角状态。-例2.2.1 编写程序,点亮第一个发光二极管(part2_1.c P27 )#include /52系列单片机头文件sbit led1=P10; /声明单片机P1口的第一位void main() /主函数 led1=0; /*点亮第一个发光二极管*/ 在输入上述程序时,Keil会自动识别关键字,并以不

    6、同的颜色提示用户加以注意,这样 会使用户少犯错误,有利于提高编程效率。若新建立的文件没有事先保存的话,Keil是不会 自动识别关键字的,也不会有不同颜色出现。程序输入完毕后,如图2.2.1所示。我们暂且不要管这几句程序表示什么意思,先学会编译及错误处理,然后我再详细介绍 代码的含义。接下来我们编译此工程,看看程序代码是否有错误。先保存文件,再单击K全 部编译快捷图标圖。建议大家每次在执行编译之前都先保存一次文件,从一开始就养成良 好的习惯对你将来写程序有很大好处,因为进行编译时,Keil软件有时会导致计算机死机, 使你不得不重启计算机,若你在编写一个很大的工程文件时没有及时保存,那么重启后你将

    7、 找不到它的任何踪影,只得重写。虽然这种情况极少发生,但出于安全考虑,建议大家及时保存。编译后的屏幕如图2.2.2所示,我们重点观察信息输出窗口。在图2.2.2中,我们看到信息输出窗口中显示的是编译过程及编译结果。其过程含义如下: 创建目标“Target 1”以上信息表示此工程成功编译通过。当然,并不是每个用户第一次都能很顺利地编译成功,下面我们再故意改错一处,然后 再编译一次,来观察它的编译错误信息,并教大家如何查找错误。我们将程序中“ledl=0;/*点亮第一个发光二极管*/” 一行中的“;”删掉,然后将输入法 切换成中文输入,在中文输入状态下重新输入一个“;”,保存它,然后编译,如图2.

    8、2.3所示。从图2.2.3看出,编译过程出现了错误,错误信息有三处,分别为part2一l.c的第5, 5, 6 行,在一个比较大的程序中,如果某处出现了错误,编译后会发现有很多个错误信息,其实 这些错误并非真正的错误,而是当编译器发现有一个错误时,编译器自身已经无法完整编译完后续的代码而引发出更多的错误。解决办法如下:我们须将错误信息窗口右侧的滚动条拖 到最上面,双击第一条错误信息,可以看到Keil软件自动将错误定位,并且在代码行前面出 现一个蓝色的箭头。需要说明的是,有些错误连Keil软件自身也不能准确显示错误信息,更 不能准确定位,它只能定位到错误出现的大概位置,我们根据这个大概位置和错误

    9、提示信息 自己再查找和修改错误。双击图2.2.3中第一条错误信息后,显示如图2.2.4所示。可见在中文状态下,Keil软件代码区输入符号会出现错误,我们改正错误后再编译一次, 成功通过。现在我们回到Keil编辑界面,开始分析代码含义。知识点:reg52.h头文件的作用在代码中引用头文件,其实际意义就是将这个头文件中的全部内容放到引用头文件的位 置处,免去我们每次编写同类程序都要将头文件中的语句重复编写。在代码中加入头文件有两种书写方法,分别#include 和#includen”reg52.h”,包 含头文件时都不需要在后面加分号。两种写法区别如下:当使用包含头文件时,编译器先进入到软件安装文

    10、件夹处开始搜索这个头文件,也就 是KeilC51INC这个文件夹下,如果这个文件夹下没有引用的头文件,编译器将会报错。当使用双撇号” ”包含头文件时,编译器先进入到当前工程所在文件夹处开始搜索该头文 件,如果当前工程所在文件夹下没有该头文件,编译器将继续回到软件安装文件夹处搜索这 个头文件,若找不到该头文件,编译器将报错。reg52.h在软件安装文件夹处存在,所以我们 一般写成#include 。打开该头文件查看其内容,将鼠标移动到reg52.h上,单击右键,选择HOpen document 3,即可打开该头文件,如图2.2.5所示。以后若需打开工程中的其他头文件,也可采用这种方式。或者手动定

    11、位到头文件所在的文件夹也可。其全部内容如下:/*-REG52.HHeader file for generic 80C52 and 80C32 microcontroller.Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.-*/* BYTE Registers */sfr P0 = 0x80;sfr PI = 0x90;sfr P2 = OxAO;sfr P3 = OxBO; sfr PSW = OxDO;sfr ACC = OxEO;sfr B = OxFO;s

    12、fr SP =0x81;sfr DPL =0x82;sfr DPH =0x83;sfr PCON =0x87;sfr TCON =0x88;sfr TMOD =0x89;sfr TLO =0x8A;sfrTLl = 0x8B;sfr THO =0x8C;sfrTHl =0x8D;sfr IE =0xA8;sfr IP = =0xB8;sfr SCON =0x98;sfrSBUF =0x99;/* 8052 Extensions */ sfrT2CON = 0xC8;sfr RCAP2L = OxCA;sfr RCAP2H = OxCB;sfrTL2 =OxCC;sfr TH2 =OxCD;/*

    13、 BIT Registers */ /* PSW */sbit CY =PSW 7;sbit AC =PSW 6;sbit FO =PSW5;sbit RSI =PSW4;sbit RSO =PSW 3;sbit OV =PSW2;sbitP =PSWA0; 8052 only/* TCON */sbit TF1 =TCON7;sbit TR1 =TCON6;sbit TFO =TCON5;sbit TRO =TCON4;sbit IE1 =TCON3;sbit IT1 =TCON2;sbit IEO = TCON1;sbit ITO =TCON0;/* IE */ sbit EA =IE7;

    14、sbit ET2 =IE5; /8052 onlysbit ES = IE4;sbit ET1 =IE 3;sbit EX1 =IE2;sbit ETO = IE1;sbit EXO =IE0;/* IP */ sbit PT2 =IP5;sbit PS =IP4;sbit PT1 =IP 3;sbit PX1 =IP ;sbit PTO = IP1;sbit PXO =IP0;/* P3 */ sbit RD =P37;sbit WR =P3 6;sbitTI =P3 5;sbit TO =P34;sbit INTI =P33;sbit INTO=P32;sbit TXD = P31;sbi

    15、t RXD =P3 0;/* SCON */sbit SMO = SCON7;sbit SMI = SCON6;sbit SM2 = SCON5;sbit REN = SCON4;sbit TB8 = SCON 3;sbit RB8 = SCON2;sbitTI =SCON 1;sbit RI = SCON0;/* PI */sbit T2EX =P11; / 8052 only sbit T2 =P10; / 8052 only/* T2CON */ sbit TF2 = T2CON7;sbit EXF2 = T2CON6;sbit RCLK = T2CON5;sbit TCLK = T2C

    16、ON4;sbit EXEN2 = T2CON3;sbit TR2 = T2CON2;sbit C_T2 =T2CON1;sbit CP_RL2 = T2CON0;-从上面代码中可以看到,该头文件中定义了 52系列单片机内部所有的功能寄存器,用到 了前面讲到的sfr和sbit这两个关键字,“sfrP0=0x80;”语句的意义是,把单片机内部地址0x80 处的这个寄存器重新起名叫P0,以后我们在程序中可直接操作P0,就相当于直接对单片机内 部的0x80地址处的寄存器进行操作。说通俗点,也就是说,通过sfr这个关键字,让Keil编 译器在单片机与人之间搭建一条可以进行沟通的桥梁,我们操作的是POP,

    17、而单片机本身并 不知道什么是P0 口,但是它知道它的内部地址0x80是什么东西。说到这里我想大家应该 已经明白了,以后凡是编写51内核单片机程序时,我们在源代码的第一行就可直接包含该头 文件。在上面我们还看到,“sbit CY=PSW7;”语句的意思是,将PSW这个寄存器的最高位,重新命名为CY,以后我们要单独操作PSW寄存器的最高位时,便可直接操作CY,其他类同。讲完了头文件,接下来我们再回到编辑界面,紧接着头文件后面有“/.”,请看知识点。C语言中注释的写法在C语言中,注释有两种写法:(1) /.,两个斜杠后面跟着的为注释语句。这种写法只能注释一行,当换行时,又必须在新行上重新写两个斜扛。

    18、(2) /*/,斜扛与星号结合使用,这种写法可以注释任意行,即斜扛星号与星号斜扛 之间的所有文字都作为注释。 .所有注释都不参与程序编译,编译器在编译过程会自动删去注释,注释的目的是为了我 们读程序方便,一般在编写较大的程序时,分段加入注释,这样当我们回过头来再次读程序 时,因为有了注释,其代码的意义便一目了然了。若无注释,我们不得不特别费力地将程序 重新阅读一遍方可知道代码含义。养成良好的书写代码格式的习惯,经常为自己编写的代码 加入注释,以后定能方便许多。例2.2.1程序中接着往下看,“sbit ledl=Pl0;”语句的含义是,将单片机P0 口的最低位 定义为ledl。在TX-1C实验板

    19、上,8个发光二极管的阴极通过一个74HC573锁存器分别连接 至单片机的POD,若要控制某一个发光二极管,也就是要控制单片机P0 口的某一位,必定 要声明这一位,否则单片机肯定不知道我们要操作的是什么东东。需要注意的是,这里的P1 不可随意写,P是大写,若写成p,编译程序时将报错,因为编译器并不认识pl,而它只认 识P1,这是因为我们在头文件中定义的是“sfr Pl= 0x90;”。这也是大多初学者编写第一个程序时常犯的错误。例2.2.1程序中再往下就到了主函数mainO,无论一个单片机程序有多大,或多小,所有的单片机在运行程序时,总是从主函数开始运行,关于主函数的写法,我们看下一个知识点。m

    20、ain()主函数的写法格式:void main()注意:后面没有分号。特点:无返回值,无参数。无返回值表示该函数执行冗后不返回任何值,上面main前面的void表示“空”,即不返 回值的意思,后面我们会讲到有返回值的函数,到时大家一对比便会更加明白。无参数表示该函数不带任何参数,即main后面的括号中没有任何参数,我们只写“()” 就可以了,也可以在括号里写上void,表示“空”的意思,如void main(void)。任何一个单片机C程序有且仅有一个main函数,它是整个程序开始执行的入口。大家注 意看,在写完main()之后,在下面有两个花括号,这是C语言中函数写法的基本要求之一, 即在一

    21、个函数中,所有的代码都写在这个函数的两个大括号内,每条语句结束后都要加上分 号,语句与语言之间可以用空格或回车隔开。例如:void main() 总程序从这里开始执行;其他语句;例2.2.1程序中接下来我们看“ledl=0;”语句,也就是该程序中最核心的语句。在数字电 路中,电平只有两种状态:高电平,1;低电平,0。显然,该语句的意思是,让P1 口的最低 位清0。由于没有操作其他口,所以其余口均保持原来状态不变。那么为什么P1 口的最低位 清0,板上的第一个发光二极管就会亮呢?接下来我们再来讲解电路知识,TX-1C单片机实 验板上流水灯与单片机连接方法如图2.2.6所示。图2.2.6电路中,除

    22、单片机外,主要元件有三类:P2 (lkQ排阻)、D (18)(发光二极管)、U3 (74HC573锁存器),下面分别介绍。(1)排阻。通俗地讲,它就是一排电阻,图2.2.6中一共有8个发光二极管,每个管子上 串连一个电阻,然后在电阻的另一端接电源,因为8个管子接法相同,所以我们把8个电阻 的另一端全部连接在一起,这样一来,便共有9个引脚,其中一个称为公共端。图2.2.7和 图2.2.8是直插式和贴片式排阻的实物图。由电阻标号认知阻值一般在排阻上都标有阻值号,其公共端附近也有明显标记。如图2.2.7和图2.2.8中分别 为103和150,103表示其阻值大小为10 x 103Q,即10k欧,若是

    23、102其阻值大小为10 x 102Q, 即1 k欧,150为15 X 10欧,即15欧,其他读法都相同。我们有时也会看到标号为1002,1001等。1002表示100 x 102欧,即10k欧, 1001表示100 x lO1欧,即 lk欧。3位数表示与4位数表示的阻值读法我们都要会,标号位数不同,其电阻的精度不同, 一般地,3位数表示5%精度,4位数表示1%精度。TX-1C实验板上与发光二极管连接的是 102阻值的9引脚直插排阻。还有的标号如3R0,表示阻值为3欧, 4K7表示阻值为4.7k欧, R002表示阻值为0.002欧。(2)发光二极管。它具有单向导电性,通过5mA左右电流即可发光,

    24、电流越大,其亮度 越强,但若电流过大,会烧毁二极管,一般我们控制在320mA之间。在这里,给发光二极 管串联一个电阻的目的就是为了限制通过发光二极管的电流不要太大,因此这个电阻又称为“限流电阻”。当发光二极管发光时,测量它两端电压约为1.7V,这个电压又叫做发光二极管的“导通压降”。图2.2.9和图2.2.10分别为直插式发光二极管和贴片式发光二极管实物图。 发光二极管正极又称阳极,负极又称阴极,电流只能从阳极流向阴极。直插式发光二极管长脚为阳极,短脚为阴极。仔细观察贴片式发光二极管正面的一端有彩色标记,通常有标记的 一端为阴极。大家可观察TX-1C实验板上贴片发光二极管有一端有绿色标记,此标

    25、记即标识它是管子的阴极。关于排阻大小的选择:欧姆定律想必大家都清楚,U=IR,当发光二极管正常导通时,其两端电压约为1.7V,发光管的阴极为低电平,即0V,阳极串接一电阻,电阻的另一端为Vcc,为5V,因此加在电阻两端的电压为5V-1.7V=3.3V,计算穿过电阻的电流,3.3V/1000Q=3.3mA。即穿过发光管的电流也为3.3mA,若想让发光管再亮一些,我们可以适当减小该电阻。(3) 74HC573锁存器。它是一种数字芯片,由于数字芯片种类成千上万,我们不可能将 其全部记住,所以只能用一个学一个,然后弄明白它,日积月累,大家必将能灵活地设计出 各种电路。关于锁存器我们作为一个知识点来讲解。其直插式和贴片式实物图分别如图2.2.11 和2.2.12所示。知识点.锁存器图2.2.13为74HC573的引脚分布图,先对照引脚图分别介绍各个引脚的作用,的专业术语为三态允许控制端(低电平有效),通常叫做输出使能端,或输出允许端都可以;1D 8D为数据输入端;1Q8Q为数据输出端;LE为锁存允许端,或叫锁存控制端。图2.2.14为74HC573的真值表。真值表用来表示数字电路或数字芯片工作状态的直观特 性,大家务必要看明白。图2.2.14真值表中字母代码含义如下:H高电平


    注意事项

    本文(51单片机C语言教程郭天祥PDF转word版第二章Word文档格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开