《C51单片机应用与C语言程序设计.docx》由会员分享,可在线阅读,更多相关《C51单片机应用与C语言程序设计.docx(160页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录前言错误!未定义书签。第一章 C5!单片机编程环境与机器人智能1单片机与C51系列单片机1机器人与C51单片机3任务 获得软件4任务二 安装软件5任务三硬件连接5任务四 你的第一个程序6printf 函数12C语言数据类型14常量14变量14运算符15表达式15任务五做完实验关断电源16工程素质和技能归纳16科学精神的培养16第二章单片机输出接口与伺服电机控制17C51单片机的输入/输出接口17任务 单灯闪烁控制18while 语句20任务二机器人伺服电机控制信号21任务三 计数并控制循环次数23for语句23任务四 用你的计算机来控制机器人的运动27scanf 函数28工程素质和技能归
2、纳29科学精神的培养29第三章 C语言函数与机器人巡航控制31任务基本巡航动作31任务二 匀加速/减速运动36任务三用函数调用简化运动程序38任务四高级主题用数组建立复杂运动43字符型数据43数组45switch 语句48工程素质相技能归纳50科学精神的培养50第四章 单片机输入接口与机器人触觉导航51触觉导航与单片机输入接口51任务一 安装并测试机器人胡须51位操作符53if语句54?操作符54任务二通过胡须导航57关系与逻辑运算符58任务三机器人进入死区后的人工智能决策62工程素质和技能归纳66科学精神的培养66第五章C51输入/输出接口与红外线导航67使用红外线发射和接收器件探测道路67
3、任务 搭建并测试IR发射和探测器对68任务二探测和避开障碍物72任务三 高性能的IR导航76do.while 句78任务四俯视的探测器79工程素质和技能归纳84科学精神的培养84第六章机器人的距离检测85用同样的IR LED/探测电路检测距离85任务一定时/计数器的运用85任务测试扫描频率89任务三 尾随小车92任务四跟踪条纹带98工程素质和技能归纳101科学精神的培养101第七章 机器人中UART的应用102串口控制寄存器SCON103RS232电平与TTL电平转换103任务编写串口通信程序104串口工作流程108工程素质和技能归纳109科学精神的培养109第八章LCD应用编程及与机器人的集
4、成技术110 、L.CO、NM .a.110任务二 编写LCD模块驱动程序113指针117任务三 用LCD显力机器人运动状态118C语言的编译预处理118工程素质和技能归纳125科学精神的培养125丿;一 4 /第育匕*(*(*.*(*.*(* 126多传感器智能机器人的设计目标126任务 多传感器信息与C语言结构体的使用和编程126结构体126任务二智能机器人的行为控制策略和编程133工程素质和技能归纳138科学精神的培养138附录AC语言概要归纳139附录B微控制器原理归纳149附录C无焊锡面包板153附录DLCD模块电路156附录E本讲义所使用机器人零配件清单157第一章C51单片机编程
5、环境与机器人智能单片机与C51系列单片机什么是单片机?台能够工作的计算机要有这样儿个部份:CPU (Central Processing Unit,中央处理单 元:进行运算、控制)、RAM (Random Access Memory,随机存储器:数据存储)、ROM (Read Only Memory,只读存储器:程序存储)、输入/输出设备(串行口、并行等)。在个人计算 机上这些部份被分成若干块芯片或者插卡,安装一个称之为主板的印刷线路板上。而在单片 机中,这些部份全部被做到块集成电路芯片中,所以就称为单片机。学习单片机有必要吗?与我们经常使用的个人计算机、笔记本电脑相比,单片机的功能是很小的,
6、那学它干啥 吗?实际生活中并不是任何需要计算机的场合都要求计算机有很高的性能,比如空调温度的 控制,冰箱温度的控制等都不需要很复杂高级的计算机。应用的关键是看是否够用,是否有 很好的性能价格比。单片机凭借体积小、质量轻、价格便宜等优势,已经渗透到我们生活的各个领域:导弹 的导航装置、飞机上各种仪表的控制、工业自动化过程的实时控制和数据处理、广泛使用的 各种智能IC卡、民用豪华轿车的安全保障系统、录象机、摄象机、全自动洗衣机、程控玩 具、电子宠物等等。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,単片机的学习、开发与应用将造就一批计算机应用、嵌入式系统设计与智能化控 制的科学家、工程
7、师,同时,学习使用单片机也是了解通用计算机原理与结构的最佳选择。C5I系列单片机提到单片机,你就会经常听到这样些名词:MCS51, 8051、C51等等,它们之间究 竟是什么关系呢?MCS5I是指由美国INTEL公司生产的系列单片机的总称。这系列单片机包括了好 些品种,如8031, 8051, 8751等,其中8051是最典型的产品,该系列单片机都是在8051 的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单 片机。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051 为核心的单片机,当然,功能或多或少有些改变,以满足不同的
8、需求。其中较典型的款单 片机AT89c51 (简称C51)由于由美国ATMEL公司以8051为内核开发生产。本教材使用 的AT89S52单片机是在此基础上改进而来。AT89s52是种高性能、低功耗的8位单片机,内V 8k字节ISP(In-system Programmable, 系统在线编程)可反复擦写1000次的FLASH只读程序存储器,器件采用ATMEL公司的高 密度、非易失性存储技术制造,兼容标准MCS51指令系统及其引脚结构。在实际工程应用 中,功能强大的AT89S52已成为许多高性价比嵌入式控制应用系统的解决方案。什么是单片机的位数?现在市场上闹得沸沸扬扬的微软新推出的系统VISTA
9、是64位操作系统:大家常用的系WIN DO W5 XP. WIN DO WS 2003等,上32位操作系统;这里你将用到的单片机AT89s52 是8位的,而有些厂家生产的单片机则是16位的。那么,这些位数:64、32、16、8代表 什么意义呢?简单地说,这些位数指的是CPU能一次处理的数据的最大长度。当然,这里的位是指 二进制的位,而非十进制的位。AT89S52是8位的单片机,意味着它如果要处理16位数据 的话就应该分两次处理。嵌入式系统嵌入式系统是指嵌入到工程对象中能够完成某些相对简单或者某些特定功能的计算机 系统。与从8位机迅速向16位、32位、64位过渡的通用计算机系统相比,嵌入式系统有
10、其 功能的特殊要求和成本的特殊考虑,从而决定了嵌入式系统在高、中、低端系统三个层次共 存的局面。在低端嵌入式系统中,8位单片机从20世纪0年代初期诞生至今还一直在业 生产和日常生活中广泛使用。嵌入式系统嵌入到对象系统中,并在对象环境下运行。与对象领域相关的操作主要是对 外界物理参数进行采集、处理,对对象实现控制,并与操作者进行人机交互等。鉴于嵌入式低端应用对象的有限响应要求、嵌入式系统低端应用的巨大市场以及8位机 具有的计算能力,可以预测在未来相当长的时间内,8位机仍然是嵌入式应用中的主流机型。早期的单片机应用程序开发通常需要仿真机、编程机等配套工具,要配置这些工具需要 笔不小的投资。木教材采
11、用的AT89s52,不需要仿真机和编程机,只需运用ISP电缆就可 以对单片机的FLASH反复擦写1000次以上,因此使用起来特别方便简单,尤其适合初学 者使用,而且配置十分灵活,可扩展性特别强。In-system Programmable (ISP,系统在线编程)In-system programmable是指用户可把编译好的程序代码通过条“下载线直接写 入到器件的编程(烧录)方法,已经编程的器件也可以用1SP方式擦除或再编程。ISP所用 的下载线”并非不需要成本,但相对于传统的“编程器”成本已经大大下降了。通常FLASH 型芯片会具备ISP下载能力。本教材将引导你如何运用AT89S52作为机
12、器人的大脑制作一款教育机器人,并采用C 语言对AT89S52进行编程,使机器人实现下述四个基本智能任务:1 .安装传感器以探测周边环境;2 .基于传感器信息做出决策:3 .控制机器人运动(通过操作带动轮子旋转的电机);4 .与用户交换信息;通过这些任务的完成,使你在无限的乐趣之中,不知不觉地掌握C51单片机原理与应 用开发技术,以及C语言程序设计技术,轻松走上嵌入式系统开发之路。为了方便单片机微控制器与电源、ISP下载电缆、串口线以及各种传感器和电机的连接, 需要制作一个电路板,并将单片机插在教学板上,如图1T所示。本教材将此电路板叫做教 学板。图!-1 C51单片机教学板c贝车毕 uuu d
13、epush, cow机器人与C51单片机图1-2所示的是本教材使用的机器人工程对象,它采用AT89s52单片机作为大脑,通过 教学板安装在机器人底盘匕本教材将以此机器人作为典型工程对象,完成上节提到的机器 人所需具备的四种基本能力,使机器人具有基本的智能。本教材假设你已经学习过基础机 器人制作课程,并已经组装好该机器人的机械套件和伺服电机,且已经调试好了机器人伺 服电机的零点。如果没有学习过基础机器人制作与编程,也不要紧,可以在边学习该课 程的同时,参考基础机器人制作与编程的相关章节,在后面的任务中,如果需要,会给 出相关指引。图1-2采用C51单片机的机器人本章首先通过以下步骤告诉你如何安装
14、和使用C51单片机的C语言编程开发环境,如何 开发第一个简単机器人程序,并在机器人上如何运行你写的这个程序。本章的具体任务包括:寻找并安装开发编程软件连接机器人到电池或者供电的电源连接单片机教学板ISP接口到计算机,以便编程连接单片机教学板串行接口到计算机,以便调试和交互运用C语言初次编写少量的程序,运用编译器编译生成可执行文件,然后下我到单片 机上,通过串口观察机器人上的单片机教学板的执行结果完成后断开电源任务获得软件在本课程的学习中,你将反复用到三款软件:KeiluVision2IDE集成开发环境、SL ISP 下载软件、串口调试软件等。1. Keil uVision2 IDE集成开发环境
15、该软件是德国KEIL公司出品的51系列単片机C语言集成开发系统。如果你已经学习过 基础机器人制作与编程,并掌握了 PBASIC语言编程思想和基本技能,你将会发现,C 语言在语法结构上更加灵活,功能更加强大,但同时学习和理解起来也稍困难些。你可以在KEIL公司的网站上获得该软件的安装包。2. SLISP软件下载工具该软件是广州天河双龙电子有限公司推出的款ISP载软件,使用该软件你可以将可 执行文件下载到你的机器人单片机上。该软件的使用需要你的计算机有并行口。你可以在双龙公司的网站中获得该软件。3. 串口调试软件此软件是用来显示单片机与计算机的交互信息的。在硬件上,你的计算机至少要有串口 或USB
16、接口来与单片机教学板的串口连接。教材光盘中提供了该软件的绿色版本,无需安装即可使用。教你招,如何从互联网上获得你想要的东西:当今互联网如此发达,以至我们可以“万事”不求人。熟练运用互联网的搜索引擎,你 也可以做个“百事通”。如今有两大著名的搜索引擎,国内的,全球的,只要你输 入关键字,你就可以找到相关的任何东西;比如你想找Keil软件,你可以先打开google网, 然后输入关键字“Keil下载”,你就可以找到很多相关的网站。如http:bbs.mcu ?boardID=7&lD=6352/任务二安装软件到目前为止,你已从网站上,或从教材配套光盘中获得了软件安装包。在教材配套光盘 中提供了几个文
17、件夹,它们分别是Keil uVision2安装包、ISP软件安装包、串口调试终端、 头文件和本书例程的源码。软件的安装很简単,与你安装的其他软件过程一样。安装 Keil uVision21 .执行Keil uVision2安装程序,选择安装Eval Version版进行安装2 .在后续出现的窗口中全部选择Next按钮,将程序默认安装在C:Program FilesKeil文件目录下3 .将光盘“头文件”文件夹中的文件拷贝到C:ProgramFilesKeilC51INC文件夹 里Keil uVision IDE软件安装到你的电脑上的同时,会在你的计算机桌面建立一个快捷 方式。安装ISP下载软件
18、与此类似。任务三硬件连接C5I教学板(或者说机器人大脑)需要连接电源以便运 行,同时也需要连接到PC机(或笔记本电脑)以便编程和 交互。以上接线完成后,你就可以用编辑器软件来对系统进 行测试。下面将告诉你如何完成上述硬件连接任务。串口的连接机器人教学板通过串口电缆连接到PC机(或笔记本电 脑)上以便与用户交互。如果你的计算机有串行接口,直接 使用串U连接电缆。如果没有,此时需要使用USB转串口适 配器,如图1-3所示。你只需将该串口线一端的串口连接到 你的机器人教学板,而另一端连接到计算的USB 口上。如果你使用的是Windows98操作系统,在使用该适配器 调试程序前,你还需要给适配器安装驱
19、动程序,相关步骤请 按照适配器硬件和软件安装说明书进行。如果是Windows2000 以上的操作系统,则通常可以直接使用,无需安装驱动程序。图1-3 USB转串口适配器图1-4 ISP下载线ISP下载线的连接机器人程序通过连接到PC机或者笔记本电脑的并口上的ISP下载线来下载到教学板上 的単片机内。图1-4所示为!SP下载线。下载线一端连接到PC机或者笔记本的并行接口上, 而另一端(小端)连接到教学板上的程序下载口上。电池的安装本教材使用的机器人采用五号碱性电池给机器人电机和教学板供电,在继续下面的任务 前,请先检查机器人底部电池盒内是否已经装好电池,并是否有正常的电压输出。如果没有, 请更换
20、新的电池。更换过程中,确保每颗电池都按照塑料盒子里面标记的电池极性(“+ ” 和一)方向装入。给教学板和单片机进行通电检査01 2图1-5处于关闭状态的三位开关图1-6处了 1位状态的三位开关教学底板上有一个三位开关(见图!-5),当开 关拨到“ 0”位断开教学底板电源。无论你是否将电 池组或者其它电源连接到教学底板上,只要三位开 关位于“0”位,那么设备就处于关闭状态。现在将三位开关由“0”位拨至“1”位,打开 教学板电源,如图6所示。检查教学底板上标有 “Pwr”的绿色LED电源指示灯是否变亮。如果没有, 检査电池盒里的电池和电池盒的接头是否已经插到 教学板的电源插座上。开关“2”你将会在
21、后续章节中用到。将开关拨至“2”后,电源不仅要结教学板供电, 同时还会给机器人的执行机构伺服电机供电,同样的,此时绿色LED电源指示灯仍然会 变亮。任务四你的第一个程序你编写和测试的第一个C语言程序将告诉AT89S52单片机控制器,让它在执行程序时发 送一条信息给PC机(或笔记本电脑)。创建与编辑你的第一个程序双击Keil uVision IDE的图标,启动Keil uVision IDE程序,你会得到图1-7所示的 Keil uVision2 IDE的主界面。通过用Project菜单中的New Project命令建立项目文件, 过程如下:图 1-7 Keil uVision IDE的主界面1
22、.点击Project,会出现图1-8所示的菜单画面,然后选择“New Projectw ,将出 现图1-9所示对话框。View Project Debug Flash PerNew Project.Import 卩Visionl Project.Open ProjectClose Projectile Extensions, Books end E:图1-8 Project菜单画面图 1-9 Create New Project对话框2,在文件名中输入如“HelloRoBot”,保存在你想保存的位置(如D:中级机器人制 作与编程、程序、Chapter 1)可不用加后缀名,点击“保存”,后会出现
23、图1-10 所示的窗口。3.这里要求我们选择芯片的类型,Keil uVision2 IDE几乎支持所有的51核心单片 机 并以列表的形式给出。本教材使用的是Atmel公司的AT89s52,在Keil uVision2 IDE提供的数据库(Data base)列表中找到此款芯片,然后点击确定,会出现图1-11 所示的窗口,询问你是否加载8051启动代码,在这里我们选择“否,不加载。(如果你选择“是”,对你的程序没有任何影响。若你感兴趣,可选择“是”,看 看编译器加载了哪些代码。)之后会出现图1-12画面,此时即得到了项目文件。CPUVendor: AtmelDevice: AT89S52L Us
24、e Extended Linker (1X51) instead of BL51Femily: MCS-51厂 Use Extended Assembler (AX51) instead of A51Rata bNew”操作)为该项目新 建一个C语言程序文件,保存后 弹出图1T3所示的对话窗口,将 文件保存在项目文件夹中,在文 件类型中填写.C (这里.C为文件 扩展名,表示此文件类型为C语 言源文件),因为你下面将采用c 语言编写第一个程序。例程:HelloRoBot.cinclude int main (void)图1-13 C语言源文件保存对话框uart_Init(): 串口初始化pri
25、ntf (Hello, this is a message from your Robot n); while (1);将该例程键入Keil uVision IDE的编辑器,并以文件名HelloRoBot.c保存。下一步就是添加该文件到目标工程项目了,其具体添加过程如下:1 .单击图!-12中的,将出现图1-14所示的列表:2 .然后右键点击Source Group 1n ,在出现的菜单下选择Add File To Group Source Group 1”,出现 Add Files to Group Source , Group 1 ) 对话框。在 该对话框中选择需要添加的程序文件,如刚建立
26、HelloRoBot.c,单击Add按钮, 把所选文件添加到项目文件中。一次可添加多个文件。臼.日 Target 1J Source Group 13 .程序文件添加到项目文件中去后,这时上图中Source Group 1”的前面将出现 个+”号;单击它将出现刚添加的源文件名,如图1-15所示(注意:图中显示 的文件名是刚输入的文件名)。-!三、Target 1B Source Group 1 思(HelloRoBot. c图1-14添加C语言文件到目标丄程图1-15添加了C语言文件的目标丄程双击源文件即可显示源文件的编辑界面。下面来产生下载需要的可执行文件。要产生可执行的.Hex文件,需要对
27、目标工程Target 1进行编译设置,右键点击Target 1,选择Option for target Target 1。 点击output”,选择其中的Create HEX File,如图1-16所示,点击确定关闭设置窗 口。然后点击Keil uVision IDE快捷工具栏中的作,Keil的C编译器开始根据要生成的 目标文件类型对目标工程项目中的C语言源文件进行编译。编译过程中,可以观察到源文件 中有没有错误产生,如果没有错误产生,在IDE主窗口的下面出现如图1-17的提示信息, 表明已成功生成了可执行文件,并存储在C语言源程序存储的目录中,文件名就是 HelloRoBot. Hex图1-
28、16设置目标工程的编译输出文件类型图!-1T编译过程的输出提示信息下载可执行文件到单片机点击ISP下载软件图标,打开ISP下载软件窗口如图1-18所示,并将通信参数设置成 图中所示的参数。第一个为接口类型选择窗,该窗口的下拉列表中提供了许多接口类型:串口 C0M1- C0M16、并 LPT1LPT3以及USB接口等。教材使用并口 LPT1。第二个为下载速度选择窗口,该窗口内容与接口类型紧密相连。不同的接口,该窗就 提供不同内容的下载速度。若选择LPT1,则提供了五种下载速度:TURBO模式、FAST模式、 NORMAL模式、SLOW模式和TURBO SLOW模式。在这五种模式下,程序下载速度依
29、次减小。教 材中的例程使用的是第一个模式TURBO模式,下载速度最快。第三个为单片机型号选择窗口。如何快速地认识新的软件?面对款新的软件,你可能有一种无从下手的感觉:这个是干嘛的?那个又是干嘛的? 其实,软件本身就提供了问题的答案。每一款软件都提供了帮助文档。如SL ISP软件界面的右上角有个“问号”按钮,单击 它就弹出系列的选项,这些选项就对该款软件做出了大致的解释,有助你快速掌握软件的 使用。点击“Flash”,选择要下载的可执行HEX文件HelloRoBot.Hex,选择后点击编程 开始下载。如果下载成功,则下面显示完成次数:x次”,否则显示失败次数:x次”。如果芯片是第二次下载程序,请
30、先选中擦除”复选框。图1-18 ISP软件下载窗口举一反三如果你经学习过基础机器人制作与编程,并丄经掌握了采用BASIC Stamp系列单 片机模块的PBASIC语言开发技能,请你与刚介绍的C语言编程过程进行比较,看看有何 不同。并思考一下,这些不同对于初学者而言各有何优缺点。用串口调试软件査看单片机输出信息打开串口调试终端,选择串口 “C0M1”后点击“打开串口”,在“接收区”内你看到了 什么?什么也没有!为什么呢?因为从你把执行文件成功下载到单片机的那个时刻开始,程 序就开始运行了:单片机已经向PC机发送了信息。你错过了接收。怎么办呢?在机器人教学板上给你提供了 “Reset”按钮,它可以
31、让下载到单片机内的程序重新运 行次。按下“Reset”按钮,是不是出现如图1T9所示画面呢?图!-19串口调试终端HelloRoBot.c是如何工作的?例程中第一行代码是HelloRoBot.c所包含的头文件。该头文件在编译过程中用来将下 面程序中需要用到的标准数据类型和由C语言编译器提供的些标准输入/输出函数、中断 服务函数等包括进来,生成可执行代码。头文件中可以嵌套头文件,同时也可以直接定义 些常用的功能函数。本例程中的头文件uart.h在本教材的后续任务中都要用到,它其中就 包含了本例程中以及后面例程中都要用到的uart_lnit ()函数的定义和实现。下面先讲一下函数的概念。个较大的C
32、语言程序一般分成若干个模块,每个模块实现 一定的功能,我们称之为函数。任何个C语言程序本身就是个函数,该函数必须以main 函数作为程序的起点,通常称之为主函数。主函数可以调用任何子函数,子函数之间也可以 相互调用(但是不可以调用主函数)。函数定义的一般格式为:函数返回值的类型函数名(形式参数 1,形式参数2丿第二行就是程序的入口 main函数。main前面的int是指定main的函数返回值类型为 整数类型,括号中void或无内容表示没有形式参数。每个函数的主体都要用“括起来 (反思一下同PBASIC语言编程的区别)。函数的具体讲解将在第三章。main函数主体中有两行语句:第一行是串口初始化函
33、数uart_Init (),用来规定单片 机串口是如何与PC通信的。有兴趣的读者可以打开uart.h头文件,看看该函数是如何实现 的,如果其中有很多内容不懂,不要紧,记住这个函数的功能就行,以后慢慢学习和理解。 这行语句中后的是注释。注释是一行会被编译器忽视的文字,因为注释是为了给人阅 读。函数体中的第二行语句printf命令是单片机通过串口向PC机发送一条信息。printf函数printf函数称为格式输出函数,其功能是按用户指定的格式,把指定的数据显示输出。 该函数是C语言提供的标准输出函数,定义在C语言的标准函数库中,要使用它,必须包括 定义标准函数库的头文件stdio. h。由于在uar
34、t. h头文件中包括了 stdio. h因此本例程无 需另外包括该头文件。printf函数的一般形式为:print f (“格式控制字符串”,输出列表);格式控制字符串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串;输出表列在格式输出时用到,它给出了各个输出项, 要求与格式字符串在数量和类型上对应。非格式字符串在输出时原样输出,在显示中起提示作用。例程中用到的就是非格式字符 串。“n”是个向调试终端发送回车命令的控制符。也就是说,当你按下“Reset”按钮 再次运行程序时,将在下一行显示“Hello, this is a message from your Robotw ;
35、如果 没有“n”,则会在上一语句中的结尾,即“ Robot”后面接着显示。while;的作用while是C语言里的循环控制语句,它的具体语法将在第二章里介绍,这里向你讲解为 何要加上这个循环。HEX文件是加载在单片机FLASH存储器上的,并且是从头开始往下加载。当你把HEX文 件加载上去的时候,填满了整个FLASH空间吗?当然没有!那么,当程序执行完printf函 数之后,它将还后向下执行,但后面的空间并没有存放程序代码,这时程序后会乱运行,也 就发生了跑飞现象。加上while(l);语句,让程序一直停止在这里,就是为了防止程序跑飞。该你了程:HelloRoBotYourTurn.c#incl
36、udeint main (void)(int i;uart_Ini t();printf(Whats 7 X ll?n);printf The answer is :%dnA, i);while (.I);按照上述方法建立新的项目,输入程序HelloRoBotYourTurn. c,运行,查看输出结果, 是否与图20样?图 1-20 例程 HelloRoBotYourTurn.c 输岀结果HelloRoBotYourTurn.c 是如何工作的?在介绍main函数内容之前,先向你讲解一下C语言的些基本知识。C语言数据类型C语言有5种基本数据类型:字符、整型、单精度实型、双精度实型和空类型。这些数
37、 据类型的长度和范围会因处理器的类型和C语言编译程序的实现而有所不同,対于KEIL51 产生的目标文件,表1-1给出了两种教材中常用的数据长度和范围。表1-1常用数据类型的长度和范围类型长度(单位bit)范围char8-128-+127 即2T(27-1)int1632768+3276 即2(2,5-1)float32-3.4X10-383.4X1038标识符在C语言中,标识符是对变量、函数名和其他各种用户定义对象的命名。标识符的长 度可以是个或多个字符。绝大多数情况下,标识符的第一个字符必须是字母或下划线,随 后的字符必须是字母、数字或下划线(某些C语言编译器可能不允许下划线作为标识符的 起
38、始字符)。表1-2是一些正确或错误标识符命名的实例。表1-2正确或错误标识符命名实例正确形式错误形式count2counttest23hi!thcrehigh_balancehigh.balanceC语言中的常量是不接受程序修改的固定值,常量可以为任意数据类型,如例所示:char a、9int 21、234变量在程序中可以改变的量称为变量。个变量应该有一个名字(标识符),在内存中占据 一定的存储单元,在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的 概念。所有C语言变量必须在使用之前定义。定义变量的一般形式是:type variable Jlist;这里的type必须是有效的C
39、数据类型,variableist (变量表)可以由一个或多个由逗 号分隔的多个标识符名构成。下面给出些定义的范例:int i,j,k;chaLx,y,z;注意,C语言中变量名与其类型无关。C语言有3大运算符:算术、关系与逻辑、位操作。另外,C语言还有一些特殊的运算 符,用于完成一些特殊的任务。算术运算符表3给出了 C语言允许的算术运算符。在C语言中,运算符“ + ”、和 “/”的用法与大多数计算机语言的相同,几乎可以用于C语言内定义的任何数据类型。表1-3算术运算符运算符用处+加法-减法*乘法/除法表达式由运算符、常量及变量构成。C语言的表达式遵循一般代数规则。C语言规定:任何表达式在其未尾加
40、上分号就构成为语句。赋值运算符赋值运算符记为=”。由=”连接的式子称为赋值表达式,其后加分号构成赋值语 句,其一般形式为:变量 =表达式;现在,来看看main函数是如何工作的。int i;定义了一个整型变量i。i即是变量的标识符。分号表示结束。uart_Init();与上一个例程一样,规定单片机串口如何与PC机通信的。i=7*U;将表达式“7*11”的值赋给变量i,也就是说变量i的值为77。printftWhats 7X 11加”);输出“Vho心7X 11?”,、这 里printf的用法与上一个例程一样。printff The answer is :%dn,i);这里用到了 printf函数
41、的格式字符串输出。%d是指定输出数据的类型为十进制整数。 printf函数首先输出aThe answer is :n !然后它遇到了 “d”,表示将后面输出列表中的 变量以十进制的形式输出,即,将变量i以“77”的形式输出;最后的输出结果即为:7Tlemswer is :77最后一条语句:Me(?九也起到与在上例中同样的作用:防止程序跑飞。该你了利用printf ()函数输出图形通过两个例程的学习,你应该大概掌握了 printf0函数的使用。除此之外,你还可以 利用它来做一些有趣的事,比如你如何让竖线“I”在屏幕上顺时针或逆时针转动输出呢? 参考下面的程序代码:printf(、;delay_n
42、ms (500);printf (7 ;delay_nms (500);print f (”);delay_nms (500);printf( );delay_nms (500);printf( );delay_nms (500);当然,你还可以显示静态图形,如:* * * * * * * * * *其实很简单,仔细想想!任务五做完实验关断电源把电源从教学底板上断开很重要,原因有几点:首先,如果系统在不使用时没有消耗电 能,电池可以用的更久;其次,在以后的试验中,你将在教学底板上的面包板上搭建电路, 搭建电路时,应使面包板断电。如果是在教室,老师可能会有额外的要求,比如断开串口电 缆,把教学底
43、板存放到安全的地方等等。总之,你做完试验后最重要的步是断开电源。断开电源比较容易,只要三位开关拨到左边的位即可。工程素质和技能归纳1. C51系列単片机Keil uVision IDE (集成开发环境)软件和ISP下载软件的下载和 安装2. 机器人用C51教学板与计算机或者笔记本的连接3. 如何在集成开发环境中创建H标工程文件,并添加和编辑C语言源程序4. C语言程序的编译和下载5. 串口调试终端的使用6. C语言基本知识:基本数据类型、常量、变量、运算符、表达式7. printf格式输出函数的使用科学精神的培养1 .比较Keil uVision IDE与BASIC Stamp系列开发环境的优缺点,找出它们的共同 特点2 .比较第一个C语言程序与第一个PBAS1C程序的异同,找出它们的共同点3 .比较BASIC Stamp的PBASIC调试指令和Keil C的输出指令printf的异同4 .查找C语言的标准输入输出库函数,了解printf的总体功能。本章中到了它的两 个格式符和控制符5 .查阅参考书,了解其他数据类型、算术运算符知识第二章 单片机输出接口与伺服电机控制本章教你如何用单片机AT89