单片机课程设计.docx
- 文档编号:29831700
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:24
- 大小:494.61KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
单片机课程设计
课程设计
设计题目:
基于51单片机的路灯定时控制系统的设计
学生姓名:
李静指导教师:
高峰
二级学院:
机电工程学院专 业:
电气工程及其自动化
班 级:
11电气
(1)班学 号:
**********
2.1设计方案说明2
2.2设计框图2
3.1AT89C51(CUP)3
3.274LS373(锁存器)4
3.38255A(可编程并行I/O接口芯片)5
3.4控制模块6
3.5交通灯显示模块7
3.6倒计时模块8
4.1交通灯显示9
4.2倒计时显示10
4.3主函数11
4.4中断延时函数12
五、课程设计体会14
5.1仿真调试14
5.2设计体会14
参考文献………………………………………………………………………15
附录1:
源程序16
摘要
本设计是关于单片机控制的交通灯模拟系统的设计。
主要内容有交通灯模拟系统设计方案,主要功能,各功能模块的介绍,电路设计,硬件部分设计,软件部分设计,模拟系统的仿真调试,设计方法以及课程设计的心得体会等等。
该设计中用光二极管来模拟信号灯,紧急车的优先通过请求信号由外部中断技术来模拟。
根据交通灯系统所需要实现的功能要求,先画出中断程序部分的流程图和主程序流程图,然后根据流程图写出其子程序。
从而通过模拟系统的仿真来实现该设计所要求的功能。
交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。
绿灯亮时,准许车辆通行,黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行。
关键词:
89C51芯片;交通灯;模拟系统;显示
一、概述
1.1课程设计的目的
1.让学生了解用单片机设计系统的流程以及其软硬件的设计方法
2.加强学生的编程能力,可以编写简单程序实现设计的要求
3.加强学生查阅资料,动手解决实际问题的能力
4.考察学生综合设计的能力,并以此加强对单片机这门课程的认识
1.2课程设计的要求
路灯定时控制系统的设计要求如下:
(1)系统功能:
利用单片机自身的定时计数器控制实时时间,通过程序设置,时间精度可以达到相关要求。
通过I/O口的按键可以调整实时时间,点亮路灯时间,熄灭路灯时间。
(2)给出系统设计方案,画出硬件连线图,并说明工作原理;
(3)画出程序框图并编写程序;
(4)软硬件联调,完成系统工作调试。
二、总体设计方案与说明
2.1设计方案说明
(1)通过8255A控制发光二极管,PB4-PB7对应黄灯,PA0-PA3对应红灯,PA4-PA7对应绿灯,以模拟交通路灯的管理。
(2)要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口l、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
延时一段时间后,l、3路口的绿灯熄灭,而l、3路口的黄灯开始闪烁,闪烁若干次以后,l、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到l、3路口方向,之后,重复上述过程。
(3)交通灯控制系统相当于一个复杂的时间定时器,指定的时间内执行相应的动作。
本程序设计中有几个要点:
A设计一个1s时钟,用于倒计时。
可通过定时器来实现,由于定时限制,我们可以设定定时时钟为50ms中断一次,然后用一个计数器计数20次,即50ms*20=1000ms=1s。
B由于实际应用中要求倒计时显示为十进制数,而在程序中处理的数据都为十六进制,因此在程序中要对显示缓冲区的数据进行十进制调整。
C本程序中最复杂的部分是在倒计时最后3秒时的绿灯与黄灯的切换,显示;以及东西、南北方向倒计时显示缓冲区在60S后初始互换。
2.2设计框图
三、系统硬件部分设计
3.1AT89C51(CUP)
图3-1AT89C51引脚图
89C51功能强大,如图所示,共有40个引脚,其中本次设计主要用到P0口、P1口、P2口以及外部中断引脚等等。
下面就对本次设计用到的定时器和中断功能进行介绍。
①一定时/计数器:
89C51单片机有两个16位定时器/计数器,利用51单片机本身的定时计数器来计数当前时间。
51单片机本身有定时计数器功能,本系统利用它本身的定时计数器0来控制当前时间。
定时器有四种工作模式:
M1
M0
工作模式
功能描述
0
0
模式0
13位计数器
0
1
模式1
16位计数器
1
0
模式2
自动再装入8位计数器
1
1
模式3
定时器0:
分成两个8位计数器
定时器1:
停止计数
本次设计才用模式1,十六位计数器,用到内部定时器0进行定时。
即内部程序TM0D=0x01,定时时间为:
t=(2^16-T0初值)×振荡周期×12
取T为0.5s,振荡周期频率为12MHz,计算得到初值为3CAF,即TH0=3C,TL0=AF。
②中断功能介绍:
所谓中断是指计算机在执行某一程序的过程中,由于计算机系统内部或外部的某种原因,CPU必须暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序,待处理结束之后,再回来继续执行被中止的程序的过程。
实现这种中断功能的硬件系统和软件系统统称为中断系统。
89C51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择
利用51单片机本身的两个外部中断来设置调节路灯的点亮时间和熄间,通过外部按键进入中断子程序,利用P2口的3个按键来改变路灯点亮与熄灭时间的时,分,秒。
用一个P3^5口的一个按键来出中断(时间设置完毕)。
利用P0口带上拉1K的电阻向八段共阴极码管输入段选码,利用P1的前面六个I/O口向六位数码管输入位选码。
51单片机的P0口当程序给其赋1的时候,I/O口显示的是高阻态而不是高电平。
另外单片机I/O口所能提供的电流只有几个毫安,不足以点亮八段数码管。
所以利用P0口的高阻态和上啦电阻,在端口赋1的时候,电流从单片机外部输入,通过单片机位选端口流出,直接点亮数码管。
利用P2^3,P2^4,P2^5的按键分别改变时间的秒,分,时。
利用51单片机本身的定时计数器来计数当前时间。
51单片机本身有定时计数器功能,本系统利用它本身的定时计数器0来控制当前时间。
3.274LS373(锁存器)
图3-274LS373引脚图
当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端LE为高电平时,输出Q0~Q7 状态与输入端D1~D7状态相同;当LE发生负的跳变时,输入端D0~D7 数据锁入Q0~Q7。
51单片机的ALE信号可以直接与74LS373的LE连接。
在MCS-51单片机系统中,常采用74LS373作为地址锁存器使用,其连接方法如上图所示。
其中输入端1D~8D接至单片机的P0口,输出端提供的是低8位地址,G端接至单片机的地址锁存允许信号ALE。
输出允许端OE接地,表示输出三态门一直打开。
1D~8D为8个输入端。
1Q~8Q为8个输出端。
G是数据锁存控制端;当G=1时,锁存器输出端同输入端;当G由“1”变为“0”时,数据输入锁存器中。
OE为输出允许端;当OE=“0”时,三态门打开;当OE=“1”时,三态门关闭,输出呈高阻状态。
(1).1脚是输出使能(OE),是低电平有效,当1脚是高电平时,不管输入3、4、7、8、13、14、17、18如何,也不管11脚(锁存控制端,G)如何,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈现高阻状态(或者叫浮空状态);
(2).当1脚是低电平时,只要11脚(锁存控制端,G)上出现一个下降沿,输出
2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈现输入脚3、4、7、8、13、14、17、18的状态. 锁存端LE 由高变低时,输出端8 位信息被锁存,直到LE 端再次有效。
当三态门使能信号OE为低电平时,三态门导通,允许Q0~Q7输出,OE为高电平时,输出悬空。
3.38255A(可编程并行I/O接口芯片)
图3-38255A引脚图
8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种:
方式0:
基本的输入输出方式,即无须联络就可以直接进行的I/O方式。
其中A、B、C口的高四位或低四位可分别设置成输入或输出。
方式1:
选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0。
方式2:
双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。
8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:
A组包括A口及C口高4位,B组包括B口及C组的低4位。
A口可以设置为方式0、方式1、方式2,B口与C口只能设置为方式0或方式1。
3.4控制模块
1、硬件需求
AT89C51(CUP)、74LS373(锁存器)、8255A(可编程并行I/O接口芯片)
2、电路设计
(1)时钟电路与复位电路内置,在Proteus中无需画出;
(2)AT89C51的P0口与锁存器D0口、8255A的D0(控制口)连接,扩展接口地址;
(3)锁存器/OE接地,LE接CPU的ALE,Q0、Q1、Q7接8255A的A0、A1、/CS,8255ARESET接CPU的RET,实现地址锁存;
(4)CPU的P1.0口控制显示器的高位,P1.1口控制显示器的低位;
(5)CPU的P2口控制显示器显示什么数字;
(6)8255A控制发光二极管,PB4-PB7对应黄灯,PA0-PA3对应红灯,PA4-PA7对应绿灯,以模拟交通路灯的管理
3、电路图
图3-4控制模块电路图
3.5交通灯显示模块
1、硬件需求
74SEG-MPX2-CA(两位LED数码管)
2、电路设计
数码管A~G、DP口接AT89S51的P2口;数码管1、2口接AT89S51的P1.0、P1.1。
3、电路效果
高电平控制灯亮,低电平灯灭。
4、电路图
图3-5交通灯显示模块电路图
3.6倒计时模块
1、硬件需求
TRAFFICLIGHTS(红、黄、绿交通灯)、RESPACK-8(排阻,8个电阻并联)
2、电路设计
(1)绿灯东西南北连接PA7~PA4,红灯东西南北连接PA3~PA0,黄灯东西南北连接PB7~PB4;
(2)排阻RP1的2~5接PB4~PB7,1接电源;
(3)排阻RP2的2~9接PA0~PA7,1接电源;
3、电路效果
(1)高低位数码管控制高电平有效,低电平无效;
(2)采用共阳极数码管显示。
4、电路图
图3-6倒计时模块电路图
四、系统软件部分设计
4.1交通灯显示
1、要求
设有一个十字路口l、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
延时一段时间后,l、3路口的绿灯熄灭,而l、3路口的黄灯开始闪烁,闪烁若干次以后,l、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到l、3路口方向,之后,重复上述过程。
2、控制时序图
图4-1控制时序图
3、设计方案
8255A控制发光二极管,PB4-PB7对应黄灯,PA0-PA3对应红灯,PA4-PA7对应绿灯;定时取反,可达到闪烁效果,本设计使用异或实现。
4、交通灯显示流程图
5、代码
见附录1。
4.2倒计时显示
1、要求
根据交通灯亮、灭规律同步显示出倒计时间。
2、设计方案
第一步,设置数count,显示高位延时显示低位,按此循环显示;只要延时不超过1/20秒,人眼就能观察到两个数码管同步显示两位数;
第二步,延时的时长达到1秒时,数count减1,循环显示count直至减到零再重新赋值。
3、倒计时显示流程图
4、代码
见附录1。
4.3主函数
1、要求
主函数的任务首先是进行初始化,然后根据“编程/运行”开关的状态判别,进入“编程状态”或“运行状态”。
2、初始化的工作
(1)对一些状态标志、变量赋初值;
(2)初始化8255A芯片;
(3)初始化定时计数器,并设置定时计数器0。
3、函数实现
voidmain(){//主函数
flag=0;
count=60;//初始化显示为10
state=0;
CON=0x88;//初始化8255A
TMOD=0x01;//定时器0,工作方式1
IE=0x82;//允许定时器0中断
TR0=1;//启动定时器0
while
(1){
Traffic_led();//执行交通灯状态函数
}
}
4.4中断延时函数
1、中断函数
(1)设计方案
通过定时器来实现,由于定时限制,我们可以设定定时时钟为50ms中断一次,然后用一个计数器计数20次,即50ms*20=1000ms=1s。
(2)函数实现
voidtime_interupt()interrupt1{//中断函数,定时1s
TH0=(65536-50000)/256;//重新赋给定时器初值50MS
TL0=(65536-50000)%256;
if(++flag==20){//定时1S到
flag=0;
--count;//显示的数减1
if(count==0)//当显示的数减到0
count=60;//转到显示10
}
}
2、延时函数
(1)设计方案
采用无返回值的循环函数。
(2)函数实现
voidDelay(uintt_ms){//延时t_ms
uinti,j;
for(i=0;i for(j=0;j<120;j++); } 五、课程设计体会 5.1仿真调试 进入仿真环境,在KeiluVision4中,通过[Debug]菜单[Star/StopDebugSession]或点击或直接按ctrl+F5可以启动仿真界面,调试器会载入应用程序并执行启动代码。 5.2设计体会 通过本次课程设计,让我对单片机这么课程有了更加深刻的了解,并且通过自己查资料设计一个路灯控制系统,提高了自己的自学能力,收集资料的能力以及编程的能力。 在设计过程中,了解了很多元器件的功能,并且对于其在电路中的使用有了更多的认识。 在设计的过程中遇到问题,可以说得是困难重重,同时也在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 通过这次课程设计,加强了我的动手、思考和分析解决问题的能力。 在整个设计过程中,我们按照老师给出的总体方案设计了一套电路原理和电路连接图。 通过查阅各方面资料我们编写了程序代码,并通过了调试,最终证实了该系统方案确实可行。 这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能够真正掌握理论知识,从而提高自己的实际动手能力和独立思考的能力。 参考文献 1、李朝青.单片机原理及接口技术[M].北京: 航空航天大学业出版社,2005 附录1: 源程序 //文件名: trafficlight.c #include #include #defineucharunsignedchar//定义无符号字符变量 #defineuintunsignedint//定义无符号整型变量 ucharcodeseg7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极数码显示0-9对应的字型码 ucharflag,count; //uchark; ucharstate;//控制交通灯状态的切换 #defineCONXBYTE[0xFF2B]//8255A的控制口 #definePAXBYTE[0xFF28]//8255A的A口 #definePBXBYTE[0xFF29]//8255A的B口 #definePCXBYTE[0xFF2A]//8255A的C口 /*PB4-PB7对应北南西东黄灯 PA0-PA3对应北南西东红灯 PA4-PA7对应北南西东绿灯 */ sbitS0=P1^0;//控制东西南北方向显示的高位 sbitS1=P1^1;//控制东西南北方向显示的低位 voidDelay(uintt_ms){//延时t_ms uinti,j; for(i=0;i for(j=0;j<120;j++); } voidTime_show(){//LED数码管显示时间 if(count>=0){ S0=1; S1=0; P2=seg7[count/10];//显示高位 Delay(45);//延时 S0=0; S1=1; P2=seg7[count%10];//显示低位 Delay(45); } } voidTraffic_led(){//交通灯状态函数 switch(state){ case0: {//东南西北红灯亮2s while(count>57){ PB=0x00; PA=0x0f; Time_show(); } state=1; break; } case1: {//东西红灯亮;南北绿灯亮8s while(count>3){ PB=0x00; PA=0x3c; Time_show(); } state=2; break; } case2: {//东西红灯亮;南北黄灯闪烁2s while(count<=3){ PA=0x0c;//关闭南北绿灯 PB=PB^0x30;//南北黄灯闪烁 //Delay(5);//显示器闪烁效果 //for(k=0;k<10;k++) Time_show(); } state=3; break; } case3: {//东西绿灯亮8s,南北红灯亮 while(count>3){ PB=0x00; PA=0xc3; Time_show(); } state=4; break; } case4: {//东西黄灯闪烁2s,南北红灯亮 while(count<=3){ PA=0x03;//关闭东西绿灯 PB=PB^0xc0;//东西黄灯闪烁 //Delay(5); //for(k=0;k<10;k++) Time_show(); } state=1; break; } } } voidmain(){//主函数 flag=0; count=60;//初始化显示为10 state=0; CON=0x88;//初始化8255A TMOD=0x01;//定时器0,工作方式1 IE=0x82;//允许定时器0中断 TR0=1;//启动定时器0 while (1){ Traffic_led();//执行交通灯状态函数 } } voidtime_interupt()interrupt1{//中断函数,定时1s TH0=(65536-50000)/256;//重新赋给定时器初值50MS TL0=(65536-50000)%256; if(++flag==20){//定时1S到 flag=0; --count;//显示的数减1 if(count==0)//当显示的数减到0 count=60;//转到显示10 } } 附录2: 电路原理图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计