- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
项目一 霓虹灯制作 任务3
项目一 霓虹灯的制作 任务3: 流水灯常见实例 任务名称: 流水灯 8个LED依次亮灭,并如此循环下去,就是流水灯 任务目标 1、掌握硬件连接图的工作原理。 2、理解驱动LED亮灭的方法。 3、能用2种方法来实现流水灯。 4、了解I/O口的控制应用。 5、理解延时程序的使用。 子任务一:用移位符来实现流水灯 知识要点: 运算符 含义 运算符 含义 按位与 ~ 取反 | 按位或 左移 ^ 按位异或 右移 硬件连接图 参考程序代码 #include reg52.h unsigned char i; unsigned char temp; unsigned char a,b; void delay(void) //延时子程序 { unsigned char m,n,s; for(m=20;m0;m--) for(n=20;n0;n--) for(s=248;s0;s--); } void main(void) //主程序 { while(1) //循环条件永远为真,以下程序一直执行下去。 { temp=0xfe; P1=temp; //直接对I/O口P1赋值,使P1.0输出低点平。 delay(); //延时 for(i=1;i8;i++) //实现广告灯的从右到左移动 { a=tempi; b=temp(8-i); P1=a|b; delay(); } } } 子任务1 小 结 1、让8个LED亮灭的方法。 总线操作法和位操作法 2、用移位符来实现的一般方法 (1)确定移位数 (2)确定移动的方向 (3)移动的次数(永远循环或循环几次) 子任务2:用_crol_()和_cror_()来实现. 知识要点 打开C:\Keil\C51\HLP文件夹,打开C51lib.chm,查看_crol_()和_cror_()使用方法。 crol_用法示例 #include intrins.h void tst_crol (void) { char a; char b; a = 0xA5; b = _crol_(a,3) /* b现在是0x2D */} _cror_用法示例: #include intrins.h void tst_cror (void) { char a; char b; a = 0xA5; b = _cror_(a,1); /* b现在是0xD2 */} 参考程序代码 #include reg52.h #includeintrins.h unsigned char i; unsigned char temp; unsigned char a,b; void delay(void) //延时子程序 { unsigned char m,n,s; for(m=20;m0;m--) for(n=20;n0;n--) for(s=248;s0;s--); } void main(void) //主程序 { while(1) //循环条件永远为真,以下程序一直执行下去。 { temp=0xfe; for(i=1;i8;i++) //实现广告灯的从右到左移动 { P1=_crol_(temp,i); delay();}}} 子任务2 小 结 1、 _cror_和_crol_的用法。 2、注意循环次数的控制。 拓展任务 让8个LED实现流水灯循环3次,后再同时闪 烁2次.如此循环下去。 拓展任务分析 1、流水灯循环3次的实现方法 2、8个灯闪烁2次的实现方法 3、以上现象永远循环下去 拓展任务参考代码 #include reg52.h #includeintrins.h unsigned char i,j; unsigned char temp; unsigned char a,b; void
文档评论(0)