基于单片机的交通灯设计说明书文档格式.docx

上传人:b****5 文档编号:17577168 上传时间:2022-12-07 格式:DOCX 页数:16 大小:174.60KB
下载 相关 举报
基于单片机的交通灯设计说明书文档格式.docx_第1页
第1页 / 共16页
基于单片机的交通灯设计说明书文档格式.docx_第2页
第2页 / 共16页
基于单片机的交通灯设计说明书文档格式.docx_第3页
第3页 / 共16页
基于单片机的交通灯设计说明书文档格式.docx_第4页
第4页 / 共16页
基于单片机的交通灯设计说明书文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于单片机的交通灯设计说明书文档格式.docx

《基于单片机的交通灯设计说明书文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通灯设计说明书文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

基于单片机的交通灯设计说明书文档格式.docx

2、指示灯有倒计时显示功能,直行+右转20秒,左转+右转10秒,停止+右转30秒,按此规律不断循环;

3、直行和左转灯灭掉前3秒能够闪烁提示(每秒两次);

4、能够调整直行、左转、停止指示灯的时间。

二、交通灯的硬件设计

本设计单片机主要是用于控制交通灯的演示系统,故只需要单片机最小系统即可完成。

此电路由单片机、时钟电路、电源、复位电路4个组成部分组成。

下图分别为单片机原理图、交通灯系统电路图。

图1单片机系统原理图

图2交通灯系统原理图

2.1复位电路

复位方式有多种,本设计采用按键复位。

接线图如图3复位电路,

在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;

外部程序存储器读选通信号PSEN无效。

地址锁存信号ALE也为高电平。

在设定的定时时间内必须在RST引脚产生一个由高到低的电平变化,以清内部定时器.

图3复位电路图

2.2晶振电路

选取原则:

传统做法,但能够实现所需,即最简单也最是实用。

电容选取30pF,晶振为12MHz。

图4晶振电路图

2.3电源供电电路

供电电路由主电源和备用电源组成。

主电源主要是由变压器、6A整流桥、4个二极管,2个104pf电容,二个电解电容以及7805三端稳压管组成。

这个部分为系统提供主要的供电,输出电压为5V直流。

备用电源主要是由4位的5号电池盒组成。

这个部分在主电源断电时能够几乎瞬时的为系统提供电源,输出电压也是5V直流。

该电源直接接到单片机的电源端。

图5主电源和备用电源切换功能电路

2.4原件清单

原件名称

数量

焊接位置

电源部分

USB座

1

USB

USB线

双排针

(2)

CONN1

跳帽

2

104电容0.1uF

7

C2,5,6,7,8,9,11

LED灯

D1

电阻2K

R2

最小系统部分

40针座

U1

STC89C52

晶振12MHz

Y1

电容20pF

C3,C4

复位键

SW_RST

电阻10K

R1

蜂鸣器

LS1+

三极管9015

9

Q1~Q9

电阻330

R3

键盘显示、通信部分

16针座

U2

MAX232

单排针(5)

UART

按键

16

KEY1~KEY16

单排针(3)

SWITCH1

4位LED

DIGILED1,2

电阻4.7K

8

R14~R21

R6~R13

三、交通灯的软件设计

3.1交通灯程序

#include<

reg51.h>

#include<

intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

unsignedcharcodeTab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xce};

sbitup=P3^1;

sbitdown=P3^2;

sbitset=P3^3;

sbitS8=P2^0;

sbitS7=P2^1;

sbitS6=P2^2;

sbitS5=P2^3;

sbitS4=P2^4;

sbitS3=P2^5;

sbitS2=P2^6;

sbitS1=P2^7;

ucharfenduan1=20,fenduan2=10,fenduan3=3;

uchartimes=0;

ucharsecond=0;

ucharbsecond=0;

ucharsss=0;

uchardisData[8]={7,12,1,10,11,11,6,7};

voidkeydisplay();

voiddisplay();

voidDelay()

{

unsignedchari;

for(i=0;

i<

255;

i++);

}

voidISR_Timer0(void)interrupt1

TH0=0x3c;

TL0=0xb0;

times++;

if(times==10)

{

bsecond++;

times=0;

}

voiddisplay(uchar*point)

P0=Tab[*(point)];

S1=0;

//开S1显示

Delay();

S1=1;

//关S1显示

P0=Tab[*(point+1)];

S2=0;

//开S2显示

S2=1;

//关S2显示

P0=Tab[*(point+2)];

S3=0;

//开S3显示

S3=1;

//关S3显示

P0=Tab[*(point+3)];

S4=0;

//开S4显示

S4=1;

//关S4显示

P0=Tab[*(point+4)];

S5=0;

S5=1;

P0=Tab[*(point+5)];

S6=0;

S6=1;

P0=Tab[*(point+6)];

S7=0;

S7=1;

P0=Tab[*(point+7)];

S8=0;

S8=1;

voiddelayAJ(uchara)

uchari;

while(a--)

{

125;

{

display(disData);

}

voidkey()

if(set==0)

delayAJ(10);

//消抖//消抖时间可根据实际情况设定

sss++;

delayAJ(10);

}

while(!

set)

{

delayAJ(10);

}

if(sss%4==1)

if(up==0)

{

delayAJ(10);

if(up==0)

{

fenduan1++;

if(fenduan1==100)

fenduan1=0;

{

up)

}

}

if(down==0)

fenduan1--;

if(fenduan1==-1)

fenduan1=99;

while(!

down)

if(sss%4==2)

fenduan2++;

if(fenduan2==100)

fenduan2=0;

fenduan2--;

if(fenduan2==-1)

fenduan2=99;

if(sss%4==3)

fenduan3++;

if(fenduan3==100)

fenduan3=0;

fenduan3--;

if(fenduan3==-1)

fenduan3=99;

voidkeydisplay()

bsecond=0;

disData[0]=11;

disData[2]=1;

disData[3]=11;

disData[6]=fenduan1/10;

disData[7]=fenduan1%10;

if(sss%4==2)

disData[0]=7;

disData[2]=11;

disData[6]=fenduan2/10;

disData[7]=fenduan2%10;

if(sss%4==3)

disData[3]=10;

disData[6]=fenduan3/10;

disData[7]=fenduan3%10;

voidxianshi()

second=bsecond/2;

if(second>

fenduan1+fenduan2+fenduan3+1)

if(second<

=fenduan1)

disData[1]=12;

disData[6]=(fenduan1-second)/10;

disData[7]=(fenduan1-second)%10;

if((fenduan1-second<

=3)&

&

(bsecond%2==0))

disData[1]=11;

elseif((second>

fenduan1)&

(second<

=fenduan2+fenduan1))

disData[6]=(fenduan1+fenduan2-second+1)/10;

disData[7]=(fenduan1+fenduan2-second+1)%10;

if((fenduan1+fenduan2-second+1<

fenduan2+fenduan1)&

=fenduan2+fenduan1+fenduan3))

disData[6]=(fenduan1+fenduan2+fenduan3-second+1)/10;

disData[7]=(fenduan1+fenduan2+fenduan3-second+1)%10;

if((fenduan1+fenduan2+fenduan3-second+1<

if(second>

voidmain()

TMOD|=0x01;

//T016位定时器

ET0=1;

TR0=1;

EA=1;

while

(1)

key();

if(sss%4==0)

xianshi();

else

keydisplay();

display(disData);

}

3.2程序流程图

四、课程设计总结

本次课程设计中,重新巩固了单片机理论课时,感觉到的内容很多,知识点很杂、很繁琐。

通过自己的努力也更进一步掌握了单片机的内容构造和工作原理,以及接外部电路的情况。

当然光有理论知识那只是“纸上谈兵”,还需实际动手去实践。

真正把所学的用到日常生活中,理论联系实际,做出实物模型。

这次单片机课程设计,我们设计的是简易十字路口交通灯设计,通过这次课程设计我感觉到要想做成功,必须花时间多做准备,查阅大量资料,每个过程都很繁琐,都要认真地分析每一步每一个模块要实现大的功能,然后分步进行编写调试,最后整合成在一起。

在这次课程设计中,让我感到过程决定结果,细节觉得成败。

过程很艰难,每个细节都要认真的分析。

通过本次课程设计,我们要对所做的事情有耐性,在编程的时候有困难,也可能变得不一定成功,所以要经过多次调试,分析,改正,反复去做;

认真虚心求教老师和同学。

经历了多次失败的洗礼,我明白在以后学习和实践中,我要努力掌握知识,多动手,多思考,以免在以后的学习工作中犯同样的错误。

五、指导教师评语

成绩指导教师签名

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

当前位置:首页 > 人文社科 > 文化宗教

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

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