《单片机课程设计报告基于AT89C51单片机的流水灯.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告基于AT89C51单片机的流水灯.doc(20页珍藏版)》请在三一办公上搜索。
1、 单片机设计报告学生姓名学 号教学院系电气信息工程学院专业年级指导教师李杰完成日期2011年6月21日目录目录0第一章 基础设计报告11.1 设计任务及功能11.2控制流程图11.3 硬件设计仿真图21.4 建立流水灯工程21.5 运行及调试5第二章 提高设计报告62.1 设计任务及功能62.1.1设计任务62.1.2该系统实现的具体功能62.2 I/O口功能收集及表单汇总62.3系统流程框72.4 创建新工程82.4.1.启动Keil uVision4,新建工程82.4.2. 启动Proteus7.5,新建工程82.5系统方案及硬件设计92.5.1系统方案的确定92.5.2显示部分电路设计9
2、2.5.3时钟部分电路设计92.5.4复位电路设计102.6软件设计102.6.1应用系统软件设计要求102.6.2应用系统软件设计112.6.3延时程序模块的设计112.7 Proteus软件仿真122.7.1仿真开发系统的功能122.7.2 Proteus软件系统仿真122.7.3 具体仿真结果显示122.8 运行程序15第三章 提高设计报告任务说明书173.1 小组成员及学号173.2 本人工作任务详细说明18第四章 实习心得18参考文献:18第一章 基础设计报告设计题目1:基于AT89C51单片机的流水灯1.1 设计任务及功能1) 用AT89C51单片机设计一组由二极管组成的流水灯,并
3、编写程序使发光二极管依次点亮。2) 用Protues设计、仿真以AT89C51为核心发光二极管流水灯实验装置。3) 掌握发光二极管的控制方法。1.2控制流程图开始P0口初值亮第一个灯延时P0口左移一位逐次点亮结束图1-2流水灯程序控制流程图1.3 硬件设计仿真图图1-3 Proteus7.5仿真流水灯图1.4 建立流水灯工程1) 打开Keil程序,选择工程菜单。图1-4-1 Keil程序2) 选择新建uVision工程,保存为工程名称。图1-4-2 新建uVision工程3) 选择Atmel公司的AT89C51设备。图1-4-3 选择AT89C51设备4) 添加程序文本。图1-4-4 添加程序
4、文本5) 编译程序之前,在闪存菜单设置选项中选择输出选项,在产生HEX文件前打钩即可。图1-4-5 产生HEX文件1.5 运行及调试编程程序: #include #include #define uchar unsigned char #define uint unsigned int void delayms(uint xms); uchar a; void main() a=0xfe; while(1) P0=a; delayms(200); a=_crol_(a,1); void delayms(uint xms) uint i,j; for(i=xms;i0;i-) for(j=110
5、;j0;j-); 调试与运行:进入调试运行阶段。会看到LED灯逐个点亮。保存运行画面。图1-4-5 运行界面图第二章 提高设计报告设计题目2:基于AT89C51单片机的交通灯系统2.1 设计任务及功能2.1.1设计任务运用单片机原理及应用、C语言的相关知识,设计简易交通灯控制系统。要求该系统能形象地反映出十字路口简易交通灯控制系统的工艺流程,并同时具有显示通车倒计时,修改道路通车时间,单向控制通车及显示通车道路等功能。2.1.2该系统实现的具体功能1) 东西方向(1路)车道和南北方向(2路)车道两条交叉路上的车辆交替运行,每次通行30秒。2)在倒计时最后5秒内,亮着的灯不停闪烁,提示即将变换车
6、道。直到倒计时为0变换车道。3) 可以通过按键选择进入调时系统,进入调时系统后,加减通行时间。4) 一车道有紧急车辆通过时(或车流量大时),手动控制该车道持续通行。5)当退出手动控制后,交通灯恢复原来运行状态。2.2 I/O口功能收集及表单汇总经过初步设计,制作设计表单如下:表2-2-1 显示画面设计数码管显示通车倒计时显示通车路段二极管红色二极管亮表示禁止通行绿色二极管亮表示可以通行二极管闪烁表示即将更换通行车道表2-2-2 总体设计需要设备类别配置情况硬件PC机软件Keil uVision4 Proteus7.5表2-2-3 AT89C51I/O口引脚使用情况序号I/O位号名称说明I/O类
7、型1P1、P2口数码管数据口输出2P0_0-P0_3二极管数据口输出3P0_4、P0_5数码管片选口输出4P3_0-P3_5按键接口输入2.3系统流程框数据信号交通灯振荡电 路AT89C51段码LED数码管上电复位电 路调时电 路片选按键输入图2-3简易交通灯系统流程图2.4 创建新工程2.4.1.启动Keil uVision4,新建工程图2-4-1 Keil uVision4新建工程图2.4.2. 启动Proteus7.5,新建工程图2-4-2 Proteus7.5新建工程图2.5系统方案及硬件设计2.5.1系统方案的确定 交通灯在安全行车过程中起着十分重要的作用,现在交通灯一般设在十字路口
8、,在醒目位置用红、黄、绿三种颜色的指示灯(本次实验只用了红、绿两种灯),加上一个倒计时的显示计时器来控制行车,对于一般情况下的安全行车、车辆分流发挥着重要作用,但根据实际行车过程中出现的情况,如何全面有效地利用交通灯指示交通情况,我们尝试用单片机来控制交通灯,在软、硬件方面采取一些改进措施,使交通灯在控制中灵活而有效。 硬件系统是指构成单片机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输出接口电路、输入设备和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控制对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控制对象等硬件和软件,才能构成一个
9、单片机应用系统。该交通灯模拟系统的硬件部分主要由键盘、显示和运算部分组成。按照设计要求,在本设计中使用LED数码管显示和扩展按键。在该交通灯系统的设计中采用AT89C51单片机。2.5.2显示部分电路设计 本次设计采用动态显示方式,选亮数码管采用静态扫描显示。送人一次字型码显示字型一直保持,直到送入新字型码为止。这种方法的优点是占用CPU时间少,显示便于监控和检测。各数码管在显示过程中持续得到显示信号,与各数码管接口的I/O口是专用的。本设计采用P1口和P2口作为数码管数据输出口,P0_4与P0_5作为数码管片选端。 本设计采用如下图所示数码管,表示通车剩余时间。A到G为码段控制口,WE1和W
10、E2为片选端口。图2-5-1 数码显示管2.5.3时钟部分电路设计 时钟电路用于产生51单片机工作时所必须的时钟控制信号。其内部电路在时钟信号控制下,严格地按时序执行指令进行工作。在执行指令时,CPU首先要到程序存储器中取出要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定操作。 本设计采用11.0592MHz晶振和两个30Pf电容,他们构成一个稳定的自激振荡器。该电容的大小影响振荡器频率的高低、振荡器的稳定性和起振的快速性。 为单片机提供标准时钟,其中两个电容起微调作用。如下图所示: 图2-5-2 时钟电路2.5.4复位电路设计 复位引脚RST通过一个斯密特触发器与
11、复位电路相连,斯密特触发器用来控制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。 复位电路通常采用上电复位和按钮复位两种。本设计采用上电复位,复位电容采用10uF,电阻1000欧。加电瞬间,RES管脚为高电平。通过电阻回路放电。如下图所示:图2-5-2 复位电路2.6软件设计2.6.1应用系统软件设计要求 在进行应用系统的总体设计时,软件设计与硬件设计应统一考虑,结合并进。当系统的电路设计定型后,软件设计的任务也就明确了。一般来说,软件的功能可分为两大类。一类是执行软件,它能完成各种实质性的功能,如测量计算、显示、打印、输出控制
12、等;另一类是监控软件,它是专门用来协调各执行模块和操作者得关系,在系统软件中充当组织协调角色。我们设计时,从以下几个方面考虑:1)根据软件功能的要求,将系统软件分为若干个相对独立的部分。设计出合理的软件总体结构,使其清晰、简捷、流程合理。2)各功能程序实行模块化,子程序化。3)在编写应用软件之前,应绘制出程序流程图。4)合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等。2.6.2应用系统软件设计 主程序流程图如下图所示:开始1路放行1路绿灯亮,2路红灯亮1路红灯亮,2路绿灯亮延时25秒亮着的灯闪烁5秒紧急车通过1路 结束YNYN图2-6 交通灯中断控制程序流程图 2.6.3延时程
13、序模块的设计 延时程序模块是要生成一定的时间延时,这在数码管显示模块中会用到延迟程序,以满足数码管闪烁时能产生视觉效果。2.7 Proteus软件仿真2.7.1仿真开发系统的功能一个单片机系统经过总体设计,完成了硬件和软件开发。元件安装后在系统存储器中放入编制好的应用程序,系统即可运行。一般来说,仿真开发系统应具有如下的功能:1) 用户样机硬件电路的诊断与检查;2) 用户样机程序的输入与修改;3)程序的运行、调试、排错、状态查询功能;4)将程序固化到EPROM芯片中。2.7.2 Proteus软件系统仿真 如下图所示本设计硬件连接,在1路和2路的十字路口有红、绿两种交通灯,1路上的两组同色灯连
14、在一起,2路也是互连,P3_0到P3_5为按键控制,紧急车请求通过或延长(减短)某路放行时间时由人工控制,以中断方式输入单片机。图2.7.1 Proteus7.5设计好的交通灯图2.7.3 具体仿真结果显示根据功能要求分别仿真各种情况下的亮灯情况,具体如下:如下图仿真图所示,正常情况下南北方向亮红灯,东西方向亮红灯。即1路放行,2路禁行(数码管显示为剩余放行时间):图2.7.2 1路放行,2路禁行如下图仿真图所示,正常情况下东西方向亮红灯,南北方向亮红灯。即2路放行,1路禁行(数码管显示为剩余放行时间):图2.7.3 2路放行,1路禁行当1路有紧急车需要通行时,人工设置(进入菜单后,按“1路通
15、”)1路通行(1路绿灯亮,2路红灯亮)数码管显示“1”,如下图所示:图2.7.4 1路有紧急车通过时(1路放行,2路禁行)当2路有紧急车需要通行时,人工设置(进入菜单后,按“2路通”)2路通行(2路绿灯亮,1路红灯亮)数码管显示“2”,如下图所示:图2.7.5 2路有紧急车通过时(2路放行,1路禁行)当倒计时为5秒时,亮着的灯开始闪烁,由于闪烁时截图无法体现,所以此处就省略截图。2.8 运行程序#include#include#define uint unsigned intvoid led_display(int L2,int L1);void display(int number);voi
16、d xiangling();uint anjian();void tiaoshi();void delay(t);char c10=0x3f,0x06,0x5b,0x4f,0x66,0X6d,0X7d,0X07,0X7f,0X6f;int m=30;char coun;char flag=0;void time(void) interrupt 1 uint recieve;recieve=anjian();if(recieve=3) tiaoshi(); TH0=0X3C;TL0=0XB0;coun+;if(coun=20)coun=0;if(m=0) m=31; flag+; m-;void
17、 main() P0_4=0; P0_5=0; P3_0=1; P3_1=1; P3_2=1; P3_3=1; P3_4=1; P3_5=1; TMOD=0X01; IE=0X82; IP=0X02; TR0=1; TH0=0X3C; TL0=0XB0;while(1) display(m);if(flag%2=0) P0_2=0; P0_0=0; P0_1=1; P0_3=1; delay(100); if(m=5) P0_2=1;P0_0=1;P0_1=1; P0_3=1; /东西通车,南北停止 if(flag%2) P0_2=1;P0_0=1;P0_1=0; P0_3=0; delay(
18、100); if(m0;a-) for(b=110;b0;b-); /-按键判断- uint anjian() uint temp=0; if(P3_0=0) temp=1; delay(200); else if(P3_1=0) temp=2; delay(200); else if(P3_2=0) temp=3; delay(200); else if(P3_3=0) temp=4;delay(200); else if(P3_4=0) temp=5;delay(200); else if(P3_5=0) temp=6; delay(200); return temp; /-调时或某路一直
19、通车- void tiaoshi() uint recieve; display(0); recieve=anjian(); while(recieve!=4) recieve=anjian(); if(recieve=1) m+; display(m); else if(recieve=2) m-; display(m); else if(recieve=5) P0_2=0;P0_0=0;P0_1=1;P0_3=1; display(1); else if(recieve=6) P0_2=1; P0_0=1; P0_1=0; P0_3=0;display(2); 第三章 提高设计报告任务说明
20、书3.1 小组成员及学号姓名学号钟超亮0807040130刘 聪08070401233.2 本人工作任务详细说明在本次设计中,我们小组每人都做了一分设计,硬件设计部分,两人合作完成,软件编程,各写一份,设计报告按照自己设计方案各写一份。1.根据选题基于51单片机的流水灯和简易交通灯设计在网上查找资料。网络的发达使我们找到了很多资料。我们在找到的资料中层层筛选终于找到了我们需要的资料。从查到的资料中我们一起分析交通灯和流水灯系统的原理和各个部分组成模块,为我们的设计打下基础,确定了我们的设计方向和方法。并确定了硬件系统结构、软件编程大体结构。我们综合考略了各方面因素,最终确定了设计的具体方案。2
21、. 根据网上查到的硬件图和程序流程图, 我们分步设计出适合我们所绘制硬件仿真图的软件流程图,再根据流程编写相应C语言程序(操作电脑画图由刘聪完成,我再加以修改,程序方案我们每人都写了一份)。3.设计完成后,写设计报告。我们各自按照自己的设计方案写出设计报告。第四章 实习心得这次课程设计经过一周的反复琢磨与修改,终于完成了。从查资料,整理资料到在Proteus上画仿真图,读程序,写程序,改程序,仿真直至通过老师的验收,一切都充满了刻苦与艰辛,期间充满了挫折可是又伴随着欢乐。令我感触最深的就是同学们的倾心帮助,由于我的单片机原理与应用技术学的并不是很好,所以对某些知识点不是很清楚,可是同学们总是不
22、厌其烦的给我一遍又一遍地讲解,直到我弄清楚为止!他们的知识阅历令我大开眼界,他们的无私精神更令我感动不已!另外,在重复修改与设计过程中,我又重新把单片机原理与应用技术这本书仔细的看了一下,弄懂了一些以前一知半解的东西,进一步加强和巩固了我的理论知识。在此次课程设计过程中,我把单片机的理论知识用于实践中,使理论与实际相结合,使我的理论知识得到了巩固,在查资料翻阅资料的过程中也丰富了我的知识阅历。参考文献:1李建中.单片机原理及应用(第二版)M:西安电子科技大学出版社,20072康华光.电子技术基础模拟部分(第五版)M:高等教育出版社,20053黄迪明.C语言程序设计教程 (第一版)M:国防工业出版社,2007