单片机之 单片机控制流水灯.pptxVIP

  • 18
  • 0
  • 约2.04千字
  • 约 42页
  • 2021-11-18 发布于江西
  • 举报
第五章 项目一 单片机控制LED流水灯;1.MSC51系列单片机I/O端口知识,端口负载能力,常见应用场合及使用方式等; 2.for语句、do while语句运行规则,使用方法 ; 3.延时函数的使用. ;案例引入;二、案例引入 ;三、知识讲解 ;2.流水灯亮灭原理;四、项目设计要求 ;1.效果图;(4).单只右移流水灯:;(6).由内向外开花效果的流水灯:;(8).由外向内再由内向外效果的流水灯:;2.项目设计;1头文件 #include reg52.h 2主函数 main() { ①初始化语句 ②While(1) //重复执行的死循环 { 循环体语句 } };主程序:main() main这个主程序名不能随便取,只能是main,并且一个系统中只能有一个。 ;活动1:单只闪烁控制;1.1.2 人的视觉信号 由于人眼对事物变化的反映有一个经大脑神经处理的时间,称为视觉暂留。因此不论LED灯是亮,还是灭的保持时间一定要大于视觉暂留时间,我们才能看见LED变化的效果。这个视觉暂留的时间一般要大于60ms。 结论:只要同一个控制端有两个及以上的不同信号输出时,一定要在信号间插入一个稳定时间(延时)。;1.2 程序控制思路分析;程序代码:;1.3 完整程序展示;#include reg52.h //预处理命令 void main() //主函数名 { unsigned int a; //定义变量a为int类型 while(1) { for (a=0; a10000; a++); // 10000次空循环,相当于延时时间 P1^0 = 0; //设P1.0口为低电平,点亮LED for (a=0; a10000; a++); P1^0 = 1; //设P1.0口为高电平,熄灭LED for (a=0; a10000; a++); } };活动2:8只LED闪烁控制;2.2 程序控制流程图;2.3 源程序;活动3:单只左移流灯效果 ; 3.1控制信号分析 ;3.2 程序流程图;3.3 程序代码;3.3.2 左移流水控制优化程序;方法一控制信号用数组来优化的程序;#include reg52.h //预处理命令 unsigned char const tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //将数组保存到单片机的ROM程序存储区 //***主函数 void main( ) //主函数名 { unsigned char i; unsigned int a; while(1) { for(i=0;i8;i++) //信号数 { for(a=0;a10000;a++); //延时 P1=tab[i]; //将数组tab中的元素依次取出, 从P1送出口}} };方法二 控制信号用函数来优化程序;4.3.3.3 关于循环左移_corl_函数;4.3.3.4 关于延时语句函数化;#include reg51.h //预处理命令 #include intrins.h //含移位函数的头文件 //**delay函数能延时 Xms**** void delay(unsigned int x) { unsigned int i; for(;x0;x--) //下面的1ms延时语句执行X遍 for(i=125;i0;i--);//大约延时1ms } //***主函数 void main(void) //主函数名 { unsigned char i; P1=0xfe ; //设P1口初值 while(1) { for(i=0;i8;i++) { delay(1000); //延时 1S P1=_crol_(P1,1); //将P1的值循环左移一位//后,从P1送出口}}};4.4单只右移流水灯; 这个效果与单只左移流水灯的控制思路基本一样,只需将循环左移函数_crol_ 改为循环右移函数_cror_ 。 P1口初值改为0x7f即可。;单只右移流水灯程序;4.5 单只左右来回跑的流水灯;4.5.1 程序流程

文档评论(0)

1亿VIP精品文档

相关文档