单片机课程设计报告[]
微机原理与接口技术
综合实践说明书
课程名称:微机原理与接口技术课程设计
设计题目:交通信号灯控制系统
设计时间: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