课程设计基于51单片机方向之星控制.docx
- 文档编号:18623147
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:16
- 大小:77.30KB
课程设计基于51单片机方向之星控制.docx
《课程设计基于51单片机方向之星控制.docx》由会员分享,可在线阅读,更多相关《课程设计基于51单片机方向之星控制.docx(16页珍藏版)》请在冰点文库上搜索。
课程设计基于51单片机方向之星控制
xxxxxx大学
课程设计报告
课程设计名称:
单片机系统综合课程设计
课程设计题目:
基于51单片机的方向之星控制
院(系):
专业:
班级:
学号:
姓名:
指导教师:
完成日期:
目录
第1章总体设计方案1
1.1课程设计的内容和要求1
1.2课程设计思路1
1.2.1提出方案1
1.2.2方案阐述2
1.3实验环境2
第2章详细设计方案3
2.1实现方法3
2.2主程序设计3
2.3功能模块的设计与实现5
第3章结果测试及分析6
3.1结果测试6
3.2结果分析6
参考文献7
附录A(源程序)8
附录B(电路图)14
附录C(器件清单)15
第1章总体设计方案
1.1课程设计的内容和要求
(1).程设计内容:
设计程序控制一组灯饰,用于提示汽车的左转弯、右转弯、刹车等行车情况,具体内容如下:
①尾部左右各有3个指示灯,可用单色灯指示;
②常行使时指示灯全灭;右转弯时,右侧3个指示灯按右循环依次点亮(持续编10秒);左转弯时,左侧3个指示灯按左循环依次点亮(持续10秒);临时刹车时,所有指示灯闪烁(亮0、5秒,灭0、5秒,持续10秒);
③置功能键(如:
启动、停止及左右转弯按键等),自行设计方案演示清晰直观,要有计时显示部分。
(2).设计要求:
①立完成课程设计任务;
②过老师现场验收;
③出完整的课程设计报告。
1.2课程设计思路
1.2.1提出方案
在设计要求中为实现对6个指示灯状态的控制有4种情况,在此使用80C31芯片的P1口输出来控制各灯的具体动作。
其中P1.0-P1.2控制左边三个指示灯,P1.3-P1.5控制右边三个指示灯。
为便于控制状态的输入,使用P3口的P3.0-P3.3来控制输入的四种情况。
在汽车左转、右转、刹车中要计时10s,使用计数器0控制计时,并实现亮0、5秒,灭0、5秒,持续10秒的效果。
采用数码管显示倒计时10s。
1.2.2方案阐述
采用P1口输出实现指示灯闪烁控制部分。
左转时给P1.0-P1.2口送入键值,通过调用延时程序使左边三个灯循环闪亮,并启动计时器开始计时10秒。
右转同理,给P1.3-P1.5口实现循环方向相反。
刹车时P1口依次送值,以使所有指示灯闪烁。
计时部分,计数器0由20次作为一次计数的次数,0.5秒单独控制灯闪烁,两者互不干扰且又不矛盾,灯的闪烁准确定在10秒。
在数码管显示计时时,每1秒显示一个计数,这样显示计时部分只要设置好控制字,就可以正确显示计数数字。
1.3实验环境
·硬件环境:
LAB6000实验箱,PC机。
·软件环境:
wave应用软件
第2章详细设计方案
2.1实现方法
电路由80C31芯片、P1口和P3口、开关键及LED灯和可编程键盘显示部分构成。
开关和功能键的对应功能如下表:
驾驶员操作
K0
K1
K2
K3
启动
1
0
0
0
刹车
1
1
0
0
左转弯
1
0
1
0
右转弯
1
0
0
1
表2.1开关和功能键功能表
80C31是可编程并行接口芯片,设计要求中要实现控制左右共6个指示灯闪烁,在此使用P1口输出控制各灯的具体动作,P3口控制四种情况的输入。
定时器/计数器,用来产生两个不同的表现方法,一个为0.5秒,控制指示灯计时;一个为10秒,控制一次循环的时间。
键盘显示接口芯片,用来显示10秒的倒计时,实现对左转、右转和刹车等五项功能的计数显示。
2.2主程序设计
根据设计要求,设置左转、右转和临时刹车4个功能键:
(1)1键表示汽车启动,启动时,所有灯亮0.5秒后熄灭进入等待状态。
(2)2键表示汽车刹车,当刹车时,所有灯开始闪烁,亮0.5秒,灭0.5秒,数码管显示计时,当由0秒到9秒时,停止计时并且指示灯全灭;
(3)3键表示汽车左转,左转时,左边三个指示灯依次左循环点亮,数码管显示计时,当由0秒到9秒时,停止计时并且指示灯全灭;
(4)4键表示汽车右转,右转时,右边三个指示灯依次右循环点亮,数码管显示计时,当由0秒到9秒时,停止计时并且指示灯全灭;
主程序流程图如图2.1所示:
图2.1主程序流程图
2.3功能模块的设计与实现
(1)芯片初始化模块的设计与实现
对80C31芯片的初始化,将P1口输出实现指示灯闪烁控制部分。
左转时给P1.0-P1.2口送入键值,通过调用延时程序使左边三个灯循环闪亮,并启动计时器开始计时10秒。
右转同理,给P1.3-P1.5口实现循环方向相反。
刹车时P1口依次送值,以使所有指示灯闪烁,并使用P3口的P3.0-P3.3来控制输入的四种情况。
同时给计数器赋初值实现0.5秒闪烁,10秒定时的功能。
(2)左转功能的实现
在左转子程序中计数10秒。
每执行一次中断子程序即计时到1秒,数码管计数加1,直到等于9时停止计数,关中断。
同时,再开中断的这段时间,控制P1口输出实现左侧3个指示灯按左循环依次点亮。
退出子程序前,所有指示灯熄灭,数码管显示0,将系统置成正常行驶状态。
(3)右转功能的实现
在右转子程序中计数10秒。
每执行一次中断子程序即计时到1秒,数码管计数加1,直到等于9时停止计数,关中断。
同时,再开中断的这段时间,控制P1口输出实现右侧3个指示灯按右循环依次点亮。
退出子程序前,所有指示灯熄灭,数码管显示0,将系统置成正常行驶状态。
(4)刹车功能的实现
在刹车子程序中计数10秒。
开启中断后,每执行1秒计时中断一次,数码管计数加1,所有指示灯同时在这1s中亮0.5秒,灭0.5秒,直到等于9时停止计时,关中断。
同时,在开中断的这段时间,控制P1口输出指示灯闪亮(亮0.5s,灭0.5s)。
退出子程序前,所有指示灯熄灭,数码管显示0,将系统置成正常行驶状态。
第3章结果测试及分析
3.1结果测试
程序在wave应用软件编译完成加载到实验箱全速运行后,数码管显示剩余计数为0,指示灯全部熄灭;打开1键,所有指示灯按照亮0.5s熄灭进入就绪等待状态。
打开2键,所有指示灯按照亮0.5s灭0.5s闪烁,同时数码管开始倒计时10秒。
打开3键,左侧3个指示灯按左循环依次点亮,同时数码管开始倒计时10秒;打开4键,右侧3个指示灯按右循环依次点亮,同时数码管开始倒计时10秒;
3.2结果分析
对于上述的测试结果和运行过程,达到了课程设计任务书中的要求,可以实现汽车启动、左转、右转、刹车和停止等五项功能,通过优化后使得运行结果也更直观易懂。
不过在设计中,由于个人能力有限,也难免存在不足,代码部分也不是最优,部分代码有待改进。
参考文献
[1]马家辰.CS-51单片及原理及接口技术[M].哈尔滨工业大学出版社,2003
[2]赫建国.单片机在电子电路设计中的应用[M].清华大学出版社,2006
[3]杨素行.微型计算机系统原理及应用[M].清华大学出版社,1996
[4]洪永强.微机原理与接口[M].科学出版社,2004
[5]付家才.单片机控制工程实践技术[M].北京化学工业出版社,2004
[6]刘瑞新.单片机原理及应用教程[M].北京机械工业出版社,2005
[7]刘峥.LED技术及其在车灯系统中的应用[M].上海汽车出版社,2009
附录A(源程序)
源程序:
#include
xdataunsignedcharOUTBIT_at_0X8002;
xdataunsignedcharOUTSEG_at_0X8004;
chartabseg[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
charsec=0;
intflag=0;
voidStart(void);
voidStop(void);
voidLeft(void);
voidRight(void);
inti=0,j=0,k=0;
voiddelay(intr)
{
intk,s;
for(k=0;k for(s=0;s<=1000;s++); } //**********数码管显示子函数********** voidPrint(inta,intb) { OUTBIT=a; OUTSEG=tabseg[b]; delay (1); } voidTimer0(void)interrupt1 { TH0=0X3C; TL0=0XB0; i++; } voidmain(void) { unsignedcharKEY; TMOD=0X01; TH0=0X3C; TL0=0XB0; P1=0X00; EA=1; ET0=1; while (1) { P3=0XFF; KEY=P3&0X0F; switch(KEY) { case0X01: Start(); break; case0X05: Stop(); break; case0X03: Left(); break; case0X09: Right(); break; default: break; } } } voidStart(void) { if(flag==0) {P1=0XFF; flag=1; } else {delay(50); P1=0X00; } } voidStop(void) { TR0=1; P1=0XFF; while(j! =20) { if(i==5) { i=0; k++; j++; P1=~P1; } if(k==2) { k=0; sec++; } Print(1,sec%10); Print(2,sec/10); } j=0; TR0=0; sec=0; } voidLeft(void)//左转 { TR0=1; P1=0X01; while(j! =20) { if(i==5) {i=0; k++; j++; P1=P1<<1; } if(k==2) { sec++; k=0; } Print(1,sec%10); Print(2,sec/10); if(P1>=0X08) P1=0X01; } TR0=0; j=0; sec=0; } voidRight(void)//右转. { TR0=1; P1=0X20; while(j! =20) { if(i==5) { i=0; j++; k++; P1=P1>>1; } if(k==2) { k=0; sec++; } Print(1,sec%10); Print(2,sec/10); if(P1<=0X04) P1=0X20; } sec=0; TR0=0; j=0; } 附录B(电路图) 附录C(器件清单) 课程设计总结: 通过这次课程设计我们对于单片机应用有了更深的了解,单片机应用技术发展迅速,有着广阔的应用前景,涉及面广,内容丰富,它用软件的方法设计硬件;用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;在设计过程中可用有关软件进行各种仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上,体积小,功率低,可靠性高。 其技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方法,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑综合及优化,逻辑布局布线,逻辑仿真,直至特定目标芯片的适配便宜,逻辑映射,编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。 此次课程设计不但提高了我们实践的能力和理论水平,而且对于我们认识掌握各种操作技巧具有重大意义,使我们的综合素质得到了很大的提高! 指导教师评语: 指导教师(签字): 年月日 课程设计成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 基于 51 单片机 方向 控制
![提示](https://static.bingdoc.com/images/bang_tan.gif)