单片机课程设计附程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计
设计说明书
前言
单片机的应用介绍:
单片机是微型计算机应用技术的一个重要分支,近年来在工业智能仪器仪表、光机电设备、自动化、信息处理、家电、汽车电子等领域得到广泛应用和迅速发展。
智能化仪器仪表
如智能电度表、智能流量计等。
单片机用于仪器仪表中,使之走向了
智能化和微型化,扩大了仪器仪表功能,提高了测量精度和测量的可靠性。
✓实时工业控制
单片机可以构成各种工业测控系统、数据采集系统,如数控机床、汽车安全技术检测系统、工业机器人、过程控制等。
✓网络与通信
利用单片机的通信接口,可方便地进行多机通信,也可组成网络系统。
如单片机控制的无线遥控系统。
✓家用电器
如全自动洗衣机、自动控温冰箱、空调机等。
单片机用于家用电器,使其应用更简捷、方便,产品更能满足用户的高层次要求。
✓计算机智能终端
如计算机键盘、打印机等。
单片机用于计算机智能终端,使之能够脱离主机而独立工作,尽量少占用主机时间,提高主机的计算速度和处理能力。
单片机的应用特点:
▪控制应用:应用范围广泛
▪软硬件结合:软硬件统筹考虑,不仅要会编程,还要有硬件的理论和实践知识。
▪应用现场环境恶劣:电磁干扰、电源波动、冲击震动、高低温等环境因素的影响。
要考虑芯片等级选择、接地技术、屏蔽技
术、隔离技术、滤波技术、抑制反电势干扰技术等。
应用空间大:工业自动化、仪器仪表、家用电器、信息和通信产品、军事装备等领域。
一、课程设计的目的和要求
目的:通过设计一个采用AT89C51 单片机控制的交通灯控制电路
能够熟练掌握单片机及其仿真系统使用方法,灵活应用单片机原理、微机原理等课程方面的知识。
要求:结合实际情况设计一种简单低成本城市交通灯控制系统,给出硬件及软件设计方案、各个路口交通灯的状态循环显示,并对程序流程图进行详细讲解分析。
二、总体设计
1、硬件总体设计
硬件的设计采用89ATC51 单片机为核心器件。
并辅助复位电路,驱动电路,数码管及晶体管显示部分。
通过中断扩展实现交通灯系统特殊情况的转换。
2、软件总体设计
软件设计部分分为一个主程序和两个中断子程序,一个用于有紧急车辆通过时,系统要能禁止普通车辆通行,实行中断可使A(东西道)、B(南北道)两道均亮红灯;另一个用于一道有车而另一道无车时,通过控制交通灯系统能立即让有车道放行,假如A 道有车B 道无车,长按K0 可以控制交通灯系统能立即让东西道放行;假如南北道有车东西道无车,长按K1 可以控制交通灯系统能立即南北
道放行。
十字路口的交通灯在工作时应具有如下特点:红灯表示该条道路禁止通行;黄灯表示该条道路上未过停车线的车辆禁止通行,已过停车线的车辆继续通行;绿灯亮表示该条道路允许通行。
本设计利用单片机控制可以实现以下功能: (1)A 道和B 道上均有车辆要求通过时,A,B 道轮流放行。
A 道放行5 分钟(调试时改为5 秒钟),B 道放行4 分钟(调试时改为4 秒钟)。
(2)一道有车而另一道无车(实验时用开关K0 和K1 控制),交通灯控制系统能立即让有车道放行。
(3)有紧急车辆要求通过时,系统要能禁止普通车辆通行,A,B 道均为红灯,紧急车由K2 开关模拟。
(4)绿灯转换为红灯时黄灯亮1 秒钟。
主程序框图
三、硬件设计
(1)AT89C51简介
1 功能: AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。
具有128*8位内部RAM,有32根可编程I/O线、两个16位定时器/计数器·5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。
2 管脚说明:
VCC:供电电压。
GND:接地。
P0 口:P0 口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1 口的管脚第一次写1时,被定义为高阻输入。
P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH 编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0 输出原码,此时P0 外部必须被拉高。
P1 口:P1 口是一个内部提供上拉电阻的8 位双向I/O 口,P1 口缓冲器能接收输出4TTL 门电流。
P1 口管脚写入1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH 编程和校验时,P1 口作为第八位地址接收。
P2 口:P2 口为一个内部上拉电阻的8 位双向I/O 口,P2 口缓冲器可接收,输出4个TTL 门电流,当P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
作为输入时,P2 口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2 口用于外部程序存储器或16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。
P2 口在FLASH 编程和校验时接收高八位地址信号和控制信号。
P3 口:P3 口管脚是8个带内部上拉电阻的双向I/O 口,可接收输
出4 个TTL门电流。
当P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。
P3 口也可作为AT89C51 的一些特殊功能口,如下表所示:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0 外部输入)
P3.5 T1(记时器1 外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3 口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
PSEN:外部程序存储器的选通信号。
EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
当/EA端保持高电平时,此间内部程序存储器。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
3 振荡器特性:XTAL1 和XTAL2 分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4 芯片擦除:整个PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE 管脚处于低电平10ms 来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51 设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU 停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM 的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
(2)复位部分:采用上电+按钮电平复位,复位电容采用10微法,电阻R6为200欧,连接如图:
(3)显示部分:
1 数码管显示部分采用四位一体共阴数码管,分别显示西和北的剩余时间,A 到G 为码段控制端口,1 到4 为片选端口。
数码段显示部分通过74LS245 接单片机管脚的P0 口,片选部分由P2.0 到P2.1 提供,具体的共阴数码管见图。
其中P2.1 控制北边和西边剩余时间的十位数的显示;P2.0 控制北边和西边剩余时间的个位数的显示。
2 晶体管显示部分由于对称性,设计时只设计了西北两个方向。
由
红黄绿按要求显示。
用P1 端口作为输出端口,用P1.2 到P1.7 端口分别控制西和北两组灯的状态,低电平点亮,具体端口功能如下: P1.2 控制北边红灯的亮灭;
P1.3 控制北边黄灯的亮灭;
P1.4 控制北边绿灯的亮灭;
P1.5 控制东边红灯的亮灭;
P1.6 控制东边黄灯的亮灭;
P1.7 控制东边绿灯的亮灭。
(4) 驱动部分:74LS245
四、软件设计
(1)T0 中断服务程序
(2)外部中断零服务程序
源程序
(1)主程序
ORG 0100H
MAIN:MOV SP,#50H
MOV TCON,#05H ;定义中断方式
MOV 20H,#05H ;时间计数单元,A 道放行时间
MOV 21H,#02H ;黄灯亮时间
MOV 22H,#05H ;B 道放行时间
MOV 23H,#00H ;交通灯转换标示位
MOV 24H,#05H ;时间欲存区,A 道放行时间
MOV 25H,#02H ;黄灯亮时间
MOV 26H,#05H ;B 道放行时间
MOV 27H,#0FFH ;特殊情况下转换标示位
MOV 28H,#01H ;
MOV 30H,#05H ;显示缓存区
MOV 31H,#00H
MOV TMOD,#01H ;16 位计数器
MOV TH0,#03CH
MOV TL0,#0B0H
MOV IE,#10000111B
SETB TR0 ;T0 启动计数
MOV R2,#13H
MOV P2,#0FFH
ML1: ACALL DISP
MOV A,23H
CJNE A,#00H,X1
SETB P1.2
CLR P1.3
CLR P1.4
CLR P1.5
CLR P1.6
SETB P1.7
X1: CJNE A,#01H,X2
CLR P1.2
SETB P1.3
CLR P1.4
CLR P1.5
SETB P1.6
CLR P1.7
X2: CJNE A,#02H,X3
CLR P1.2
CLR P1.3
SETB P1.4
SETB P1.5
CLR P1.6
X3: CJNE A,#03H,X4
CLR P1.2
SETB P1.3
CLR P1.4
CLR P1.5
SETB P1.6
CLR P1.7
X4: JNB 2FH.0,ML2
SETB P1.2
CLR P1.3
CLR P1.4
SETB P1.5
CLR P1.6
CLR P1.7
AJMP X4
ML2: JB TR0,ML1
ACALL DISP
MOV A,27H
CJNE A,#00H,X11
SETB P1.2
CLR P1.3
CLR P1.5
CLR P1.6
SETB P1.7
X11: CJNE A,#01H,X21
CLR P1.2
SETB P1.3
CLR P1.4
CLR P1.5
SETB P1.6
CLR P1.7
X21: CJNE A,#02H,X31
CLR P1.2 CLR P1.3
SETB P1.4 SETB P1.5
CLR P1.6
CLR P1.7
X31: JB P1.0,M1
M1: MOV C,P1.0 ;按键消振JC M2
M2: LCALL DELAY
MOV C,P1.0
JC ML10
STOP1: MOV C,P1.0
JNC STOP1
LCALL DELAY
MOV C,P1.0
JNC STOP1
MOV R0,#20H
MOV R1,#24H
MOV A,27H ;加一
MOV 23H,A
CLR C ADD A,R1
MOV R1,A
CLR C
MOV A,23H
ADD A,R0
MOV R0,A
INC @R1
MOV A,@R1
CJNE A,#100,H1
MOV A, #00H
MOV @R1,A
H1: MOV @R0,A
MOV B,#0AH
MOV 31H,A
MOV 30H,B
ACALL DISP
ML10: JB P1.1,M3
M3: MOV C,P1.1 ;按键消振JC M4
M4: LCALL DELAY
MOV C,P1.1
JC ML2
STOP2: MOV C,P1.1
JNC STOP2
LCALL DELAY
MOV C,P1.1
JNC STOP2
MOV R0,#20H
MOV R1,#24H
MOV A,27H ; 减一
MOV 23H,A
CLR C
ADD A,R1
MOV R1,A
ADD A,R0
MOV R0,A
DEC @R1
MOV A,@R1
CJNE A,#0FFH,H2
MOV A, #99
MOV @R1,A
H2: MOV @R0,A
MOV B,#0AH
DIV AB
MOV 31H,A
MOV 30H,B
ACALL DISP
LJMP ML1 DELAY:MOV R4,#14H
DL00: MOV R5,#0FFH
DL11: DJNZ R5,DL11
DJNZ R4,DL00
RET
(2)T0中断服务程序
TIME: PUSH ACC
PUSH PSW
MOV TH0,#03CH
MOV TL0,#0B0H
DJNZ R2,RET0
MOV R2,#13H
MOV A,23H
CJNE A,#00H,L1
MOV A,20H
CLR C
DEC A
CJNE A,#0FFH,GO11
MOV A,23H
CLR C
INC A
MOV 23H,A
MOV A,24H
MOV 20H,A
LJMP L1
GO11: MOV 20H,A
MOV B,#0AH
DIV AB
MOV 31H,A
MOV 30H,B
LJMP RET0
L1: MOV A,23H
CJNE A,#01H,L2
MOV A,21H
CLR C
DEC A
CJNE A,#0FFH,GO12
MOV A,23H
CLR C
INC A
MOV 23H,A
MOV A,25H
MOV 21H,A
LJMP L2
GO12: MOV 21H,A
MOV B,#0AH
DIV AB
MOV 31H,A
MOV 30H,B
LJMP RET0
L2: MOV A,23H
CJNE A,#02H,L4
MOV A,22H
CLR C
DEC A
CJNE A,#0FFH,GO13
MOV A,23H
CLR C
INC A
MOV 23H,A
MOV A,26H
MOV 22H,A
LJMP L4
GO13: MOV 22H,A
MOV B,#0AH
DIV AB
MOV 31H,A
MOV 30H,B
RET0: POP PSW
POP ACC
RETI
L4: MOV A,23H
CJNE A,#03H,
RET0
MOV A,21H
CLR C
DEC A
CJNE A,#0FFH,GO14
MOV A,#00H
MOV 23H,A
MOV A,25H
MOV 21H,A
LJMP RET0
GO14: MOV 21H,A
MOV B,#0AH
DIV AB
MOV 31H,A 20
MOV 30H,B
LJMP RET
(3)外部中断零服务程序SECTION1:PUSH ACC
PUSH PSW
QQQ: MOV C,P3.0 ;按键消振
JC JJJ
ACALL DELAY
MOV C,P3.0
JC JJJ
STOP3: MOV C,P3.0
JNC STOP3
ACALL DELAY
MOV C,P3.0
JNC STOP3
CLR TR0
MOV A,27H
CJNE A,#00H,PPP1
MOV A,#0FFH
MOV 27H,A
MOV 28H,#01H
SETB TR0
AJMP PP1
PPP1: CJNE A,#02H,PPP
MOV 27H,#00H
MOV 28H,#01H
AJMP PP1 PPP: INC 27H
MOV 28H,#01H PP1: POP PSW
POP ACC RETI
JJJ: MOV C,P3.1 ;按键消振JC QQQ
ACALL DELAY
MOV C,P3.1
JC QQQ
STOP4: MOV C,P3.1
JNC STOP4
ACALL DELAY
MOV C,P3.1
JNC STOP4
CLR TR0
MOV A,28H
CJNE A,#02H,GGG1
MOV A,#01H
MOV 27H,A
MOV 28H,A
SETB TR0
LJMP PP1
GGG1: CJNE A,#00H,GGG
MOV 27H,#02H
MOV 28H,#02H
LJMP PP1
GGG: INC 28H
MOV 27H,28H
LJMP PP1
五、课程设计收获及体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,从选题到定稿,从理论到实践,在整整两星期的日子里,学到了很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,可以说这次课程设计不仅让我们把以前学的知识温顾,而且对今后的学习也有很大的影响。
六、参考文献
[1] 刘心红、郭福田、孙振兴、曾丽丽,Proteus 仿真技术在单片机教学中的应用(大庆石油学院应用技术学院,河北秦皇岛),实验技术与管理(Experimental Technology and Management)2007,24
[2] 蔡军、曹慧英,智能交通灯控制系统的设计与实现
[3] 杨汉祥、刘良福、邬喜辉,利用单片机改进交通灯控制系统(北京电子科技学院学报),北京电子科技学院学报(Journal of Bei jing Electronic Science and Technology institute)2005,13
[4] 余发山主编《单片机原理与应用技术》北京:中国矿大出版社2004
[5]赖寿宏主编《微型计算机控制技术》北京:机械工业出版社2002
[6]李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社
[7] 栾桂冬,张金铎,金欢阳.传感器及其应用[M].西安:西安电子科技大学出版社。