学习情境3变化点亮LED彩灯.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档