交通单片机课程.docx

上传人:b****7 文档编号:8969109 上传时间:2023-02-02 格式:DOCX 页数:35 大小:1.06MB
下载 相关 举报
交通单片机课程.docx_第1页
第1页 / 共35页
交通单片机课程.docx_第2页
第2页 / 共35页
交通单片机课程.docx_第3页
第3页 / 共35页
交通单片机课程.docx_第4页
第4页 / 共35页
交通单片机课程.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

交通单片机课程.docx

《交通单片机课程.docx》由会员分享,可在线阅读,更多相关《交通单片机课程.docx(35页珍藏版)》请在冰豆网上搜索。

交通单片机课程.docx

交通单片机课程

郑州大学

电子设计综合训练报告

 

交通灯控制系统

 

姓名:

王超

学号:

310708020512

专业班级:

通信

指导老师:

王蒙

所在学院:

信院

2010年4月31日

摘要

本设计是利用Atmel公司生产的AT89S52单片机制作的交通灯控制系统。

用六个分别为红、绿、蓝三色的发光二极管模拟交通灯,另用两个两位一体七段共阴极LED来显示交通灯改变时间的倒计时(倒计时间长为10-90秒)。

每组红绿灯分别与其相对应的倒计时时间LED对应,利用交通灯与倒计时牌的配合来实现管理十字路口交通的任务。

单片微型计算机(SingleChipMicrocomputer)简称单片机,即把组成微型计算机的各个功能部件,如中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、I/O接口电路、定时器/计数器以及串行通信接口等集成在一块芯片中,构成一个完整的微型计算机。

而对于交通灯的控制本设计采用了3个按钮来实现紧急情况禁止、主干道无车次干道立即通行、次干道无车主干道立即通行、主干道调整时间加一秒和次干道调整时间加一秒的功能,分为一个紧急情况按钮和两个干道通行/调节时间双功能按钮,节省了系统的资源。

主控芯片采用AT89S52单片机,配合其他基本设备完成设计。

采用C51语言进行编程,编程后利用KeilC51进行编译,生成对应的HEX文件,采用PROTEUS软件进行系统硬件的仿真模拟,检验功能。

模拟试验成功后,焊接硬件电路,通过ISP下载线将HEX文件烧制入单片机,完成整个设计并进行实际操作,并实际记录单片机工作情况。

 

目录

1概述

1.1背景知识介绍………………………………………………………………3

1.2设计内容……………………………………………………………………3

1.3设计任务和要求……………………………………………………………3

1.4设计意义……………………………………………………………………4

2系统总体方案及硬件设计

2.1系统总体方案设计…………………………………………………………5

2.2硬件电路总体设计方案……………………………………………………5

2.3硬件电路设计………………………………………………………………5

2.3.1电源晶振与复位部分………………………………………………6

2.3.2中央单片机部分……………………………………………………7

2.3.3交通灯与计时牌部分………………………………………………8

2.3.4按键控制部分………………………………………………………8

3软件设计

3.1软件系统总体设计方案……………………………………………………10

3.2软件系统设计具体过程……………………………………………………11

3.2.1主程序………………………………………………………………11

3.2.2定时器0中断服务程序……………………………………………11

3.3.3定时器1中断服务程序……………………………………………12

3.2.4延时程序……………………………………………………………12

3.2.5外部中断0服务程序………………………………………………12

3.3.6外部中断1服务程序………………………………………………13

3.2.7显示程序……………………………………………………………13

4Proteus软件仿真

4.1Proteus软件简介…………………………………………………………16

4.2Proteus仿真过程…………………………………………………………16

5硬件焊接与调试

6课程设计体会

参考文献

附1:

源程序代码

附2:

系统原理图

1概述

1.1概述

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

1.2设计目的

(1)加强对单片机和C51语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。

(2)用单片机模拟实现具体应用,使个人设计能够真正使用。

(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。

(4)提高利用已学知识分析和解决问题的能力。

(5)提高实践动手能力。

1.3设计任务和内容

1.3.1设计任务

结合教材及参考资料,用AT89C51单片机模拟实现十字路口的交通灯亮灭、倒计时显示、紧急情况处理等功能。

1.3.2设计内容

(1)填写设计任务书。

(2)进行总体设计,画出原理图。

(3)用Protel软件画出PCB板并制板。

(4)焊接器件和芯片。

(5)编写并调试程序。

2系统总体方案及硬件设计

2.1系统总体方案设计

本系统由硬件系统和软件系统组成,硬件系统包括按键控制模块、中央处理系统和指示灯倒计时显示模块;而为了实现相应功能软件系统包括软件系统包括主程序、定时器0中断服务程序、定时器1中断服务程序、延时程序、外部中断0服务程序、外部中断1服务程序和显示程序。

2.2硬件电路总体设计方案

硬件系统包括按键控制部分、中央单片机部分、时钟电路与复位电路部分和交通灯与计时牌显示部分。

这几个部分协调工作完成预定任务。

硬件电路连接关系如下图:

图1

2.3硬件电路设计

本系统以AT89S52单片机为核心,包括中央单片机部分、电源晶振与复位电路部分、输出驱动控制部分和交通灯与计时牌显示部分和按键控制部分。

2.3.1电源晶振与复位部分

图3

时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。

在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。

为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,另外有两个30P的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。

具体连接如图3

复位是单片微机的初始化操作,其主要功能是把PC初始化为0000H,使单片微机从0000H单元开始执行程序。

除进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,可以按复位键以重新启动,也可以通过监视定时器来强迫复位。

RST引脚是复位信号的输入端。

复位电路在这里采用的是上电+按钮复位电路形式,具体连接电路如图4。

图4

 

2.3.3中央单片机部分

2.3.2中央单片机部分

图5

中央单片机部分为Atmel公司生产的单片机AT89S52。

AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S52(如图5)具有如下特点:

40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

2.3.3交通灯与计时牌部分

交通灯采用6个发光二极管组成,由P1口控制,附限流电阻。

而计时牌采用共阴极数码显示器,通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。

当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。

同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

本次设计在显示模块用到的是两个两位一体共阴极数码管,共有8个代码输入口和4个位选输入口,采用排阻提供上拉电流数码管,以保证有足够大的电流点亮数码管,采用动态驱动,使各位数码管逐个轮流受控显示,这就是动态驱动,由于扫描速度极快,显示效果与静态驱动相同。

同时,由于P0口的特性,附加470欧上拉电阻以驱动。

显示牌部分

交通灯部分

图6

该部分硬件连接如图6。

图8

2.3.4按键控制电路

按键控制电路用于接收外部中断和接收输入信号,并控制程序运行。

电路如图8。

3软件设计

在设计程序之前,我们首先要对单片机应用系统预完成的任务进行深入的分析,明确系统的设计任务、功能要求和技术指标。

其次,要对系统的硬件资源和工作环境进行分析。

这是单片机应用系统程序设计的基础和条件。

3.1软件系统总体设计方案

本次单片机课程设计软件设计部分采用模块化程序设计,软件系统包括主程序、定时器0中断服务程序、定时器1中断服务程序(用以扩充外部中断)、延时程序、外部中断0服务程序、外部中断1服务程序和显示程序。

程序流程图如图。

 

图9

 

图10

3.2软件系统设计具体过程

软件设计部分采用模块化程序设计,用C语言编写。

Keil是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

软件系统包括主程序、定时器0中断服务程序、定时器1中断服务程序、延时程序、外部中断0服务程序、外部中断1服务程序和显示程序。

3.2.1主程序

#include

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

uchardatatimelist=30;//用于倒计时显示

ucharcount=0;//配合计时器中断实现1S的计时

ucharyelltime=0;

ucharintswitch;//用于按键中断后判断所按键

uchardatatime[4]={30,5,20,5};//每色灯时间

uchardatadisbuf[4]={0};//用于显示

ucharn=0;

ucharyellow=0xff;//黄灯闪烁功能实现

sbitP3_2=P3^2;

sbitP3_3=P3^3;

sbitP3_5=P3^5;//需要采用的中断服务端口

//主程序

main()

{TCON=0x05;//初始化中断,外部中断0、1为下降沿触发

TMOD=0x51;//初始化计时器0、1,定时器0采用定时方式1,定时器1采用计数方式1

TH0=-50000/256;

TL0=-50000%256;//初始化定时器0初值

TH1=0xff;

TL1=0xff;//初始化定时器1初值

EA=1;//开系统总中断

ET0=1;//开计时器0

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

ET1=1;//开定时器1

EX1=1;//开定时器1

TR1=1;//定时器1工作

TR0=1;//进行第一次计时器中断服务

while

(1)

{disp();//显示灯

}

}

3.2.2定时器0中断服务程序

//定时器0的中断服务程序,100ms中断一次,即每100ms执行一次该中断服务程序。

voidtimer0(void)interrupt1

{TH0=-50000/256;

TL0=-50000%256;//重新赋初值

count++;

yelltime++;

if(yelltime==10)

{yelltime=0;

yellow=yellow^0x12;//黄灯闪烁

}

if(count==20)

{count=0;

timelist--;//倒计时

if(timelist==0)//倒计时结束后重置数值

{n++;

if(n==4)

n=0;

timelist=time[n];

}

}

}

3.3.3定时器1中断服务程序

//定时器1服务程序

voidtimer1(void)interrupt3

{TH1=0xff;//赋初值,用定时器扩充外部中断,初值FF

TL1=0xff;

dlms(5);

if(!

P3_5)

{

while(!

P3_5)

{dlms

(1);

}

dlms(5);

if(P3_5)

{

if(TR0==1)

{count=0;

n=2;

timelist=time[n];

}

if(TR0==0)

{time[2]=time[2]+1;

}

if(time[2]>90)

{time[2]=10;

}

}

}

}3.2.4延时程序

//延时程序用于按键消抖和动态显示

voiddlms(uintx)

{uinti=x,j;

while(i--)

{j=100;

while(j--);

}

}3.2.5外部中断0服务程序

//外部中断0服务程序

voidint0(void)interrupt0

{dlms(5);

if(!

P3_2)

{while(!

P3_2)

{dlms

(1);

}

dlms(5);

if(P3_2)//延时消抖

{TR0=!

TR0;//改变定时器状态用于调整系统状态

if(TR0==1)

{count=0;

n=0;

timelist=time[n];

}//判断定时器是否重新启动,若启动则重新开始工作

}

}

}2.3.6外部中断1服务程序

//外部中断1服务程序

voidint1(void)interrupt2

{dlms(5);

if(!

P3_3)

{while(!

P3_3)

{dlms

(1);

}

dlms(5);

if(P3_3)

{if(TR0==1)//判断系统状态,根据不同状态执行任务

{count=0;

n=0;

timelist=time[n];//正常状态,切换道路通行

}

if(TR0==0)//紧急状态,可调整通行时间

{time[0]=time[0]+1;

}

if(time[0]>90)//通行时间范围

{time[0]=10;

}

}

}

}2.3.7显示程序

//显示程序

voiddisp(void)

{uchari,j;

ucharsel;

if(TR0==0)//判断系统状态,进行不同服务

{disbuf[0]=time[2]%10;

disbuf[1]=time[2]/10;

disbuf[2]=time[0]%10;

disbuf[3]=time[0]/10;

P2=0xff;

sel=0x01;

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

{j=disbuf[i];//显示时间

P2=(sel^0xff);

P0=table[j];

dlms

(2);

P2=0xff;

sel=sel<<1;

P1=0x09;//交通灯显示

}

}

if(TR0==1)

{disbuf[0]=timelist%10;

disbuf[1]=timelist/10;

disbuf[2]=timelist%10;

disbuf[3]=timelist/10;

P2=0xff;

sel=0x01;

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

{j=disbuf[i];//显示时间

P2=(sel^0xff);

P0=table[j];

dlms

(2);

P2=0xff;

sel=sel<<1;

if(n==0)//控制交通灯程序

{P1=0x0c;

}

if(n==1||n==3)

{P1=yellow;

}

if(n==2)

{P1=0x21;

}

}

}

}

4PROTEUS仿真

4.1PROTEUS简介

Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:

①实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:

ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。

③提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2、MPLAB等软件。

④具有强大的原理图绘制功能。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

4.2仿真过程

接通电源,系统开始工作。

系统初始状态设置为主干道无车,主干道绿灯,次干道红灯从初始时间30秒开始计时。

图11

30秒后,开始变换车道,黄灯闪烁,倒计时为5秒。

图12

5秒后,次干道通车,主干道红灯,次干道绿灯,倒计时为20秒。

图13

特殊情况的实验。

特殊情况1,次干道无车,干道马上通行,按控制钮2,系统直接进入主干道通行状态,主干道绿灯,次干道红灯,倒计时为30秒。

图14

特殊情况2,主次干道无车,次干道马上通行,按控制按钮3,系统直接进入次主干道通行状态,次主干道绿灯,主干道红灯,倒计时为20秒。

图15

紧急情况,主干道与次干道皆不可通车,都为红灯,该状态下可以调整各干道通行时间,主干道倒计时牌显示主干道的通行时间,次干道倒计时牌显示次干道的通行时间,通过按钮2、3可以调整主/次干道通行时间,范围为10~90

紧急情况:

图16

调节主干道通行时间:

图17

调节次干道通行时间:

 

图18

再次按按钮1,接触紧急状态,并按照修改过的通行时间继续工作

主干道通行:

图19

次干道通行:

 

图20

 

5硬件的焊接与调试

对照原理图进行焊接工作,把硬件先依次正确插到相应的位置,然后再次检查器件是否都正确,确定无误后进行焊接.在焊接的过程中要注意不要将相临的两个引脚焊接在一起,防止短路影响使用。

硬件连接好以后,通过ISP下载线向单片机内烧制HEX程序,观察各部分工作情况。

硬件连接如图

图21

 

6课程设计体会

通过这几天的单片机的实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。

这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。

 通过实训,让我更熟悉掌握了Keil,proteus这些应用程序的运用,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,还有焊接和程序下载,。

但在中间暴露出很多问题:

对平时上课讲的理论知识没有完全掌握消化,到了实际操作中还得请教同学,在焊接中焊接的基本工夫掌握不到家,手上工夫还是很欠缺的,使得电路板不是很美观。

 这些问题的发现,有助于提高我在以后的工作和学习中对此类问题的认识,确保不在同一问题上再次犯错。

严谨求实、踏实务实,是我这次实训的深刻总结。

做课程设计的这几天翻阅了很多书,也上了很多网站去寻找自己需要的资料。

这种寻找有很强的目的性,只是为了自己选定的课题内容而查阅,所以除了自己课题以外的其他方面几乎还是一无所知。

这让我深刻的认识到了自己专业知识的贫乏。

为我对自己大三生活的规划敲响了警钟。

我对单片机的学习不会因为课程设计的结束而结束,在接触的众多资料里,做设计只是走马观花般的点到。

通过单片机课程设计,我加深了对单片机理论的理解,学回了怎样将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的不畏困难的挑战精神,从而不断地战胜自己,超越自己,我在这一设计过程中,学会了坚持不懈,不轻易言弃。

设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。

参考文献

[1]余发山,王福忠单片机原理及应用技术中国矿业大学出版社2008.6

[2]河南理工大学电气学院单片机实验报告指导册河南理工大学出版社2009

 

附1源程序代码

#include

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

uchardatatimelist=30;//用于倒计时显示

ucharcount=0;//配合计时器中断实现1S的计时

ucharyelltime=0;//用于实现黄灯闪烁功能

ucharintswitch;//用于按键中断后判断所按键

uchardatatime[4]={30,5,20,5};//每色灯时间

uchardatadisbuf[4]={0};//用于显示

ucharn=0;//用于记录各灯顺序

ucharyellow=0xff;//黄灯闪烁功能实现

sbitP3_2=P3^2;

sbitP3_3=P3^3;

sbitP3_5=P3^5;//需要采用的中断服务端口

ucharcodetable[10]={0x3

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

当前位置:首页 > 解决方案 > 学习计划

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

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