单片机课程设计.docx
- 文档编号:4461989
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:14
- 大小:279.86KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
单片机课程设计
摘要-2-
1.引言-3-
2.总体设计方案-4-
2.1课程设计目的-4-
2.2设计要求-4-
2.3课程设计功能描述-5-
2.4课程设计分析设计-5-
3.系统设计-5-
3.1硬件电路图及其说明-5-
3.2软件流程图及其说明-10-
3.3程序的源代码清单(汇编语言):
-10-
3.4上机调试运行结果及分析-14-
4.硬件调试-16-
5.软件调试-16-
6.课程设计经验教训总结-16-
7.参考文献-17-
摘要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
关键字:
电子线路AT89S52LED交通灯
1.引言
当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
2.总体设计方案
2.1课程设计目的
大学本科学生动手能力的培养和提高是大学本科教育的一个重要内容,《单片机原理及应用》是一门应用性较强的课程。
如何让学生在学好基础知识的同时,迅速掌握应用技术,实验与课程设计环节起着非常重要的作用。
本课程设计的目的,是让学生通过课程设计,首先建立起单片机应用系统的概念,根据实际的系统设计要求,掌握初步的单片机系统设计方法,从硬件系统和软件系统设计两个方面得到实际的提高,为今后的毕业设计打下良好的基础。
2.2设计要求
(1)通过交通信号灯控制系统的设计,掌握89C51并行口传输数据的方法,以控制南北东西四盏交通灯的亮与灭;
(2)用89C51作为输出口,控制十二个发光二极管熄灭,模拟交通灯管理.
(3)通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力;
(4)完成控制系统的硬件设计、软件设计、仿真调试。
2.3课程设计功能描述
设计一个交通灯控制电路,并且编写相应的软件,完成交通灯的管理任务。
该控制任务应该完成下列功能:
(1)控制LED灯,完成交通灯的管理任务;
(2)按照分析、设计、调试和测试的软、硬件开发过程完成这个控制任务。
2.4课程设计分析设计
本次试验是基于51系列单片机道路交通灯的设计。
现在我们设计一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
再转状态3,东西绿灯通车,南北红灯。
过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1。
3.系统设计
3.1硬件电路图及其说明
1.硬件电路图:
(使用Proteus进行绘图)
2.AT89C51简介:
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
具有128*8位内部RAM,有32根可编程I/O线、两个16位定时器/计数器·5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。
管脚说明:
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.0RXD(串行输入口)P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
3.2软件流程图及其说明
程序开始执行,进入初始状态,使东西南北四台交通灯都为红色;五秒以后,东西绿灯亮,南北红灯亮,然后进行延时,10秒以后,东西黄灯闪烁,南北红灯亮。
再过10秒,东西红灯亮,南北绿灯亮,又延时10秒,东西红灯亮,南北黄灯闪烁,延时10秒后,回到初始状态,继续重复执行。
3.3程序的源代码清单(汇编语言):
ORG0000H
SJMPA3;四盏红灯亮
A3:
MOVSP,#60H
MOVA,#24H
MOVP1,A
MOVR4,#05H
LOOP1:
MOVR2,#03H
LCALLxian;调显示子程序
DJNZR4,LOOP1
MOVR4,#00H
MOVR2,#03H
LCALLxian
;东西绿灯亮,南北红灯亮
A2:
MOVA,#0CH
MOVP1,A
MOVR4,#14H
LOOP2:
MOVR2,#03H
LCALLxian;调显示子程序
DJNZR4,LOOP2
MOVR4,#00H
MOVR2,#03H
LCALLxian;调显示子程序
MOVR4,#05H;东西黄灯亮,南北红灯亮
LOOP9:
MOVA,#14H
MOVP1,A
MOVR2,#02H
LCALLxian;调显示子程序
MOVR2,#01H;定时
LCALLDELAY;调延时子程序
;南北红灯亮
MOVA,#04H
MOVP1,A
MOVR2,#01H;定时
LCALLDELAY;调延时子程序
DJNZR4,LOOP9
MOVR4,#00H
MOVR2,#03H
LCALLxian;调显示子程序
;东西红灯亮,南北绿灯亮
A8:
MOVA,#61H
MOVP1,A
MOVR4,#14H
LOOP3:
MOVR2,#03H
LCALLxian;调显示子程序
DJNZR4,LOOP3
MOVR4,#00H
MOVR2,#03H
LCALLxian;调显示子程序
MOVR4,#05H
LOOP10:
MOVR2,#02H
LCALLxian;调显示子程序
;东西红灯亮,南北黄灯亮
A0:
MOVA,#0A2H
MOVP1,A
MOVR2,#01H;定时
LCALLDELAY;调延时子程序
;东西红灯亮
MOVA,#20H
MOVP1,A
MOVR2,#01H;定时
LCALLDELAY;调延时子程序
DJNZR4,LOOP10
MOVR4,#00H
MOVR2,#03H
LCALLxian;调显示子程序
LJMPA2;延时子程序
DELAY:
PUSH2
PUSH1
PUSH0
DELAY1:
MOV1,#00H
DELAY2:
MOV0,#0B2H
DJNZ0,$
DJNZ1,DELAY2
DJNZ2,DELAY1
POP0
POP1
POP2
DJNZR2,DELAY
RET
;显示子程序
xian:
MOVA,R4
MOVB,#10
DIVAB
MOVR6,A
MOVDPTR,#TAB
MOVA,B
MOVCA,@A+DPTR
MOVSBUF,A
MOVR7,#0FH
H55S:
DJNZR7,H55S
MOVA,R6
MOVCA,@A+DPTR
MOVSBUF,A
MOVR7,#0FH
H55S1:
DJNZR7,H55S1
LCALLDELAY
RET
TAB:
DB0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
END
3.4上机调试运行结果及分析
(1)系统初始状态:
(东西红灯,南北红灯)
(2)10秒后,南北绿灯亮,东西红灯保持:
(3)20秒后,黄灯闪烁2秒,南北红灯亮,东西绿灯亮:
4.硬件调试
硬件调试可分为静态调试与动态调试两步进行。
静态调试是在用户系统未工作时的一种硬件检测。
第一步:
目测。
检查外部的各种元件或者是电路是否有断点。
第二步:
用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:
加电检测。
给板加电,检测所有插座或是器件的电源端是否符合要求的值
第四步:
是联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的一般方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。
当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。
由分到合的调试既告完成。
由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。
调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。
5.软件调试
软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
6.课程设计经验教训总结
通过这次做交通灯的课程设计,自己再次学习了单片机这门课程,并认真复习单片机,查阅和浏览了很多的相关资料,并且对keil和proteus软件的使用有了一定的了解。
虽然提前做了一些准备工作,但完成初次编程用keil进行编译时,确也出现了一系列的问题。
例如:
新建工程后,把程序导入软件中,进行编译处理后,没有生成.hex文件,在进行Proteus仿真时找不到文件,最后经过老师的帮助下,最终顺利的完成了仿真任务。
但是最后在同学的帮助下终于完成任务。
通过这次学习,发现自己对书本的掌握只是很表层的一部分,离实际应用还有很大一段距离。
真是不用不知道,一用吓一跳。
做课程设计期间,自己进一步学习了单片机书上的例子,而且学习了许多书本之外的东西。
尤其是,和几个同学一起进行编程调试进而运行时期间,发现自己还算比较喜欢编程。
这次做单片机课程设计也对自己以后的学习方向有很大的影响。
7.参考文献
[1]李朝青.单片机原理及接口技术(修订版).北京:
北京航空航天大学出版社,1998
[2]李广弟.单片机基础.北京:
北京航空航天大学出版社,1992
[3]何立民.单片机应用技术大全.北京:
北京航空航天大学出版社,1994
[4]张毅刚.单片机原理及接口技术.哈尔滨:
哈尔滨工业大学出版社,1990
[5]谭浩强.单片机课程设计.北京:
清华大学出版社,1989
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)