左右来回循环的流水灯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);
}
}