单片机技术及应用(中职)课件 16.控制流水灯_第1页
单片机技术及应用(中职)课件 16.控制流水灯_第2页
单片机技术及应用(中职)课件 16.控制流水灯_第3页
单片机技术及应用(中职)课件 16.控制流水灯_第4页
单片机技术及应用(中职)课件 16.控制流水灯_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

51单片机实训课程

流水灯

1单片机控制依次点亮一个发光二极管电路图2单片机控制依次点亮一个发光二极管编程思路3用位方式控制流水灯4用总线方式控制流水灯5用函数控制流水灯6用位方式、总线方式、函数控制流水灯各自的优点重点

1单片机控制依次点亮一个发光二极管编程思路2用位方式控制流水灯3用总线方式控制流水灯难点在单片机控制LED灯的方面,我们已经学习了不少的编程控制了,比如多盏灯的点亮,多盏灯的闪烁等等,是不是不用再学别的了?其实我们想让灯变化得更绚烂多彩些的话,还有一个技能是我们必须掌握的,那就是让灯“跑起来”!灯是怎么跑的呢?那么今天就让我们揭开庐山的“真面目”吧!情境引入项目任务要求让单片机的P0口位控制依次点亮一盏灯,点亮延时时间为500ms。用函数的方式来控制一盏灯循环左移或循环右移以实现流水灯的效果。流水灯控制硬件要求

流水灯控制电路原理图连线我们是用一组数据线即排线来连接P0口和8个LED灯。流水灯控制软件要求

流水灯控制一、位控制方式流水灯控制#include<reg52.h>#defineuintunsignedintvoiddelay(uintutime);sbitled1=P1^0;

//加载52系列单片机头文件//宏定义,将无符号整型定义为uint字符//声明带参数延时子函数//将P1口的第1位(即最末尾)定义为led1字符位控制流水灯参考程序(加载、声明、定义部分)

sbitled2=P1^1;sbitled3=P1^2;sbitled4=P1^3;sbitled5=P1^4;sbitled6=P1^5;sbitled7=P1^6;sbitled8=P1^7;

//将P1口的第2位定义为led2字符//将P1口的第3位定义为led3字符//将P1口的第4位定义为led4字符//将P1口的第8位定义为led8字符位控制流水灯参考程序(定义部分)voidmain(){while(1)

{

led1=0;

delay(500); led2=0; led1=1; delay(500);

//主函数入口//大循环//点亮第一个发光二极管//调用延时子函数//点亮第二个发光二极管//熄灭第一个发光二极管//调用延时子函数位控制流水灯参考程序(主程序部分)

delay(500); led3=0; led2=1; delay(500);

led4=0;

led3=1; delay(500); led5=0;

led4=1; delay(500);

//调用延时子函数//点亮第三个发光二极管//熄灭第二个发光二极管位控制流水灯参考程序(主程序部分)

delay(500); led6=0; led5=1; delay(500);

led7=0;

led6=1; delay(500); led8=0;

led7=1; delay(500); }}

//调用延时子函数//点亮第六个发光二极管//熄灭第五个发光二极管位控制流水灯参考程序(主程序部分)voiddelay(uintutime){uinti,j;for(i=0;i<utime;i++)for(j=0;j<115;j++);}

//声明延时子函数//定义变量i,j为无符号整型//延时约utime毫秒时间位控制流水灯参考程序(子程序部分)二、总线控制方式流水灯控制voidmain(){while(1)

{

P1=0xfe;

delay(500);

P1=0xfd; delay(500); P1=0xfb; delay(500); }}

//主函数入口//大循环//点亮第一个发光二极管//调用延时子函数//点亮第二个发光二极管//调用延时子函数//点亮第三个发光二极管//调用延时子函数总线控制流水灯参考程序(主程序部分) P1=0xf7;

delay(500);

P1=0xef; delay(500); P1=0xdf; delay(500); P1=0xbf; delay(500);

P1=0x7f; delay(500);

//点亮第四个发光二极管//调用延时子函数//点亮第五个发光二极管//调用延时子函数//点亮第八个发光二极管//调用延时子函数总线控制流水灯参考程序(主程序部分)三、函数控制方式流水灯控制#include<reg52.h>#include<intrins.h>#defineuintunsignedintvoiddelay(uintutime);

//加载52系列单片机头文件//加载函数包含文件//宏定义,将无符号整型定义为uint字符//声明带参数延时子函数函数控制流水灯参考程序(加载、声明、定义部分)voidmain(){uinta,i; while(1)

{

a=0xfe;

for(i=0;i<8;i++)

}}

//主函数入口//定义无符号整型变量a、i//大循环//点亮第一个发光二极管//实现1到8只LED灯循环点亮函数控制流水灯参考程序(主程序部分) { P0=_crol_(a,1); a=P0; mDelay(500); }

}}

//实现8盏灯依次从右到左点亮//将每次移位一次以后的结果送给P0口去显示//延时500毫秒函数控制流水灯参考程序(主程序部分)

总结单片机控制依次点亮一个发光二极管电路图用位方式控制流水灯的方法用总线方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论