单片机课程设计设计报告参考模板Word下载.docx

上传人:b****6 文档编号:17715577 上传时间:2022-12-08 格式:DOCX 页数:21 大小:234.29KB
下载 相关 举报
单片机课程设计设计报告参考模板Word下载.docx_第1页
第1页 / 共21页
单片机课程设计设计报告参考模板Word下载.docx_第2页
第2页 / 共21页
单片机课程设计设计报告参考模板Word下载.docx_第3页
第3页 / 共21页
单片机课程设计设计报告参考模板Word下载.docx_第4页
第4页 / 共21页
单片机课程设计设计报告参考模板Word下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

单片机课程设计设计报告参考模板Word下载.docx

《单片机课程设计设计报告参考模板Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计设计报告参考模板Word下载.docx(21页珍藏版)》请在冰豆网上搜索。

单片机课程设计设计报告参考模板Word下载.docx

现场特种车的到来信号可以采用红外线接收器采集,使用单片机的外部中断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.车辆东西向左拐、各路右拐,行人禁行。

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

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

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

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

端口

控制功能

120-110S

110-70S

70-60S

60-10S

10-0S

P1.7

左拐红

1(亮)

0(暗)

P1.6

左拐绿

1/0(提示)

P1.5

直行红

P1.4

直行绿

P1.3

右拐红

P1.2

右拐绿

P1.1

行人红

P1.0

行人绿

路口控制字

99H

95H

95H/84H

66H

66H/22H

西

P2.7

P2.6

P2.5

P2.4

P2.3

P2.2

P2.1

P2.0

AAH

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

图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所示。

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;

MOVTIMED2,#46H;

MOVTIMED3,#3CH;

前行结束,人行结束,左拐开始

(60S)

MOVTIMED4,#0AH;

CLRSNEWFLAG;

南北先通行标志位

MOVTMOD,#01H;

设T0,T1为16位定时器

MOVTL0,#0B0H;

50ms定时初值(T0记时用)

MOVTH0,#3CH;

50ms定时初值

MOVTL1,#0B0H;

MOVTH1,#3CH;

JBSCAN.6,SSST;

120s管理

以下为60s管理

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

JBSCAN.7,START1

CLRET0

CLRTR0

MOVSN,#0A9H;

全车道停,行人通

MOVEW,#0A9H

MOVTIME,#00H;

时间显示0

KEYWAIT:

LCALLDISPLAY

JNBSCAN.7,KEYWAIT

KEYWAIT1:

JNBSCAN.7,KEYWAIT1

MOVTIME,TIMED0;

重新开始计时初值

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;

LOOP22:

CJNEA,TIMED2,LOOP33;

判断是否小于70S

LOOP33:

JCLOOP44;

110-70

MOVSN,#95H

MOVEW,#0A6H

LOOP44:

MOVA,TIME

CJNEA,TIMED3,LOOP55;

判断是否小于60S

LOOP55:

JCLOOP66;

70-60

MOV20H,SN

CPL04H

CPL00H

MOVSN,20H

LOOP66:

CJNEA,TIMED4,LOOP77;

判断是否小于10S

LOOP77:

JCLOOP88;

60-10

MOVSN,#66H

LOOP88:

JZOUT88

CPL06H

CPL02H

MOVSN,20H

MOV20H,EW

MOVEW,20H

LJMPOUTT0;

OUT88:

20初值

CPLSNEWFLAG

OUTT0:

OUTT00:

POPPSW;

恢复状态字(出栈)

POPACC;

恢复累加器

SETBET0;

开放T0中断

RETI;

中断返回

INT22:

CJNEA,TIMED1,LOOP111;

LOOP111:

JCLOOP221;

MOVEW,#99H

MOVSN,#0AAH

LJMPOUTT01;

LOOP221:

CJNEA,TIMED2,LOOP331;

LOOP331:

JCLOOP441;

MOVEW,#095H

MOVSN,#0A6H

LJMPOUTT01;

LOOP441:

CJNEA,TIMED3,LOOP551;

LOOP551:

JCLOOP661;

MOV20H,EW

CPL00H

LOOP661:

CJNEA,TIMED4,LOOP771;

LOOP771:

JCLOOP881;

MOVEW,#66H

LOOP881:

JZOUT881

MOVEW,20H

OUT881:

MOVTIME,TIMED0;

120S初值

OUTT01:

POPPSW;

状态恢复字(出栈)

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

显示数据在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;

扫描控制字放入A

JNBACC.

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

当前位置:首页 > 幼儿教育 > 少儿英语

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

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