- 基于Proteus和Keil的C51程序设计项目教程(第2版):理论、仿真、实践相融合
- 周灵彬
- 963字
- 2021-03-04 19:18:15
3.1 任务1:键控花样灯1(用if语句实现)
3.1.1 任务要求与分析
1.任务要求
键控花样灯电路所用元器件列表及原理图如图3-1所示。按下K1,LED亮;松开K1,LED灭。
图3-1 键控花样灯电路所用元器件列表及原理图
2.任务目标
(1)建立对控制系统输入/输出的认识,掌握独立按键的状态判别。
(2)认识if语句,掌握其初步应用。
3.任务分析
根据电路分析,输入元器件为按键,输出元器件为LED。按键状态决定LED的亮/灭。单片机就是输入与输出元器件间的处理器。按键的状态由与之相连的引脚电平来判断。K1对应P3.2。K2对应P3.3。任务1的控制框图如图3-2所示。
一般的限流电阻用res,它是模拟型的电阻仿真模型,其阻值可修改。上/下拉电阻为Pullup/Pulldown,是数字型电阻仿真模型。为使复位的仿真效果真实,复位电阻可用Pulldown。
图3-2 键控花样灯1的控制框图
3.1.2 if条件语句的结构
if语句用来判定所给的条件是否满足,从而决定执行的顺序。if语句有以下3种形式。
1.单分支
如果表达式的值为真,即条件满足,则执行其后的语句,否则不执行该语句。if语句的结构如图3-3所示。
2.双分支
如果表达式的值为真,则执行语句1,否则执行语句2。if-else语句的结构如图3-4所示。
图3-3 if语句的结构
图3-4 if-else语句的结构
3.多分支
前两种形式的if语句一般都用于两个分支的情况。当有多个分支选择时,可采用if-else-if语句。
依次判断表达式的值,当出现某个值为真时,则执行其对应的语句后,跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n后,继续执行后续程序。if-else-if语句的结构如图3-5所示。
图3-5 if-else-if语句的结构
举例1:根据不同的工资水平salary,设置其对应的比例系数index。
当工资salary>1000时,index=0.4。
当工资800<salary<=1000时,index=0.3。
当工资600<salary<=800时,index=0.2。
当工资400<salary<=600时,index=0.1。
当工资salary<=400时,index=0.05。
程序语句的实现:
if语句总结:if语句的执行是根据if关键字之后表达式的值是0还是1来决定程序走向的。该表达式通常是逻辑表达式或关系表达式、算术表达式、一个变量,甚至是一个常量,也可以是其他表达式,如赋值表达式等。例如:
都是允许的。只要表达式的值为非0,即为“真”,则其后的语句是要执行的。当然这种情况在程序中不一定会出现,但语法上是合法的。
● 在if语句中,条件判断表达式必须用括号( )括起来,在语句之后不用加分号。
● 在if语句的三种形式中,所有的执行语句最好用大括号{}括起来,表示在某条件下的一个语句块。若执行语句只有一句,则{}可省略。例如:
注意:省略{}时,else总是和它上面离它最近的未配对的if配对。
3.1.3 关系运算符和关系表达式
所谓“关系运算”实际上是比较两个对象谁大、谁小或等与不等的关系,判断其比较的结果是否符合给定的条件。关系运算的结果只有两种可能,即“真”和“假”。例如,3>2的结果为真,3<2的结果为假。
关系运算符有6个,其含义及优先级见表3-1。
表3-1 关系运算符的含义及优先级
用关系运算符将两个表达式连接起来的式子就是关系表达式。关系表达式结构如下:
(1)a>b; //若a大于b,则表达式值为1(真)
(2)b+c<a; //(b+c)<a,若a=3、b=4、c=5,则表达式值为0(假)
(3)(a>b)==c; //若a=3、b=2、c=1,则表达式值为1(真)。
(4)c==5>a>b; //c==(5>a>b),若a=3、b=2、c=1,则表达式值为0(假)。
(5)x1=3>2; //结果是x1=1,原因是3>2的结果是“真”,为1,该结果被“=”号赋给了x1。这里须注意,“=”不是等于之意(C语言中等于用“==”表示),而是赋值号,即将该号后面的值赋给该号前面的变量,所以最终结果是x1=1。
(6)自行分析“x2=3<=2;”的结果是__________。
3.1.4 流程及程序设计
键控花样灯1的程序流程图如图3-6所示。程序保存为key1.c。
图3-6 键控花样灯1的程序流程图
3.1.5 编译、代码下载、仿真、测判
按项目1所述方法,先在Keil中新建工程key1,然后添加源程序key1.c、设置工程选项并编译,生成代码文件key1.HEX。参考2.1.7节下载代码,设置振荡频率为12MHz,进行仿真调试,填写表3-2,并进行分析和解释说明。
表3-2 键控花样灯1的运行现象分析与记录
将代码下载到实物板进行测试。