交通灯课程设计可控制时间.docx

上传人:b****5 文档编号:6690007 上传时间:2023-01-09 格式:DOCX 页数:21 大小:265.65KB
下载 相关 举报
交通灯课程设计可控制时间.docx_第1页
第1页 / 共21页
交通灯课程设计可控制时间.docx_第2页
第2页 / 共21页
交通灯课程设计可控制时间.docx_第3页
第3页 / 共21页
交通灯课程设计可控制时间.docx_第4页
第4页 / 共21页
交通灯课程设计可控制时间.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

交通灯课程设计可控制时间.docx

《交通灯课程设计可控制时间.docx》由会员分享,可在线阅读,更多相关《交通灯课程设计可控制时间.docx(21页珍藏版)》请在冰豆网上搜索。

交通灯课程设计可控制时间.docx

交通灯课程设计可控制时间

一、课程设计的目的

本课程设计是自动化专业、电子信息技术专业学生在学完单片机原理及课程之后必修课程,它的教学目的和任务是综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下基础。

二、设计内容

利用单片机的定时/计数器,中断系统,以及阵列键盘和LED显示器进行设计。

在数码管显示器上实现电子时钟,并且能进行设置时间和暂停、启动控制;同时又有显示日期,设定闹铃功能

用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为B03C。

形成定时时间为50ms。

用片内RAM的7BH单元对50ms计数,计20次产生秒。

在处理过程中加上了按键判断程序,能对按键处理。

三、设计要求

1、在PROTEUS中设计硬件,在KEIL51中编写软件,在PROTEUS中运行程序仿真实现。

2、写课程设计报告,给出设计思想,原理,硬件电路图,给出相应程序,并写出设计过程。

课程设计报告格式:

1、课程设计的目的

2、课程设计具体要求

3、MCS-51单片机系统简介

4、MCS-51单片机内部定时器/计数器简介

5、键盘和LED数码管显示器简介

6、基本原理

7、硬件电路

8、软件程序流程及代码

9、设计制作过程

10、总结

四、MCS-51单片机系统简介

MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片机,它包含51和52两个子系列。

-2-

对于51子系列,主要有8031、8051、8751三种机型,它们的指令系统与芯片引脚完全兼容,仅片内程序存储器有所不同,8031芯片不带ROM,8051芯片带4KROM,8751芯片带4KEPROM。

51子系列的主要特点为:

◆8位CPU。

◆片内带振荡器,频率范围1.2~12MHZ。

◆片内带128字节的数据存储器。

◆片内带4K的程序存储器。

◆程序存储器的寻址空间为64K字节。

◆片外数据存储器的寻址空间为64K字节。

◆128个用户位寻址空间。

◆21个字节特殊功能寄存器。

◆4个8位的并行I/O接口:

P0、P1、P2、P3。

◆2个16位定时器/计数器

◆2个优先级别的5个中断源。

◆1个全双工的串行I/O接口,可多机通信。

◆111条指令,含乘法指令和除法指令。

◆片内采用单总线结构。

◆有较强的位处理能力。

◆采用单一+5V电源。

图一、MCS-51系列单片机的内部结构

五、MCS-51单片机内部定时器/计数器中断系统简介

定时/计数器的主要特性:

1.MCS-51系列中51子系列有两个16位的可编程定时/计数器:

定时/计数器T0和定时/计数器T1,52子系列有三个,还有一个定时/计数器T2。

2.每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。

-3-

3.每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。

通过编程可设定工作于某种方式。

4.每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。

图二、定时/计数器T0、T1的结构及工作原理

 

定时/计数器的工作方式:

方式0是13位的定时/计数方式,因而最大计数值(满值)为2的13次幂,等于8192。

如计数值为N,则置入的初值X为:

X=8192-N

方式1的结构与方式0结构相同,只是把13位变成16位,16位的加法计数器被全部用上。

由于是16位的定时/计数方式,因而最大计数值(满值)为2的16次幂,等于65536。

如计数值为N,则置入的初值X为:

X=65536-N

方式2下,16位的计数器只用了8位来计数,用的是TL0(或TL1)的8位来进行计数,而TH0(或TH1)用于保存初值。

当TL0(或TL1)计满时则溢出,一方面使TF0(或TF1)置位,另一方面溢出信号又会触发图6.5上的三态门,使三态门导通,TH0(或TH1)的值就自动装入TL0(或TL1)。

由于是8位的定时/计数方式,因而最大计数值(满值)为2的8次幂,等于256。

如计数值为N,则置入的初值X为:

X=256-N

方式3只有定时/计数器T0才有,当M1M0两位为11时,定时/计数器T0工作于方式3。

方式3下,定时/计数器T0被分为两个部分TL0和TH0,其中,TL0可作为定时/计数器使用,占用T0的全部控制位:

GATE、C/T、TR0和TF0;而TH0固定只能作定时器使用,对机器周期进行计数,这时它占用定时/计数器T1的TR1位、TF1位和T1的中断资源。

-4-

六、键盘简介

1、键盘的工作原理

键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。

它的结构和产生的波形如图所示。

图三、键盘开关及波形示意图

2、键盘抖动的消除

消除按键盘抖动通常有两种方法:

硬件消抖和软件消抖。

图四、硬件消抖电路

硬件消抖可以采用R—S触发器或单稳态电路。

软件消抖是利用延时来跳过抖动过程

3、键盘的结构形式

键盘的结构形式一般有两种:

独立式键盘与矩阵式键盘。

独立式键盘就是各按键相互独立,每个按键各接一根I/O口线,每根I/O口线上的按键都不会影响其它的I/O口线。

-5-

矩阵式键盘又叫行列式键盘。

用I/O口线组成行、列结构,键位设置在行列的交点上。

例如4×4的行、列结构可组成16个键的键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O口线。

七、LED数码管显示器简介

图五、LED显示器的结构

LED数码管的显示方式:

LED静态显示时,其公共端直接接地(共阴极)或接电源(共阳极),各段选线分别与I/O口线相连。

要显示字符,直接在I/O线送相应的字段码。

LED动态显示是将所有的数码管的段选线并接在一起,用一个I/O口控制,公共端不是直接接地(共阴极)或电源(共阳极),而是通过相应的I/O口线控制。

LED显示器从译码方式上有硬件译码方式和软件译码方式。

从显示方式上有静态显示方式和动态显示方式。

在使用时可以把它们组合起来。

在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。

仿真电路图:

程序代码:

ORG0000H

AJMPMAIN

ORG0003H

AJMPKEY_SELECT

TABLE:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,00H,90H,0FFH

DELAY_1MS:

MOVR5,#14H

DL1:

MOVR4,#19H

DL2:

DJNZR4,DL2

DJNZR5,DL1

RET

MAIN:

MOV30H,#03;黄灯3秒

MOV31H,#30;南北红灯

MOV32H,#30;东西红灯

MOV33H,#0EEH

MOV34H,#0DEH

MOV35H,#0FEH

MOV36H,#0F5H

MOV37H,#0F3H

MOV38H,#0F7H

MOV50H,#0

MOV61H,#0

MOV71H,#0

MOV72H,#0

MOV75H,#0

MOV76H,#0

MOV77H,#0

MOVDPTR,#TABLE

SETBEX0

SETBEA

LOOP:

MOV50H,#0

MOV40H,30H

MOV41H,31H

MOV42H,32H

MOV43H,33H

MOV44H,34H

MOV45H,35H

MOV46H,36H

MOV47H,37H

MOV48H,38H

MOVA,41H

SUBBA,40H

MOV49H,A

MOVA,42H

SUBBA,40H

MOV4AH,A

;;;;;;;;;;;

CLREA

MOVA,50H

CJNEA,#0,LOOP

;;;;;;;;;;;

MOVR7,49H

MOVR3,41H

MOVR2,49H

SETBEA

MOVA,43H

MOVP1,A

LOOP1_0:

MOVR6,#250

LOOP1_1:

LCALLLOOP5

DJNZR6,LOOP1_1

DECR3

DECR2

DJNZR7,LOOP1_0

;;;;;;;;;;;

CLREA

MOVA,50H

CJNEA,#0,LOOP

;;;;;;;;;;;;;

MOVR7,40H

MOVR3,40H

MOVR2,40H

SETBEA

MOVA,44H

MOVP1,A

LOOP2_0:

MOVR6,#250

LOOP2_1:

LCALLLOOP5

CJNER6,#126,LOOP2_10

MOVA,45H

MOVP1,A

LOOP2_10:

CJNER6,#1,LOOP2_11

MOVA,44H

MOVP1,A

LOOP2_11:

DJNZR6,LOOP2_1

DECR3

DECR2

DJNZR7,LOOP2_0

;;;;;;;;;;;

CLREA

MOVA,50H

CJNEA,#0,LOOP

;;;;;;;;;;;;;

MOVR7,4AH

MOVR3,4AH

MOVR2,42H

SETBEA

MOVA,46H

MOVP1,A

LOOP3_0:

MOVR6,#250

LOOP3_1:

LCALLLOOP5

DJNZR6,LOOP3_1

DECR3

DECR2

DJNZR7,LOOP3_0

;;;;;;;;;;;;;;;;

CLREA

MOVA,50H

CJNEA,#0,LOOP6

;;;;;;;;;;;;;;

MOVR7,40H

MOVR3,40H

MOVR2,40H

SETBEA

MOVA,47H

MOVP1,A

LOOP4_0:

MOVR6,#250

LOOP4_1:

LCALLLOOP5

MOVA,R6

CJNER6,#126,LOOP4_20

MOVA,48H

MOVP1,A

LOOP4_20:

CJNER6,#1,LOOP4_21

MOVA,47H

MOVP1,A

LOOP4_21:

DJNZR6,LOOP4_1

DECR3

DECR2

DJNZR7,LOOP4_0

LOOP6:

AJMPLOOP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LOOP5:

CLRP2.4

CLRP2.5

MOVA,#0FFH

MOVP0,A

MOVA,R3

MOVB,#0AH

DIVAB

MOV52H,A

MOV51H,B

MOVA,R2

MOVB,#0AH

DIVAB

MOV54H,A

MOV53H,B

MOV60H,#01H

MOVA,60H

MOVP2,A

RLA

MOV60H,A

MOVA,51H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY_1MS

MOVA,60H

MOVP2,A

RLA

MOV60H,A

MOVA,52H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY_1MS

MOVA,60H

MOVP2,A

RLA

MOV60H,A

MOVA,53H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY_1MS

MOVA,60H

MOVP2,A

RLA

MOV60H,A

MOVA,54H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY_1MS

MOV60H,#0

MOVA,#0FFH

MOVP0,A

RET

;;;;;;;;;;;;;;;;;;;;;;;;;

KEY_SELECT:

CLREA

MOVA,#0FFH

MOVP0,A

WAIT0:

JNBP3.2,WAIT0

INC61H

MOVA,#0B6H

MOVP1,A

K1:

ACALLLOOP7

JNBP3.5,SELECT_5

JNBP3.6,SELECT_6

JNBP3.7,SELECT_7

JNBP3.2,SELECT_2

JNBP3.4,SELECT_40

SJMPK1

SELECT_40:

LJMPSELECT_4

OUT:

CLRP2.5

CLRP2.4

MOVR7,#5

MOVR2,#5

MOVR3,#5

MOVA,#0F6H

MOVP1,A

MOV43H,#0F6H

MOV44H,#0F6H

MOV45H,#0F6H

MOV46H,#0F6H

MOV47H,#0F6H

MOV48H,#0F6H

MOV50H,#1

SETBEA

RETI

;;;;;;;;;;;;;;;;;;;;;;;;

SELECT_5:

LCALLDELAY_10MS

JBP3.5,K1

WAIT5:

JNBP3.5,WAIT5

CLRP2.5

MOVA,#0EEH

MOVP1,A

WAIT50:

JBP3.5,WAIT50

SJMPOUT

SELECT_6:

LCALLDELAY_10MS

JBP3.6,K1

WAIT6:

JNBP3.6,WAIT6

CLRP2.5

MOVA,#0F5H

MOVP1,A

WAIT60:

JBP3.6,WAIT60

SJMPOUT

SELECT_7:

LCALLDELAY_10MS

JBP3.7,K1

WAIT7:

JNBP3.7,WAIT7

CLRP2.5

MOVA,#0F6H

MOVP1,A

WAIT70:

JBP3.7,WAIT70

LJMPOUT

;;;;;;;;;;;;;;;;;;;;;;;;;

SELECT_2:

LCALLDELAY_10MS

JBP3.2,SELECT_211

LCALLDELAY_300MS

JBP3.2,Y1

WAIT1:

MOVA,61H

CJNEA,#1,SELECT_20

INC31H

MOVA,31H

CJNEA,#94,SELECT_21

MOV31H,#18

SJMPSELECT_21

SELECT_20:

INC32H

MOVA,32H

CJNEA,#94,SELECT_21

MOV32H,#18

SELECT_21:

LCALLLOOP8

JNBP3.2,WAIT1

SELECT_211:

LJMPK1

Y1:

INC61H

MOVA,61H

CJNEA,#03,SELECT_211

MOV61H,#0

MOVA,#0F6H

MOVP1,A

SELECT_210:

LJMPOUT

;;;;;;;;;;;;;;;;;;;;;;;

SELECT_4:

LCALLDELAY_10MS

JBP3.4,SELECT_210

LCALLDELAY_300MS

JBP3.4,W1

WAIT2:

JNBP3.4,WAIT2

MOVA,61H

CJNEA,#1,SELECT_4_0

DEC31H

MOVA,31H

CJNEA,#17,SELECT_211

MOV31H,#93

AJMPK1

SELECT_4_0:

DEC32H

MOVA,32H

CJNEA,#17,SELECT_41

MOV32H,#93

AJMPK1

W1:

MOVA,61H

CJNEA,#1,SELECT_4_1

INC31H

MOVA,31H

CJNEA,#94,SELECT_41

MOV31H,#18

AJMPK1

SELECT_4_1:

INC32H

MOVA,32H

CJNEA,#94,SELECT_41

MOV32H,#18

SELECT_41:

LJMPK1

;;;;;;;;;;;;;;;;;;;;;;;;

DELAY_10MS:

LCALLDELAY_1MS

LCALLDELAY_1MS

LCALLDELAY_1MS

LCALLDELAY_1MS

LCALLDELAY_1MS

LCALLDELAY_1MS

LCALLDELAY_1MS

LCALLDELAY_1MS

LCALLDELAY_1MS

LCALLDELAY_1MS

RET

DELAY_300MS:

MOVR1,#30

DELAY:

LCALLDELAY_10MS

DJNZR1,DELAY

RET

;;;;;;;;;;;;;;;;;;;;;;;;;;

LOOP7:

MOVA,61H

CJNEA,#1,LOOP7_1

MOVA,#0B6H

MOVP1,A

MOVA,31H

MOVB,#0AH

DIVAB

MOV72H,A

MOV71H,B

SJMPDISP

LOOP7_1:

MOVA,#076H

MOVP1,A

MOVA,32H

MOVB,#0AH

DIVAB

MOV72H,A

MOV71H,B

DISP:

MOV60H,#10H

MOVA,60H

MOVP2,A

MOVA,71H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY_1MS

MOV60H,#20H

MOVA,60H

MOVP2,A

MOVA,72H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY_1MS

MOVA,#0FFH

MOVP0,A

RET

;;;;;;;;;;;;;;;;;;;;;;;;

LOOP8:

MOVR0,#150

LOOP8_0:

MOVA,61H

CJNEA,#1,LOOP8_1

MOVA,31H

MOVB,#0AH

DIVAB

MOV72H,A

MOV71H,B

SJMPDISP2

LOOP8_1:

MOVA,32H

MOVB,#0AH

DIVAB

MOV72H,A

MOV71H,B

DISP2:

MOV60H,#10H

MOVA,60H

MOVP2,A

MOVA,71H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY_1MS

MOV60H,#20H

MOVA,60H

MOVP2,A

MOVA,72H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY_1MS

MOVA,#0FFH

MOVP0,A

DJNZR0,LOOP8_0

RET

END

十一、总结

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

因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

-11-

回顾起此次单片机课程设计,我仍感慨颇多。

的确,从拿到课程设计题目后,从理论到实践,在接近一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

-11-

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

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

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

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