单片机课程设计设计报告参考.docx

上传人:b****6 文档编号:12996307 上传时间:2023-06-10 格式:DOCX 页数:24 大小:263.84KB
下载 相关 举报
单片机课程设计设计报告参考.docx_第1页
第1页 / 共24页
单片机课程设计设计报告参考.docx_第2页
第2页 / 共24页
单片机课程设计设计报告参考.docx_第3页
第3页 / 共24页
单片机课程设计设计报告参考.docx_第4页
第4页 / 共24页
单片机课程设计设计报告参考.docx_第5页
第5页 / 共24页
单片机课程设计设计报告参考.docx_第6页
第6页 / 共24页
单片机课程设计设计报告参考.docx_第7页
第7页 / 共24页
单片机课程设计设计报告参考.docx_第8页
第8页 / 共24页
单片机课程设计设计报告参考.docx_第9页
第9页 / 共24页
单片机课程设计设计报告参考.docx_第10页
第10页 / 共24页
单片机课程设计设计报告参考.docx_第11页
第11页 / 共24页
单片机课程设计设计报告参考.docx_第12页
第12页 / 共24页
单片机课程设计设计报告参考.docx_第13页
第13页 / 共24页
单片机课程设计设计报告参考.docx_第14页
第14页 / 共24页
单片机课程设计设计报告参考.docx_第15页
第15页 / 共24页
单片机课程设计设计报告参考.docx_第16页
第16页 / 共24页
单片机课程设计设计报告参考.docx_第17页
第17页 / 共24页
单片机课程设计设计报告参考.docx_第18页
第18页 / 共24页
单片机课程设计设计报告参考.docx_第19页
第19页 / 共24页
单片机课程设计设计报告参考.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计设计报告参考.docx

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

单片机课程设计设计报告参考.docx

单片机课程设计设计报告参考

《单片机原理与应用课程设计》

设计报告

2014——2015学年第2学期

 

设计题目:

姓名:

专业班级:

学号:

 

数理与信息工程学院

1课题设计内容

对基于单片机的交通灯控制系统进行设计。

所设计的系统功能为:

以MCS-51系列单片机作为控制核心,在东西南北四个方向设置左拐、右拐、直行及行人4种通行指示灯,用计时器显示路口通行转换剩余时间。

在出现紧急情况时,可以由交警手动实现全路口车辆禁行而行人通行状态,在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行状态。

2设计方案论证

根据设计内容要求,提出了如下三种方案:

方案一:

采用40脚、片内带8kBFlashROM的AT89S52单片机作为控制核心,采用四组高亮红绿双色二极管作为东西南北四个路口的通行指示灯,采用四组3位LED数码管作为四个路口的通行倒计时显示器,LED显示采用动态扫描方式,以节省端口数。

方案一结构框图如图4-1所示,按照这种结构设计,单片机端口资源刚好满足要求。

图4-1方案一:

采用LED动态扫描的交通灯控制系统结构框图

方案二:

采用20脚、片内带2kBFlashROM的AT89C2051单片机作为控制器,左拐、右拐、直行及行人4种通行指示采用16×16点阵双色LED发光管,通行倒计时显示也采用16×16点阵LED发光管。

LED点阵的列驱动采用74LS595,以实现串行端口扩展,行译码采用4/16译码器74LS154,74LS154生成16条行选通信号线,每条行线上需要较大的驱动电流,选用大功率三极管作为驱动管。

方案二结构框图如图4-2所示,

方案三:

采用AT89C2051单片机作为控制器,左拐、右拐、直行、行人通行指示及通行倒计时指示采用单块LCD液晶点阵显示器。

三种方案的特点比较如下:

方案一具有电路简单,设计方便,显示亮度高,耗电较少,可靠性高等特点;方案二的图案显示逼真,单片机占用端口资源少,缺点是需要大量的硬件,电路复杂,耗电量大,不太适合于模型制作;方案三设计占用单片机的端口最少,硬件也少,耗电也最少,虽然显示图案也很精美,但由于亮度太暗,晚上还得开背光灯,不够实用。

可见方案一优于其他两种方案,因此本设计选用方案一:

采用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.0~P3.2口用于3位LED显示器的位码控制。

对不同城市,准备采用两种倒计时方式:

对车流量较大的大城市采用120S倒计时,对中小城市采用60S倒计时。

两种倒计时采用P3.6上的S2开关进行转换。

在出现紧急情况时,由交警手动按S3实现全路口车辆禁行而行人通行状态。

现场特种车的到来信号可以采用红外线接收器采集,使用单片机的外部中断1响应特种车的通行要求。

此处采用S4按键模拟特种车的到来信号,按一下S4表示有特种车要通行,执行相应的中断服务程序。

由于AT89S52使用片内的8KB的Flash程序存储器,所以片内外程序存储器选择引脚

/VPP接+5V电源。

3.2通行灯显示模块

通行灯显示模块如图4-5所示(以西路口和北路口为例)。

通行灯指示采用高亮共阴红绿双色发光二极管,左拐、右拐、直行及行人各一个。

双色发光二极管的共阴极通过电阻接地,阳极接P1口或P2口(南北为P1口,东西为P2口),经74HC244控制。

当发光电流为6mA时,限流电阻按公式R=(5-1.8)/0.006计算,取标称值为510Ω。

由于通行时南北双向指示牌相同,东西双向指示牌相同,因此每个端口应具有12mA的驱动电流能力,在单片机的输出口接驱动电路74HC244,以保护单片机的输出端口。

3.3时间显示模块

通行剩余时间显示模块如图4-6所示(以北路口为例)。

图4-3采用LED动态扫描的交通灯控制系统电路原理图

路口通行剩余时间采用高亮红色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通行灯输出显示模块

图4-6时间显示模块电路

 

图4-7电源电路图4-8AT89S52引脚功能

4系统软件设计

交通灯控制系统软件主要分为主程序、定时器中断服务子程序、特种车中断服务子程序三部分。

4.1主程序

主程序主要负责总体程序管理功能,包括初始化部分与人机交互设定部分。

由于采用动态扫描方式显示时间,因此主程序大部分时间是调用扫描显示程序。

主程序流程图如图4-9所示。

P3.7=0表示按下了自动/手动转换开关。

图4-9主程序流程图

初始化部分主要完成内存规划,定时器的工作模式、中断方式等的设定。

由于子程序调用较多,因此初始化时堆栈指针设于80H处。

定时器T0、T1设为16位定时器模式,定时时间为50mS,T0为秒计时用,T1为特种车通行秒计时用。

4.2定时器中断服务子程序

定时器中断服务子程序主要用于车辆与行人的通行指示,按照通行规则,红绿灯控制转换逻辑表如表4-1所示。

通行规则如下:

A.车辆南北直行、各路右拐,南北向行人通行。

南北向通行时间为1min(60S),各路右拐比直行滞后10S开放。

B.车辆南北向左拐、各路右拐,行人禁行。

通行时间为1min(60S)。

C.车辆东西直行、各路右拐,东西向行人通行。

东西向通行时间为1min(60S),各路右拐比直行滞后10S开放。

D.车辆东西向左拐、各路右拐,行人禁行。

通行时间为1min(60S)。

交通灯的4种通行规则,是以给控制红绿灯端口送控制码的方式实现的。

它的原理是,将按不同规则通行时的各路口的红绿灯亮灭情况转换为单片机端口控制码。

红绿灯指示功能通过T0定时中断服务程序实现。

表4-1路口通行方式控制码数据表

端口

控制功能

120-110S

110-70S

70-60S

60-10S

10-0S

P1.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(提示)

P1.1

行人红

0(暗)

0(暗)

0(暗)

1(亮)

1(亮)

P1.0

行人绿

1(亮)

1(亮)

1/0(提示)

0(暗)

0(暗)

路口控制字

99H

95H

95H/84H

66H

66H/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(暗)

0(暗)

0(暗)

0(暗)

路口控制字

AAH

A6H

A6H

A6H

A6H/A2H

定时器T0定时溢出中断周期设为50ms,中断累计20次(即1S)时对120S倒计时单元减一操作。

设计中将4种通行规则分成几种不同的亮灯方式,通过查询秒倒计时单元的数据,实现在不同的时间段给控制端口送不同的控制数据码。

控制码分为5个时间段:

120~110S、110~70S、70~60S、60~10S、10~0S。

交通管理定时功能程序流程图如图4-10所示。

图4-10交通管理定时功能程序

图4-11 特种车中断服务子程序流程图

5特种车中断服务子程序

将按钮S4按下,给

引脚输入低电平信号来模拟特种车通过信号,此时外部中断1被触发,中断处理流程如图4-11所示。

总的程序清单见附录4。

6算法分析

6.1.定时器/计数器

本设计涉及到120~110S、110~70S、70~60S、60~10S、10~0S五段计时,首先须将它们转为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=0AH

6.2.定时时间初值与TMOD的设置

T0、T1为16位定时器,由于定时时间大于8192μS,应选用工作方式1。

由于晶振频率为12MHz,TCY=1μS,故有

T=(65536-X)TCY=(65536-X)×1μs=50ms

初值X=15536=3CB0H,即TH0=3CH,TL0=0B0H。

TMOD的格式如图4-12所示。

D7

D6

D5

D4

D3

D2

D1

D0

GATE

C/

M1

M0

GATE

C/

M1

M0

图4-12TMOD的格式

TMOD各位的内容确定如下:

由于定时器/计数器0设为定时器,选用工作方式1,所以GATE(TMOD.3)=0,C/

(TMOD.2)=0,M1(TMOD.1)=0,M0(TMOD.0)=1;定时器/计数器1没有使用,相应的D7~D4为随意状态“X”。

若取“X”为0,则(TMOD)=00000001B=01H

6.3.中断系统IE的取值

IE的格式如图4-13所示。

D7

D6

D5

D4

D3

D2

D1

D0

EA

---

ET2

ES

ET1

EX1

ET0

EX0

图4-13 IE的格式

IE每一位都由软件置1或清零。

本设计中CPU允许中断即EA=1,定时器/计数器0中断允许位ET0及外部中断0中断允许位EX0可申请中断,即ET0=1,EX0=1,其余不允许中断,均设为0,所以IE=10000011H=83H。

 

附录一交通灯控制程序清单

基于单片机的交通灯控制系统程序清单

;************************************************;

;         交通灯控制系统程序     ;

;************************************************;

;******************初始化部分********************

TIMEEQU50H;秒计数用

TIMESFREQU51H;临时寄存器

CONR5EQU52H;T1秒定时计数用

TIMED0EQU55H;单向最大定时时间,直行开始,人行开

;始(120S)

TIMED1EQU56H;各路右拐开始时间(110S)

TIMED2EQU57H;前行结束提醒(70S)

TIMED3EQU58H;前行结束,人行结束,左拐开始(60S)

TIMED4EQU59H;左拐结束提醒

TIMED5EQU5AH;左拐结束

TIMED6EQU5BH

TIMED7EQU5CH

SNEQUP1;南北口

EWEQUP2;东西口

SCANEQUP3;扫描口

LEDOUTEQUP0;段码口

SNEWFLAGBIT09H;东西口与南北口转换标志

;*************中断入口程序********************

ORG0000H;程序执行开始地址

LJMPSTART;跳到标号START执行

ORG0003H;外中断0中断程序入口

RETI;外中断0中断返回

ORG000BH;定时器T0中断程序入口

LJMPINTT0;跳至INTT0执行

ORG0013H;外中断1中断程序入口

LJMPINT11;119﹑120中断

ORG001BH;定时器T1中断程序入口

LJMPINTT1

ORG0023H;串行中断程序程序返回

RETI

;****************主程序*********************

;P3.6所接S2开关打开,为120秒倒计时,合上,则为60秒倒计时

;P3.7所接S2开关打开,正常状态,合上,全红灯。

;定时器T0﹑T1溢出周期为50ms,T0为秒计数用

START:

MOVSP,#80H

MOVR0,#00H;清00H~8EH内存单元

MOVR7,#8FH

CLEARDISP:

MOV@R0,#00H

INCR0

DJNZR7,CLEARDISP

MOVTIMED0,#78H;单向最大定时时间,直行开始

;人行开始

MOVTIMED1,#6EH;各路右拐开始时间(110S)

MOVTIMED2,#46H;前行结束提醒(70S)

MOVTIMED3,#3CH;前行结束,人行结束,左拐开始

;(60S)

MOVTIMED4,#0AH;左拐结束提醒

CLRSNEWFLAG;南北先通行标志位

MOVTMOD,#01H;设T0,T1为16位定时器

MOVTL0,#0B0H;50ms定时初值(T0记时用)

MOVTH0,#3CH;50ms定时初值

MOVTL1,#0B0H;50ms定时初值

MOVTH1,#3CH;50ms定时初值

JBSCAN.6,SSST;120s管理

;以下为60s管理

LCALLDL1MS

LCALLDL1MS

LCALLDL1MS

JBSCAN.6,SSST;干扰

MOVTIMED0,#60;单向最大定时时间,直行开始

;人行开始

MOVTIMED1,#55;各路右拐开始时间(55S)

MOVTIMED2,#35;前行结束提醒(35S)

MOVTIMED3,#30;前行结束,人行结束,左拐开始(30S)

MOVTIMED4,#05;左拐结束提醒

SSST:

MOVTIME,TIMED0

LCALLTUNBCD

MOVSN,#99H

MOVEW,#0AAH

SETBEA;总中断开放

SETBPX1

SETBEX1

SETBET0;允许T0中断

SETBTR0;开启T0定时器

MOVR4,#14H;1S定时用初值(50ms×20)

MOVCONR5,#20

START1:

LCALLDISPLAY;调用显示子程序

JNBSCAN.7,KEYFUN;手动状态

SJMPSTART1;P3.7为1时跳回START1

KEYFUN:

LCALLDISPLAY

LCALLDISPLAY

JBSCAN.7,START1

CLRET0

CLRTR0

MOVSN,#0A9H;全车道停,行人通

MOVEW,#0A9H

MOVTIME,#00H;时间显示0

LCALLTUNBCD

KEYWAIT:

LCALLDISPLAY

JNBSCAN.7,KEYWAIT

KEYWAIT1:

LCALLDISPLAY

JNBSCAN.7,KEYWAIT1

MOVTIME,TIMED0;重新开始计时初值

LCALLTUNBCD

CLRSNEWFLAG;南北先通行标志位

SETBTR0

SETBET0

AJMPSTART1

;*****************1s计时程序(T0定时器中断服务子程序)*****************

INTT0:

PUSHACC;累加器入栈保护

PUSHPSW;状态字入栈保护

CLRET0;关T0中断允许

CLRTR0;关闭定时器T0

MOVA,#0B7H;中断响应时间同步修正

ADDA,TL0;低8位初值修正

MOVTL0,A;重装初值(低8位修正值)

MOVA,#3CH;高8位初值修正

ADDCA,TH0

MOVTH0,A;重装初值(高8位修正值)

SETBTR0;开启定时器T0

DJNZR4,OUTT00;20次中断到(1S),重赋初值

MOVR4,#14H

JBSNEWFLAG,INT22

DECTIME

MOVA,TIME

CJNEA,TIMED1,LOOP11;判断是否小于110S

LOOP11:

JCLOOP22;120-110

MOVSN,#99H

MOVEW,#0AAH

LJMPOUTT0;120-110

LOOP22:

MOVA,TIME

CJNEA,TIMED2,LOOP33;判断是否小于70S

LOOP33:

JCLOOP44;110-70

MOVSN,#95H

MOVEW,#0A6H

LJMPOUTT0;110-70

LOOP44:

MOVA,TIME

CJNEA,TIMED3,LOOP55;判断是否小于60S

LOOP55:

JCLOOP66;70-60

MOV20H,SN

CPL04H

CPL00H

MOVSN,20H

MOVEW,#0A6H

LJMPOUTT0;70-60

LOOP66:

MOVA,TIME

CJNEA,TIMED4,LOOP77;判断是否小于10S

LOOP77:

JCLOOP88;60-10

MOVSN,#66H

MOVEW,#0A6H

LJMPOUTT0;60-10

LOOP88:

MOVA,TIME

JZOUT88

MOV20H,SN

CPL06H

CPL02H

MOVSN,20H

MOV20H,EW

CPL02H

MOVEW,20H

LJMPOUTT0;70-60

OUT88:

MOVTIME,TIMED0;20初值

CPLSNEWFLAG

OUTT0:

LCALLTUNBCD

OUTT00:

POPPSW;恢复状态字(出栈)

POPACC;恢复累加器

SETBET0;开放T0中断

RETI;中断返回

INT22:

DECTIME

MOVA,TIME

CJNEA,TIMED1,LOOP111;判断是否小于110S

LOOP111:

JCLOOP221;120-110

MOVEW,#99H

MOVSN,#0AAH

LJMPOUTT01;120-110

LOOP221:

MOVA,TIME

CJNEA,TIMED2,LOOP331;判断是否小于70S

LOOP331:

JCLOOP441;110-70

MOVEW,#095H

MOVSN,#0A6H

LJMPOUTT01;110-70

LOOP441:

MOVA,TIME

CJNEA,TIMED3,LOOP551;判断是否小于60S

LOOP551:

JCLOOP661;70-60

MOV20H,EW

CPL04H

CPL00H

MOVEW,20H

MOVSN,#0A6H

LJMPOUTT01;70-60

LOOP661:

MOVA,TIME

CJNEA,TIMED4,LOOP771;判断是否小于10S

LOOP771:

JCLOOP881;60-10

MOVEW,#66H

MOVSN,#0A6H

LJMPOUTT01;60-10

LOOP881:

MOVA,TIME

JZOUT881

MOV20H,EW

CPL06H

CPL02H

MOVEW,20H

MOV20H,SN

CPL02H

MOVSN,20H

LJMPOUTT01;70-60

OUT881:

MOVTIME,TIMED0;120S初值

CPLSNEWFLAG

OUTT01:

LCALLTUNBCD

POPPSW;状态恢复字(出栈)

POPACC;恢复累加器

SETBET0;开放T0中断

RETI;中断返回

;**********************显示子程序******************

;显示数据在70H~72H单元内,用3位LED共阳数码管显示,LEDOUT口输出段

;码数据,

;P3(SCAN)口作扫描控制,每个LED数码管亮1ms再逐位循环

DISPLAY:

MOVR1,#70H;指向显示数据首址

MOVR5,#0FEH;扫描控制字初值

PLAY:

MOVA,R5;扫描字放入A

MOVSCAN,A;从SCAN口输出

MOVA,@R1;取显示表地址

MOVDPTR,#TAB;取段码表地址

MOVCA,@A+DPTR;查显示数据对应段码

MOVLEDOUT,A;段码放入LEDOUT口

LOOP6:

LCALLDL1MS;显示1ms

INCR1;指向下一地址

MOVA,R5;扫描

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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