专业综合课程设计.docx

上传人:b****3 文档编号:26484437 上传时间:2023-06-19 格式:DOCX 页数:16 大小:118.88KB
下载 相关 举报
专业综合课程设计.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.设计基本要求及步骤

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。

那么靠什么来实现这井然秩序呢?

靠的就是交通信号灯的自动指挥系统。

2.1设计目的

本设计是专业课程综合训练,可以通过理论学习,资料查阅,软、硬件设计,系统调试等环节,巩固和提高所学的知识和应用水平。

学会提出问题,观察和分析问题,得到最终的科学方法。

培养严谨的工作作风,务实的工作态度。

为今后的毕业设计,及从事单片机控制系统的设计与维护奠定坚实的基础。

2.2基本要求

本系统需要采用MSC・51系列单片机AT89C51作为中心器件来设计交通灯控制器,实现以下功能:

1-初始值为0,接着东西绿灯亮,南北红灯亮,东西方向通车。

2.延时26s,东西路口绿灯熄灭,黄灯闪烁3次。

3.黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车。

4.延时26s,南北方向绿灯灭,黄灯闪烁3次,然后又切换成东西方向通车,如此重复。

2.3设计步骤

1•利用Proteus7.5SP3仿真软件按下列要求绘制仿真实例

2•按照基本要求编制程序实现相应功能。

1)利用定时器产生秒信号,控制十字路口红绿黄灯交替点亮和熄灭

2)采用LED数码管显示交通灯剩余时间

3)系统工作符合一般交通灯控制要求

3.设计方案

3.1方案选择

1)用数字电子技术来实现交通灯控制

2)用单片机技术来实现交通灯控制

在刚刚选择了这个题目时,我犹豫过到底要用单片机知识还是用数字电子技术知识来做,因为单片机我学的不扎实,要自己写程序的话在一周之内根本不可能,拿到题目的下午我就去图书馆查找了一些相尖的资料,回来宿舍上网也找了

一些尖于交通灯的论文,看过之后,我和组员商量发现如果用数电知识来做的话,网上搜到的电路图相当复杂,光看懂电路图就得不少时间。

其中还有不少芯片需要查找看其功能。

但用C语言我仍然挺难完成程序的撰写。

看了许多网上的程序和书上的程序及请教同学,我们先一起商量把程序分为了四部分:

初始化、中断程序、显示程序、主程序及消抖等其他部分。

最后,我们还是决定用单片机。

3.2参数计算

1.设单片机工作在主频为12MHZ下,由于一个机器周期等于12个振荡脉冲周期,所以机器周期(延时)为1us.

2.定时器工作在T。

方式1定时50ms初值M=(216・5000)“256=3CH为高8位的值。

低8位的值为B0H。

3•内部振荡器的频率主要取决于晶振的频率。

一般在1.2-12MHZ之间,电容值

在5—30PF之间选择,电容的大小对振荡频率有微小的影响,可起频率微调的作用。

4.仿真图中RP1为电阻排,又称上拉电阻,大约为1KU乍用:

实现电平转换;直接驱动大负载。

图中R17/R18可以实现线与。

仿真图中与六个二极管相连的电阻R9/R10/R11/R12/R13/R14的作用是限制电流的大小,保护电路。

取值为3001.

5.在复位电路中,电阻和电容值的选取因使RST端的高电平维持2个机器周期以上才能完成复位。

6.程序中W的值指的是次数,表示1s内定时50ms需要20次。

7.数码管采用共阳极接法,当阴极端加载高电平时,对应段的发光二极管就导通点亮,加载低电平时则不亮。

8.程序中延时函数选用参变量Z。

4.软件设计

4.1•程序流程图

运行址程

LED

示缓

EW:

绿灯(26),SN:

红灯

冲区

 

N

 

SN:

黄灯灭>EW:

红灯

 

4.2程序源代码

〃52头文件

〃初始化头文件

〃宏定义

inelude

#includevintrins.h>

#defineuintunsignedint

#defineucharunsigned

charucharshi1,ge1,shi2,ge2,s1,s2,k,hh,ll,yy;

uintw;

codeuchartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};〃共阳极

数码管

A

sbitnbh=P10;

sbitnby=P1A1;

sbitnbl=P1M2;

sbitdxh=P1A3;

sbitdxy=P1A4;

sbitdxl=P1A5;

sbitSwitch_add=P3A6;

sbitSwitch_sub=P3A7;

voiddelay(uintz)//延时函数振荡频率为12MHZ,延时1us

{

uintx,y;

for(x=z;x>0;x_)

for(y=110;y>0;y-);

}

voidinit()

{

TMOD=1:

//TO方式1定时

TH0=(65536-50000)/256;〃装TO初值,定时50msTL0=(65536-50000)%256;

EA=1;//开中断

ET0=1;//允许TO申请中断

TR0=1;〃启动TO

hh=26;

yy=6;

ll=hh-yy;

EX0=1;//幵中断0

IT0=1;〃外部中断0下降沿有效

s仁0;//南北时间为Os

s2=0;/冻西时间为Os

shi仁s1/10;〃南北十位时间

gel=s1%10;//南北个位时间

shi2=s2/10;/东西十位时间

ge2=s2%10;/冻西个位时间

P2=0x11;P0=table[shi1];delay(5);//P2.0=1接数码管1,显示南北的十

位时间

P2=0x22;P0=table[ge1];delay(5);//P2.1=1接数码管2,显示南北的个

位时间

P2=0x44;P0=table[shi2];delay⑸;〃P2.2=1接数码管3,显示东西的十

位时间

P2=0x88;P0=table[ge2];delay(5);//P2.3=1接数码管4,显示东西的个

位时间

}

voiddxlnbh()//东西绿,南北红

{

s仁hh;//南北红时间

s2=ll;〃东西绿时间

k=ll;

P仁Oxde;/东西绿南北红while(k)

if(w==20)〃每一秒变化一次

s1-;〃南北时间减一

s2-;〃东西时间减一shi仁s1/10;//南北十位时间ge仁s1%10;/南北个位时间shi2=s2/10;/冻西十位时间ge2=s2%10;/冻西十位时间w=0;

}

P2=0x11:

P0=table[shi1];delay(5);//P2.0=1接数码管1,显示南北的十位时间P2=0x22;P0=table[ge1];delay⑸;〃P2.1=1接数码管2,显示南北的个位时间P2=0x44;P0=table[shi2];delay(5);//P2.2=1接数码管3,显示东西的十位时间P2=0x88;P0=table[ge2];delay⑸;〃P23=1接数码管4,显示东西的个位时间}

}

voiddxynbh()//东西黄闪6S南北红6S

{

P仁Oxee;/冻西黄南北红

k=yy;

while(k)

{

if(w==20)

{if(s2==0)s2=6;〃东西时间为0时»重置时间为6s

s1-;〃南北时间减一

s2-;〃东西时间减一shi仁sl/10;〃南北的十位时间ge仁s1%10;//南北个位时间shi2=s2/10;/冻西十位时间ge2=s2%10;//东西个位时间w=0;

k—;

if(k%2)

P1=Oxfe;//南北红,南北黄灭else

P仁Oxee;俑北红,东西黄

P2=0x11;P0=table[shi1];delay(5);

P2=0x22;P0=table[ge1];delay(5);

P2=0x44;P0=table[shi2];delay(5);P2=0x88;P0=table[ge2];delay(5);

}

}

voiddxhnbl()//东西红,南北绿

{s1=ll;

s2=hh;

k=ll;

P仁0xf3;〃东西红,南北绿

while(k)

{

if(w==20)

{

s1-;

s2-;

shi1=s1/10;

ge仁s1%10;

shi2=s2/10;

ge2=s2%10;

w=0;

k";

}

P2=0x11;P0=table[shi1];delay(5);

P2=0x22;P0=table[ge1];delay(5);

P2=0x44;P0=table[shi2];delay(5);

P2=0x88;P0=table[ge2];delay(5);

}

}

voiddxhnby()〃南北黄闪6S东西红6S

{

P1=0xf5;

k=yy;

while(k)

{

if(w==20)

if(s1==0)s1=6;

S1-;

s2-;

shi仁s1/10;ge仁s1%10;shi2=s2/10;ge2=s2%10;w=0;

k-;

}

if(k%2)

,南北黄灭南北黄亮

P仁0xf7;〃东西红

elseP仁0xf5;//东西红,

P2=0x11;P0=table[shi1];delay(5);

P2=0x22;P0=table[ge1];delay(5);

P2=0x44;P0=table[shi2];delay(5);

P2=0x88;P0=table[ge2];delay(5);

}

/**按键扫描程序

voidkey(voidX

 

红灯时间增

 

if(Switch_add==O)

{_"

delay(5);〃按键消抖

if(Switch_add==O)

hh++;11=hh-yy;

if(hh>90)hh=90;

while(Switch_add==O);

/**红灯时间减**/

if(Switch_sub==O)

{_~delay(5);//按键消抖if(Switch_sub==O)

{_hh-;ll=hh-yy;if(hh<20)hh=20;while(Switch_sub==O);

voidmain()

{

init();

while

(1)

dxlnbh();//东西绿,南北红

dxynbh();〃东西黄‘南北红

dxhnbl();//东西红,南北绿dxhnby();〃东西红‘南北黄

}

voidint0()interrupt0//外部中断

{

key();

P2=0x11;P0=table[shi1];delay(5);

P2=0x22;P0=table[ge1];delay(5);

P2=0x44;P0=table[shi2];delay(5);

P2=0x88;P0=table[ge2];delay(5);

}

voidt0()interrupt1//定时器中断

{

TH0=(65536-50000)/256;〃重装初值

TL0=(65536-50000)%256;

w++;

}

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

当前位置:首页 > 人文社科 > 军事政治

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

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