遥控器控制交通灯设计.docx

上传人:b****3 文档编号:4858015 上传时间:2022-12-10 格式:DOCX 页数:21 大小:359.79KB
下载 相关 举报
遥控器控制交通灯设计.docx_第1页
第1页 / 共21页
遥控器控制交通灯设计.docx_第2页
第2页 / 共21页
遥控器控制交通灯设计.docx_第3页
第3页 / 共21页
遥控器控制交通灯设计.docx_第4页
第4页 / 共21页
遥控器控制交通灯设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

遥控器控制交通灯设计.docx

《遥控器控制交通灯设计.docx》由会员分享,可在线阅读,更多相关《遥控器控制交通灯设计.docx(21页珍藏版)》请在冰豆网上搜索。

遥控器控制交通灯设计.docx

遥控器控制交通灯设计

学号

 

单片机原理及接口技术课程设计

设计说明书

 

遥控器控制的交通灯设计

 

起止日期:

2014年1月6日至2014年1月17日

学生姓名

班级

成绩

指导教师(签字)

计算机与信息工程学院

2014年1月17日

 

天津城建大学

课程设计任务书

2013—2014学年第1学期

专业班级学号

课程设计名称:

单片机原理及接口技术

设计题目:

遥控器控制的交通灯设计

完成期限:

自2014年1月6日至2014年1月17日共2周

设计依据、要求及主要内容:

一.设计的目的

1.进一步熟悉和掌握单片机系统设计和编程原理。

2.掌握单片机的接口技术及相关外围芯片的外特性、控制方法。

3.通过设计,掌握以单片机核心的电路设计的基本方法和技术。

4.通过实际程序设计和调试,掌握模块化程序设计方法和调试技术。

5.通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用系统的全过程,为今后从事相应开发打下基础。

二.设计的基本要求

1.认真认识设计的意义,掌握设计工作程序,学会使用工具书和技术参考资料,并培养科学的设计思想和良好的设计作风。

2.提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。

3.提高独立分析、解决问题的能力,逐步增强实际应用训练。

4.设计的说明书要求简洁、通顺,电路图内容完整、清楚、规范。

三.设计主要内容

a)设计实现功能

STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计交通灯控制电路。

一是交通灯的正常指示设计;二是扩展遥控接收电路,实现交通灯运行的人为干预(可设有全红灯按键、延长某方向信号按键、快速进入另一方向通行按键、恢复按键等功能);三是根据需要扩展DS12C887、LCD1602等相应的外围电路。

b)原理图设计

1.原理图设计要符合项目的工作原理,连线要正确。

2.图中所使用的元器件要合理选用,电阻、电容等器件的参数要正确标明。

3.原理图要完整,CPU、外围器件、外扩接口、输入/输出装置要一应俱全。

c)程序调计

1.根据要求,将总体功能分解成若干个子功能模块,每个功能模块完成一个特定的功能。

2.根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计出完整的程序流程图。

d)程序调试

1.编写相关程序,并进行仿真。

2.将程序下载到单片机,进行运行调试。

e)设计说明书

1.原理图设计说明

简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。

2.程序设计说明

对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。

3.画出工作原理图,程序流程图并给出相应的程序清单。

 

指导教师(签字):

教研室主任(签字):

批准日期:

2014年1月2日

 

第1章单片机及调试软件的介绍

1.1单片机的简介

1.1.1单片机的发展历程

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。

单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

在MCS-51系列单片机中,有两个子系列:

51子系列和52子系列。

每个子系列有诺干中型号。

51系列有8051、8751和8031三个型号,后来经过改进产生了80c51、87c51、80c31三个型号;52系列有5021、8752、8032三个型号,改进后的型号是80c52/87c52、80c32。

改进后的型号更加省电。

52系列比对应的51系列增加了定时器T2并将内部程序存贮器增加到8KB。

Inter公司停止生产MCS-51系列单片机之后将生产权转让给了许多其他公司,于是出现了许多与Mcs-51兼容的单片机。

现在生产mcs-51兼容单片机的公司对其进行了不同程度的改进和提高。

我们现在使用比较的多的是AT89C51/AT89s51等。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:

中央处理器、存储器和I/O接口电路等。

因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。

1.1.2单片机的特点

(1)性价比高,开发周期短,易于产品化,

(2)集成度高,可靠性好,抗干扰性强,

(3)功能完善,接口多样,

(4)低功耗、低电压

一般电源供电电压在5~3V范围内单片机都能正常工作,供电的下限可达1~2V。

(5)总线多样,易于扩展

单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应用系统。

外部总线增加了I2C及SPI等串行总线方式,可根据需要进行并行或者串行扩展。

1.1.3MCS—51单片机内部结构

①.一个8位的中央处理器CPU(又称为微处理器)

②有128字节的片内数据存储器RAM。

③.4KB片内程序存储器ROM或EPROM

④.片内18个特殊功能寄存器(SFR)

⑤.4个8位的并行输入输出I/O口(PIO)

⑥.1个串行口I/O(SIO/UART)完成单片机与其他微机的之间的串行通信

⑦.2/3个16位定时器/计数器(TIMER/COUNTER)

⑧.可处理5个中断源,两级可程序优先级的中断系统

图1单片机的内部结构图

1.2keil软件介绍

1.2.1keil的概述

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

用过汇编语言后再使用C来开发,体会更加深刻。

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

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

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

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。

机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。

运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。

掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

1.2.2KeilC51单片机软件开发系统的整体结构

  C51工具包的整体结构,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。

然后分别由C51及A51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

  使用独立的Keil仿真器时,注意事项

  *仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。

  *仿真器上的复位按钮只复位仿真芯片,不复位目标系统。

*仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。

 

第2章设计要求及原理

2.1设计实现的功能

STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计交通灯控制电路。

一是交通灯的正常指示设计;

二是扩展遥控接收电路,实现交通灯运行的人为干预(可设有全红灯按键、延长某方向信号按键、快速进入另一方向通行按键、恢复按键等功能);

三是根据需要扩展DS12C887、LCD1602等相应的外围电路。

2.2设计的要求

利用AT89C51单片机的P1端口的接LED来模拟交通路口的红绿黄灯,用遥控按键来模拟有突发情况是的情形。

P1端口的P1.0到P1.2所接的LED分别表示东西路口的红、黄、绿灯,P1.3到P1.5所接的LED分别表示南北路口的红、黄、绿灯。

P3.2接按钮,模拟产生外部中断。

正常情况下按照正常指示进行点亮当发生突发情况时外部产生中断,单片机响应中断并转向中断程序,完成后返回原程序。

2.3设计的原理

设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。

其具体状态如下图所示。

说明:

黑色表示亮,白色表示灭。

图2交通灯的正常指示

2.4设计流程图

 

 

 

 

NO

 

YES

 

图3流程图

 

延时10秒

有关寄存器出栈

外部中断允许标志置位

中断返回

取中断前所保存的数据输入,恢复原始状态

 

 

图4中断流程图

 

第3章红外遥控电路的设计

3.1红外通信原理

红外遥控有发送和接收两部分组成。

发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲信号,通过红外发射管发射红外信号。

红外接收完成对红外信号的接收,放大,检波,整形,并输出遥控编码脉冲。

为了减少干扰,采用的是价格便宜性能可靠地一体化红外接头(HS30038),它接收红外的频率为38KHZ,周期为26us接收红外信号,它同时对信号进行放大,检波,整形得到TTL电平的编码。

在送给单片机,单片机进行解码并执行控制相关对象。

具体实现过程如下:

在这里特别强调:

编码与解码是一对逆过程,不仅在原理上是一对逆过程,在码的发收过程也是互反的,即以前发射端原始信号是高电平,那接收头输出的就是低电平,反之亦然。

因此为了保证解码过程简单方便,在编码时应该直接换算成其反码。

图5码值与电平转换

3.2红外接收部分

一体化红外接收头 内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。

红外监测二极管监测到红外信号, 然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。

交流 信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出 高低电平,还原出发射端的信号波形。

注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。

图6红外接收示意图

3.3红外发射部分

红外遥控是以调制的方式发射数据,就是把数据和一定频率的载波进行“与”操作,这样既可以提高发射效率又可以降低电源调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图2所示,这是由发射端所使用的 455kHz晶振决定的。

在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。

目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。

由于发射系统一般用电池供电,这就要求芯片的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗芯片所用的晶振应该有 足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器,陶瓷共鸣器准确性没有石英晶体高,但通常 一点误差可以忽略不计。

第4章系统软件程序的设计与调试

4.1程序主体设计思路

全部控制程序实际上分为若干模块:

遥控键盘设置处理程序,状态灯控制程序,LED显示程序紧停程序,中断服务子程序,红绿灯时间调整程序等。

整个软件程序方面主要分两大部分:

主程序部分和遥控中断处理程序。

设计说明:

该智能交通灯控制系统的软件设计采用的是顺序执行并反复循环的方法。

智能交通灯控制系统在正常工作的情况下,每20s循环变化一次。

每个循环周期在还剩5s时,正在通行路口的黄灯同时点亮并开始闪烁,以提醒路人上的行人及车辆,交通灯即将发生变化。

在此期间若中断按键按下则转入中断服务子程序进行相关操作。

通过扩展遥控接收电路,当发生突发状况时,实现交通灯运行的人为干预(可设有全红灯按键、延长某方向信号按键、快速进入另一方向通行按键、恢复按键等功能)。

4.2系统延时设计

MCS-51的工作频率为12MHZ,机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12MHZ)=1us。

我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间,但同时由于单片机的运行速度很快其他的指令执行时间可以忽略不计。

延时子程序模块:

voidDelay(WORDn)

{

WORDx;

while(n--)

{

x=500;

while(x--);

}

}

4.3系统中断设计

本系统主要使用了外部中断,中断信号有引脚INT0和INT1输入,低电平有效,CPU每个时钟周期都会检测INT0和INT1上的信号,8051允许外部中断以电平方式或负边沿方式两种中断方式输入中断请求信号,可由用户通过设置TCON中IT0和IT1位的状态来实现。

以IT0为例,IT0=0,为电平触发方式,IT0=1,为负边沿触发方式,本设计采用电平方式,IE0为其中断标志位,有中断信号则置位,中断服务子程序响应后,IE0自动清零。

IE中的EA为允许中断的总控制位,为1开启,EX0为外部中断允许控制位,为1开启。

在优先级的允许下,一旦有外部中断信号产生,单片机CPU首先保护断点,PC值进栈,然后执行相应的中断服务子程序,执行完后,用RETI指令返回,此时CPU会从堆栈中取保存的断点地址,送回PC,程序再正常执行。

中断子程序模块:

voidEX0_ISR(void)interrupt0//外部中断0服务函数

{

staticunsignedchari;//接收红外信号处理

//staticbitstartflag=1;//是否开始处理标志位

//if(startflag)

//{

if(irtime>=33&&irtime<63)//引导码TC9012的头码,9ms+4.5ms

i=0;

irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1

irtime=0;

i++;

if(i==33)

{

irok=1;

i=0;

}

/*}

else

{

irtime=0;

startflag=1;

}*/

}

4.4红外遥控设计

子程序模块:

红外码值处理

voidIrcordpro(void)//红外码值处理函数

{

unsignedchari,j,k;

unsignedcharcord,value;

k=1;

for(i=0;i<4;i++)//处理4个字节

{

for(j=1;j<=8;j++)//处理1个字节8位

{

cord=irdata[k];//此处去除头码故从一开始

if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差

value|=0x80;//2.25>256X7>1.125ms

if(j<8)

{

value>>=1;//数据串行发送,低位(bit0)在前,高位(bit7)在后

}

k++;

}

IRcord[i]=value;

value=0;

}

irpro_ok=1;//处理完毕标志位置1

}

4.5设计的调试

图10设计调试演示

总结

经过两周的努力工作,终于完成了自己的单片机课程设计。

虽说忙碌了点,但我觉得这样的生活充实且有成就感,当然,也获益匪浅。

回顾起这一次的课程设计,至今我仍感慨颇多。

在这段日子里,从理论到实践,可以说得是苦多于甜,但是我还是可以学到了很多的内容,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

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

我在设计的过程中也遇到了不少的问题,可以说得是困难重重,但可喜的是最终都得到了解决。

 实验过程中,此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

通过本次的课程设计,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的学习起了很大的帮助。

就我个人而言,很深刻地体会到一点,那就是我们在设计过程中一定要有一个整体的清晰的思路,知道自己的设计的对象的基本功能和核心器件的适用及其作用,只要把握住这些主要方面,一些小问题都将围绕着这些主要问题而逐步得到解决。

同时我也懂得,在整个设计过程中,生活中也一样,一定要意志坚定,克服自己的畏难情绪,这样才能将事情做好,才能干出一番成就。

在此我非常感谢我的指导老师刘毅老师从一开始就耐心的安排我们的进度,和之后多次提醒我们一些重要的注意事项,以及让我对单片机原理这门课程有了更深刻的认识,让我对独立做课程设计有了信心,同时我还要感谢我的同学们,感谢他们帮助,这次课程设计才能顺利完成。

 

参考文献

[1]张毅刚,单片机原理及应用第二版,高等教育出版社,2010.(5)

[2]王为青,邱文勋.51单片机开发案例精选[J].人民邮电出版社,2001,(5):

45-47.

[3]张鑫,华臻,陈书谦.单片机原理及应用[J].电子工业出版社,2008(5).

[4]张洪润,张亚凡.单片机原理及应用[J].清华大学出版社,2005,(4).

[5]黄智伟.凌阳单片机课程设计指导[J].北京航空航天大学出版社,2007,(6)

[6]蒋辉平,周国雄.基于Proteus的单片机系统设计与仿真实例[M].机械工业出版社,2009.

[7]张毅坤.单片微型计算机理及接口技术[M].陕西:

西安电子科技大学出版社,2000.7

[9]雷丽文等.微机原理与原理及应用,[M]西安电子科技大学出版社1998

[8]余锡存曹国华.单片机原接口技术[M].北京:

电子工业出版社,1997.

 

附录

附录一元器件清单

元器件类型

数量

STC12C5A60S2芯片

1块

DS12C887芯片

1块

1602液晶显示屏

1块

一体化红外接收头

1个

21键红外遥控器

1个

发光二极管

6个

蜂鸣器

1个

排针

3排

导线电容电阻

若干

附录二部分程序

初始化程序:

#include"reg51.h"

#include"absacc.h"

//#include<1602.h>

sbitIR=P3^2;

sbitbeep=P1^6;

charcodeTab[16]="0123456789ABCDEF";

unsignedcharcodetable[]={'0','1','2','3','4','5','6','7','8','9'};

typedefunsignedcharBYTE;

typedefunsignedintWORD;

#defineuintunsignedint

unsignedcharirtime;//红外用全局变量

bitirpro_ok,irok;//irpro_ok处理完成标志,接收好了,

unsignedcharIRcord[4];//储存4个红外码的四个字节

unsignedcharirdata[33];//储存32+1位

unsignedcharTempData[16];//定义零时数据

主程序:

voidmain(void)

{

BYTEdhi,dli,time0,time1,y,flag=0;

intmiao2=55,miao1,h=5;

SP=0x60;

EX0init();//初始化外部中断

TIM0init();//初始化定时器

lcd_init();

DS_init();

time0=Second;

//write_time();//DS12C887时间设置

while

(1)

{

if(irok)//如果接收好了进行红外处理

{

beep=0;

Delay(200);

beep=1;

Ircordpro();//红外码处理

irok=0;

}

if((DS_C&0x10)!

=0)//显示时间

{

crt_time

(1);

time1=Second;

if(time0!

=time1)

{

time0=time1;//读取当前秒

if(flag==0)//红1、绿2亮,并开始倒计时

{

if(miao2>0)//此时miao1>miao2

{

P1=0xff;

miao2--;

miao1=miao2+h;

P1=0xde;//红1、绿2亮

}

else

{

if(miao1>0)//此时miao2=0,miao1继续5秒倒计时

{

P1=0xff;

miao1--;

miao2=0;

P1=0xee;//红1、黄2亮

}

else//

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

当前位置:首页 > 人文社科 > 设计艺术

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

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