基于单片机的直流电机控制系统的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要
本文主要介绍了以凌阳SPCE061A单片机为核心来控制电动机转向与转速,并通过数码管显示出转速的具体实时数值。

基于SPCE061A的16位特性,数字信号处理DSP (Digital Signal Process)功能以及快速的处理能力,使得数据采集和运算处理十分的方便简单,另外由于集成开发环境IDE(Integrated Development Environment)支持标准的C语言数据库,使得复杂的数学运算变得轻而易举,大大减少了编程的难度。

本设计充分利用了SPCE061A的资源,发挥了芯片的性能,并利用PID算法实现直流电机PWM调速的方法,比较精确的实现了普通直流电机的转速测量和转速调节功能。

实践证明,该系统具有结构简单、操作方便、测量精度高、稳定性好等特点。

关键词:凌阳单片机,无刷直流电机,PID算法,测速,调速
ABSTRACT
In this paper, taking to Sunplus SPCE061A MCU as the core to control the motor steering and speed, and speed through the digital display the value. Based on 16-bit features SPCE061A, DSP (Digital Signal Process) function, and fast processing power, making data collection and processing operations are very easy to use, another as IDE (Integrated Development Environment) supports the standard C-language database, which makes complex mathematical operation becomes easy, thus greatly reducing the difficulty of programming. The design makes full use of the resources SPCE061A played a chip's performance and use of PID algorithm PWM DC Motor Speed way, more accurate realization of a common DC motor speed measurement, and speed adjustment function. Practice has proved that the system has a simple structure, easy operation, high accuracy, good stability.
Key words:sunplus SCM, brushless DC motor, PID algorithm, speed measurement, speed adjustment
目录
1 绪论 (1)
1.1 选题背景及其意义 (1)
1.2 无刷直流电机的发展史 (1)
1.3 设计的目的和要求 (2)
2 直流电机控制系统 (3)
2.1 转速信号的采集 (3)
2.2 直流电机的转向与转速控制设计 (4)
3 硬件电路设计 (6)
3.1 SPCE061A单片机简介 (6)
3.2 电机驱动芯片SPGT62C19B简介 (9)
3.3 控制板与驱动板的接口联接方法 (10)
3.4 硬件框图 (11)
3.5 组件选择与设计 (12)
3.6 电机驱动电路的设计 (12)
3.7 硬件电路实物图 (13)
4 软件设计 (14)
4.1 C语言的简介 (14)
4.2 汇编语言的简介 (16)
4.3 模块化设计 (16)
4.4 本次课题的软件设计 (17)
5 系统的安装、调试及运行实验结果 (21)
5.1 软硬件安装与调试 (21)
5.2 实验结果 (23)
6 总结 (24)
参考文献 (25)
致谢 (27)
1 绪论
1.1 选题背景及其意义
在现代医疗器械、保健设备、家用电器控制器、工业控制、通讯产品、语音识别类产品与智能家居控制器等等仪器中,例如日常所见的跑步机、治疗仪等、冰箱、空调、洗衣机、语音信箱、数字录音系统产品、语音识别遥控器、智能语音交互式玩具等,往往带有一个小控制系统。

该系统主要由一个小型直流电动机,控制电路板以及各种开关组成。

通过控制电路,以实现调节不同的转速。

类似的控制系统,工程人员以往采用PLC控制器来实现。

因为PLC控制器操作起来方便,而且程序的编写也相对简单。

但是,这种控制器有不足之处,如成本高,一个PLC控制器价值为上千元。

另外,PLC 控制器体积相对比较大,而且比较耗电。

随着技术的进步,人们总希望达到同样功能的控制系统应体积小,能耗低。

因此,用小型的芯片代替传统的PLC控制器是一种必然的趋势。

凌阳SPCE061A 单片机[1]具有体积小,价格低廉,编程易懂,操作简单等优点,因此选此作为研究对象,并以此为核心来实现对电动机转速[2]的控制。

系统以凌阳SPCE061A单片机为核心[3-4],采用了多模块化协同控制电动机,实现电动机的调速。

随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理数据处理以及数字信号处理,DSP(Digital Signal Processing)等领域。

凌阳的16位单片机就是为适应这种发展而设计的。

单片机功能强大,方便今后的功能扩展。

1.2 无刷直流电机的发展史
过去有刷直流电机以其优良的转矩特性在运动控制领域得到了广泛的应用[5]。

但是,机械电刷却是有刷直流电机的一个致命的弱点。

为此,早在1917年,Boiiger就提出了用整流管代替有刷直流电机的机械电刷,从而诞生了无刷直流电机的基本思想。

1955年,美国D.Harrison等人首次申请了用晶体管换向线路代替有刷直流电机机械电刷的专利,标志着现代无刷电机的诞生。

近40年来,由于电机本体及其相关学科的迅猛发展,“无刷直流电机”的概念已由最初的具有电子换向的直流电机发展到泛指一切具有有刷直流电机外部特性的电子换向电机。

无刷直流电机的发展亦使得电机理论与大功率开关器件、模拟和数字专用集成电路、微处理技术、现代控制理论以及高性能材料的结合更加紧密。

如今无刷直流电机集特种电机、变速机构、检测元件、控制软件与硬件于一体,形成为新一代电动伺服系统,且体现着当今应用科学的许多最新成果,因此是机电一体化的高技术产物。

无刷直流电机真正进入实用阶段应从1978年开始,当时原西德MANNESMANN 公司的Indramat分部在汉诺威贸易博览会上,正式推出MAC经典无刷直流电机及其驱动器。

80年代在国际上开展了深入的研究,先后研制成方波无刷电机和正弦波无刷直
流电机,在10多年的时间里,无刷直流电机在国际上已得到较为充分的发展,在一些较为发达的国家里,无刷直流电机将在未来的几年中成为主导电机,并逐步取代其它类型的电机。

无刷直流电机在近10年里得到迅速推广应用的另一个原因,是由于电力电子技术和集成控制技术高速发展的结果,性能优良、价格低廉的电子元器件为制造无刷直流电机创造了基本条件。

80年代初期,电机本体与换向驱动电路的价格比大约为1:10,而当今已降至1:1~3,这就为大量推广应用创造了先决条件。

1.3 设计的目的和要求
本方案以SPCE061A单片机为控制核心,实现对无刷直流电机的转速测量,并利用PID算法实现PWM调速,为进一步研究和优化直流电机控制方法提供了基础。

本次设计最终具有下列功能:
(1) 可通过控制板上的3个按键设定电机的转动方向,转速;
(2) 可实时测量电动机的实际转速,并在LED数码管上显示出来;
(3) 可对电机进行PID转速调节,使其转速趋近于设定值。

方案具有一定可扩展性,例如优化速度调节算法,提高转速稳定度和响应速度,增加语音播报转速功能,或将测得的转速上传至PC处理等。

2 直流电机控制系统
在电气时代的今天,电动机在工农业生产、人们日常生活中起着十分重要的作用。

直流电机是最常见的一种电机,在各领域中得到广泛应用。

研究直流电机的控制和测量方法,对提高控制精度和响应速度、节约能源等都具有重要意义。

本方案以SPCE061A 单片机为控制核心[6],实现对普通直流电机的转速测量,并利用PID算法实现PWM调速[7],为进一步研究和优化直流电机控制方法提供基础。

直流电机的控制系统由以SPCE061A为核心的控制器[8]、SPGT62C19B电机驱动器和直流电机3部分组成。

驱动器接收控制器的信号,发出电机能接受电信号,还包括各种必要的过流过载保护电路。

控制器输出的脉冲和方向信号是先输入进驱动器,再由驱动器来控制电机的速度和方向。

2.1 转速信号的采集
信号的采集——控制技术的关键环节,不仅是系统控制的根本出发点也是最终衡量系统控制性能的重要依据。

在一个完善的闭环控制系统当中,首先要检测当前被控对象的状态,就必须对被控对象的状态信息(比如常见的温度,流量,速度,液位等信息)进行采集,并能够将此信息还原为实际的温度,流量等状态信息[9-10],并对该信息进行分析才能了解控制过程的好坏,才能做出进一步的优化。

所以说信号采集在系统控制中起着至关重要的作用。

随着数字化的普及和控制技术水平的不断进步,数字化控制已成为现代控制的主流,数字信号的采集成为数字控制系统中的重要单元。

本设计在直流电机的转轴上安置了光栅转盘,光栅转盘的两侧分别装有鼠标用红外发射和接收管[11]。

如图2-1当直流电机转动时,光栅将不断改变红外对管的通断状态。

当红外发射管与红外接收管之间被直流电机光栅转盘的不透明部分遮挡时,红外接收管处于截止状态,此时的SPEED输出高电平。

反之,当光栅转盘的通光槽转至红外对管之间时,红外接收管处于导通状态,此时SPEED输出低电平。

将SPEED连接到单片机的I/O口,即可通过定时计数的方法计算出电机转动速度[12]。

图2-1 直流电机的光栅转盘
2.2 直流电机的转向与转速控制设计
2.2.1直流电机正反转控制
本次设计利用电动机驱动芯片SPGT62C19B 的通道1,即其16号引脚来控制电机转向。

通过设定PHASE1的逻辑电平,可实现电机的正反转控制。

2.2.2直流电机PWM 调速
PWM 调速控制的基本原理是按一个固定频率来接通和断开电源,并根据需要改变一个周期内接通和断开的时间比(占空比)来改变直流电机电枢上电压的“占空比”,从而改变平均电压,控制电机的转速。

在脉宽调速系统中,当电机通电时其速度增加,电机断电时其速度减低[13-15]。

只要按照一定的规律改变通、断电的时间,即可控制电机转速。

而且采用PWM 技术构成的无级调速系统,启停时对直流系统无冲击,并且具有启动功耗小、运行稳定的特点。

设电机始终接通电源时,电机转速最大为Vmax ,且设占空比为D=t /T ,则电机的平均速度Vd 为:
Vd=VmaxD (2-1)
由公式可知,当改变占空比D=t /T 时,就可以得到不同的电机平均速度Vd ,从而达到调速的目的。

严格地讲,平均速度与占空比D 并不是严格的线性关系,在一般的应用中,可将其近似地看成线性关系。

本设计就采用PWM 调速方法。

PWM 调速就是使加在直流电机两端的电压为方波形式,通过改变方波的占空比实现对电机转速的调节。

SPGT62C19B 的两个输出通道可以分别控制一台直流电机。

电机调速可以通过不断改变I01和I11的高低电平状态,使输出通道产生PWM 波形信号,从而利用PWM 的占空比来调节电机转速。

在直流电机驱动控制电路中,PWM 信号由外部控制电路提供,并经高速光电隔离电路、电机驱动逻辑与放大电路后,驱动H 桥下臂MOSFET 的开关来改变直流电机电枢上平均电压,
光栅转盘
平面图
从而控制电机的转速,实现直流电机PWM调速。

2.2.3 P I D算法设计
如图2-2,将预置的初值与传感器反馈信号比较得到偏差(e),对偏差(e)进行PID运算处理得到控制量(u),通过此控制量来控制转速。

由于速度本身具有很大的惯性,因此必须对转速的变化趋势作出分析,并且根据需要及时反方向抑制,以防止出现较大的超调量和波动。

在PID控制中,I具有很强的滞后效应,而D则具有很强的预见性,选用PID算法,能够很好的控制超调,并且稳态误差也很小。

图2-2 P I D控制流程图
3 硬件电路设计
本设计系统由单片机控制板和电机驱动板组成。

其中控制板以SPCE061A单片机为核心,电机驱动模块以SPGT62C19B芯片为核心。

3.1 SPCE061A单片机简介
SPCE061A 是继μ’NSP系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。

与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。

较高的处理速度使μ’NSP能够非常容易地、快速地处理复杂的数字信号。

因此,与SPCE500A 相比,以μ’NSP为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择[16-18]。

3.1.1 SPCE061A性能
1. 16位μ’NSP微处理器;
2. 工作电压(CPU) VDD为2.4~
3.6V (I/O) VDDH为2.4~5.5V
3. CPU时钟:0.32MHz~49.152MHz ;
4. 内置2K字SRAM;
5. 内置32K FLASH;
6. 可编程音频处理;
7. 晶体振荡器;
8. 系统处于备用状态下(时钟处于停止状态);
9. 2个16位可编程定时器/计数器(可自动预置初始计数值);
10. 2个10位DAC(数-模转换)输出通道;
11. 32位通用可编程输入/输出端口;
12.14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒;
13. 具备触键唤醒的功能;
14. 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;
15. 锁相环PLL振荡器提供系统时钟信号;
16. 32768Hz实时时钟;
17. 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;
18. 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;
19. 具备串行设备接口;
20. 具有低电压复位(LVR)功能和低电压监测(LVD)功能;
21. 内置在线仿真电路ICE(In- Circuit Emulator)接口;
22. 具有保密能力;
23. 具有WatchDog功能。

3.1.2 SPCE061A结构概览
SPCE061A的结构比较简单,在芯片内部集成了ICE仿真电路接口、FLASH程序存储器、SRAM数据存储器、通用IO端口、定时器计数器、中断控制、CPU时钟、模-数转换器AD、DAC输出、通用异步串行输入输出接口、串行输入输出接口、低电压监测低电压复位等若干部分[19]。

各个部分之间存在着直接或间接的联系。

SPCE061A的结构如图:
图3-1 SPCE061A的结构图
3.1.3 SPCE061A的引脚排列
SPCE061A有两种封装片,一种为84个引脚,PLCC84封装形式[20];它的排列如图3-2所示;另一种为80个引脚,LQFP80封装,它的排列如图3-3所示,本次设计采用80引脚的LQF80封装。

图3-2 PLCC84封装排列图
图3-3 LQFP80封装引脚排列图
3.1.4 SPCE061A开发方法
SPCE061A的开发是通过在线调试器PROBE实现的。

它既是一个编程器(即程序烧写器),又是一个实时在线调试器。

用它可以替代在单片机应用项目的开发过程中常用的软件工具——硬件在线实时仿真器和程序烧写器。

它利用了SPCE061A片内置的在线仿真电路ICE(In- Circuit Emulator)接口和凌阳公司的在线串行编程技术[21-22]。

PROBE 工作于凌阳IDE集成开发环境软件包下,其5芯的仿真头直接连接到目标电路板上SPCE061A相应管脚,直接在目标电路板上的CPU---SPCE061A调试、运行用户编制的程序。

PROBE的另一头是标准25针打印机接口,直接连接到计算机打印口与上位机通
讯,在计算机IDE集成开发环境软件包下,完成在线调试功能。

图4是计算机、PROBE、用户目标板三者之间的连接示意图。

图3-4 用户目标板、PROBE、计算机三者之间的连接图
3.2 电机驱动芯片SPGT62C19B简介
SPGT62C19B电动机驱动器是CMOS单片集成电路能够驱动一个双极步进电机或双向控制两个直流电动机两种绕组。

桥的两个输出可以保持40V和提供高达750mA的连续电流。

最大输出电流,取决于选择的参考电压,感应电阻和两个逻辑输入。

SPGT62C19B可提供24引脚PowerDIP和SO封装。

本设计采用前者封装。

SPGT62C19B 有6个控制引脚,具体如下表3-1所示:
表3-1 SPGT62C19B的控制引脚
引脚名称用途
8 I02 通道2的电流大小控制
9 I12 通道2的电流大小控制
10 PHASE2 通道2的电流方向控制
16 PHASE1 通道1的电流方向控制
17 I11 通道1的电流大小控制
20 I01 通道1的电流大小控制
3.3 控制板与驱动板的接口联接方法
(1)控制板内部的接口联接
控制板将SPCE061A的32个I/O口全部引出:IOA0-IOA15,IOB0-IOB15对应的SPCE061A引脚为:A口,41-48,53-60;B口,5-1,81-76,68-64。

而且该I/O口是可编程的,即可以设置为输入或输出。

设置为输入时,分为悬浮输入或非悬浮输入,非悬浮输入又可以设置为上拉输入还是下拉输入。

在5V的情况下,上拉电阻为150K,下拉电阻为110K;设置为输出时,可以选择同向输出或者方向输出。

(2)SPGT62C19B 与单片机之间的连接
SPGT62C19B 与单片机之间的接口在模组上标示为“J3”,是10PIN 排针的形式。

该接口的各管脚的相对应联接如下表3-2:
表3-2 J3的各管脚相应联接
1 2 3 4 5 6 7 8 9 10
VDD PH1 PH2 SPEED I01 I02 I11 I12 -- GND 其中PH1、PH2、I01、I02、I11、I12对应着SPGT62C19B的6个控制引脚。

而SPEED 则是速度检测信号输出脚。

可以直接用10PIN排线将J3接口与控制板IOB的低8位(即控制板的J6)相连。

应注意的是,模组接口标示为“VDD”的脚应与“61板”接口标示为“+”的脚相对应,不能接反。

另外,控制板的I/O供电电压应在 4.5V~5.5V之间。

因此,要把控制板的I/O电压选择跳线(控制板的J5)跳至“5V”位置,并保证控制板供电电压在4.5V以上。

(3)控制板与电机驱动板的联接
控制板与电机控制模组的硬件连接如下图3-5所示,控制板的IOB低8位(J6)连接电机模组的J3接口,IOA高8位(控制板的J9)连接模组的J2,IOB高8位(控制板的J7)连接模组的J1。

图3-5 控制板与电机模组连接图
(4)在线调试器PROBE和EZ_PROBE接口
4为PROBE的接口,该接口有5pin,其中上下两个分别是(VSS)和3.3V电源(VCC),通过它将PROBE与PC机连接起来进行调试,仿真和下载程序的。

J11是EZ_PROBE
的接口。

3.4 硬件框图
SPCE061A单片机作为主控芯片,通过I/O端口来控制SPGT62C19B电机驱动芯片,从而实现对直流电机的控制。

电机模组上的光栅转盘和红外对管将直流电机的转动信息反馈给单片机,单片机针对测得的实际转速来调节SPGT62C19B的控制状态,从而使转速趋近预设置。

同时,电机转速可通过4位数码管显示出来。

控制板的三个按键用来对直流电机的转动方向、转速等进行设定。

图3-6 系统总体硬件结构图
电机驱动模块以SPGT62C19B芯片为核心,还包括直流电机、电机接口、控制接口、4个LED数码管、外接电源插座、光栅转盘、红外对盘、外接电源指示灯等部件。

ULN2003A是单片式7路达林顿三极管阵列,在本模组中用来驱动4位LED数码管。

图3-7 电机控制模组结构图
3.5 组件选择与设计
(1)本系统电源设计
本设计的内核SPCE061A的电压为3.3V,而I/O端口的电压选择5V。

在实际操作中,采用横浮开关电源,型号为HF35W-D-B,其具有5V和12V两种恒压输出。

先让控制板通上5V电压,然后通过芯片SPY0029获得3.3V电压,供单片机使用。

(2)外部复位
复位是对控制内部的硬件初始化,控制板本身具有上电复位功能,即通电就自动复位。

另外,还具有外部按键复位电路,在引脚6上外加一个低电平就可以令其复位。

(3)电动机型号选择
此次设计所选的直流电机型号为310CA,其电压范围为3V-12V,在5V的供电电压下,其空载转速在4000转/分左右,空载电流约20mA,运转电流约300mA。

3.6 电机驱动电路的设计
直流电机控制中常用H桥电路作为驱动器的功率驱动电路。

由于功率MOSFET是压控元件,具有输入阻抗大、开关速度快、无二次击穿现象等特点,满足高速开关动作需求,因此常用功率MOSFET构成H桥电路的桥臂。

H桥电路中的4个功率MOSFET 分别采用N沟道型和P沟道型,而P沟道功率MOSFET一般不用于下桥臂驱动电机,这样就有两种可行方案:一种是上下桥臂分别用2个P沟道功率MOSFET和2个N沟道功率MOSFET;另一种是上下桥臂均用N沟道功率MOSFET。

相对来说,利用2个
N沟道功率MOSFET和2个P沟道功率MOSFET驱动电机的方案,控制电路简单、成本低。

但由于加工工艺的原因,P沟道功率MOSFET的性能要比N沟道功率MOSFET 的差,且驱动电流小,多用于功率较小的驱动电路中。

而N沟道功率MOSFET,一方面载流子的迁移率较高、频率响应较好、跨导较大;另一方面能增大导通电流、减小导通电阻、降低成本,减小面积。

综合考虑系统功率、可靠性要求,以及N沟道功率MOSFET 的优点,本设计采用4个相同的N沟道功率MOSFET的H桥电路,具备较好的性能和较高的可靠性,并具有较大的驱动电流。

3.7 硬件电路实物图
图3-8 硬件电路实物图
4 软件设计
4.1 C语言的简介
C语言是Combined Language(组合语言)的中英混合简称,是一种计算机程序设计语言。

它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发等[23]。

4.1.1 C语言的发展历史
C语言的原型ALGOL 60语言。

(也称为A语言)
1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。

1967年,剑桥大学的Martin Richards 对CPL语言进行了简化,于是产生了BCPL 语言。

1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。

意思是将CPL语言煮干,提炼出它的精华。

并且他用B语言写了第一个UNIX操作系统。

而在1972年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。

同时由B.W.Kernighan和D.M.Ritchie合著了著名的《The C Programming Language》一书。

通常简称为《K&R》,也有人称之为《K&R》标准。

但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准化协会(American National Standards Institute)在此基础上制定了一个C语言标准,于一九八三年发表。

通常称之为ANSI C。

1987年,随着微型计算机的日益普及,出现了许多C语言版本。

由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。

为了改变这种情况,美国国家标准化协会(ANSI)为C语言制定了一套ANSI标准——87 ANSI C,成为现行的C语言标准。

1990年,国际标准化组织ISO(International StandardOrganization)接受了87 ANSI C 为I SO C 的标准(ISO9899-1990)。

1994年,ISO修订了C语言的标准。

目前流行的C语言编译系统大多是以ANSI C为基础进行开发的,但不同版本的C
编译系统所实现的语言功能和语法规则有略有差别[24]。

4.1.2 C语言的运算符和运算顺序
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。

在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。

当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。

在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。

先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1-15,除第2、13级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。

4.1.3 C语言的四种程序结构
(1)顺序结构:
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

(2)分支结构:
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。

对于要先做判断再选择的问题就要使用分支结构。

分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。

分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。

分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。

程序流程图是根据解题分析所绘制的程序执行流程图。

(3)循环结构:
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do…Cwhile循环和for循环。

四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for 三种循环。

常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样。

相关文档
最新文档