- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
学习情境3 变化点亮LED彩灯
学习情境目标
本学习情境是以8只发光二极管显示为例,用单片机控制发光二极管,实现8只发光二极管有规律的变化点亮。从而学习C51的分支结构程序设计、关系运算符和逻辑运算符及表达式。
学习情境分析
为了让单片机控制发光二极管,将8只发光二极管接在单片机P1口上,根据P2口外接的组合开的状态有规律的控制P1口的任意管脚上为低电平,则接在它上面的发光二极管就被点亮;反之,如果P1口的任意管脚上为高电平,则接在它上面的发光二极管就不会被点亮。连接电路图如图3-1所示。
图3-1 连接电路图
任务一 简单变化点亮8路彩灯
任务目标
本任务是用P2口外接8位组合开关,根据P2口的开关组合状态,单片机的P1口控制外接的8个发光二极管固定显示。掌握利用if~else语句实现分支结构程序设计的方法。
任务程序分析
在这里,要编写C51程序,首先读取P2口的开关组合状态,利用if~else控制语句实现将一个不同的8位无符号数通过P1口输出并能通过8个发光二极管观察结果。从输出的具体数据来看,D1灯亮需要的数据是P1.0的位为0,D2灯亮需要的数据是P1.1的位为0,依此类推。
源程序
#include reg51.h //包含头文件
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
void main(void)
{
uchar i;// 定义为无符号字符型变量
while(1)//无限循环
{
i=P2;// if(i==0xff) P1=~i;//判i变量的
else if(i==0xfe) P1=0xfe;// 判i变量的
else if(i==0xf0) P1=0xf0; //判i变量的i变量的i变量的i变量的 }
}
任务实施
1.利用proteus仿真软件绘制电路原理图
按照情景一proteus仿真软件绘制电路过程绘制原理图3.1,绘制原理图时的添加器件有:AT89S51,LED-BLUE,RESPARK-8,DIPSW_8等,注意电源器件的放置于连线。
2. C51程序的编译
按照情景一Keil C51编译软件的操作步骤对源程序进行编译和调试。
3.执行程序观察效果
将编译成功后的.HEX文件加载到CPU,根据程序设置DIPSW_8组合开关的状态,执行程序观察效果。
相关知识
1. C51程序的选择结构程序设计
在结构化的程序设计中,程序由三种基本结构组成。它们分别是顺序结构,选择结构和循环结构。已经证明,由三种基本结构组成的算法结构可以解决任何复杂的问题。由三种基本结构组成的程序可以称为结构化程序。其中:
顺序结构流程图如图3.2所示。由图我们不难看出,程序执行时先执行语句1再执行语句2,两者是顺序执行的关系,我们前面介绍的源程序中,赋值语句都可以实现该结构。
选择结构流程图如图3.3所示。当判断表达式P为真时,执行语句1部分,否则执行语句2部分。尤其要注意的是语句1和语句2在程序的执行中只有一个被执行。
循环结构将在情景4中介绍。
图3.2 顺序结构流程图 图3.3 选择结构流程图
2. C51程序中的if语句的三种形式
C语言提供了三种形式的if语句。
(1)if(表达式) 语句
例如:if(ab) { t=a; a=b; b=t; }
(2)if (表达式) 语句1 ;
else 语句2;
例如:if() ;
else P1=0xff;
(3)if(表达式1) 语句1;
else if(表达式2) 语句2;
else if(表达式3) 语句3;
···
else if(表达式m) 语句m;
else 语句n;
源程序中采用了这种形式。这种形式实际上是一种嵌套的if形式,用于多分支结构程序设计。
3.关系运算符和关系表达式
关系运算是一种简单的逻辑运算,关系运算符中的“关系”二字指的是一个值与另一个值之间的关系。
(1)关系运算符及优先级
关系运算符就是关系比较符C语言共有6种关系运算符,见表3-1。
表3-1 关系运算符
关系运算符 作 用 结 合 性 < 小于 左结合性 <= 小于等于 > 大于 >= 大于等于 == 等于 左结合性 != 不等于 注意:
1)关系运算符共分两级,其中<,<=,>,>=的优先级相同,且高于==和!=(二者优先级相同)。
2)关系运算符的优先级低于算术运算符,高于赋值运算符。
例:
a+b
文档评论(0)