左右来回循环的流水灯

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(大作业题目)报告

单片机控制左右循环的流水灯

学生学号:

学生姓名:

同组学号:

同组姓名:

指导老师:

设计目的:

1)学习P1口的使用方法;

2)学习延时子程序的编写

3)了解简单单片机应用系统的设计方法。

4)掌握应用编译源汇编程序的操作方法。

5)熟练掌握AT89c51型开发板的使用方法和注意事项。

设计要求:

8个发光二极管LED0~LED7经限流电阻分别接至P1口的P1.0~P1.7引脚上,阳极共同接高电平。编程实现制作左右来回循环的节日彩灯,显示规律如下图所示。

依次实现红蓝绿黄红蓝绿黄的循环亮灭。

设计步骤:1.按照电路图在proteus7.5的环境下进行仿真连接,在keilc3的环境下进行c环境的编译,然后下载到单片机内运行进行仿真,观察发光二极管的运行状态。要注意的的,实验中一定要再p1口接上拉电阻或是一个74HC245的芯片,以提高单片机的P口驱动,以使LED灯亮。如果使用74HC245,则引脚OE要接地,DIR要接高电平。

2.实现单片机工作的最小系统:电源电路﹑时钟电路﹑复位电路。

3.因为LED灯是共阳极接入,编程实现灯亮的时候,要使语句取反。

设计电路图:

左右来回的流水灯.PDF

源程序:左右来回的流水灯.C

流程图:开始

判断P口电平

高电平低电平

变向P口加1

延时

设计总结:1.实验中连接电路后运行发现等没有亮,检查程序,看接相应灯的P口输出语句是否取反了;如果没有循环,看控制方向的语句是否写对;检查上拉电阻的取值是否正确,一定要有上拉电阻。

2.通过本次设计试验,我了解了单片机是如何实现控制功能的,设计中会遇到错误的结果,要仔细分析错误,然后一一去改进,试验,直到没有错误为止。三、/*

*左右来回的流水灯*

*/

#include

typedef unsigned char uint8;

typedef unsigned int uint16;

void delay(uint16 x)

{

uint8 i,j;

for(i = x; i > 0; i --)

for(j = 114; j > 0; j --);

}

void main()

{

uint8 b = 0, way = 0; //移动位数变量及移动方向变量while(1)

{

if(way == 0) //根据way选择左移还是右移P0 = ~(0x01 << b); //最低位的0被左移b位 else

P0 = ~(0x80 >> b); //最高位的0被右移b位

if( ++b == 8) //如果移动到左端或右端

{

b = 0; //b归0

way = !way; //改变方向

}

delay(200);

}

}

相关文档
最新文档