资源描述:
《单片机课程设计汇本(流水灯控制设计).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、题目名称:流水灯的控制设计姓名:松杭班级:电气N091学号:200945679832日期:2012年6月16日目录目录11.课程设计的目的22.任务描述及设计方案22.1任务描述22.2设计方案22.3设计思路23.流水灯控制的硬件原理图及程序语言33.1硬件原理图如下:33.2程序语言44.分析和总结64.1分析64.2总结65.心得体会66.参考文献61.课程设计的目的课程设计是本专业集中时间环节的主要容之一。训练正确地应用单片机,培养解决工业控制、工业检测等领域具体问题的能力。学生通过所做课题,熟悉单片机应用系统开发研制
2、的过程,软硬件设计的工作方法、容及步骤,对学生进行基本技能训练。例如组成系统、编程、调试、绘图等。使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。本课程设计的目的:设计一个简单的由单片机控制的输入输出系统。2.任务描述及设计方案2.1任务描述设计流水灯控制电路,使连接在该电路上的八个LED灯按三种不同的模式进行闪烁。2.2设计方案本方案是用ATMEL的AT89C51来实现的。每个口都为低电平有效,我们用P2口的高低电平来控制P0口的电平,以实现不同的闪烁模式。通过三个按钮选择不同模式的亮灯方案,模式一:顺序逐个亮灭
3、,产生流水效果;模式二:逆序同时两灯流水;模式三:同时闪烁,一个甚至多个移位,包含模式一、二等64种不同的闪烁效果。三种模式可以随意切换,还带有暂停和复位功能。2.3设计思路P0^1~P0^7接八个LED灯,P2^1~P2^3、P2^6、P2^7分别接按钮开关,编号1~5。按钮一端接地。在编程时,用P2口的高低电平来控制P1口的电位。开关1~3分别为模式1~3的选择启动按钮,开关按钮4为停止复位键,开关按钮5为暂停键。以模式一为例,LED从左往右分别为D1~D8,按下开关按钮1时,启动模式1,亮灭顺序从1~8。图2-1LED灯
4、管因为计算计算的速率很快,人的眼睛不可能分辨的过来,所以在每只LED灯亮的时候设有一定的延时,熄灭也一样。依次从左往右时就会产生“流水”的效果。模式2、模式3也是一样,只因程序的不同而不同。1.流水灯控制的硬件原理图及程序语言1.1硬件原理图如下:图3-1硬件原理图1.1程序语言#include#includesbitled4=P2^6;sbitled5=P2^7;sbitled1=P2^1;sbitled2=P2^2;sbitled3=P2^3;#defineucharunsigned
5、char#defineuintunsignedintcodeuintnum[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x81,0xc3,0xe7,0xff,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x42,0x24,0x00,0xff,0x00,
6、0xff,0x00,0xff,0x24,0x42,0x81,0x24,0x42,0x81,0x24,0x42,0x81,0x18,0x81,0x18,0x81,0x18,0x81,0xff,};voiddelay(uintms);uintcount=0;staticucharx=0;voidmain(){uchara;ucharb;b=0x5f;a=0xfe;if(led1==0
7、
8、led2==0
9、
10、led3==0){while(1){/*================复位================*/if(led4=
11、=0){P0=0xff;a=0xfe;x=0;while(led1==1&&led2==1&&led3==1);}/*=================循环程序===============*//*================模式1===============*/while(led2==1&&led3==1&&led4==1&&led5==1){P0=a;delay(250);a=_crol_(a,1);}/*================模式2===============*/while(led1==1&&led3=
12、=1&&led4==1&&led5==1){P0=b;delay(250);b=_cror_(b,1);}/*================模式3===============*/while(led1==1&&led2==1&&led4==1&led5==1){for(co