单片机课程设计报告[]

单片机课程设计报告[]
单片机课程设计报告[]

微机原理与接口技术

综合实践说明书

课程名称:微机原理与接口技术课程设计

设计题目:交通信号灯控制系统

设计时间:2013年7月1日至2013年7月11日

摘要:近年来随着科技的迅猛发展,单片机的种类不断的增多,功能日趋强大,相应的,对他的应用也在正在不断地深入,深入到了我们日常生活的点点滴滴,比如说我们的电子表、热水器、空调等家电,都有单片机控制系统的影子。另外,在对信号的实时检测和机构的各种自动控制系统中,单片机也常被作为一个核心部件来使用。

交通信号灯使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事

中应用了8155接口芯片、74LS14芯片以及8*8点阵,比较完整的对实际的系统进行了模仿,系统除了包括常规交通灯的控制疏导功能外,还具有紧急情况亮红灯、LED倒计时显示、某一向道路绿灯常绿,复位等功能。本文比较详细的介绍了该系统的基本原理及接口电路,以及在电路中用到的一些硬件设备。

关键词:交通信号灯、单片机、接口电路

目录

1任务要求 (2)

1.1应用系统实现功能: (2)

1.2关键技术难点: (2)

1.3工具: (3)

2工作计划安排: (3)

3系统设计 (3)

3.1硬件设计: (3)

3.1.1系统总框图: (4)

3.1.2 LED接口电路 (4)

3.1.3按键电路: (5)

3.1.4单片机系统: (6)

3.1.5交通灯演示模块: (6)

3.1.6其它硬件元件 (7)

3.1.7硬件电路原理图 (8)

3.2软件设计 (9)

3.2.1交通灯的三种状态 (9)

3.2.2程序流程图 (9)

3.2.3源程序清单 (13)

4设计分工: (19)

5参考文献 (20)

1任务要求

1.1应用系统实现功能:

1、十字路口常规自动控制,南北方向与东西方向红、黄、绿灯的自动切换,点阵LED

2、按键实现人工控制,如实现双向红灯,某一向常绿,或人工调节自动控制中的红\绿灯时间。

1.2关键技术难点:

扩展8*8点阵LED显示器一块,设计按键4个,两组(红、黄、绿)模拟交通灯的发光二极管。

1.3工具:

1、电烙铁

2、电烙铁架

3、镊子

4、小螺丝刀

5、偏口钳

6、焊锡

7、电路板

2工作计划安排:

3系统设计

3.1硬件设计:

系统的核心部分为89C51和8155芯片,一方面通过接口电路89C51控制交通灯的正常显示,另一方面通过8155芯片控制LED倒计时,同时通过K1,K2,K3,K4按键的中断响应再控制交通灯演示模块,按键中断也由89C51控制。

3.1.1系统总框图:

3.1.2 LED接口电路

连接方式:LED点阵由8155芯片控制,8155的A口和B口均选用输出方式,该LED 为8*8共阳数码显示点阵管,其连接方式如图1:

图1 LED点阵图

要使点阵上Aa二极管点亮,则A为高电平,a为低电平。其余依此类推。因第一排至第八排发光二极管的阳极是连接在一起的,因此,该点阵为共阳点阵。当然我们也可以理解成共阴连接方式。

显示方式:扫描字由PA口控制,数据由PB口控制。根据8155与89C51的连接方式可以确定8155的命令状态口以及A、B口的地址。

连接电路如图2:

图2 8155与LED连接电路图

3.1.3按键电路:

按键电路原理图如图3:

图3 按键电路原理图

它由按键K1,K2,K3,K4 组成,如图3,若闭合按键,由于按键系统接地,给0电平,通过反向器后变为高电平1送给系统响应。各个口的响应由89C51的P3口来进行控制。

3.1.4单片机系统:

由89C51和8155两块芯片组成,系统的主控制器,用以控制其他模块协调工作。89C51与交通灯演示模块的接口电路图如图4:

图4 89C51与交通灯演示模块的接口电路图

3.1.5交通灯演示模块:

该模块由12个发光二极管构成,由 P1口控制,每位控制相对方向相同颜色的两个灯

的亮暗,P1.0控制灯1、2,P1.1控制灯3、4,P1.2控制灯5、6……以次类推。由图示看出当P1都给高电平1时,经过反向器变为低电平0,二极管通,灯亮。

连接图如图5所示:

图5交通灯演示模块连接图

3.1.6其它硬件元件

74LS14:六反相器,主要作用就是反向,它的逻辑图如图6所示:

引出端符号:

1A-6A 输入端

1Y-6Y 输出端

图6 74LS14逻辑图

三极管:依照极性可分成NPN 、PNP 两种类,本实验使用的是PNP型三极管

3.1.7硬件电路原理图

3.2软件设计

3.2.1交通灯的三种状态

(1)正常状态下红绿灯的定时切换。

切换时间在本组设计为8s初始化后,两个方向通行时间相等。各灯运行及倒计时情况良好。倒计时显示的字为“15 14 13 12…… 05 04 03 02 01 00”,在倒计时为“03 02 01”时绿灯变黄灯,黄灯闪烁6次。

(2)按一下K1键,南北向绿灯常亮,无倒数计时,LED显示器显示南北方向的箭头。再按一下k1键,东西向绿灯常亮,无倒数计时,LED显示器显示东西方向的箭头。两者交替进行。(k1按键的指令是通过判断p2.1口的高低电平来执行的,期间检测k1与k4按键)

(3)按K2键,切换倒计时的显示动画方式。(k2按键的功能带有延续性,即k3,k4口复位后k2口功能不初始化。)

(4)按键K3后,出现黄灯闪烁三次,然后出现灯全红状态,LED显示字“X”。当再按一下该键,黄灯闪烁,LED回到进入黄灯前的状态,继续完成按键K3前的程序。

(5)按复位键K4,灯会恢复到初始状态重新循环。(通道由F0标志位决定)

示意图如图7所示:

图7 交通灯示意图

3.2.2程序流程图

程序总共有三大部分,分别是主程序(按键服务程序)、按键中断子程序、显示子程序。通过原理图可以看出,判断是否有按键是通过判断89C51的P3口的各个位的电平信号。

3.2.3源程序清单

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP ZD

ORG 0100H

MAIN: MOV A , #00111111B

MOV P1, A

MOV TMOD,#01H ;定时器初始化

MOV IE,#82H

MOV TH0,#3CH ;设置50ms中断

MOV TL0,#0B0H

MOV R2,#20

MOV R3,#30 ;设置红灯时间为30 S

MOV R6,#20 ;设置红灯时间为20 S

KPP: MOV 50H,R3

MOV R7,#01H

MOV A,#11100001B ;点亮路口1红灯与路口2绿灯

MOV P1,A

CYCLE: ACALL KEY ; 调用键盘扫描程序ACALL DISPLAY ; 调用显示程序

AJMP CYCLE ; 循环

KEY: ACALL KEY1 ; 键盘扫描子程序

CJNE R4,#0FFH,PROKEY ;有键按下转到PROKEY执行

AJMP NOKEY ;无键按下转到NOKEY执行PROKEY: MOV DPTR,#KEYTAB ;按键表首地址

CLR C

RLC A ;为查表正确,累加器变量乘2

JMP @A+DPTR

KEYTAB: AJMP K1 ;按键表

AJMP K2

AJMP K3

AJMP K4

NOKEY: AJMP KD ;无按键时返回

K1: CLR TR0 ; 按键1子程序,关闭中断MOV A,#11001001B ; 点亮双向红灯

MOV P1,A

MOV DPTR,#0100H ;关闭LED显示

MOV A,#03H

MOVX @DPTR,A

MOV DPTR,#0101H

MOV A,#0FFH

MOVX @DPTR,A

DP1: MOV A,P3 ; 判断按键1是否按下

CJNE A,#0F1H,DP1 ; 没有则循环判断等待

ACALL DEL0 ;有按键1延时消抖

ACALL COM ;松手检测

AJMP KPP ; 返回初始化

K2: CLR TR0 ; 按键2子程序,关闭中断MOV A,#11100001B ; 设置路口1常绿

MOV P1,A

MOV DPTR,#0100H ;关闭显示

MOV A,#03H

MOVX @DPTR,A

MOV DPTR,#0101H

MOV A,#0FFH

MOVX @DPTR,A

DP2: MOV A,P3 ; 判断按键2是否按下CJNE A,#0F2H ,DP2 ; 没有则循环判断等待

ACALL DEL0 ; 有按键2延时消抖

ACALL COM ;松手检测

MOV A,#11001100B ; 设置路口2常绿

MOV P1,A

DP3: MOV A,P3 ; 判断按键2是否按下CJNE A,#0F2H ,DP3 ; 没有则循环判断等待

ACALL DEL0 ; 有按键2延时消抖

ACALL COM ;松手检测

MOV A,#11100001B

MOV P1,A

AJMP KPP ; 返回初始化

K3: INC R3 ; 按键3子程序红灯时间加1 CJNE R3,#99,HP ; 若增加至99则从0重新开始

MOV R3,#00H

HP: AJMP KPP ; 返回红灯倒计时

K4: INC R6 ; 按键3子程序红灯时间加1 CJNE R6,#99,HP1 ; 若增加至99则从0重新开始

MOV R6,#00H

HP1: AJMP KPP1 ; 返回绿灯倒计时

KD: RET ; 子程序返回

KEY1: MOV A,P3 ;按键扫描子程序

XRL A,#0F0H ;各位取反

JZ RETURN ;无键按下,转到RETURN执行

ACALL DEL0 ;有键按下,延时消抖

MOV A,P3 ;再读入各按键状态

MOV R5,A

XRL A,#0F0H

JZ RETURN ;无键按下,转到RETURN执行

CJNE R5,#0F1H,NEXT1 ;不是按键1转到NEXT1执行

MOV R4,#0 ;将对应按键表中偏移量送入R4

SJMP COM ;执行松手检测

NEXT1: CJNE R5,#0F2H,NEXT2 ;不是按键2转到NEXT2执行MOV R4,#1

SJMP COM

NEXT2: CJNE R5,#0F4H,NEXT3 ;不是按键3转到NEXT3执行MOV R4,#2

SJMP COM

NEXT3: CJNE R5,#0F8H,RETURN ;不是按键4转到RETURN执行MOV R4,#3

COM: MOV A,P3 ;松手检测

XRL A,#0F0H

JNZ COM ;等待,直到按键释放

MOV A,R4

SJMP RETURN1

RETURN: MOV R4,#0FFH ;无键按下,给R4赋FFH RETURN1:RET ; 返回

DEL0: MOV 40H,#18H ; 延时12ms

DEL2: MOV 41H,#0FFH

DEL3: DJNZ 41H,DEL3

DJNZ 40H,DEL2

RET

DISPLAY: SETB TR0 ; 显示子程序开启中断DISP: MOV R1,#53H

MOV R0,#50H ; 显示的数放在50H中

MOV A,@R0

MOV B,#0AH

DIV AB

MOV @R1,A ; 显示的数十位放在53H中

INC R1

MOV @R1,B ; 显示的数个位放在54H中

MOV R0,#53H

MOV R4,#0FEH ; 列扫描初值

ACALL DIS

INC R0

ACALL DIS

MOV A,50H

CJNE A,#00H,KP

MOV A,R7

CJNE A,#04H,KP7 ;判断是否为状态4

AJMP KPP ; 是则返回状态1

KP7: MOV A,R7

CJNE A,#01H,KP2 ; 不是则判断是否为状态1 MOV A,#11010001B ; 是则调整为状态2

MOV P1,A

MOV 50H,#5 ; 黄灯时间5 S

MOV R7,#02H

AJMP KP

KP2: MOV A,R7

CJNE A,#02H,KP3 ; 不是则判断是否为状态2 KPP1: MOV A,#11001100B ; 是则调整为状态3 MOV P1,A

MOV 50H,R6

MOV R7,#03H

AJMP KP

KP3: MOV A,#11001010B ; 不是则调整为状态4 MOV P1,A

MOV 50H,#5

MOV R7,#04H

KP: RET

DIS: MOV 31H,#4 ;4列扫描显示子程序MOV A,@R0 ;取显示数字

RL A

RL A ;为查表正确,累加器变量乘4

MOV R5,A

LP: MOV DPTR,#0100H ;关显示

MOV A,#03H

MOVX @DPTR,A

MOV A,#0FFH

MOV DPTR,#0101H

MOVX @DPTR,A

MOV A,R5 ;查表变量送入ACC

INC R5

MOV DPTR,#DTAB ;字形表首地址

MOVC A,@A+DPTR ;查表

MOV R1,A

MOV DPTR,#0100H

MOV A,#03H

MOVX @DPTR,A

MOV DPTR,#0102H

MOV A,R1

MOVX @DPTR,A ;字形码输出

MOV DPTR,#0100H

MOV A,#03H

MOVX @DPTR,A

MOV A,R4

MOV DPTR,#0101H

MOVX @DPTR,A ;列扫描字输出

RL A ;下一列

MOV R4,A

ACALL DEL1 ;延时

DJNZ 31H,LP

RET

DEL1: MOV 30H,#02H ; 延时子程序

DL0: MOV 32H,#0FFH

DL6: DJNZ 32H,DL6

DJNZ 30H,DL0

RET

DTAB: DB 83H,7DH,7DH,83H ;0 行字型码表

DB 0FFH,0BDH,01H,0FDH ;1

DB 0B1H,6DH,6DH,9DH ;2

DB 0BBH,6DH,6DH,93H ;3

DB 0E7H,0D7H,01H,0F7H ;4

DB 0DH,6DH,6DH,73H ;5

DB 83H,6DH,6DH,0B3H ;6

DB 3FH,7FH,41H,3FH ;7

DB 93H,6DH,6DH,93H ;8

DB 9BH,6DH,6DH,83H ;9

ZD: DJNZ R2,LOOP ;中断服务子程序MOV R2,#20

DEC 50H ; 满1S显示数减1 LOOP: MOV TH0,#3CH

MOV TL0,#0B0H

RETI

END ; 返回

4设计分工:

组长:李艾桐

分工: 李逢源、任俊查资料、编写LED点阵显示程序、以及对全部程序

整理。

李逢源,徐菲菲编写交通灯常规控制程序。

徐菲菲,刘睿,吴雷编写交通灯按键程序。

任俊撰写报告

5参考文献

[1]蒋力培. 单片微机系统实用教程. 北京: 机械工业出版社. 2004

[2]何海滨. 8×8点阵LED字符显示器的设计.实用电子制作.2006.9

[3]何力民. 单片机应用技术选编. 北京: 北京航空航天大学出版社. 1998

[4]胡学海. 单片机原理及应用系统设计. 北京: 电子工业出版社. 2005

[5]陈子忠、黄宁、赵小侠. 单片机接口技术应用子程序. 北京: 人民邮电出版社. 2005

[6 ]赵常得、李华. MCS-51单片机原理与应用. 机械工业出版社.1997

[7]马家辰.、孙玉德、张颖. MCS-51单片机原理及接口技术. 哈尔滨: 哈尔滨工业大学出版社. 1998

[8]朱定华. 单片机原理及接口技术实验. 北京: 清华大学,北京交通大学出版社. 2002

[9]姜志海. 单片机原理及应用. 北京: 电子工业出版社. 2005

[10]宋杰、汪志宏、江敏. 微机原理与接口技术课程设计.机械工业出版社.2005

[11]张鑫. 单片机原理及应用. 北京: 电子工业出版社. 2005

[12]张果林、陈斌生. 微机接口技术300例. 北京: 机械工业出版社. 2003

[13]马洪连、马艳华. 单片机原理及应用. 北京: 人民邮电出版社. 2004

相关主题
相关文档
最新文档