1、目录1 引言12 单片机概述23 芯片简介34 系统硬件设计65 系统软件设计106 总结15参考文献151 引言当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。 电气启动的红绿灯出现在
2、美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。 信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号
3、协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。2 单片机概述单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口
4、电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。2.1 单片机的发展单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机的发展分为4个阶段:第一阶段(197476年):单片机初级阶段。因为受工艺限制,单片机采用单片的形式而且功能比较简单。例如美国仙童公司生产的F8单片机,实际上只包括了8位CP
5、U,64个字节的RAM和2个并行接口。第二阶段(197678年):低性能单片机阶段。以Intel公司生产的MCS48系列单片机为代表,该系列单片机片内集成有8位CPU,8位定时器/计数器,并行I/O接口,RAM和ROM等,但是最大的缺点就是无串行接口,中断处理比较简单而且片内RAM和ROM容量较小,且寻址范围不大与4KB。第三阶段(197883)高性能单片阶段这个阶段推出的单片机普遍带有串行接口。多级中断系统,16位定时器/计数器,片内ROM,RAM容量加大,且寻址范围可达64KB,有的片内还带有A/D转换器。第四阶段(1983年至今)8位单片机巩固发展以及16位单片机,32 位单片机推出阶段
6、。此阶段的主要特征是:一方面发展16位单片机,32位单片机及专用型单片机;另一方面不断完善高档8位单片机,改善其结构,增加片内器件,以满足不同的客户要求。单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。2.2 单片机的应用单片机的应用很广,分别在工业自动化、仪器仪表、终端及外部设备控制、通信方面、武器装备、消费类电子产品等领域中得到了广泛的应用。近年来随着科技的飞速发展,同时带动自动控制系统日新月异更新,单片机的应用正在不断地走向深入。3 芯片简介3.1 AT89S51AT89S51芯片是80C
7、51系列的典型例子,包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。3.1.1 89S51组成1.中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 2.数据存储器(RAM) 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使
8、用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。 3.程序存储器(ROM):89S51共有4KB掩膜ROM,最大可扩展64K字节,用于存放用户程序,原始数据或表格。4.定时/计数器:8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。5.并行输入输出(I/O)口:89S51共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。 6.全双工串行口: 8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。 7.中断系统: 89S51具备较完善的中断功能
9、,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。8.时钟电路: 89S51内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但89S51单片机需外置振荡电容。 3.1.2 主要引脚功能AT89S51引脚图如图3-1所示图3-1 AT89S51引脚1、VCC:电源电压 2、GND:地3、P0口:P0口是一组8位漏极开路型双向I0口,也即地址数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问
10、期间激活内部上拉电阻。4、RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。5、EA()VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。6、XTAL1
11、:片内振荡器反相放大器的输入端和内部时钟工作的输入端。采用内部振荡器时,它接外部石英晶体和微调电容的一个引脚。7、XTAL2:片内振荡器反相放大器的输出端,接外部石英晶体和微调电容的另一端。采用外部振荡器时,该引脚悬空。外接晶体引脚。3.2 74LS16474LS164是8位串入并出移位寄存器。A、B为串行输入端,QA与QH为串行输出端,CLK为串行时钟输入端,为串行输出QB0 和QH0代表在稳态输入条件建立之前QA、QB和QH的输出状态;QAn、QBn和QHn代表在最近的时钟上升沿转换之前QA、QB和QH的输出状态;H/L、Qan和QBn代表在最近的时钟上升沿转换之后QA、QB和QH的输出状
12、态。清零端,VCC为电源输入端,GND为接地端。依据电路原理框图,将74LS164的A、B端与RXD相接,CLK与TXD相接,接高电平Vcc,在满足条件时数据就传送到74LS164并寄存,管脚将自动置成相应的电平。74LS164引脚图如图3-2所示:图3-2 74LS164引脚图4 系统硬件设计4.1 硬件材料规格及原理图面包板1块、40脚基座1个、14脚基座1个、双色LED灯4个、470欧姆电阻8个、10UF电容1个、20PF电容2个、12MHZ石英晶振1个、八段数码管1个、74LS164一个。图4-1 电路原理图4.2 交通管理的方案论证目前设计交通灯的方案有很多,有应用CPLD设计实现交
13、通信号灯控制器方法;有应用PLC实现对交通灯控制系统的设计,有应用单片机实现对交通信号灯设计的方法。目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯,加上一个倒计时的显示计时器来控制行车。十字路口是东西南北走向,初始状态为状态S1(南北绿灯、东西红灯),延时8秒后转状态S2(南北绿灯闪烁2次变黄灯,东西红灯),延时4秒后转状态S3(东西绿灯,南北红灯),延时8秒后转状态S4(东西绿灯闪烁2次变黄灯,南北红灯),延时4秒后跳转到状态S1循环。并且利用串行口以工作方式0在LED上显示时间。此处双色LED灯有3只引脚,工作时中间引脚接地,另外两只引脚单独接高电平,一种亮红灯
14、,一种亮绿灯(最短引脚),两只引脚同时接高电平时,亮黄灯。我们采用LED的动态显示接口方式,动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常,各位数码管的段选线相应地并联在一起,由一个8位的I/O口控制,各位的位选线(共阴极或共阳极)由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。依此规矩循环,即可使各位数码管显示需要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔时间足够短就可
15、以给人以同时显示的感觉。采用动态显示方式比较节省I/O口,硬件电路也较静态显示简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多时间对于交通灯这样对显示亮度要求非常高的系统,我们选择第一种方案实现系统的显示功能。4.3 系统硬件设计4.3.1 设计思路利用AT89S51的P0口来控制四只双色LED等,来模拟十字路口的交通灯,再利用AT98S51的RXD和TXD端口发送显示数据,通过78LS164串行输入并行输出到一个LED数码管以显示时间,同时利用AT89S51的定时器进行定时。4.3.2 控制电路1、时钟电路为达到振荡周期是12MHZ的要求,这里要采用12
16、MHZ的晶振,另外有两个20PF的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。图4-2 时钟电路图2、复位电路单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,电容采用电容值为10的电解电容。图4-3 复位电路图3、LED动态显示由于南北的绿灯、红灯与黄灯时间不相同,可用一个共阳极数码管显示相应的时间,同理东西的绿灯,黄灯,红灯时间也可用这个共阳极数码管显示。单片机的驱动电流非常小,采用AT89S51同相三态缓冲器器作驱动电路。为了减少硬件开支采用动态显示电路。P0口输出字型码。图4-4 LED动态显示器电路图5 系统软件设计5.1 原理分析交通灯变化规律:十字路口
17、是东西南北走向,初始状态为状态S1(南北绿灯、东西红灯),延时8秒后转状态S2(南北绿灯闪烁2次变黄灯,东西红灯),延时4秒后转状态S3(东西绿灯,南北红灯),延时8秒后转状态S4(东西绿灯闪烁2次变黄灯,南北红灯),延时4秒后跳转到状态S1循环。并且利用串行口以工作方式0在LED上显示时间。其状态表入下表所示:表5-1 状态转换表态状灯东西南北S1红灯红灯绿灯绿灯S2红灯红灯绿灯闪烁2次变黄灯绿灯闪烁2次变黄灯S3绿灯绿灯红灯红灯S4绿灯闪烁2次变黄灯绿灯闪烁2次变黄灯红灯红灯5.2 计算说明P0到P7控制东西南北方向红绿灯的灭与亮的状态,高电平表示可以触发。所以P0.7 到P0.0的状态如
18、下:S1: 01101001S2: 有操作CPL P0.3,CPL P0.0后2S:10011001S3: 10010110 S4: 有操作 CPL P0.2,CPL P0.1 后2S:01100110 。在方式0情况下工作,初值为3CB0H。5.3 程序ORG 0000hLjmp mainOrg 000bhLjmp dst0Org 001bhLjmp dst1Main:mov sp,#1fh mov tmod,#11h;T0和T1均以方式1定时工作 mov th1,#3ch mov tl1,#0b0h;T1定时0.05S mov th0,#3ch mov tl0,#0b0h;T0定时0.05
19、S mov p0,#01101001b;进入S1状态:南北向绿灯,东西向红灯 CLR F0;F0=0,代表即将进入S2状态;F0=1,代表即将进入S4状态 mov r0,#160;0.05*160=8S mov r1,#10;0.05*10=0.5S mov r2,#4;灯亮0.5S再灭0.5S为一次闪烁,共闪烁2次 mov ie,#8Ah mov ip,#0Ah setb TR0 clr TR1;T0先工作,然后T1工作 CLR 30H LJMP DISdst0: mov th0,#3ch mov tl0,#0b0h djnz r0,next1;8S时间不到,转next1处 mov r0,#
20、160 jnb f0,s2;f0=0,转s2处,即将进入S2状态;f0=1,顺序执行,即将进入S4状态 cpl p0.1 cpl p0.2 sjmp comp1s2: cpl p0.3 cpl p0.0comp1:SETB 30H clr TR0 setb TR1;T0暂停工作,T1开始定时工作next1:retidst1:mov th1,#3ch mov tl1,#0b0h djnz r1,next2;0.5S时间不到,转next2处 mov r1,#10 jb f0,s4;f0=1,转s4处,继续S4状态;f0=0,顺序执行,继续S2转态 cpl p0.3 cpl p0.0 sjmp co
21、mp2s4 :cpL p0.1 cpL p0.2comp2:djnz r2,next2;绿灯闪烁2次后顺序执行 mov r2,#4 CLR TR1 jb f0,step;f0=1转step处,继续S4状态的后2S; f0=0顺序执行,继续S2状态的后2S mov p0,#11111001b;南北向黄灯亮,东西向红灯亮 lcall delay2s;调用2S延时 mov p0,#10010110b;进入S3状态:东西向绿灯亮,南北向红灯亮 sjmp comp3step :mov p0,#11110110b;东西向黄灯亮,南北向红灯亮lcall delay2s mov p0,#01101001bco
22、mp3: setb TR0 clr TR1 CPL F0 CLR 30Hnext2: retidelay2s:mov r3,#10;2S延时dl0 :mov r4,#200dl1 :mov r5,#248dl2 :djnz r5,dl2 djnz r4,dl1 djnz r3,dl0RetDIS:mov scon,#00hloop2:mov r7,#8;r7中存放0-8loop1:lcall sub lcall delay; L2: JB 30H,L2 DEC r7 cjne r7,#0FFH,loop1 ljmp loop2delay:mov r3,#10adl0 :mov r4,#200a
23、dl1 :mov r5,#248adl2 :djnz r5,adl2 djnz r4,adl1 djnz r3,adl0retsub :mov a,r7 mov dptr,#tab MOVC A,A+DPTR mov sbuf,ahere :jnb ti,here clr tirettab :db 03h,9fh,25h,0dh,99h,49h,41h,1fh,01h;0-8段码end5.4 程序运行结果程序运行后,会看到第1个和第4个LED灯显示绿色,第2个和第3个LED灯显示红色,同时数码管从8开始倒计时,当数码管第一次倒计时结束后,又从4倒计时,第1个和第4个LED灯闪烁2次后变为黄色,
24、而第2个和第3个LED灯仍显示红色。接着数码管又从8开始倒计时,第2个和第3个LED灯显示绿色,第1个和第4个LED灯显示红色。8秒倒计时结束后,第2个和第3个LED灯闪烁2次变黄色,第1个和第4个LED灯仍显示红色。最后数码管又从4秒开始倒计时,又重复以上过程。6 总结通过这次课程设计,加深了对单片机功能理解,也使我深深体会到学习模拟电子技术知识和单片机技术的重要性和艰难性.同时还提高了我的动手能力.能把我所学到的书本知识应用到实践中去,同时也让我们学到了无论做什么事情,都要先有一个总体的思路,所做的每一步都要有目的有意义。在以后的学习和工作中,一定注意到我们不仅仅是要学习到大量的知识,更重
25、要的是要把书本上的知识应用到实际中,和实际联系到一块,这样就能很容易掌握它我相信,在下一阶段的学习中我会更加努力,力争把这门课程学的更好,学的更精。参考文献1 李朝青. 单片机原理及接口技术(修订版),北京:北京航空航天大学出版社,2006;2 李广弟. 单片机基础, 北京:北京航空航天大学出版社,2003;3 何立民. 单片机应用技术大全,北京:北京航空航天大学出版社,2002;4 张毅刚. 单片机原理及接口技术,哈尔滨:哈尔滨工业大学出版社,2001;5 谭浩强. 单片机课程设计 , 北京:清华大学出版社,2000;6 杨邦文. 常用CMOS CC4000系列集成电路速查手册,2005年11月1次印刷; 7 魏立君、 韩华琦. 模拟开关和数据选择器,CMOS4000系列60种常用电路应用 2004年1月1次印刷.15