单片机硬件实习报告格式电子122

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

序号: 20

学号: 12446220

C

H

A

N

G Z H O

U U N I V E R

S

I

T

Y

实习报告

实习课程名称:单片机硬件实习

学生姓名:思佳

学院:信息科学与工程学院专业班级:电子122 校指导教师:兵专业技术职务:副教授

实习地点:大学文约楼单片机实验室

实习时间:2015 年6 月29 日 2015 年7 月10 日

一、实习题目

交通灯控制设计

二、实习目的

本次实习的目的在于加深对MCS-51单片机的理解,初步掌握单片机应用系统的设计方法;掌握常用接口芯片的正确使用方法;强化单片机应用电路的设计与分析能力;提高学生在单片机应用方面的实践技能;培育学生综合运用理论知识解决问题的能力,力现理论结合实际,学以至用的原则

三、实习任务及容

设计容:

利用双色LED显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。4位LED数码管显示时间,双显示红绿灯状态。熟悉交通信号灯控制逻辑。设计一个十字路口的交通灯色LED灯控制电路,要求南北方向和东西方向两个交叉路口的车辆交替运行。每次绿灯变红灯时,要求黄灯先亮3S,才能变换

运行车辆。东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用数码管显示器进行显示(采用倒计时的方法)。考虑到特殊车辆情况,设置紧急转换开头。

设计目标:

1.进一步掌握键盘显示电路的编程方法。

2.进一步掌握定时器和中断的使用和编程方法。

四、电路图设计

1、数码管显示部分

采用四位一体共阴数码管,分别显示西和北的剩余时间,A到G 为码段控制端口,1到4为片选端口。数码段显示部分通过74LS245接单片机管脚的P0口,片选部分由P2.0到P2.1提供,具体的共阴数码管见图。其中P2.1控制北边和西边剩余时间的十位数的显示;P2.0控制北边和西边剩余时间的个位数的显示。

2晶体管显示部分

由于对称性,设计时只设计了西北两个方向。由红黄绿按要求显示。用P1端口作为输出端口,用P1.2到P1.7端口分别控制西和北两组灯的状态,低电平点亮,具体端口功能如下:

P1.2控制北边红灯的亮灭;

P1.3控制北边黄灯的亮灭;

P1.4控制北边绿灯的亮灭;

P1.5控制东边红灯的亮灭;

P1.6控制东边黄灯的亮灭;

P1.7 控制东边绿灯的亮灭。

五、设计方案

六、硬件电路设计

单片机实验箱实际电路运行情况:

状态1

状态2

状态3

状态4

中断状态七、系统调试

首先,我们想实现的功能是红绿黄灯交替,采用mcs-51单片机的功能,由于汇编语言较为复杂,所以我们采用了较为简单的C语言来编程,红绿黄灯的变化也较为简单,所以就很快就实现了功能,但是我们发现在实际情况中,红灯到绿灯的过程中是不需要经过黄灯的,这就要求红灯和绿灯计时时间分开,红灯和绿灯发生变化是倒计时到0时,自动跳转的,所以我们将绿灯的计时提前3s进入0,然后进入黄灯倒计时,在黄灯倒计时结束时,红灯计时也结束,进入下一个状态。第二部分就是数码管,由于不清楚数码管的接口地址,我们花了很多时间测试,在之后的调试中便没有遇到太大的问题。最后实现了红绿灯交替,绿灯变红灯之间黄灯亮3s,并且由数码管显示倒计时。至此,所有功能都已实现。

八、实习总结

此次课程设计我一共花了差不多两周的时间,其中差不多有一周时间里面我是在重新学习关于单片机的知识的。此次课程设计难的地方就是对程序的编写难,很多地方都不怎么懂,所以我是看了蛮多的视频之后才开始编写程序的。在编写的过程中运用到了蛮多老师以前讲的知识,中断,定时器,

延迟程序,函数声明,位声明等,很的新东西。同时经过两周的学习我也学会了不少东西。

至于软件设计与调试,我觉得它主要考验你的思维逻辑能力及你对指令的熟悉程度。可以说再整个软件设计过程中,我不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管的两种显示方式(即动态显示与静态显示)及其如何选择。当然,通过几次反复调试过程,使得我对C程序指令有了更深刻的理解。

这次课程设计,我经过自己的努力和通过老师指导和同学的指点,最后终于把它完成了,我同时也学会了更多,比如中断,数码管动态显示,计数器等。在不懂的地方我们要虚心向别人请教,只有这样我们才能够学会更多,丰富我自己的知识。

九、参考文献

1、单片机原理与应用第二版.德安编著.机械工业.

附录

C语言代码:

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar num,t;

sbit dula=P2^7; //段选跟位选

sbit wela=P2^6;

sbit dula1=P2^5;

sbit wela1=P2^4;

sbit dula2=P2^3;

sbit wela2=P2^2;

sbit dula3=P2^1;

sbit wela3=P2^0;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管

void display(uchar b,uchar a);

相关文档
最新文档