c51流程控制语句
大学毕业设计 C51程序控制步进电机

题目:简易步进电机控制步进电机控制摘要:本设计采用ATMEL公司DIP-40封装的AT89S52单片机实现对四相步进电机的手动和按键控制。
由单片机产生的脉冲信号经过分配后分解出对应的四相脉冲,分解出的四相脉冲经驱动电路功率放大后驱动步进电机的转动。
转速的调节和状态的改变由按键进行选择,此过程由程序直接进行控制。
通过键盘扫描把选择的信息反馈给单片机,单片机根据反馈信息做出相应的判断并改变输出脉冲的频率或转动状态信号。
电机转动的不同状态由液晶LCD1602显示出来。
而设计的扩展部分可以通过红外信号的发射由另一块单片机和红外线LED完成,用红外万能接收头接收红外信号,可以实现对电机的控制进行红外遥控。
关键字:四相步进电机单片机功率放大 LCD1602步进电机控制 (1)摘要 (1)关键字 (1)前言 (3)1系统总体方案设计及硬件设计 (4)1.1步进电机 (4)1.1.1 步进电机的种类 (4)1.1.2 步进电机的特点 (4)1.1.3 步进电机的原理 (5)1.2 控制系统电路设计 (7)1.3 液晶显示LCD1602 (7)1.4 AT89S52核心部件及系统SCH原理图 (9)1.5 LN2003A驱动 (10)2软件设计及调试 (13)2.1程序流程 (13)2.2软件设计及调试 (14)3 扩展功能说明 (15)4设计总结 (16)5 设计源程序 (16)6 附录 (21)参考文献 (22)附2:系统原理图及实物图 (23)步进电机广泛应用于对精度要求比较高的运动控制系统中,如机器人、打印机、软盘驱动器、绘图仪、机械阀门控制器等。
目前,对步进电机的控制主要有由分散器件组成的环形脉冲分配器、软件环形脉冲分配器、专用集成芯片环形脉冲分配器等。
分散器件组成的环形脉冲分配器体积比较大,同时由于分散器件的延时,其可靠性大大降低;软件环形分配器要占用主机的运行时间,降低了速度;专用集成芯片环形脉冲分配器集成度高、可靠性好,但其适应性受到限制,同时开发周期长、需求费用较高。
51单片机资料-C51常用语句讲解

详细介绍。下面仅举一个例子加以说明:
• #include <stdio.h>
//头文件
• void myprint()
//定义函数
•{
•
printf("hello world.\n");
//输出字符串
•}
• int Add(int a)
//定义函数
•{
•
return a+1;
//返回值
•}
•
• void main()
行if语句后面的语句;当表达式为假时,就执行语 句2,执行完后,继续执行if语句后面的语句。
14
13.5.3 阶梯式if-else-if结构
• 阶梯式if-else-if结构是一种多分支结构,其可以 包含多个分支语句,其一般形式为:
• if (表达式1) 语句1; • else if (表达式2) 语句2; • else if (表达式3) 语句3; • else if (表达式n) 语句n; • else 语句n+1; • 这是由if-else语句组成的嵌套,可以实现多方向
条件分支。该语句从上到下逐个对条件进行判断, 一旦条件为真,就执行与其相关的分支语句,并跳 过剩余的阶梯;如果没有一个条件为真,则执行最 后一个else分支语句n+1。
1实现多个语句分支处理。在C51
程序中,开关语句以关键字switch和case来标识。开关语句
序示例如下:
• #include <stdio.h>
//头文件
•
• void main()
//主函数
•{
• char ch[]={'s','S','r','R','t'};
c51单片机c语言常用指令 -回复

c51单片机c语言常用指令-回复C51单片机C语言常用指令C51单片机是一种广泛应用于嵌入式系统的微控制器,其C语言编程常用指令为开发者提供了便利。
本文将逐步回答关于C51单片机C语言常用指令的问题,涵盖了常用的输入输出指令、控制流指令、算术指令和逻辑指令等方面,帮助读者全面了解和掌握这些重要的指令。
一、输入输出指令1. 如何在C51单片机上进行输入操作?答:可以使用P1口进行输入操作,需要将P1口配置为输入模式,并使用P1口的位操作函数来读取具体的引脚输入值。
2. 如何在C51单片机上进行输出操作?答:可以使用P2口进行输出操作,需要将P2口配置为输出模式,并使用P2口的位操作函数来设置具体的引脚输出值。
3. 如何控制C51单片机的LED灯?答:可以使用P0口进行LED灯的控制,通过设置P0口的引脚为高电平或低电平来点亮或关闭LED灯。
二、控制流指令1. 如何使用条件语句控制程序的执行顺序?答:可以使用if-else语句或switch语句来进行条件判断,并根据判断结果执行不同的代码块。
2. 如何使用循环语句进行重复操作?答:可以使用for循环、while循环或do-while循环来实现重复操作,根据循环条件控制代码块的执行次数。
三、算术指令1. 如何进行加法运算?答:可以使用加法运算符"+"来进行加法运算,例如:a = b + c;表示将变量b和c的值相加,然后将结果赋值给变量a。
2. 如何进行减法运算?答:可以使用减法运算符"-"来进行减法运算,例如:a = b - c;表示将变量b减去变量c的值,然后将结果赋值给变量a。
四、逻辑指令1. 如何进行逻辑与运算?答:可以使用逻辑与运算符"&&"来进行逻辑与运算,例如:if(a > 0 && b < 10) {...}表示当变量a大于0且变量b小于10时执行相应的操作。
c51中while的用法

c51中while的用法
在C51中,`while` 是一种循环控制语句,它的用法与其他C语言版本中的`while` 语句类似。
以下是 `while` 语句的一般语法:
```c
while (expression) {
// 循环体
}
```
其中,`expression` 是一个条件表达式,当其结果为非零时,循环体将被执行。
循环体中的代码将一直执行,直到 `expression` 的结果变为零。
如果`expression` 的结果一开始就是零,那么循环体将不会被执行。
以下是一个示例,演示了如何在C51中使用 `while` 语句:
```c
include <>
int main() {
int i = 0;
while (i < 5) {
printf("%d\n", i);
i++;
}
return 0;
}
```
在上面的示例中,我们使用 `while` 语句来循环打印数字0到4。
循环条件是 `i < 5`,每次循环都会检查该条件是否为真。
如果条件为真,则执行循环体中的代码,打印当前的数字并增加计数器 `i` 的值。
循环将一直执行,直到 `i` 的值达到5时停止。
注意,在使用 `while` 语句时,需要确保循环条件在某个时刻不再满足,否则循环将无限执行下去,导致程序崩溃或死循环。
因此,在编写循环时需要特别小心。
C51流程控制语句

C语句分类
表达式语句:表达式加分号;构成。 空语句: ;
程序控制语句(9种):
if( )~else~ switch for( )~ 循环 while( )~ do~while( ) continue break 辅助控制 goto return
分支
1
4.4.1 C程序的三种基本结构
24
一般形式: do { 循环体语句; } while(表达式); 执行流程:
循环体 真(非0)
while 表达式 假(0)
特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 17
:
3.for语句
for(循环变量赋初值;循环条件;修改循环变量) { 循环体语句; }
说明: for语句中表达式1,表达 式2 ,表达式3 都可省略, 但分号;不可省 无限循环: for(;;)
实现if ~ else 正确配对方法:加{ }
10
4. switch语句(开关分支语句)
一般形式:
switch 表达式 case E1 语句组1 E2 语句组2 En
…...
语句组n
执行过程:
switch( 表达式) { case E1: 语句组 1; break; case E2: 语句组 2; break; default ……. 语句组n+1 case En: 语句组 n; break; [default: 语句组n+1 ; break;] } 11
格式:if (表达式)
{
真(非0)
语句组; }
例:if (x>y) printf(“%d”,x);
5
4.4.2 选择语句
单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言单片机C51汇编语言单片机(C51)是指一种集成电路上只包含一个集中式控制器的微处理器,具有完整的CPU指令集、RAM、ROM、I/O接口等功能。
汇编语言是一种低级语言,是用于编写单片机指令的一种语言。
汇编语言能够直接操作单片机的寄存器和输入/输出端口,因此在嵌入式系统的开发中非常重要。
本文将介绍单片机C51的汇编语言编程。
一、了解单片机C51单片机C51是目前应用最广泛的一种单片机系列,广泛用于各种电子设备和嵌入式系统的开发。
C51指的是Intel公司推出的一种基于MCS-51架构的单片机。
该系列单片机具有较高的性能和低功耗的特点,可用于各种控制和通信应用。
二、汇编语言的基本概念汇编语言是一种低级语言,与机器语言紧密相关。
它使用助记符来代替机器指令的二进制表示,使程序的编写更加易读。
在单片机C51汇编语言中,每一条汇编指令都对应着特定的机器指令,可以直接在单片机上执行。
三、汇编语言的基本指令在单片机C51汇编语言中,有一些基本的指令用于控制程序的执行和操作寄存器。
以下是一些常用的指令:1. MOV指令:用于将数据从一个寄存器或内存单元复制到另一个寄存器或内存单元。
2. ADD指令:用于将两个操作数相加,并将结果存储到目的寄存器中。
3. SUB指令:用于将第一个操作数减去第二个操作数,并将结果存储到目的寄存器中。
4. JMP指令:用于无条件跳转到指定的地址。
5. JZ指令:用于在条件为零时跳转到指定的地址。
6. DJNZ指令:用于将指定寄存器的值减一,并根据结果进行跳转。
四、编写单片机C51汇编程序的步骤编写单片机C51汇编程序需要按照以下步骤进行:1. 确定程序的功能和目标。
2. 分析程序的控制流程和数据流程。
3. 设计算法和数据结构。
4. 编写汇编指令,实现程序的功能。
5. 调试程序,并进行测试。
六、实例演示以下是一个简单的单片机C51汇编程序的示例,用于实现两个数的相加,并将结果输出到LED灯上:org 0H ; 程序的起始地址为0mov a, 05H ; 将05H赋值给累加器mov b, 07H ; 将07H赋值给B寄存器add a, b ; 将A寄存器和B寄存器的值相加mov P1, a ; 将相加结果输出到P1口end ; 程序结束在这个例子中,首先将05H赋值给累加器A,然后将07H赋值给B寄存器,接着使用ADD指令将A和B的值相加,将结果存储到累加器A中,最后将累加器A的值输出到P1口。
C51介绍

六、 逗号运算符
0.3 C51流程控制语句
0.3.1 C51选择语句 一、条件语句 条件语句由关键字if构成。有3种条件语句: 1、if(条件表达式)语句 若条件表达式的结果为真(非0值),则执行后面的 语句;反之若条件表达式的结果为假(0值),则不 执行后面的语句。 例如: if(p1!= 0){ c=20;}
本章共六节,主要介绍:
0.1 单片机的C语言 0.2 C51的数据类型与运算 0.3 C51流程控制语句 0.4 C51的指针类型 0.5 C51的函数 0.6 C51编程实例
0.1 单片机的C语言
0.1.1 C51程序开发概述 一、采用C51的优点
编译器能自动完成变量的存储单元的分配,编程者可 以专注于应用软件的设计,可以对常用的接口芯片编制通 用的驱动函数,对常用的功能模块和算法编制相应的函数, 可以方便地进行信号处理算法和程序的移植,从而加快单 片机应用系统的开发速度。 当代码长度超过4KB以上时,C51比汇编语言更具有 明显的优势。
访问SFR
说明:
• Float:浮点型
Float (1)s 2E 127 (1.M )
•Sfr: 可以定义8051单片机的所有内部8位特殊功能 寄存器 •Sfr16: 可以定义8051单片机内部16位特殊功能寄 存器 •bit: 可以定义位量
•sbit: 可以定义8051内部RAM中的可寻址位或特殊 功能寄存器中的可寻址位.
2、sbit 位变量名 = 字节地址^位的位置(0~7),如: sbit OV=0xD0^2; /* 定义OV位地址为0xD2 */ sbit CY=0xD0^7; /* 定义CY位地址为0xD7 */ 注:字节地址作为基地址,必须位于0x80~0xFF之 间。 3、sbit 位变量名 = 位地址,如: sbit OV=0xD2; /* 定义OV位地址为0xD2 */ sbit CY=0xD7; /* 定义CY位地址为0xD7 */ 注:位地址必须位于0x80~0xFF之间。
C51的常用语句

以上的都是合法的表达式语句。一般来说,任何表达式在末尾加上分号“;”,
便可以构成语句。示例如下:
a=a+8
//赋值表达式
a=a+8;
//赋值语句
3.复合语句
5
复合语句是用花括号“{}”将一组语句组合在一起而构成的语句。C51语言中由单个表 达式和末尾的分号构成的语句是简单语句。在C51语言中,复合语句是允许嵌套的,即就是 在花括号“{}”中的“{}”也是复合语句。复合语句在程序运行时,“{}”中的各行单语 句是依次顺序执行的。在C51语言中使用复合语句需要注意如下几点:
(1)C51语言中,复合语句在语法上等同于一条单语句。 (2)复合语句中不但可以由可执行语句组成,还可以用变量定义等语句组成。要注意 的是在复合语句中所定义的变量,称为“局部变量”,所谓局部变量就是指它的有效范围 只在复合语句中。 (3)对于一个函数而言,函数体就是一个复合语句,函数内定义的变量有效范围只在 函数内部。
C51的常用语句
1
C51的常用语句
1.声明语句 2.表达式语句 3.复合语句 4.循环语句 5.条件语句 6.开关语句 7.跳转语句 8.调用语句 9.返回语句
C51的常用语句
2
C51语句,即C51语言中的操作命令,用于使单片机完成特定的功能。 C51的源程序是由一系列的语句组成的,这些语句可以完成变量声明、赋值 和控制输入输出等操作。一条完整的语句必须以“;”结束。由于单片机能 识别的是机器指令,因此一般一条语句经过编译后生成若干条机器指令来执 行。C51语言中的语句包括说明语句(声明语句)、表达式语句、复合语句、 循环语句、条件语句、开关语句、跳转语句、调用语句和返回语句等,下面 分别进行说明。
5.条件语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、条件运算符
条件运算符的格式:
表达式1?表达式2:表达式3 含义:if (表达式1) 表达式2;
else 表达式3;
例: (a>d) ?(c=15):(c=0);
也可写为: c=(a>d)?15:0;
含义:if (a>d) c=15;else c=0;
例: max=(a>b)?a:b; if (a>b) max=a;else max=b;
…………………... case 常量表达式n:语句n;break; default:语句n+1; }
说明: 1 表达式一般要求是
有序可数的类型,例: 整形、字符型、枚举类 型等;
2. 每个case后的常量 表达式必须互不相同;
3. case后的常量表达 式的顺序无所谓;
4. 执行方式是根据表 达式的值来取case后面 的常量表达式;
第二节 循环语句
循环语句一般有循环体和循环终止条件组成。 一组被重复执行的语句称为循环体,能否重复执行下去 则取决于循环终止条件。
实现循环的语句有以下三种:
while语句 先判断,后执行;
do…while语句 先执行,后判断;
for语句
先判断,后执行。
一、while语句的格式和例子
while语句的一般形式为: while(表达式) { 循环体;}
题: d=(a>b)?a:(b>c)?a:c
五、if 语句的例子
1 当x>0 y= 0 当x=0
-1 当x<0
1. if (x<0) y=-1; else y=0;
if (x>0) y=1;
2. if (x>0) y=1; if (x<0) y=-1; else y=0;
3. if (x<0) y=-1; if (x==0) y=0; if (x>0) y=1;
0 表达式为1?
1
循环体
void main(void) {int a=0,sum=0; while( a<101)
5. break可有可无, 但执行方式不一样。
七、switch语句的例子
用A、B、C、D、E 来表示分数的等级:
100<=score<=90 A 90<score<=80 B 80<score<=70 C 70<score<=60 D score<=90 E
switch(score) { }
switch(scores/10) {case 10: case 9: grade=‘A’;break; case 8: grade=‘B’;break; case 7: grade=‘C’;break; case 6: grade=‘D’;break; default: grade=‘E’; }
一、顺序结构
顺序结构是一种最基本的、最简单的编程结构。 A B
二、选择结构
二选一结构 选择结构有两种形式:
多选一结构 二选一结构( if 语句):
1 表达式为1? 0
A
B
1 表达式为1? 0
A
二、选择结构
多选一结构(switch语句):
常量表达式1
A1
表达式的值=?
常量表达式2
A2
…...
常量表达式n
第四章
C51流程控制语句
第一节、C语言的基本结构
C语言是一种结构化编程语言,结构化语言的基本元素 是模块,是程序的一部分。
每一个模块中,都只有一个出口和一个入口。 结构化程序由若干模块组成,每个模块中包含若干个基 本结构,而每个基本结构中可以有若干条语句。 C语言有三种基本结构:
顺序结构
选择结构
循环结构
else if (a==1) b=7; else if (a==2) b=9; else if (a==3) b=11; else b=13;
b=3; if (a<=0) b=5;
if (a<=5) b=7; else b=9;
else if (a<=-5) b=11; else b=13;
三、if 语句的垂悬问题
4. if 的嵌套形式: if (表达式1) if (表达式2) 语句1; else语句2;
else if (表达式3) 语句3; else语句4;
二、if 语句的各种例子
b=3; if (a>=0) b=5;
b=3; if (a==0) b=5;
else b=7;
b=3; if (a<=0) b=5;
4. if (x<0) y=-1;
7. if (x<=0) y=-1;
else if (x==0) y=0;
else y=1;
else y=1;
if (x==0) y=0;
5. y=-1; if (x==0) y=0; else y=1;
8. if (x<=0) y=0; if (x>=0) y=1 else y=-1;
例:{c=a;a=b;b=c;}
一、if 语句的基本形式
if 语句的基本形式有四种:
1. if (表达式) 语句;
2. if (表达式) 语句1; else 语句2;
3. if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; ……. else if (表达式n) 语句n; else 语句n+1;
An
三、循环结构
先判断,后执行 循环语句有两种:
先执行,后判断
先判断,后执行(while,for): 先执行,后判断(do…while):
0 表达式为1?
1
A
A
1 表达式为1? 0
第二节 选择语句
二选一结构(if 语句) 选择结构有两种形式:
多选一结构(switch/case语句) 复合语句:由一对大括号括起来的语句。
例: if (a>b) if (a>d) c=15; else c=0;
当if 的个数与else的个 数不相同时,else采用就近 配对的原则。
if 的个数大于等于else 的个数。
if (a>b) {if (a>d) c=15;}
else c=0;
if (a>b) if (a>d) c=13; else if (a>e) c=15; else c=0;
6. y=-1; if (x==0)y=0; if (x>0) y=1;
9. if (x<=0) y=-1; else y=1;
if (x>=0) y=0;
六、switch/case语句
switch语句的基本形式如下:
switch(表达式) {case 常量表达式1:语句1;break; case 常量表达式2:语句2;break;