任务任务路信号灯控制系统的设计路信号灯控制系统.pptVIP

任务任务路信号灯控制系统的设计路信号灯控制系统.ppt

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

*我们的任务是实现8个LED灯的依次轮流,循环点亮,根据硬件电路分析可知,这8个LED灯分别连接在了单片机P2口的P20-P27引脚。如何控制这8个灯点亮,其实就是使P20-P27引脚输出高低电平。当输入低电平时,点亮LED灯,输入高电平时,熄灭LED灯。*比如点亮ledD0时,P20口输出低电平,其他口输出高电平*点亮ledD1时,P21口输出低电平,其他口输出高电平*点亮ledD2时,P22口输出低电平,其他口输出高电平*依次类推,可以得到点亮ledD7时,P27口输出低电平,其他口输出高电平,这样就可以得到点亮8个LED灯时,P0口分别要输出的数据。他们对应的十六进制分别时0xfe、oxfd、0xfb、0xf7、0xef、0xdf、0xbf、0x7f。下面可以根据分析,画出本次任务的软件流程图。**开始,点亮LED灯D0,即P0口输出0xfe,调用延时函数延时一会,再点亮D1,即P0口输出0Xfd,再调用延时函数延时一会,然后依次点亮后面的几个LED灯,直到8个LED灯都点亮后,再从D0开始循环点亮,这就是本次任务的流程图。下面我们就根据流程图来进行软件程序的编写。*再keil软件里建好本次任务的工程和源文件后,再源文件led_8.c内编写源代码。首先是文件说明,然后包含头文件,这个文件里面包含了单片机特殊功能寄存器的定义,然后编写延时函数delay,注意形参的数据类型为无符号的整型,形参最大可以取值到65535.循环体是一个while死循环,不做具体操作,只是起到消耗CPU的时间.然后编写主函数main函数.根据流程图可知,先点亮D0,P2=0xfe;然后调用延时函数,然后点亮D2,最后一直点亮D7,到这里只能实现一次8个LED灯的点亮,要看到流水灯的效果,还需要加一个while循环,使他们循环往复的执行.这样我们的软件程序就开发完成了.为了提高程序的可读性,我们可以给P2口进行宏定义取个名字LED,以后如果修改I/O口时,只需要修改宏定义的地方即可,不需要去修改函数内部的内容了.这是C语言编程常用的方法,大家一定要掌握.*再keil软件里建好本次任务的工程和源文件后,再源文件led_8.c内编写源代码。首先时文件说明,然后包含头文件,这个文件里面包含了单片机特殊功能寄存器的定义,然后编写延时函数delay,注意形参的数据类型为无符号的整型,形参最大可以取值到65535.循环体是一个while死循环,不做具体操作,只是起到消耗CPU的时间.然后编写主函数main函数.根据流程图可知,先点亮D0,P2=0xfe;然后调用延时函数,然后点亮D2,最后一直点亮D7,到这里只能实现一次8个LED灯的点亮,要看到流水灯的效果,还需要加一个while循环,使他们循环往复的执行.这样我们的软件程序就开发完成了.为了提高程序的可读性,我们可以给P2口进行宏定义取个名字LED,以后如果修改I/O口时,只需要修改宏定义的地方即可,不需要去修改函数内部的内容了.这是C语言编程常用的方法,大家一定要掌握.*再keil软件里建好本次任务的工程和源文件后,再源文件led_8.c内编写源代码。首先时文件说明,然后包含头文件,这个文件里面包含了单片机特殊功能寄存器的定义,然后编写延时函数delay,注意形参的数据类型为无符号的整型,形参最大可以取值到65535.循环体是一个while死循环,不做具体操作,只是起到消耗CPU的时间.然后编写主函数main函数.根据流程图可知,先点亮D0,P2=0xfe;然后调用延时函数,然后点亮D2,最后一直点亮D7,到这里只能实现一次8个LED灯的点亮,要看到流水灯的效果,还需要加一个while循环,使他们循环往复的执行.这样我们的软件程序就开发完成了.为了提高程序的可读性,我们可以给P2口进行宏定义取个名字LED,以后如果修改I/O口时,只需要修改宏定义的地方即可,不需要去修改函数内部的内容了.这是C语言编程常用的方法,大家一定要掌握.*再来观察一下这个表格,我们可以发现,其实P2口每次赋的值有一个规律,那就是再第一个值的基础上,每次左移了一位.根据这个规律我们可以将代码进行一个优化,可以调用循环左移函数来实现这个函数呢有两个参数,第一个参数是要操作的变量,第二是每次移动的位数,所以我们可以补齐这个函数就是_crol_(P2,1);.这个函数再库intrins.h里面进行了声明,所以要包含这个头文件.下面来优化一下刚刚的程序.*包含头文件includeintrins.h,延时函数不变,然后修改main函数,先点亮第一个LED灯,循环体内部先调用延时函数,使第一个灯亮一会,然后对LED,即

文档评论(0)

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

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

1亿VIP精品文档

相关文档