单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
![单片机课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/5/46557c0c-3e32-4226-a3af-90dfb7ebcaa3/46557c0c-3e32-4226-a3af-90dfb7ebcaa31.gif)
单片机课程设计
一、课程设计目的
1.进一步熟悉和掌握单片机的结构及工作原理。
2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。
4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
二、摘要
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?
靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
实现了能根据实际车流量通过AT89C51芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩2秒时黄灯闪烁警示;车辆闯红灯报警;通过设置“看门狗电路”来防止单片机死机,提高单片机系统的抗干扰性;绿灯时间可检测车流量并可通过双位数码管显示。
本系统实用性强、操作简单、扩展功能强。
关键词:
AT89C51芯片、单片机、交通信号灯、十字路口
目录
1绪论(概述)……………………………………………………………1
(1)单片机介绍……………………………………………………………1
(2)单片机发展……………………………………………………………1
2设计方案、思路…………………………………………………………2
3流程图………………………………………………………………………3
4电气原理图………………………………………………………………3
1、硬件设计………………………………………………………………3
(1)AT89C51简介…………………………………………………………3
(2)引脚功能简介……………………………………………………………4
2、软件设计…………………………………………………………………8
(1)软件延时原理……………………………………………………………8
5程序主体…………………………………………………………………8
6技术总结…………………………………………………………………11
一、绪论(概述)
1)单片机的介绍
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多种方向发展,它们的CPU功能在增强,内部资源在增多,引角多功能化,以及低电压底功耗。
2、单片机的发展:
1、单片机发展的萌芽阶段(1971-1976年),该阶段主要以4位单片机和8位单片机的初级产品为主。
这时的单片机制造工艺落后,集成度也较低,并且电子双片的形式,主要用于仪器、仪表、民用电器和计算器。
2、单片机的发展阶段(1976-1980),此时出现了各种各样的8位单片机,其中以Intel公司的MCS-48系列单片机为代表,这类单片机采用了单片结构,将CPU和计算机外围电路集成在一个芯片上,它采用8位CPU,多个并行I/O口,一个8位定时器/计数器,但不带串行口。
它的出现使单片机与通用CPU开始分道扬镳,构成新的工业控制器。
3、8位单片机成熟阶段(1980-1983),此阶段以Intel公司的MCS-51系列单片机为代表,产生了各种高性能的单片机。
这类单片机集成了双工串行通信口和多个16位定时器/计数器。
存储容量进一步扩大,片内资源进一步丰富,得到了广大的应用。
4、高性能单片机发展阶段(1983年以后),1983年Intel公司推出16位单片机MCS-96以后,各大厂商也分别推出了高性能单片机,单片机位数有的达到了32位。
但是在此阶段8位单片机还仍有很大的市场应用。
二、本实验设计的思路
考虑到所编程序必须有可靠地使用性,并且编程的思路和方法的好坏将直接影响到程序的执行效率,因此此设计采用了如下思路和方法:
1)采用中断技术,并采用边沿触发技术,极大地加强了系统的实时处理能力并节省了系统成本;
2)采用89c51单片机内部的定时系统控制时间来实现工作过程的自动化,从而降低操作费用和简化操作过程,提高系统的自动化程度;
3)采用把外部中断0设定为高优先级,这样可以有效地保证当有紧急情况出现时,系统能够及时处理;
4)采用程序指令的优化来确保系统软件的执行效率。
三、流程图
本设计交通信号灯的变化规律,根据设计要求,设计一个完整的交通灯只能控制系统,该系统有交通灯单片机构成。
单片机是集成的IC芯片,只需根据实际设计要求选型。
其他部分都需要根据应用要求和性能指标自行设计。
本系统的特色是具有硬件调时功能,并且使用仿真软件模拟实现交通信号灯控制情况。
如图所示
开始
A绿灯亮,B红灯亮,延时60S,状态1
A绿灯闪烁3次,状态2
A黄灯亮,B红灯亮,延时2S,状态3
A红灯亮B绿灯亮,延时35S,状态4
B绿灯闪烁3次,状态5
A红灯亮,B黄灯亮,延时2S,状态6
状态流程图
四、电气原理图设计
1硬件设计
(1)AT89C51简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C51单片机内部结构
AT89C51是8051系列单片机的典型产品,AT89C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。
2、89C51单片机的引脚
89C51单片机内部总线是单总线结构,即数据总线和地址总线是公用的。
89C51有40条引脚,与其他51系列单片机引脚是兼容的[10]。
这40条引脚可分为I/O接口线、电源线、控制线、外接晶体线4部分.,89C51单片机为双列直插式封装结构,引脚如图:
3、引脚功能简介
·RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。
·ALE/
:
当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。
当在Flash编程时还可以作为编程脉冲输出(
)。
一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。
但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。
·
:
程序存储允许时外部程序存储器的读选通信号。
当AT89C51执行外部程序存储器的指令时,每个机器周期
两次有效,除了当访问外部数据存储器时,
将跳过两个信号。
·
/VPP:
外部访问允许。
为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,
必须同GND相连接。
需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。
当执行内部编程指令时,
应该接到VCC端。
·XTAL1:
振荡器反相放大器以及内部时钟电路的输入端。
·XTAL2:
振荡器反相放大器的输出端。
·Vcc—电源电压输入端。
·GND—电源地。
4端口分配
P0口:
(1)作I/O口使用时,是一个准双向口,需要外加上拉电阻,特点是:
当某引脚由原来的输出变为输入时,用户应先向锁存器写“1”,以免错误读出引脚上的内容。
当复位时,口锁存器均自动置“1”,即输出驱动器(VT2)已截止,P0口作为输入口使用。
(2)作为地址/数据总线口使用时,是一个真正的双向口,不需要做任何的工作。
P1口:
是一个标准的准双向口,只能作为通用I/O口使用。
作为输出时无需外接上拉电阻;当其作为输入时,同样也需要先向其锁存器写“1”,使输出驱动截止,
P1口为输入端口。
可作为I/O口和高8位地址线A8~A15输出口。
P2口比P1口多了一个多路开关MUX,当P2口作为通用的I/O口使用时,硬件置开关NUX倒向锁存器的Q端是一个准双向口。
复位时,口锁存器均自动置“1”,即输出驱动器已截止,P2口可作为输入使用。
当开关NUX倒向地址端时,P2输出高8位段地址A8~A15,用于寻址外接的存储器和I/O口,这时不能再作为并行的I/O口使用。
P3口:
P3口是一个双功能口,分第一功能和第二功能。
当作为第一功能使用时,由内部硬件自动将第二功能输出线W置“1”,这时P3口作为通用I/O口,与P1口类似,是一个准双向口。
复位时,口锁存器均自动置“1”,即输出驱动器截止,P3口作为输入口使用
。
当作为第二功能使用时,P3口同时具有AT89C51的多种特殊功能,具体如表3.2所示:
表3.2P3口的第二功能
端口引脚
第二功能
引脚
P3.0
RXD(串行输入口)
10
P3.1
TXD(串行输出口)
11
P3.2
(外部中断0)
12
P3.3
(外部中断1)
13
P3.4
T0(定时器0)
14
P3.5
T1(定时器1)
15
P3.6
(外部数据存储器写脉冲)
16
P3.7
(外部数据存储器读脉冲)
17
复位电路
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。
复位后PC=0000H使单片机从第一个单元取指令。
在实际应用中,无论是在单片机刚开始接上电源时,还是在断电或者发生故障以后都要复位。
所以必须弄清楚MCS-51系列单片机的复位条件,复位电路的复位后状态,单片机的复位条件是在RST/UPD或RST端子上持续两个机器周期(即24个振荡周期)的高电平,如果时钟频率为12MHZ没个机器周期为1us,则只要2us以上的高电平时间就能复位。
当MCS-51系列单片机的复位端子RST两个机器周期以上的高电平时,单片机执行复位操作,完成对CPU的初始化处理,复位操作是整个应用系统运行前必须进行的一个环节。
但是如果RST持续为高电平,单片机就处于循环复位状态,无法执行用户的控制程序
。
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位
。
单片机系统的复位方式有:
手动/自动按钮复位和上电复位。
单片机采用上点自动复位电路,如下图所示,在通电的瞬间,由于电容两端电压不能突变,故在RST端的电位与Vcc相同;随后C通过R充电,充电电流逐渐减少,RST端的电位也逐渐下降,只要保证RST为高电平的时间大于两个机器周期,便能恢复正常。
按键电路
图3.9按键电路图
首先外部中断0出现低电平的时候,就产生一个中断0,可以通过中断0进行处理数据,而且必须外部中断0端子为高电平的时候才能恢复中断。
外部按键电路中R1为上拉电阻,起到限流的作用,那么当你按下触发时,单片机引脚得到低电平,定时器0开始工作,松开触发按键,外部中断0一直为低电平,直到再次手动按开触发器时,中断才完成,在此期间CPU一直杂不停的检测,检测到低电平时开始执行中断,检测到高电平时,中断结束,继续执行主程序.
电路图设计
图3.10硬件电路图
本设计要采用MCS-51系列单片机AT89C51为中心器件来设计交通灯控制器,来实现能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5s时黄灯闪烁警示(交通灯信号通过P1口输出,P3口为复位锁存器);若有紧急车辆通行则两路口均置红灯,保证车辆畅通!
本系统以8051单片机为核心,加上适当的驱动电路,数码管显示,红、黄、绿交通灯显示,在单片机计数器达到规定数值瞬间完成十字路口通行状态的转换.
软件设计
软件延时原理
MCS-51的工作频率为12MHZ,机器周期与主频率有关,机器周期是主频的1倍,所以一个机器周期的时间为12*(1/12MHZ)=1us。
我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1S的时间,但同时由于单片机的运行速度很快其他执行时间可以忽略不计。
五、程序设计
ORG0000H;
LJMPMAIN;转向主程序
ORG0003H
LJMPINTTO;转向紧急车辆终端中断服务程序
ORG0013H
主程序为:
MAIN:
MOVSP,#30H;设定堆栈指针
SETBPX0;置外部中断0为高优先级中断
MOVTCON,#00H;置外部中断0,1为电平触发
MOVTMOD,#10H;置定时器1为方式1
MOVIE,#85H;开CPU中断,开外中断0,1中断
LOOP:
MOVP1,#0F3H;A道绿灯放行,B道红灯禁止
MOVR1,#120;置0.5s循环次数(0.5*120=60s)
DIP1:
ACALLDELAY;调用0.5s延时子程序
DJNZR1,DIP1;60s不到继续循环
MOVR1,#06;置A绿灯闪烁循环次数
WAN1:
CPLP1.2;A绿灯闪烁
ACALLDELAY
DJNZR1,WAN1;闪烁次数未到继续循环
MOVP1,#0F5H;A黄灯警告,B红灯禁止
MOVR1,#04H;置0.5s循环次数(0.5*4=2s)
YL1:
ACALLDELAY
DJNZR1,YL1;2s未到继续循环
MOVP1,#0DEH;A红灯,B绿灯
MOVR1,#46H;置0.5s循环次数(0.5*70=35s)
DIP2:
ACALLDELAY
DJNZR1,DIP2;35s未到继续循环
MOVP1,#06H
WAN2:
CPLP1.5;A红灯闪烁
ACALLDELAY
DJNZR1,WAN2
MOVP1,#0EEH;A红灯,B黄灯
MOVR1,#04H
YL2:
ACALLDELAY
DJNZR1,YL2
AJMPLOOP;循环执行主程序
DELAY:
MOVR3,#0AH;0.5s子程序(50msX10=0.5s)
MOVTH1,#3CH;置50ms初值x=3CB0H
MOVTL1,#0B0H
SETBTR1;启动T1
LP1:
JBCTF1,LP2;查寻计数溢出
SJMPLP1
LP2:
MOVTH1,#3CH;置50ms初值x=3CB0H
MOVTL1,#0B0H
DJNZR3,LP1
RET
END
中断程序框图
中断子程序的主要任务是:
当有紧急车辆通过时,中断服务程序也需要保护现场,调用延时子程序和P1口,但是不需要关中断,因为其为高优先级中断,然后执行相应的中断服务,每0.5mS定时器中断发生,程序跳转到中断服务程序INTT0开始执行。
中断服务程序一次将定时器中断计数变量减1,当定时器中断中数值变量为0时,0.5S定时时间到,将位变量SECOND_FLAG置1。
定时器中断服务通过RETI指令返回,程序将跳转到中断前断点继续执行。
待交通信号出现后延时20s,确保紧急车辆通过交叉路口,然后恢复现场,返回继续执行主程序
图4.2中断程序框图
4.3.4中断子程序设计
INTT0:
PUSHP1;P1口数据压栈保护
PUSHTH1;TH1压栈保护
PUSHTL1;TL1压栈保护
MOVP1,#0F6H;A,B道均为红灯
MOVR2,#40;置0.5s循环初值(20s)
DEY0:
ACALLDELAY
DJNZR2,DEY0;20s未到继续循环
POPTL1;弹栈恢复现场
POPTH1
POPP1
RETI;返回主程序
技术总结
岁月如梭,光阴似箭。
转眼间一个星期的单片机设计即将结束。
在设计结尾之际,借此机会,我想在我做设计过程中给予我帮助的老师和同学们表示衷心的感谢!
首先要感谢我的指导老师——祁宇明老师。
在繁忙的事务中依然抽出时间在学习方法上和设计方面给予了大量的指导。
在此,我还要感谢帮助我的同学和室友们,在我做设计过程中,每当我遇到困难时,他们都会给予我热心的帮助,用友谊维系着寝室那份家的融洽。
我在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比我们人类成长的历程,常有一些不如薏,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定为我们而敲响。
同时也懂得一个道理:
认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
故一个小小的课程设计,对我们的作用是如此之大。
七、参考文献:
1、赵巍、冯娜主编《单片机基础及应用》,北京:
清华大学出版社,2009.8
2、杨居义主编《单片机课程设计指导》北京:
清华大学学研大厦A座,2009.9