红绿灯课程设计报告.docx

上传人:b****6 文档编号:7256973 上传时间:2023-05-11 格式:DOCX 页数:11 大小:64.43KB
下载 相关 举报
红绿灯课程设计报告.docx_第1页
第1页 / 共11页
红绿灯课程设计报告.docx_第2页
第2页 / 共11页
红绿灯课程设计报告.docx_第3页
第3页 / 共11页
红绿灯课程设计报告.docx_第4页
第4页 / 共11页
红绿灯课程设计报告.docx_第5页
第5页 / 共11页
红绿灯课程设计报告.docx_第6页
第6页 / 共11页
红绿灯课程设计报告.docx_第7页
第7页 / 共11页
红绿灯课程设计报告.docx_第8页
第8页 / 共11页
红绿灯课程设计报告.docx_第9页
第9页 / 共11页
红绿灯课程设计报告.docx_第10页
第10页 / 共11页
红绿灯课程设计报告.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

红绿灯课程设计报告.docx

《红绿灯课程设计报告.docx》由会员分享,可在线阅读,更多相关《红绿灯课程设计报告.docx(11页珍藏版)》请在冰点文库上搜索。

红绿灯课程设计报告.docx

红绿灯课程设计报告

北华航天工业学院

单片机课程设计报告

 

设计课题:

十字路口交通灯控制

专业班级:

B11203

学生姓名:

赵雪志

指导教师:

王晓

设计时间:

2013-6-11

 

1设计任务

利用单片机设计一个十字路口交通灯控制器

设计要求:

利用单片机的定时器产生秒信号,控制十字路口的红、绿、黄灯交替点亮和熄灭,并且用6只LED数码管显示十字路口两个方向的剩余时间。

要求能用按键设置两个方向的通行时间(绿、红灯点亮的时间)和暂缓通行时间(黄灯点亮的时间)。

系统的工作应符合一般交通灯控制的要求。

2硬件设计与系统总体方案图

2.1

AT89C52单片机简介

AT89C52是一种低功耗、高性能CMOS8位微控制器。

片上Flash

允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥

有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入

式控制应用系统提供高灵活、超有效的解决方案。

AT89C52具有以下

标准功能:

8K字节Flash,256字节RAM,32位I/O口线,看门狗

定时器,2个数据指针,三个16位定时器/计数器,一个6位向量2

级中断结构,全双工串行口,片内晶振及时钟电路。

空闲模式下,

CPU停止工作,允许RAM、定时器计数器、串口、中断继续工作。

鉴于以上的优点本系统采用AT89C52作为主控芯片,实现对整个系

统的控制。

2.2系统硬件电路设计

(1)显示灯开关

显示灯开关

(2)按键电路

(3)显示电路

(4)总电路图

 

 

3源程序

#include

#defineunitunsignedint//宏定义

#defineucharunsignedchar

sbitred=P1^0;//设置P1,控制三个发光二极管

sbityellow=P1^2;

sbitgreen=P1^4;

sbitbeep=P2^3;

sbitdula=P2^6;//设置位选接口

sbitwela=P2^7;//设置段选接口

sbitK1=P3^4;//设置独立键盘接口

sbitK2=P3^5;

sbitK3=P3^6;

sbitK4=P3^7;

ucharcodetable[]={//定义数码表

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

ucharR=10,Y=5,G=10,numl,nums,temp,flag,flag1,r1,r2,y1,y2,g1,g2;//定义变量

voidinit();//声明初始化程序

voiddisplay(ucharr1,ucharr2,uchary1,uchary2,ucharg1,ucharg2);//声明显示程序

voiddelay_1ms(unitz)//1ms延时程序

{

unitx,y;

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

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

}

voiddelay(void);

voidmain()//主函数

{

init();

while

(1)

{

if(K1==0)

{

R--;

delay_1ms(5);

display(r1,r2,y1,y2,g1,g2);

while(!

K1);

}

display(r1,r2,y1,y2,g1,g2);

}

}

voidinit()//初始化函数

{

P1=0xff;//初始化P1

dula=1;//初始化数码管

P0=0x3f;

dula=0;

wela=1;

P0=0xc0;

wela=0;

TMOD=0x11;//设置定时计数方式

TH0=(65536-50000)/256;//设置初值

TL0=(65536-50000)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器T0中断

ET1=1;//开定时器T1中断

TR0=1;//打开定时器T0

TR1=1;//打开定时器T1

}

voidtimer0()interrupt1//发光二极管中断服务子程序

{

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

TL0=(65536-50000)%256;

switch(temp)

{

case0:

numl++;//红灯

red=0;//打开红灯

yellow=1;

flag=0;//生成标志位

if(numl==200)

{

numl=0;

temp=1;

}

break;

case1:

numl++;//黄灯

yellow=0;

red=1;

beep=1;

flag=1;

if(numl==100)

{

numl=0;

temp=2;

}

break;

case2:

numl++;//绿灯

green=0;

yellow=1;

flag=2;

if(numl==200)

{

numl=0;

temp=3;

}

break;

case3:

numl++;//黄灯

yellow=0;

green=1;

flag=3;

if(numl==100)

{

numl=0;

temp=0;

}

break;

}

}

voidtimer1()interrupt3//数码管显示服务子程序

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

r1=R/10;//分别将R、Y、G个位和十位的值赋给数码管的六位显示

r2=R%10;

y1=Y/10;

y2=Y%10;

g1=G/10;

g2=G%10;

switch(flag)

{

case0:

nums++;

Y=5;

beep=!

beep;//红灯开始计时

if(nums==20)//每一秒减一

{

R--;

nums=0;

}

break;

case1:

nums++;//黄灯开始计时

R=10;

if(nums==20)

{

Y--;

nums=0;

}

break;

case2:

nums++;//绿灯开始计时

Y=5;

if(nums==20)

{

G--;

nums=0;

}

break;

case3:

nums++;//黄灯开始计时

G=10;

if(nums==20)

{

Y--;

nums=0;

}

break;

}

}

 

voiddisplay(ucharr1,ucharr2,uchary1,uchary2,ucharg1,ucharg2)//数码管显示程序

{

dula=1;

P0=table[r1];

dula=0;

P0=0xff;

wela=1;

P0=0xfe;

wela=0;

delay_1ms

(1);

dula=1;

P0=table[r2];

dula=0;

P0=0xff;

wela=1;

P0=0xfd;

wela=0;

delay_1ms

(1);

dula=1;

P0=table[y1];

dula=0;

P0=0xff;

wela=1;

P0=0xfb;

wela=0;

delay_1ms

(1);

dula=1;

P0=table[y2];

dula=0;

P0=0xff;

wela=1;

P0=0xf7;

wela=0;

delay_1ms

(1);

dula=1;

P0=table[g1];

dula=0;

P0=0xff;

wela=1;

P0=0xef;

wela=0;

delay_1ms

(1);

dula=1;

P0=table[g2];

dula=0;

P0=0xff;

wela=1;

P0=0xdf;

wela=0;

delay_1ms

(1);

}

5课程设计体会

经过一个星期的课程设计,过程曲折可谓一语难尽。

在此期间我

们也失落过,也曾一度热情高涨。

从开始时满富盛激情到最后汗水背

后的复杂心情,点点滴滴无不令我回味无长。

通过这次课程设计,加强了我们动手、思考和解决问题的能力。

让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。

特别是电路完成后,所有的焊接都与我们设计的方案一样,但当我们接通电源是,所看到的结果与我们料想的完全不同,三盏灯都亮了,我们也都知道,任何实验都不可能一次就成功的,我们认真的去检查,可是检查了好久都没有任何发现,只知道单片机的IO口的输出与我们所输入的程序不相符合,我们逐步排查,最先检查LED灯电路的接法是否合理,然后检查时钟电路的晶振是否有问题,然后再检查复位电路是否完好,最后功夫不负有心人,我们把复位电路接地电阻断开后,就发现LED灯有规律的熄灭了,经过我们的认真检查,对位选控制位口的改正,最后电路基本上都实现了我预先设计的功能。

这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,难免会遇过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2