基于单片机的简易流水灯.docx

上传人:b****5 文档编号:6240684 上传时间:2023-01-04 格式:DOCX 页数:22 大小:681.92KB
下载 相关 举报
基于单片机的简易流水灯.docx_第1页
第1页 / 共22页
基于单片机的简易流水灯.docx_第2页
第2页 / 共22页
基于单片机的简易流水灯.docx_第3页
第3页 / 共22页
基于单片机的简易流水灯.docx_第4页
第4页 / 共22页
基于单片机的简易流水灯.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于单片机的简易流水灯.docx

《基于单片机的简易流水灯.docx》由会员分享,可在线阅读,更多相关《基于单片机的简易流水灯.docx(22页珍藏版)》请在冰豆网上搜索。

基于单片机的简易流水灯.docx

基于单片机的简易流水灯

单片机课程设计报告

 

学生姓名

学 号

教学院系

电气信息学院

专业年级

指导教师

李杰

 

完成日期

 

2011

 

 

6

 

 

25

 

 

目录

第一章基础设计报告-2-

1.1设计题目-2-

1.2流程图-2-

1.3设计任务-2-

1.4创建新工程和文件-2-

1.4.1创建Keil4新工程-2-

1.4.2创建Proteus新文件-6-

1.5运行及调试-8-

第二章提高设计报告-10-

2.1设计题目-10-

2.2流程图-10-

2.3设计任务-11-

2.4编写程序,设计单片机电路图-11-

2.5交通灯各部分功能-12-

2.5.1晶体振荡和复位电路-12-

2.5.2上拉电阻-12-

2.5.3数码管显示和发光二极管-12-

2.5.4按键-13-

2.5.5单片机模块-14-

2.6程序运行及调试-14-

2.6.1仿真-17-

第三章提高设计报告任务说明书-19-

3.1小组成员及学号-19-

3.2本人工作任务详细说明-19-

第四章课程设计心得-20-

参考文献:

-20-

 

第一章基础设计报告

1.1设计题目基于单片机的简易流水灯

1.2流程图

1.3设计任务

利用单片机的端口输出,自己设计流水灯电路图和程序,点亮8个发光二极管。

1.4创建新工程和文件

1.4.1创建Keil4新工程

1.启动keil4软件,点击project

图1.4.1启动工程图

2.选择NewuVisionProject,创建新工程,如下图所示:

图1.4.2新建工程图

3.选择单片机类型AT89C51,点击建立工程,如下图所示:

图1.4.3选择单片机类型

图1.4.4工程建立完成

4.新建文件,如下图所示:

图1.4.5建立新文件

5.新文件命名,因为用的是C语言编程,所以新文件后缀名为.c,如下图所示:

图1.4.6新文件保存

6.将新文件加入工程,添加方法如下图所示:

图1.4.7将新建文件添加的工程

7.点击“targetoptions”,选择output,选中生成hex文件,如下图所示:

图1.4.8选择生成hex文件选项

8.Keil4新工程和文件建立完成,在操作窗口进行编程操作。

如下图所示:

图1.4.9编程操作图

1.4.2创建Proteus新文件

1.打开Proteus,进入操作界面,创建新文件。

进入开发环境Proteus后,选择“文件/新建”命令出现“新建设计”窗口属性对话框,选择A4,如图所示:

图1.4.10窗口属性图

2.进入元件库,在元件库中查找所需元件,并双击添加,入下图所示:

选择“库/拾取元件”,进入元件库。

图1.4.11元件库图

添加所需元件。

图1.4.12图库(51单片机)

3.双击将从元件库中查找到的元件,添加到设计图上,如图所示:

图1.4.13添加元件图

4.完成后的图如下:

图1.4.14流水灯电路图

1.5运行及调试

<1>编程程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

voiddelay(uinta);

voidmain()

{

while

(1)

{

P0=0xfe;delay(1000);

P0=0xfd;delay(1000);

P0=0xfb;delay(1000);

P0=0xf7;delay(1000);

P0=0xef;delay(1000);

P0=0xdf;delay(1000);

P0=0xbf;delay(1000);

P0=0x7f;delay(1000);

}

}

voiddelay(uinta)

{

uinti,j;

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

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

;

}

<2>调试与运行:

程序写好后,点击keil的编译运行调试,生成hex文件,如下图所示:

图1.5.1运行界面图

在Proteus中双击图中的单片机,选中所生成的hex文件,点击确定,单片机开始仿真,如下图所示:

图1.5.2仿真图

第二章提高设计报告

2.1设计题目基于单片机的简易交通灯

2.2流程图

图2.2.1交通灯流程图

2.3设计任务

(1)收集资料,了解交通灯的大致变化规律

(2)确定I/O口的功能

(3)用Keil软件编写程序,用Proteus软件设计电路图

(4)实现交通灯的简单仿真

2.4编写程序,设计单片机电路图

建立Keil工程文件,开始编写程序;打开Proteus,按要求画好单片机仿真电路图。

2.5交通灯各部分功能

2.5.1晶体振荡和复位电路

电路如图所示:

下图上边为复位电路,下边为晶振电路。

图2.5.1晶体振荡和复位电路图

2.5.2上拉电阻

单片机的P0口外接时要接上拉电阻,如下图所示:

图2.5.2上拉电阻图

2.5.3数码管显示和发光二极管

交通十字路口红绿灯变换,是根据数码管上显示的数来变换的,当数码管上显示的数小于5时,数码管和十字路口的红绿灯开始闪烁,提示红绿要开始变换了,来往车辆做好准备。

图2.5.3.1数码管

图2.5.3.2发光二极管

2.5.4按键

十字路口的红绿灯正常变换时,当按下“开始调数”触发中断,进入调数状态,此时可以分别按下“加1”、“减1”来改变红绿灯每次变换的时间,当调数完成后,按下“调数完成”结束中断,返回程序断点继续执行原程序,只是此时红绿灯每次变换的时间更改为中断中所调的数。

如下图所示:

图2.5.4按键

2.5.5单片机模块

图2.5.551单片机

2.6程序运行及调试

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

voiddisplay(intm);

voiddelay1(uinta);

voiddelay(uinta);

sbitkey1=P3^5;

sbitkey2=P3^3;

sbitkey3=P3^4;

bitg;

inta,time=11;

voidmain()

{inti,m=time;

EA=1;//开总中断

EX0=1;//开外部中断0

IT0=0;//外部中断0边沿触发,下降沿触发

while

(1)

{

while(m>0)

{

P0_0=0;P0_1=1;P0_2=1;P0_3=0;

if(m<=3)

{

switch(m)

{

case3:

{for(i=0;i<120;i++)

{display(m);delay(500);}

P0_0=1;P0_3=1;delay1(250);P0_0=0;P0_3=0;m--;delay(250);}

break;

case2:

{for(i=0;i<120;i++)

{display(m);delay(500);}

P0_0=1;P0_3=1;delay1(250);P0_0=0;P0_3=0;m--;delay(250);}

break;

case1:

{for(i=0;i<120;i++)

{display(m);delay(500);}

P0_0=1;P0_3=1;delay1(250);P0_0=0;P0_3=0;m--;delay(250);}

break;

}}

}

if(m>3)

{

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

{display(m);delay(500);}

m--;

}

}

m=time;

while(m>0)

{

P0_0=1;P0_1=0;P0_2=0;P0_3=1;

if(m<=3)

{

switch(m)

{

case3:

{for(i=0;i<120;i++)

{display(m);delay(500);}

P0_1=1;P0_2=1;delay1(500);P0_1=0;P0_2=0;m--;delay1(500);}

break;

case2:

{for(i=0;i<120;i++)

{display(m);delay(500);}

P0_1=1;P0_2=1;delay1(500);P0_1=0;P0_2=0;m--;delay1(500);}

break;

case1:

{for(i=0;i<120;i++)

{display(m);delay(500);}

P0_1=1;P0_2=1;delay1(500);P0_1=0;P0_2=0;m--;delay1(500);}

break;

}

}

if(m>3)

{

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

{display(m);delay1(500);}

m--;

}

}m=time;

}

//---------------------数码管输出显示---------------------------

voiddisplay(intm)

{

charstring[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0x7D,0X07,0X7F,0X6F};

intL1,L2;

L1=m/10;L2=m%10;

g=~g;

if(g){P1=0xff;P2=string[L1];P1=0xfe;}

else{P1=0xff;P2=string[L2];P1=0xfd;}

}

//延时

voiddelay(uinta)

{while(a>0)

a--;

}

//------------------延时-----------------------

voiddelay1(intN)

{

inti,j;

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

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

}

//-------------------中断-----------------------

voidexter0()interrupt0

{

EX0=0;

a=1;

display(time);

delay1(100);

while(a)

{

display(time);

if(key2==0)

{

delay1(100);

if(key2==0)

{

while(key2==0){}

time++;

display(time);

}

}

if(key3==0)

{

delay1(100);

if(key3==0)

{

while(key3==0){}

time--;

display(time);

}

}

if(key1==0)

{

delay1(100);

if(key1==0)

{

while(key1==0){}

a=0;

EX0=1;

}

}

}

}

2.6.1仿真

程序经过编译后生成hex文件,双击单片机元件,选中生成的hex文件,开始仿真。

仿真结果如下图所示:

图2.6.1东西绿灯,南北红灯

图2.6.2东西红灯,南北绿灯

第三章提高设计报告任务说明书

3.1小组成员及学号

姓名

学号

屈直

0807040114

王林建

0807040225

3.2本人工作任务详细说明

根据选题《基于单片机的交通灯》我首先在网上查找相关设计资料,了解实验内容以及基本的任务,这是为了让这次设计更加完善。

交通灯的设计中主要完成的是电路图的绘制,以及与同伴讨论联系程序与电路的结合问题。

设计完成后,根据实验电路图和程序以及过程中的结论完成实验报告。

第四章课程设计心得

本次课程设计使我认识到了单片机这门学科的重要性,以及根据它产生的延伸知识。

通过本次课程的设计,不但加深我对在课程上所学到的单片机理论知识的认识和理解,重新让我认识到了这门学科的在应用方面的广阔前景,并且通过实践与操作更加丰富了自己的知识。

扩展了知识面,了解了理论知识与实际操作相结合的意义,懂得了如何分析电路与解决实际问题,提高了自己吃力问题的能力,从各方面提高了自己的综合素质。

在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督,学会了如何合作,也为以后的工作学习打下基础。

参考文献:

[1]黄迪明、余勤.C语言程序设计教程[M].国防工业出版社出版,2007

[2]李建忠.单片机原理及应用[M].西安电子科技大学出版社出版,2010

[3]仝迪、顾三春.电子设计指导书成都[M].西南石油大学电子信息工程学院,2010

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1