单片机课程设计设计报告参考模板_第1页
单片机课程设计设计报告参考模板_第2页
单片机课程设计设计报告参考模板_第3页
单片机课程设计设计报告参考模板_第4页
单片机课程设计设计报告参考模板_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理与应用课程设计设计报告20142015学年第2学期设计题目: 姓 名: 专业班级: 学 号: 数理与信息工程学院1 课题设计内容对基于单片机的交通灯控制系统进行设计。所设计的系统功能为:以MCS-51系列单片机作为控制核心,在东西南北四个方向设置左拐、右拐、直行及行人4种通行指示灯,用计时器显示路口通行转换剩余时间。在出现紧急情况时,可以由交警手动实现全路口车辆禁行而行人通行状态,在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行状态。2 设计方案论证 根据设计内容要求,提出了如下三种方案:方案一:采用40脚、片内带8kB Flash ROM的AT89

2、S52单片机作为控制核心,采用四组高亮红绿双色二极管作为东西南北四个路口的通行指示灯,采用四组3位LED数码管作为四个路口的通行倒计时显示器,LED显示采用动态扫描方式,以节省端口数。方案一结构框图如图4-1所示,按照这种结构设计,单片机端口资源刚好满足要求。图4-1 方案一:采用LED动态扫描的交通灯控制系统结构框图方案二:采用20脚、片内带2kB Flash ROM的AT89C2051单片机作为控制器,左拐、右拐、直行及行人4种通行指示采用16×16点阵双色LED发光管,通行倒计时显示也采用16×16点阵LED发光管。LED点阵的列驱动采用74LS595,以实现串行端口

3、扩展,行译码采用4/16译码器74LS154,74LS154生成16条行选通信号线,每条行线上需要较大的驱动电流,选用大功率三极管作为驱动管。方案二结构框图如图4-2所示,方案三:采用AT89C2051单片机作为控制器,左拐、右拐、直行、行人通行指示及通行倒计时指示采用单块LCD液晶点阵显示器。三种方案的特点比较如下:方案一具有电路简单,设计方便,显示亮度高,耗电较少,可靠性高等特点;方案二的图案显示逼真,单片机占用端口资源少,缺点是需要大量的硬件,电路复杂,耗电量大,不太适合于模型制作;方案三设计占用单片机的端口最少,硬件也少,耗电也最少,虽然显示图案也很精美,但由于亮度太暗,晚上还得开背光

4、灯,不够实用。可见方案一优于其他两种方案,因此本设计选用方案一:采用LED动态扫描的方案进行设计。图4-2 方案二:采用16×16点阵LED发光管设计的交通灯控制系统结构框图3 系统硬件设计采用LED动态扫描的交通灯控制系统电路原理图如图4-3所示系统由控制模块、通行灯显示模块、时间显示模块、电源模块四部分组成。3.1控制模块 控制模块电路如图4-4所示。主控制器采用AT89S52。AT89S52的晶振及复位电路按典型电路设计,元器件参数如图4-4中所示,晶振频率选为12MHz。P1口用于控制南北通行灯,P2口用于控制东西通行灯,P0口用于四组3位LED显示器的段码控制,P3.0P3

5、.2口用于3位LED显示器的位码控制。对不同城市,准备采用两种倒计时方式:对车流量较大的大城市采用120S倒计时,对中小城市采用60S倒计时。两种倒计时采用P3.6上的S2开关进行转换。在出现紧急情况时,由交警手动按S3实现全路口车辆禁行而行人通行状态。现场特种车的到来信号可以采用红外线接收器采集,使用单片机的外部中断1响应特种车的通行要求。此处采用S4按键模拟特种车的到来信号,按一下S4表示有特种车要通行,执行相应的中断服务程序。由于AT89S52使用片内的8KB的Flash程序存储器,所以片内外程序存储器选择引脚/VPP接5V电源。3.2 通行灯显示模块通行灯显示模块如图4-5所示(以西路

6、口和北路口为例)。通行灯指示采用高亮共阴红绿双色发光二极管,左拐、右拐、直行及行人各一个。双色发光二极管的共阴极通过电阻接地,阳极接P1口或P2口(南北为P1口,东西为P2口),经74HC244控制。当发光电流为6mA时,限流电阻按公式R=(5-1.8)/0.006计算,取标称值为510。由于通行时南北双向指示牌相同,东西双向指示牌相同,因此每个端口应具有12mA的驱动电流能力,在单片机的输出口接驱动电路74HC244,以保护单片机的输出端口。3.3 时间显示模块通行剩余时间显示模块如图4-6所示(以北路口为例)。图4-3 采用LED动态扫描的交通灯控制系统电路原理图18路口通行剩余时间采用高

7、亮红色7段共阳LED发光数码管显示。如用单片机吸收电流驱动,列扫描驱动使用三级管,按每段6mA电流算,全显示字型“8”时,每个数码管需6mA×8=48mA。由于时间显示每个路口相同,4组需192mA,因此设计中采用功率三极管S9012驱动。由于单片机每位段码输出口需吸收24mA电流,因此在电路设计中也使用了驱动集成块74HC244。3.4 电源电路电源电路如图4-7所示。整个系统采用的电源电压只需+5V电压,将交流电经变压器变换为15V交流电,再用整流桥得到13.5V左右的直流电,采用不可调的3端稳压器件LM7805将电源稳定在5V直流输出。图4-4 控制模块原理图图4-5 通行灯输

8、出显示模块图4-6 时间显示模块电路 图4-7 电源电路 图4-8 AT89S52引脚功能4 系统软件设计交通灯控制系统软件主要分为主程序、定时器中断服务子程序、特种车中断服务子程序三部分。4.1 主程序主程序主要负责总体程序管理功能,包括初始化部分与人机交互设定部分。由于采用动态扫描方式显示时间,因此主程序大部分时间是调用扫描显示程序。主程序流程图如图4-9所示。P3.7=0表示按下了自动/手动转换开关。图4-9主程序流程图初始化部分主要完成内存规划,定时器的工作模式、中断方式等的设定。由于子程序调用较多,因此初始化时堆栈指针设于80H处。定时器T0、T1设为16位定时器模式,定时时间为50

9、mS,T0为秒计时用,T1为特种车通行秒计时用。4.2 定时器中断服务子程序定时器中断服务子程序主要用于车辆与行人的通行指示,按照通行规则,红绿灯控制转换逻辑表如表4-1所示。通行规则如下:A.车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为1min(60S),各路右拐比直行滞后10S开放。B.车辆南北向左拐、各路右拐,行人禁行。通行时间为1min(60S)。C.车辆东西直行、各路右拐,东西向行人通行。东西向通行时间为1min(60S),各路右拐比直行滞后10S开放。D.车辆东西向左拐、各路右拐,行人禁行。通行时间为1min(60S)。交通灯的4种通行规则,是以给控制红绿灯端口送控制码

10、的方式实现的。它的原理是,将按不同规则通行时的各路口的红绿灯亮灭情况转换为单片机端口控制码。红绿灯指示功能通过T0定时中断服务程序实现。表4-1 路口通行方式控制码数据表 南 北 方 向端口控制功能120-110S110-70S70-60S60-10S10-0SP1.7左拐红1(亮)1(亮)1(亮)0(暗)0(暗)P1.6左拐绿0(暗)0(暗)0(暗)1(亮)1/0(提示)P1.5直行红0(暗)0(暗)0(暗)1(亮)1(亮)P1.4直行绿1(亮)1(亮)1/0(提示)0(暗)0(暗)P1.3右拐红1(亮)0(暗)0(暗)0(暗)0(暗)P1.2右拐绿0(暗)1(亮)1(亮)1(亮)1/0(提

11、示)P1.1行人红0(暗)0(暗)0(暗)1(亮)1(亮)P1.0行人绿1(亮)1(亮)1/0(提示)0(暗)0(暗)路口控制字99H95H95H/84H66H66H/22H 东 西 方向 P2.7左拐红1(亮)1(亮)1(亮)1(亮)1(亮)P2.6左拐绿0(暗)0(暗)0(暗)0(暗)0(暗)P2.5直行红1(亮)1(亮)1(亮)1(亮)1(亮)P2.4直行绿0(暗)0(暗)0(暗)0(暗)0(暗)P2.3右拐红1(亮)0(暗)0(暗)0(暗)0(暗)P2.2右拐绿0(暗)1(亮)1(亮)1(亮)1/0(提示)P2.1行人红1(亮)1(亮)1(亮)1(亮)1(亮)P2.0行人绿0(暗)0(

12、暗)0(暗)0(暗)0(暗)路口控制字AAHA6HA6HA6HA6H/ A2H定时器T0定时溢出中断周期设为50ms,中断累计20次(即1S)时对120S倒计时单元减一操作。设计中将4种通行规则分成几种不同的亮灯方式,通过查询秒倒计时单元的数据,实现在不同的时间段给控制端口送不同的控制数据码。控制码分为5个时间段:120110S、11070S、7060S、6010S、100S。交通管理定时功能程序流程图如图4-10所示。图4-10 交通管理定时功能程序图4-11特种车中断服务子程序流程图5 特种车中断服务子程序将按钮S4按下,给引脚输入低电平信号来模拟特种车通过信号,此时外部中断1被触发,中断

13、处理流程如图4-11所示。总的程序清单见附录4。6 算法分析6.1.定时器/计数器本设计涉及到120110S、11070S、7060S、6010S、100S五段计时,首先须将它们转为16进制代码。 120=7×16+8=78H 110=6×16+14=6EH 70=4×16+6=46H 60=3×16+12=3CH 10=0×16+10=0AH6.2.定时时间初值与TMOD的设置T0、T1为16位定时器,由于定时时间大于8192S,应选用工作方式1。由于晶振频率为12MHz,TCY=1S,故有 T=(65536-X)TCY=(65536-X)&

14、#215;1s =50ms初值 X=15536=3CB0H,即TH0=3CH ,TL0=0B0H。TMOD的格式如图4-12所示。D7D6D5D4D3D2D1D0GATEC/M1M0GATEC/M1M0图4-12 TMOD的格式TMOD各位的内容确定如下:由于定时器/计数器0设为定时器,选用工作方式1,所以GATE(TMOD.3)=0,C/(TMOD.2)=0,M1(TMOD.1)=0,M0 (TMOD.0)=1;定时器/计数器1没有使用,相应的D7D4为随意状态“X”。若取“X”为0,则(TMOD)=00000001B=01H6.3.中断系统IE的取值IE的格式如图4-13所示。D7D6D5

15、D4D3D2D1D0EA-ET2ESET1EX1ET0EX0图4-13IE的格式IE每一位都由软件置1或清零。本设计中CPU允许中断即EA=1,定时器/计数器0中断允许位ET0及外部中断0中断允许位EX0可申请中断,即ET0=1,EX0=1,其余不允许中断,均设为0,所以IE=10000011H=83H。附录一 交通灯控制程序清单基于单片机的交通灯控制系统程序清单;*;交通灯控制系统程序;*;*初始化部分*TIME EQU 50H ;秒计数用TIMESFR EQU 51H ;临时寄存器CONR5 EQU 52H ;T1秒定时计数用TIMED0 EQU 55H ;单向最大定时时间,直行开始,人行

16、开;始(120S)TIMED1 EQU 56H ;各路右拐开始时间(110S)TIMED2 EQU 57H ;前行结束提醒(70S)TIMED3 EQU 58H ;前行结束,人行结束,左拐开始(60S)TIMED4 EQU 59H ;左拐结束提醒TIMED5 EQU 5AH ;左拐结束TIMED6 EQU 5BHTIMED7 EQU 5CHSN EQU P1 ;南北口EW EQU P2 ;东西口SCAN EQU P3 ;扫描口LEDOUT EQU P0 ;段码口SNEWFLAG BIT 09H ;东西口与南北口转换标志;*中断入口程序*ORG 0000H ;程序执行开始地址LJMP START

17、 ;跳到标号START执行ORG 0003H ;外中断0中断程序入口RETI ;外中断0中断返回ORG 000BH ;定时器T0中断程序入口LJMP INTT0 ;跳至INTT0执行ORG 0013H ;外中断1中断程序入口LJMP INT11 ;119120中断ORG 001BH ;定时器T1中断程序入口LJMP INTT1 ORG 0023H ;串行中断程序程序返回RETI;*主程序*;P3.6所接S2开关打开,为120秒倒计时,合上,则为60秒倒计时;P3.7所接S2开关打开,正常状态,合上,全红灯。;定时器T0T1溢出周期为50ms,T0为秒计数用START: MOV SP, # 80

18、H MOV R0, # 00H ;清00H8EH内存单元 MOV R7, # 8FHCLEARDISP: MOV R0, # 00H INC R0 DJNZ R7, CLEARDISP MOV TIMED0, # 78H ;单向最大定时时间,直行开始;人行开始 MOV TIMED1, # 6EH ;各路右拐开始时间(110S) MOV TIMED2, # 46H ;前行结束提醒(70S) MOV TIMED3,# 3CH ;前行结束,人行结束,左拐开始;(60S) MOV TIMED4,# 0AH ;左拐结束提醒 CLR SNEWFLAG ;南北先通行标志位 MOV TMOD, # 01H ;

19、设T0,T1为16位定时器 MOV TL0, #0B0H ;50ms定时初值(T0记时用) MOV TH0, #3CH ;50ms定时初值 MOV TL1, #0B0H ;50ms定时初值 MOV TH1, #3CH ;50ms定时初值 JB SCAN.6, SSST ;120s管理;以下为60s管理 LCALL DL1MS LCALL DL1MS LCALL DL1MS JB SCAN.6, SSST ;干扰 MOV TIMED0, #60 ;单向最大定时时间,直行开始;人行开始 MOV TIMED1, #55 ;各路右拐开始时间(55S) MOV TIMED2, #35 ;前行结束提醒(3

20、5S) MOV TIMED3, #30 ;前行结束,人行结束,左拐开始(30S) MOV TIMED4, #05 ;左拐结束提醒SSST: MOV TIME, TIMED0 LCALL TUNBCD MOV SN, #99H MOV EW, #0AAH SETB EA ;总中断开放 SETB PX1 SETB EX1 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4, #14H ;1S定时用初值(50ms×20) MOV CONR5, #20START1: LCALL DISPLAY ;调用显示子程序 JNB SCAN.7, KEYFUN ;手动状态

21、 SJMP START1 ;P3.7为1时跳回START1KEYFUN: LCALL DISPLAY LCALL DISPLAYJB SCAN.7, START1 CLR ET0 CLR TR0 MOV SN, #0A9H ;全车道停,行人通 MOV EW, #0A9H MOV TIME, #00H ;时间显示0 LCALL TUNBCDKEYWAIT: LCALL DISPLAY JNB SCAN.7, KEYWAITKEYWAIT1: LCALL DISPLAY JNB SCAN.7, KEYWAIT1 MOV TIME, TIMED0 ;重新开始计时初值 LCALL TUNBCD CLR

22、 SNEWFLAG ;南北先通行标志位 SETB TR0 SETB ET0 AJMP START1;*1s计时程序(T0定时器中断服务子程序)*INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0 MOV A, #0B7H ;中断响应时间同步修正 ADD A, TL0 ;低8位初值修正 MOV TL0, A ;重装初值(低8位修正值) MOV A, #3CH ;高8位初值修正 ADDC A, TH0 MOV TH0, A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 DJNZ

23、R4, OUTT00 ;20次中断到(1S),重赋初值 MOV R4, #14H JB SNEWFLAG, INT22 DEC TIME MOV A, TIME CJNE A, TIMED1, LOOP11 ;判断是否小于110SLOOP11: JC LOOP22 ;120-110 MOV SN, #99H MOV EW, #0AAH LJMP OUTT0 ;120-110LOOP22: MOV A, TIME CJNE A, TIMED2, LOOP33;判断是否小于70SLOOP33: JC LOOP44 ;110-70 MOV SN, #95H MOV EW, #0A6H LJMP OU

24、TT0 ;110-70LOOP44: MOV A, TIME CJNE A, TIMED3, LOOP55 ;判断是否小于60SLOOP55: JC LOOP66 ;70-60 MOV 20H, SN CPL 04H CPL 00H MOV SN, 20H MOV EW, #0A6H LJMP OUTT0 ;70-60LOOP66: MOV A, TIME CJNE A, TIMED4, LOOP77 ;判断是否小于10SLOOP77: JC LOOP88 ;60-10 MOV SN, #66H MOV EW, #0A6H LJMP OUTT0 ;60-10LOOP88: MOV A, TIM

25、E JZ OUT88 MOV 20H, SN CPL 06H CPL 02H MOV SN, 20H MOV 20H, EW CPL 02H MOV EW, 20H LJMP OUTT0 ;70-60OUT88: MOV TIME, TIMED0 ;20初值 CPL SNEWFLAGOUTT0: LCALL TUNBCDOUTT00: POP PSW ;恢复状态字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放T0中断 RETI ;中断返回INT22: DEC TIME MOV A, TIME CJNE A, TIMED1, LOOP111 ;判断是否小于110SLOOP111

26、: JC LOOP221 ;120-110 MOV EW, #99H MOV SN, #0AAH LJMP OUTT01 ;120-110LOOP221: MOV A, TIME CJNE A, TIMED2, LOOP331 ;判断是否小于70SLOOP331: JC LOOP441 ;110-70 MOV EW, #095H MOV SN, #0A6H LJMP OUTT01 ;110-70LOOP441: MOV A, TIME CJNE A, TIMED3, LOOP551 ;判断是否小于60SLOOP551: JC LOOP661 ;70-60 MOV 20H, EW CPL 04H

27、 CPL 00H MOV EW, 20H MOV SN, #0A6H LJMP OUTT01 ;70-60LOOP661: MOV A, TIME CJNE A, TIMED4, LOOP771 ;判断是否小于10SLOOP771: JC LOOP881 ;60-10 MOV EW, #66H MOV SN, #0A6H LJMP OUTT01 ;60-10LOOP881: MOV A, TIME JZ OUT881 MOV 20H, EW CPL 06H CPL 02H MOV EW, 20H MOV 20H, SN CPL 02H MOV SN, 20H LJMP OUTT01 ;70-6

28、0OUT881: MOV TIME, TIMED0 ;120S初值 CPL SNEWFLAGOUTT01: LCALL TUNBCD POP PSW ;状态恢复字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放T0中断 RETI ;中断返回;*显示子程序*;显示数据在70H72H单元内,用3位LED共阳数码管显示,LEDOUT口输出段;码数据,;P3(SCAN)口作扫描控制,每个LED数码管亮1ms再逐位循环DISPLAY: MOV R1, #70H ;指向显示数据首址 MOV R5, #0FEH ;扫描控制字初值PLAY: MOV A, R5 ;扫描字放入A MOV SCAN

29、, A ;从SCAN口输出 MOV A, R1 ;取显示表地址 MOV DPTR, #TAB ;取段码表地址 MOVC A, A+DPTR ;查显示数据对应段码 MOV LEDOUT, A ;段码放入LEDOUT口LOOP6: LCALL DL1MS ;显示1ms INC R1 ;指向下一地址 MOV A, R5 ;扫描控制字放入A JNB ACC.2, ENDOUT ;ACC.2=0时,一次显示结束 RL A ;A中数据循环左移 MOV R5, A ;放回R5内 MOV LEDOUT, #0FFH AJMP PLAY ;跳回PLAY循环ENDOUT: MOV LEDOUT, # 0FFH ;

30、一次显示结束,端口复位 MOV SCAN, #0FFH ;端口复位 RET ;子程序返回TAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H DB 0FFH, 88H, 0BFH;共阳段码表 "0","1","2","3","4","5","6","7","8","9";"不亮","A","-";*延时子程序*;1ms延时程序,LED显示程序用DL1MS: MOV R6, #14HDL1: MOV R7, #19HDL2: DJNZ R7, DL2 DJNZ R6,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论