最新范文 方案 计划 总结 报告 体会 事迹 讲话 倡议书 反思 制度 入党

单片机课程设计报告--基于单片机的交通灯控制系统

日期:2020-12-31  类别:最新范文  编辑:一流范文网  【下载本文Word版

单片机课程设计报告--基于单片机的交通灯控制系统 本文关键词:单片机,交通灯,控制系统,课程设计,报告

单片机课程设计报告--基于单片机的交通灯控制系统 本文简介:单片机原理及系统课程设计报告单片机原理及系统课程设计评语:考勤(10)守纪(10)过程(40)设计报告(30)答辩(10)总成绩(100)专业:自动控制班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2013年3月7日9基于单片机的交通灯控制系统摘要当今时代是一个自动化时代,交通灯控制等

单片机课程设计报告--基于单片机的交通灯控制系统 本文内容:

单片机原理及系统课程设计报告

单片机原理及系统课程设计

评语:

考勤(10)

守纪(10)

过程(40)

设计报告(30)

答辩(10)

总成绩(100)

业:

自动控制

级:

名:

号:

指导教师:

兰州交通大学自动化与电气工程学院

2013

3

7

9

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

当今时代是一个自动化时代,交通灯控制等很多行业的设备都与计算机密切相关。因此,一个好的交通灯控制系统将在道路拥挤等交通状况方面给予技术革新。本文主要介绍了一个基于89C52单片机的交通灯控制系统,详细介绍了利用89C52设计并仿真实现交通灯控制系统的过程,重点对硬件设计、软件编程、调试分析以及各模块系统流程进行了详细分析,对各部分的电路也一一进行了介绍。本电路由AT89C52单片机、按键、数码管和LED灯组成,并在Protues软件上实现仿真。

关键词:交通控制;单片机;AT89C52

Abstract

The

ages

is

an

automation

ages

nowadays

and

traffic

light

control

s

waiting

a

lot

of

equipments

of

professions

is

closely

related

with

calculator.

Therefore,a

good

traffic

light

control

system

will

hustle

for

road,give

technique

innovation.

This

paper

describes

a

89C52

microcontroller-based

traffic

light

control

system,detailed

description

of

the

use

89C52

development

process

of

the

traffic

light

control

system.

Focus

on

a

detailed

analysis

of

the

hardware

design,software

programming,analysis

and

debugging

process

of

the

modular

system,on

the

part

of

the

circuit

are

introduced

one

by

one.

The

circuit

is

made

up

of

AT89C52

microcomputer,keyboard,digital

tube

and

LED

lamp

display

and

realize

simulation

in

the

Protues

software.

Keywords:Traffic

Control;

Single

Chip

Microcomputer

;AT89C52

1

引言

信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。交通灯在城市交通中起着重要的作用,它与人们日常生活密切相关,是人们出行的安全保障。因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。

1.1设计目的

通过应用单片机的有关知识,能够独立设计出基于单片机的交通灯控制系统,并要求在紧急情况下能运用中断方式控制指示灯的亮灭来转换道路通行方向。

1.2设计要求

本设计是单片机控制的交通灯控制系统设计。要求设计出针对一个大型十字路口设计的交通信号灯控制系统。通过单片机AT89C52控制LED灯和数码管,模拟现实生活中的交通灯工作情景。

1.3设计方法

本设计是将事先编制好的程序输入单片机,利用单片机的定时、查询、中断功能,根据十字路口两个方向上车辆动态状况给予一定的时间通行,其中利用中断方式来处理特殊情况。

2

设计方案及原理

交通灯的控制分为自动控制和人工控制两种方式,正常情况下,交通灯处于自动控制方式,此时东西方向和南北方向的交通灯轮流导通,特殊情况下,可以通过人工方式延长东西方向或南北方向交通灯的导通时间。设计两个按键K1、K2,分别为延长南北方向交通导通时间和东西方向交通导通时间。

自动控制方式:系统上电后处于自动控制方式,首先是南北方向交通导通,南北方向亮绿灯,东西方向亮红灯,数码管从20秒开始倒计时,每隔1秒减1。倒计时结束时,南北方向黄灯开始闪烁,闪烁间隔为0.5秒,共闪烁5秒。黄灯闪烁5秒倒计时结束之后,东西方向交通导通,东西方向亮绿灯,南北方向亮红灯,数码管重新开始从20秒倒计时,每隔1秒减1。

人工控制方式:交通信号灯控制系统设有手控开关。在东西方向车道放行期间,若南北方向车流量较大,按下开关K1使南北方向车道放行;在南北方向车道放行期间,若东西方向车流量较大,按下开关K2使东西方向车道放行。采用外部中断执行中断服务程序,并设置中断为低优先级中断。总体设计框图如图1所示。

图1

总体设计框图

3

硬件设计

3.1主控制系统模块

主控制器采用AT89C52单片机。AT89C52具有1个8KB的FLASH程序存储器,1个512字节的RAM,4个8位的双向可位寻址I/O端口,3个16位定时/计数器及1个串行口和6个向量二级中断结构。单片机的P1口分别用于控制东西方向车道及南北方向车道的通行灯,P0口和个别P3口用于2个2位LED计时器的控制。

3.2时钟电路模块

时钟电路由一个12MHZ晶体振荡器和两个30pF的瓷片电容组成,时钟电路用于产生单片机工作所需要的时钟信号。电路如图2所示。

图2

时钟电路模块

3.3复位电路模块

复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这状态开始工作,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位电路以重新启动。因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。电路如图3所示。

图3

复位电路模块

3.4交通灯输出控制模块

道口交通灯指示采用高亮度红、黄、绿发光二极管进行提示。通过与驱动电阻连接使发光二极管按照程序要求亮灯。电路如图4所示。

图4

交通灯输出控制电路

3.5时间显示电路模块

道口通行剩余时间倒计时采用高亮红色7段LED发光数码管显示,采用共阴极数码管。电路图如图5所示。

图5

数码管显示模块

4

软件设计

主程序采用查询方式定时,通过调用0.5S延时子程序的次数,从而获取交通灯的各种时间。子程序采用定时器1方式1查询定时,定时器定时50ms,确定50ms循环20次,从而获得1S的延时时间。

有车车道的放行的中断服务程序首先要保护现场,因而需用到延时子程序,子程序采用定时器0方式1查询式定时,定时器定时50ms,确定50ms循环20次,从而获得1S的延时时间,保护现场时还需关中断。

由软件查询外中断,判别哪一道有车。待交通灯信号出现后,保持10S的延时,然后关中断,恢复现场,再开中断返回主程序。

4.1程序流程图

图6

程序流程图

5

系统仿真及实际调试

正常情况下的南北车道绿灯20S放行仿真图如附图1所示。

当南北车道无车,东西车道有车时,切换到东西车道绿灯时的仿真图附图2所示。

6

总结

通过此次课程设计,复习巩固以前我们所学习的数字、模拟电子技术、单片机原理及接口等课程知识,加深对各门课程及相互关系的理解,并成功使用了Proteus

Isis电子软件,使理论知识系统化、实用化。制作过程中遇到了很多问题,通过不断地查资料,不断地调试,一一解决。

此次课程设计巩固了我的基础知识,提高了我的应用水平,锻炼了我的动手能力,使我受益匪浅。然而,在吸取经验的同时,我也吸取了不少教训。在编写软件中,在此过程中我更为熟练得掌握汇编语言各种指令的使用方法,掌握了keil软件的使用。在编程、仿真方面都走了不少弯路。在软件调试过程中,使我又一次复习了keil和proteus联合使用的方法。在调试时曾经遇到数码管倒计时显示时间两位不能同时显示,后来经过查找资料不断调试才领悟到原来在显示的过程中要循环显示才能使得显示稳定下来。

通过这次课程设计,我掌握了用单片机设计交通灯的基体方法,增强了我寻找问题,解决问题的能力。在今后的学习和实践中,我将继续努力钻研,提高自己,争取在学术和记忆上获得更大的进步。

参考文献

[1]李华,王思明,张金敏.单片机原理及应用[M].兰州:兰州大学出版社,2001.5

[2]杨居义.单片机课程设计指导[M].北京:清华大学出版社,2009.12

[3]卢艳军.单片机原理及应用系统[M].北京:机械工业出版社,2005.2

附录

程序源代码

ORG

0000H

;初始化

AJMP

BEGIN

ORG

0003H

LJMP

ZD

ORG

0013H

LJMP

ZD

ORG

0030H

BEGIN:

MOV

SP,#6FH

;设置中断位

SETB

EA

;打开总中断

SETB

EX0

;打开外部中断0

SETB

EX1

;打开外部中断1

CLR

IT0

CLR

IT1

AL:

MOV

R7,#20

;南北车道亮绿灯20s程序

MOV

P1,#0DEH

LCALL

TIME1S

MOV

R4,#05

AH:

MOV

P1,#0DDH

;南北方向亮黄灯

MOV

R5,#05

AAA:

LCALL

TIME01S

;延时0.5s

DJNZ

R5,AAA

MOV

P1,#0DFH

MOV

R5,#05

BBB:

LCALL

TIME01S

;延时0.5s

DJNZ

R5,BBB

DJNZ

R4,AH

BL:

MOV

R7,#20

;东西方向亮绿灯20s程序

MOV

R0,#0F3H

MOV

P1,R0

LCALL

TIME1S

MOV

R4,#05

BH:

MOV

R0,#0EBH

;东西方向亮黄灯

MOV

P1,R0

MOV

R5,#05

BA:

LCALL

TIME01S

;延时0.5s

DJNZ

R5,BA

MOV

R0,#0FBH

MOV

P1,R0

MOV

R5,#05

BB:

LCALL

TIME01S

;延时0.5s

DJNZ

R5,BB

DJNZ

R4,BH

JMP

AL

TIME1S:

MOV

R3,#50

;延时1s

CLR

A

ABC:

MOV

A,R7

LCALL

XS

DJNZ

R3,ABC

DJNZ

R7,TIME1S

RET

TIME01S:

MOV

R7,#05

;延时0.1s

CLR

A

BCD:

MOV

A,R4

LCALL

XS

DJNZ

R7,BCD

RET

TIME10MS:

MOV

R2,#20

;键扫描10ms子程序

YS:

MOV

R6,#248

DJNZ

R6,$

DJNZ

R2,YS

RET

XS:

MOV

R6,A

;延时20ms并输出秒数

MOV

R1,#40H

MOV

A,R6

MOV

B,#10

DIV

AB

MOV

@R1,A

INC

R1

MOV

@R1,B

MOV

DPTR,#LIST

MOV

A,@R1

MOVC

A,@A+DPTR

MOV

P0,A

CLR

P3.7

LCALL

TIME10MS

SETB

P3.7

DEC

R1

MOV

DPTR,#LIST

MOV

A,@R1

MOVC

A,@A+DPTR

MOV

P0,A

CLR

P3.6

LCALL

TIME10MS

SETB

P3.6

RET

LIST:DB

3FH,06H,5BH,4FH

;查表

DB

66H,6DH,7DH,07H

DB

7FH,6FH,77H,7CH

DB

39H,5EH,79H,71H

DB

40H,00H

ZD:

MOV

43H,R7

;中断

PUSH

43H

MOV

44H,R0

PUSH

44H

MOV

45H,R6

PUSH

45H

MOV

46H,R3

PUSH

46H

JNB

P3.2,S1

JNB

P3.3,S2

RET

S1:

MOV

R7,#10

;由东西方向切换为南北方向

MOV

R0,#0DEH

MOV

P1,R0

LCALL

TIME1S

AJMP

FINALLY

S2:

MOV

R7,#10

;由南北方向切换为东西方向

MOV

R0,#0F3H

MOV

P1,R0

LCALL

TIME1S

AJMP

FINALLY

FINALLY:

POP

46H

MOV

R3,46H

POP

45H

MOV

R6,45H

POP

44H

MOV

R0,44H

POP

43H

MOV

R7,43H

RETI

EDN

仿真图

附图1

正常情况下南北车道放行20S仿真图

附图2

南北车道绿灯切换为东西车道绿灯的仿真图

篇2:单片机实训总结报告

单片机实训总结报告 本文关键词:单片机,实训,总结报告

单片机实训总结报告 本文简介:超声波测距实训总结报告专业:电子信息工程班级:信息091姓名:郑干恒(15)何清华(43)指导教师:邬志锋日期:2012.6.19广东交通职业技术学院交通信息学院摘要超声波测距技术在当今社会生活中已有很广泛的应用,本报告在了解超声波测距原理的基础上,完成了基于时差测距原理的一种超声波测距系统的软硬件

单片机实训总结报告 本文内容:

超声波测距实训

总结报告

专业:

电子信息工程

班级:

信息091

姓名:

郑干恒(15)

何清华(43)

指导教师:

邬志锋

日期:

2012.6.

19

广东交通职业技术学院

交通信息学院

摘要

超声波测距技术在当今社会生活中已有很广泛的应用,本报告在了解超声波测距原理的基础上,完成了基于时差测距原理的一种超声波测距系统的软硬件设计,其中的控制芯片是STC89C52RC系列单片机。报告着重介绍了STC89C52RC与超声波测距模块组成的超声波测距系统的组成原理以及应用,另外也介绍了LCD显示等模组的应用。该系统可广泛应于小距离测距、机器人检测、车辆倒车雷达以及家居安防系统等应用方案。最后实际使用表明能实现基本测量。

【关键词】STC89C52RC

超声波

距离测量

一、设计背景

本次设计的是以STC89C52RC单片机为核心的微型化数字显示超声波距离测量仪。

二、

设计任务要求

1、

实现对目标距离非接触性测量

2、

实现测量距离的显示

三、超声波测距简介

超声波测距原理:超声波具有方向性好,在介质中传播能量消耗缓慢,且其速度远小于光速等特点,因而超声波可用于距离测定。超声波测距的基本思想是,通过测量从超声波发射到接受到反射回波的时间间隔来计算距离。

四、系统工作原理框图

超声波发送

发送

障碍物

液晶显示

超声波接收

图1

超声波测距系统原理框图

五、超声波测距的实现方法

总体介绍:

规格:10cm*10cm

实图:

功能简介

增加5cm报警距离

发射信号

超声波发射

超声波接收

复位键

减少5cm报警距离

液晶显示

蜂鸣器

下载端口

电源开关

停止信号发射

图2

实物图展示

5.1硬件实现方法

硬件电路主要分为单片机系统、显示及发声电路、矩阵键盘电路、超声波发射电路和超声波接收电路五部分。

5.1.1超声波发射电路

超声波发射电路原理图如图3所示,发射电路主要由反向器(74LS04)和超声波换能器构成。单片机P31口输出的40KHZ方波信号经一级反向器后送到超声波换能器的另一个电极,用这种推挽形式将方波信号加到超声波换能器两端以提高超声波的发射强度。输出端采用两个反向器并联,用以提高驱动能力。上拉电阻R9和R10一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡的时间。

图3

超声波发射电路

5.1.2超声波接收电路

超声波接收电路原理图如图4所示。集成电路CX20106A是一款红外线检波接收的专用芯片,考虑到红外遥控常用的载波频率38KHZ与测距的超声波频率40KHZ较为接近,可以利用它制作超声波接收电路。

图4

超声波接收电路

5.1.3单片机系统

测距系统以单片机STC89C52RC为核心,采用24MHZ晶振,以获得较稳定的时钟频率,减小测量误差。单片机用P31端口输出超声波换能器所需的40KHZ方波信号,利用外中断0监测超声波接收电路的返回信号。单片机系统电路如图5所示。

图5

单片机最小系统

5.1.4显示、发声电路

显示电路采用LCD1602液晶。发声电路采用蜂鸣器HXD。如图6

所示。

图6显示、发声电路

错误!未找到目录项。由于本系统所需要用到的按键比较少,所以采用独立式键盘电路

图7矩阵键盘电路

5.2软件实现方法

5.2.1

测距算法

超声波测距电路的程序设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。

测量过程:超声波发生器发射出一系列超声波后,碰到反射物返回,然后接收器接收到发射波后送往CX20106A进行检波,产生外部中断,单片机通过计算前后时间差即可算出距离。假设环境温度为25°C,此时声速为V=346m/s,由此可以推出距离S:

S

=

v*△t

/2

△t=(TH0*256+TL0)/

(fosc/12)

既得,

S=V*(TH0*256+TL0)/

(fosc/12)/2

说明:THO,TLO为产生外部中断时的当前值,fosc为我们采用的晶振频率(24MHZ),通过上式可以求出距离S(m)。

5.2.2

主程序流程图

系统初始化

发送超声波脉冲

接收反射信号触发中断

计算距离

显示结果

图5

主程序流程图

说明:T0用于计算超声波的传播时间,工作在方式1,16位计数器,约32.5ms溢出一次,T1用于发射超声波,工作在方式2,8位重装载计数器,初值为0xe7,即每12.5us取反一次,产生40KHZ方波。T1以查询方式发射超声波,当定时器T0中断产生时,在中断处理程序中读取T1当前的计数值,因为晶振频率为24mhz,所以每计数一次用时0.5us,所以可以得到从超声波发送到反射回来的时间,进而可以通过计算得到距离。

六、

系统测试与误差分析

实际(cm)

1

2

3

4

10

40

60

80

100

110

120

130

测量(cm)

3

3

4

4

10

40

60

80

99

110

120

129

误差(cm)

2

1

1

0

0

0

0

0

1

0

0

1

经过测试得该系统的测距误差大约为1cm,测量盲区为0-—4cm,最大有效范围250cm

七、

参考文献

《单片机C语言应用100例》

王东峰

王会良

懂冠强

编著

电子工业出版社

《单片机实训指导书》

邬志锋

香永辉

编著

广东交通职业技术学院

《Altium

Designer

快速入门》

余向民

主编

北京航空航天大学出版社

实训心得

这次亲手做出超声波测距器,再用自己做的超声波测距行距离的测量,不仅能判断数据的正误,而且对其测距的原理非常的清楚,掌握了怎样把距离变为信号再表示出来的转换思想。在做超声波测距器的过程中,我们小组成员分工明确,各有所职,从刚开始找资料,分析资料讲的超声波测距原理,到大家确定方案,再到准备材料单,画出电路图,做出电路板,到焊接电路,和最后的调试电路,使其能够显示出数据,和尽可能的准确测出数据。在这个过程中,大家也碰到了些小麻烦,比如说,第一次制作好电路板的时候,我们的系统根本无法工作,无法下载程序,经过我们的细心查找,终于发现了一个重大的错误——我们的原理图上,原本应该接地的一个端口被接上了电源,导致晶振无法起振;并且在实际焊接电路板时有一个排阻也接反了。发现了这些错误后我们毅然决定重新再做一块电路板。第二块电路板做出来后,我们的板子已经能下载程序了。但是我们在接下来编写程序的工作中又遇到了一个难题:我们把在软件上调试好的程序下载到单片机系统中,但是却没能实现测距的功能,在多次反复检查硬件后,我们一致认为是超声波模块出现了故障,最后我们又到电协用示波器测试超声波的发射端,示波器显示我们的超声波发射电路工作正常,于是我们才确定了是超声波的接收电路出现故障。最后通过各种尝试及对发射电路的排查,我们终于找到超声波接收电路的故障所在,就是有一个电阻的阻值太大,我们换了阻值小的电阻后,终于实现了系统的测距功能,测距显示成功之后,还有一个问题就是测距不是那么准确,我们又对程序进行了多次改进,使我们的超声波测距系统测出的距离精确度大大提高了。

通过这次制作超声波测距,我们收获的,不仅仅是那些有关超声波、电子制作等的知识,更重要的是让我们明白到很多时候,大胆的猜测和勇敢地尝试,往往会得到意想不到的收获,心动不如行动,亲自动手付出的一份一份劳动,才能累积足够的高度去成为去抓住梦想的阶梯。

篇3:单片机及DSP课程设计报告

单片机及DSP课程设计报告 本文关键词:课程设计,机及,报告,DSP

单片机及DSP课程设计报告 本文简介:一、课设目的1、通过本设计,能综合运用《单片机技术原理与应用》、《DSP原理与应用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。2、学会使用KEILC和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,

单片机及DSP课程设计报告 本文内容:

一、课设目的

1、通过本设计,能综合运用《单片机技术原理与应用》、《DSP原理与应用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。

2、学会使用KEIL

C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。

3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。

二、课设内容

设计一个基于单片机的音乐播放器,在播放音乐的同时并能显示播放的歌曲序号,同时可以实现上一曲、下一曲的转换;在播放的同时,还能实现暂停/开始的功能。

3、

问题分析、方案的提出、设计思路及原因

要想使播放器发出响声,就得设计一个能产生声响的程序,让单片机输出到扬声器。音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的方波就可以产生音阶。由于频率的倒数是周期,因此可由单片机中的定时控制方波周期,当定时器计数溢出时产生中断。将与扬声器连接就可得到方波的周期,从而达到了控制频率,即音阶的目的。通过TXAL1

与TXAL2输入时钟信号,通过p1.0~p1.7输出控制现实控制信号显示,有p3.2、p3.3与p3.5分别作为上一曲、下一曲和开始暂停的控制输入。

显示电路是一个8位共阴极LED数码管。

单片机的P0.0-P0.7分别与数码管的A、B、C、D、E、F、G、DP相连接。

晶振电路由两个1nF的电容和一个6Mhz的晶体振荡器组成。节点1与单片机的XTAL2相连接,节点2与单片机的XTAL1相连接,从而为单片机提供时间信号,为音乐的播放节拍控制提供基本时间单位:当晶体振荡频率为6.MHz,定时器工作在方式1下时,若各音阶相对应的定时器计数初值为X,则可根据下式计算X:

控制电路,键一与p3.2相连、键二与p3.3相连、键3与p3.5相连。当电键按下时接口接低电平,从而实现对音乐播放器的控制。

键一联通实现上一曲更换,键发声电路由数字扬声器连接p2.0接口实现音乐的输出,由控制电路发出操作指令后,单片机调用相应程序,并将音乐信号由p2.0口输出,通过驱动扬声器发出美妙的音乐。二联通实现下一曲更换,键三联通实现开始暂停操作。

四、电路设计及功能说明,硬件原理框图及电路图

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS

8位微处理器,俗称单片机。

总原理图

51单片机

显示电路

电源电路

键控电路

复位电路

晶振电路

发声电路

时钟电路

与振荡器共同产生单片机所需的工作时钟信号

功能选择电路

实现播放器的功能操作

显示电路

实现单片机的信息显示功能

开始

4、

软件部分的程序流程图,算法和使用的编程技巧;

初始化

查询歌曲曲目

上一曲、下一曲

数码管显示

暂停、播放

等待播放

关闭显示

播放音乐

判断是否结束?

结束

1、总体思路

主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。确定歌曲曲目后,数码管再进行显示。然后,子程序对是否播放进行循环判断,得到播放中断的指令后再进行播放。

执行播放后,关闭数码管显示并调用查表子程序进行播放音乐。在播放音乐的过程中,查表子程序循环判断音乐是否结束。当音乐结束时,程序跳转回曲目识别子程序。

5、

源程序清单

OUT

BIT

P2.0

;定义音频输出端口,p2.0

N

EQU

3;歌曲总数

OUT_NUM

EQU

P1;数码管显视当前所放歌曲曲数

ORG

0000H

AJMP

MAIN

ORG

0003H

AJMP

LAST_SONG

;外部中断0用于接上一曲歌按键

ORG

000BH

AJMP

F_T0

;定时器0用于定时,作音符发生器用

ORG

0013H

q4:

AJMP

NEXT_SONG

;外部中断1接下一曲歌按键

ORG

001BH

AJMP

START_PAUSE

;定时器1用计数,这里用作中断,接开始/暂停键,初值为0ffH,方式2

ORG

0030H

MAIN:

MOV

SP,#60H

MOV

DPTR,#TABLE

;DPRT指向每首歌曲的入口地址的地址。

MOV

R0,#30H

;R0中存入数据30H,这里在以30H开始的单元存放每首歌曲的入口地址,其中30H,31H存放歌曲的节拍入口地址,32H,33H存放歌曲音符入口地址,每首歌占用四个存储存单元。

MOV

R5,#00H

;R5中存放表TABLE中正在执行操作的序号

MOV

R6,#1

;R6存放正在设置入口信息的歌曲数

SET_TAB:

MOV

A,R5

;设置每首歌曲的入口信息,存放在以30H开始的存储单元中。

MOVC

A,@A+DPTR

MOV

@R0,A

INC

R5

INC

R0

MOV

A,R5

MOVC

A,@A+DPTR

MOV

@R0,A

INC

R5

INC

R0

MOV

A,R5

MOVC

A,@A+DPTR

MOV

@R0,A

INC

R0

INC

R5

MOV

A,R5

MOVC

A,@A+DPTR

MOV

@R0,A

INC

R0

INC

R5

INC

R6

;设置完一首歌曲后,歌曲数加一

CJNE

R6,#N+1,SET_TAB

;是否设置完,没有便继续,否则进行下面的操作

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

对中断,计数器的相关参数进行设置

MOV

TMOD,#61H

;计数器0工作方式1,计数器1工作方式2

MOV

TH1,#0FFH

;给计数器1置初值0FFH,又由于是工作方式2,所以

MOV

TL1,#0FFH

;计数器计数为1,相当于一外部中断。

SETB

ET1

;允许计数器1中断

SETB

ET0

;允许计数器具0中断

CLR

PT0

;计数器0为低优先级

SETB

PT1

;计数器1为高优先级

SETB

IT0

;外部中断0为跳沿触发

SETB

PX0

;高优先级

SETB

IT1

;外部中断1为跳沿触发

SETB

PX1

;高优先级

SETB

EX1

;允许外部中断1中断

SETB

EX0

;允许外部中断定0中断

SETB

EA

;开中断总开关

SETB

TR1

;定时器1开始工作,作中断用

SETB

OUT

;音频输出端口初始化

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

;设置结束

CLR

F0

;设置F0=0,用来作暂停/播放的标置位用

MOV

22H,#01H

;22H单元中存放正在播放的歌曲编号

MOV

DPTR,#OUT_TAB

;将正在播放的歌曲编号送数码管显视

MOV

A,22H

MOVC

A,@A+DPTR

MOV

OUT_NUM,A

MOV

R7,#00H

;R7中存放歌曲总信息的入口地址

START0:MOV

R4,#00H

;R4存放当前正在播放歌曲的第几个节拍数

MOV

R0,#30H

;30H开始的单元中存放歌曲的入口信息

MOV

A,R7

;将歌曲的节拍表的入口地址送到DPTR

ADD

A,R0

MOV

R0,A

MOV

DPH,@R0

INC

R0

MOV

DPL,@R0

INC

R0

MOV

A,R4

INC

R4

MOVC

A,@A+DPTR

;取出第一节拍数,其实第一个节拍不是歌曲的第一个节拍,而是表示几分音符

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

MOV

26H,A

;将取出的音符数+节拍数保存在职26H单元中

NEXT:

MOV

R0,#30H

;开始取出歌曲的第一个数据

MOV

A,R7

ADD

A,R0

MOV

R0,A

MOV

DPH,@R0

INC

R0

MOV

DPL,@R0

INC

R0

MOV

A,R4

INC

R4

MOVC

A,@A+DPTR

;放在A中

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

JZ

END0

;若为0,则表示为休止符,不唱,本次音符不唱,

MOV

R1,A

;不为0,取出节拍数

ANL

A,#0FH

MOV

R2,A

MOV

A,R1

SWAP

A

ANL

A,#0FH

JNZ

SING

;音符不为0,唱

CLR

TR0

;为0,不唱,关频率发生器

SJMP

SING1

SING:

DEC

A

;开始唱,进行相应的数据处理

MOV

R3,A

RL

A

MOV

DPH,@R0

INC

R0

MOV

DPL,@R0

INC

R0

MOVC

A,@A+DPTR

MOV

21H,A

MOV

TH0,A

MOV

A,R3

RL

A

INC

A

MOVC

A,@A+DPTR

MOV

20H,A

MOV

TL0,A

SETB

TR0

;开唱

SING1:LCALL

DELAY

;每个音符唱多久

JB

F0,FOR

;是否暂停,

AJMP

NEXT

;没有暂停,继续

FOR:

CLR

TR0

;暂停,不唱

JB

F0,$

;等待播放

AJMP

NEXT

;开始播放

END0:

CLR

TR0

;不唱

MOV

A,22H

;唱完处理

CJNE

A,#N,WW

;是不是全部歌曲都唱完

MOV

22H,#01H

;全部唱完,则从第一首开始再唱

MOV

R7,#00H

MOV

OUT_NUM,#06H

;数码管显视第一首歌曲编号

AJMP

WWW

WW:

MOV

A,R7

;没有全部唱完,唱下一首,歌曲的入口信息调整

ADD

A,#4

MOV

R7,A

INC

22H

CLR

EA

PUSH

DPH

PUSH

DPL

MOV

A,22H

MOV

DPTR,#OUT_TAB

MOVC

A,@A+DPTR

MOV

OUT_NUM,A

;数码管显视相应的歌曲编号

POP

DPL

POP

DPH

WWW:

SETB

EA

AJMP

START0

;开始下一首的演唱

F_T0:

MOV

TH0,21H

;定时器0置初值

MOV

TL0,20H

CPL

OUT

;频率产生

RETI

NEXT_SONG:

PUSH

ACC

;下一曲中断程序处理,保护现场

PUSH

DPH

PUSH

DPL

CLR

EA

;关中断

MOV

A,22H

CJNE

A,#N,Q

;是最后一首吗?

MOV

R7,#00H

;是最后一首,则R7指向第一首,演唱第一首

MOV

22H,#01H

AJMP

BACK

Q:

INC

22H

;不是最后一首,唱下一首,R7内容加4,歌曲数加1

MOV

A,R7

ADD

A,#4

MOV

R7,A

BACK:

MOV

R4,#00H

;数码管显视相应的歌曲编号

MOV

A,22H

MOV

DPTR,#OUT_TAB

MOVC

A,@A+DPTR

MOV

OUT_NUM,A

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

MOV

B,R0

;对下首要演唱的歌曲的几分拍进行调整,同时对R0中的内容进行保护

MOV

R4,#00H

MOV

R0,#30H

MOV

A,R7

ADD

A,R0

MOV

R0,A

MOV

DPH,@R0

INC

R0

MOV

DPL,@R0

INC

R0

MOV

A,R4

INC

R4

MOVC

A,@A+DPTR

MOV

26H,A

;结果存入26H单元中

DEC

R4

MOV

R0,B

;恢复R0中的内容

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

POP

DPL

;恢复现场

POP

DPH

POP

ACC

SETB

EA

RETI

;中断返回

LAST_SONG:

PUSH

ACC

;上一曲中断程序处理开始,保护现场

PUSH

DPH

PUSH

DPL

CLR

EA

;关中断

MOV

A,22H

;曲目数送A

CJNE

A,#1,QQ

;是否是第一首

MOV

22H,#N

;是第一首歌曲

MOV

B,#4

;将R7指向最后一首歌曲

MOV

A,#N-1

MUL

AB

MOV

R7,A

AJMP

BACK2

;处理结束

QQ:

DEC

22H

MOV

A,R7

;R7减4

SUBB

A,#4

MOV

R7,A

BACK2:

MOV

R4,#00H

MOV

A,22H

MOV

DPTR,#OUT_TAB

MOVC

A,@A+DPTR

MOV

OUT_NUM,A

;数码管显视相应歌曲的编号

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

MOV

B,R0;对下首要演唱的歌曲的几分拍进行调整,同时对R0中的内容进行保护

MOV

R4,#00H

MOV

R0,#30H

MOV

A,R7

ADD

A,R0

MOV

R0,A

MOV

DPH,@R0

INC

R0

MOV

DPL,@R0

INC

R0

MOV

A,R4

INC

R4

MOVC

A,@A+DPTR

MOV

26H,A

;结果存入26H单元中

DEC

R4

MOV

R0,B;R0中的内容恢复

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

POP

DPL

;恢复现场

POP

DPH

POP

ACC

SETB

EA

RETI

;中断返回

START_PAUSE:CPL

F0

;开始/暂停中断处理程序,将标置位取反

JB

F0,RETURN

;为1返回

SETB

TR0

;为0则播放

RETURN:

RETI

;中断返回

DELAY:

MOV

27H,26H

;音符演奏时间控制

D2:

MOV

28H,#125

D3:

MOV

29H,#248

DJNZ

29H,$

DJNZ

28H,D3

DJNZ

27H,D2

DJNZ

R2,DELAY

RET

OUT_TAB:

DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,73H

;共阴数码管显视用

;OUT_TAB:

DB

0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH

;共阳

TABLE:

DW

SONG1,TABLE1,SONG2,TABLE2,SONG3,TABLE3

TABLE1:DW

64580,64684,64777,64820,64898,64968,65030

DW

63628,63835,64021,64103,64260,64400,64524

SONG1:

DB

04H

;1=C

2/4

军港之夜

DB

32H,54H,52H,32H,54H,52H,32H,12H,12H,32H,32H,54H,52H,32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H

DB

0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24H

DB

34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4H

DB

22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,31H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32H

DB

32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52H

DB

32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H

DB

32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H

DB

0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24H

DB

34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4H

DB

22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,31H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32H

DB

32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52H

DB

32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H

DB

32H,52H,52H,32H,32H,21H,31H,24H,74H,0D2H,0C2H,14H,14H,14H,14H

DB

00H

TABLE2:DW

63835,64021,64103,64260,64400,64524,64580,64684,64777

DW

64820,64898,64968,65030,65058,65110,65157,65178

SONG2:

DB

02H;1=C

4/4

死了都要爱

DB

04H,94H

DB

0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H

DB

0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H

DB

04H,0C2H,0C2H,0D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92H

DB

0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H

DB

0A4H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8H

DB

0C8H,0C8H,08H,08H,78H,28H,38H,34H,24H

DB

24H,64H,64H,24H,64H,72H,72H,78H,58H,54H,44H,38H,34H,14H,34H,84H,74H,74H,62H,62H,0D8H,78H,28H,38H,34H,24H

DB

24H,64H,64H,24H,64H,72H,72H,72H,94H,92H,94H,0A4H,58H,58H,54H,44H

;#音不准

DB

58H,58H,58H,58H,0A8H,0A8H,0A4H,0B4H,0A4H,84H,0A4H,94H,98H,98H,08H

DB

84H,82H,82H,82H,82H,94H,0A2H,94H,92H,82H,74H,72H,74H,72H,72H,72H,72H,92H,91H,91H,94H,54H,74H,94H

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

DB

0A8H,0A4H,0A2H,0B2H,0C4H,0B4H,0A4H,0A4H,0A4H,92H,92H,98H,82H,72H,78H,04H,0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H

DB

04H,0C4H,0D4H,0C4H,0C8H,04H,94H

DB

0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02

DB

0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H

DB

0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02

DB

0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H

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

DB

0A4H,0A2H,0B2H,0B3H,0C4H,0E8H,0D8H

DB

0C8H,0C8H,0C8H,08H

DB

00H

TABLE3:

DW

64898,64968,65030,65086,65135,65158,65199,64260,64400,64524,64580,64684,64777,64862

SONG3:

DB

03H

;G=2/4

中华人民共和国国歌

DB

04H,04H,0C2H,14H,12H,12H,12H,11H,11H,0C2H,0D1H,0E1H,14H,14H,02H,32H,12H,21H,31H,52H,51H,51H,54H

DB

32H,31H,31H,12H,11H,31H,52H,51H,31H,24H,24H,24H,64H,54H,24H,34H,52H,34H,52H,32H,21H,31H,12H,11H,21H,34H,04H

DB

52H,51H,0D1H,12H,12H,32H,31H,31H,52H,51H,51H,22H,22H,22H,0D2H,0D1H,0D1H,24H,22H,0C2H,14H,12H,12H,34H,32H,32H,54H,54H,54H,54H

DB

12H,11H,31H,52H,51H,51H,64H,54H,32H,31H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H

DB

0A2H,0A1H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H,0C4H,14H,0C4H,14H,14H,04H

DB

04H,04H,04H,04H

DB

00H

END;

七、仿真过程综述

拿到任务书后的首先想到的是觉得这次课程设计还是比较难的,因为单片机课程的学习是在很早以前了,现在突然要用它需要在把相关知识捡起来,这需要一定的时间;而且,这次课设还需要编程,变成一直是我的弱项。但还是要认真对待,就仔细的看了所有的设计题目,根据自己的爱好和能力,我最终选择了播放器。

刚确定这个题目后觉得无从下手,不知道从什么开始做起。所以就在网上查阅了相关资料,大致浏览了一遍,看懂了几分,觉得应该从学习软件开始。因此就去图书馆借了一本相关的书,把仿真软件学了一遍并做了几个小例子练习了一下,就开始着手编程了。编程的过程是痛苦的,这需要很强的逻辑思维能力,这一部分只能耐心地慢慢来。经过查阅相关资料,和各种程序的拼凑,基本的程序是出来了,放到keil里调试时错误很多,在改错时又查阅大量的资料,曲曲折折的把程序改正好,最终形成一个.hex的文件。接下来画仿真图还是比较容易的,这一部分很轻松。当把程序加载进去开始仿真时又出现了问题,程序是对的,原理图是对的,可是一结合就是得不到想要的结果。在仔细研究,再加上和同学探讨,原来是所选择的元件有误,当把所有错误都改正以后,在仿真时就都成功了,该有的功能都有,该出现的显示也有了。

八、调试过程中的主要难点及解决思路和办法

编程调试中,用KILL将所编好的程序汇编,发现有好几处错误出现,经过仔细检查,发现一些是由于所输入的符号不是英文模式下,汇编机器无法识别,所以要将输入错误的符号在引文模式下重新输入一遍,就能改正了。

还出现了一类的错误提示是由于汇编语言语法的错误。比如:语句CPL

R1是不对的,因为它是无效的寄存器,只有修改成CPL

RI才是对的。、

仿真调试时,当把汇编好的.hex文件加入单片机中仿真时,结果又是并不是所期望的。在我第一次调试时,并没有播放出来歌曲,接下来试了好几次都不行,经过仔细分析和同学的交流,原来电容不是对应的,换了电容,又替换了原来的按键,结果再仿真时就成功了。所以在画原理图时选对元件很重要,只看到外观合适就用是不可以的。

九、课设结果及分析、收获、体会和建议

课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为电子信息工程专业的学生来说掌握单片机的开发技术是十分重要的。

我的题目是音乐播放器硬软件的设计,通过这次课程设计我学到很多很多的东西。我学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,能熟练地运用网络、图书馆等相关资料查阅需要的知识,学会了用proteus软件和keil软件来设计和调试基于单片机的功能实现的方法,了解并提高了自己对汇编语言的掌握程度,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从实践中证实结论,从而提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。这次课程设计通过自己的努力,同学的帮助,还有老师的辛勤指导下,最终顺利完成。

十、参考文献

[1]

郑郁正.单片机原理及应用.四川大学出版社,2003。

[2]

谭浩强.C程序设计(第二版).清华大学出版社,1999。

[3]

王晓君.安国臣等.

MCS—51及兼容单片机原理与选型.

北京-电子工业出版社,2003。

[4]

李启炎.

Protel

99SE应用教程.

上海-同济大学出版社

2005.2

单片机及DSP课程设计报告

业:

电子信息工程

级:

信息102

名:

王文婕

号:

201027073

指导教师:

吴则举

间:2013-06-17~28

通信与电子工程学院

教师评语:

教师:

日期:

设计过程30﹪

课设报告40﹪

答辩30﹪

总成绩

    以上《单片机课程设计报告--基于单片机的交通灯控制系统》范文由一流范文网精心整理,如果您觉得有用,请收藏及关注我们,或向其它人分享我们。转载请注明出处 »一流范文网»最新范文»单片机课程设计报告--基于单片机的交通灯控制系统
‖大家正在看...
设为首页 - 加入收藏 - 关于范文吧 - 返回顶部 - 手机版
Copyright © 一流范文网 如对《单片机课程设计报告--基于单片机的交通灯控制系统》有疑问请及时反馈。All Rights Reserved