单片机实训报告

目录

一、概述:

1.1设计制作产品的背景、目的、意义

1.2设计制作产品的设计要求

1.3分工情况、工作计划及本人所总结工作

1.4本课题的基本内容、重点及难点

二、正文:

 2.1实验原理

2.2实验流程图

2.3硬件设计

2.4软件设计

2.5 C语言程序

2.6简易交通灯硬件接线说明

2.7交通灯电路图

三、结论:

 3.1设计制作过程中遇到的问题及如何解决的

3.2通过设计制作过程有哪些提高还有哪些不足及今后学习提高计划

四、心得体会

一、概述:

设计制作产品的背景、目的、意义

1.设计背景

  在大二的上半个学期我们开了一门叫《单片机技术与应用》的课程,在期末考试之前有一个两个星期的实训,就是用平时所学的知识在自己的板子上实现一个功能,比如说:实现一个交通灯、万年历、密码锁或计算器等等,或者自己根据实际情况自己设计题目实现一个功能。设计当中最多三个人一个小组,最少自备一台电脑。不仅如此,我们还能把以前所学的数字电路、模拟电路、电路基础、PCB等知识在这次实训过程中得到用用。在做中学,在学中作。

2、设计目的

1. 通过本次课程设计进一步熟悉和掌握单片机的结构及工作原理,巩固和加深“单片机原理与应用”课程的基本知识,掌握电子设计知识在实际中的简单应用。

2. 综合运用“单片机原理与应用”课程和先修课程的理论及生产实际知识去分析和解决电子设计问题,进行电子设计的训练。

3. 学习电子设计的一般方法,掌握AT89C52芯片以及简单电子设计过程和运行方式,培养正确的设计思想和分析问题、解决问题的能力,特别是总体设计能力。

4. 通过计算和绘制原理图、布线图和流程图,学会运用标准、规范、手册、图册和查阅有关技术资料等,培养电子设计的基本技能。

5. 通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用系统全过程,为今后从事的工作打基础。

3、设计意义:交通灯的控制系统对于维持城市交通稳定有序的运转有着至关重要的作用。考虑到单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,本人拟采用AT89C52单片机来实现十字路口交通信号灯的模拟控制,通过模拟系统的设计来了解交通灯系统的工作原理和一些基本功能是如何通过单片机来实现的。

此次设计基于本人在校期间所学的有关单片机等相关知识,通过设计基于AT89C52单片机的交通灯控制系统,将所学知识运用到实践中并得以深化,进一步加强单片机知识的理解,掌握单片机的基本原理和各种基本功能的应用,并且通过交通灯控制系统的设计可以进一步认识单片机在控制系统中的重要性。

设计制作产品的设计要求

1、在万能板上组装焊接一个十字交通模拟路口

2、利用学习板上的单片机最小系统、数码管、按键等资源与组装焊接的模拟路口组成简易交通灯控制器硬件系统。

3、编写软件实现下表及下图所示交通路口的相位规则,循环显示交通信号指挥交通。

4、 数码管倒计时显示当前相位剩余时间。

5、 时间控制基于定时器实现。

扩展功能要求:

1、 在各路口绿灯变黄灯之前加上3秒钟绿闪,即实现6相位。

2、 增加各方向绿时时间设定功能。

⑴、增加设定键、增加键、减少键、确认键

⑵、按下设定键进入更改绿时状态,数码管最左面的一位显示0,右边两位显示当前东西方向绿时时间,再次按下设定键数码管最左面的一位显示1,右边两位显示当前南北方向绿时时间,依次循环。

⑶、在设定状态下,按下增加按键和减少按键可以增加或减少当前方向绿时时间,绿时时间范围10-99秒。

⑷、调整好绿时时间后,按下确认按键存储并更新新的绿时设定。

设计文档要求:

1、绘制系统原理图及PCB图。

2、编写元器件清单

3、上交完整的源程序并对程序进行注释

4、完成电子产品设计及制作总结报告

分工情况、工作计划及本人所总结工作

1、了解交通灯控制系统的各项功能要求

1.         根据功能要求设计不同设计方案并择优选择

2.         选择材料并根据所选设计方案进行硬件电路的设计,包括主控制系统、通行灯输出控制、时间显示模块、电源电路等

3.         根据功能要求进行主要程序的设计,包括初始化程序、主程序、外中断1中断服务程序、定时中断服务程序等

4.         使用PROTEUS软件仿真,检查是否实现所需功能并在系统上进行调试以达到预期效果

本课题的基本内容、重点及难

1、基本内容:交通灯控制系统的功能要求;制定不同的设计方案并择优选择;系统硬件电路的设计(包括主控制系统、通行灯输出控制、时间显示模块、电源电路等);系统主要程序的设计(包括初始化程序、主程序、外中断1中断服务程序、定时中断服务程序等);软件仿真(使用PROTEUS软件仿真)及系统运行调试(检查能否实现功能并改进)。

2、重点:根据交通灯控制系统的功能要求制定出不同的设计方案并择优选择;根据设计方案进行硬件电路部分的设计(包括主控制系统、通行灯输出控制、时间显示模块、电源电路等)。

3、难点:根据交通灯控制系统的功能要求进行主要程序的设计(包括初始化程序、主程序、外中断1中断服务程序、定时中断服务程序等);使用PROTEUS软件仿真并在系统上进行调试。

二、正文:

实验原理

1.基本原理

主体电路:交通灯自动控制模块。这部分电路主要由80C51单片机的I/O端口、定时计数器、外部中断扩展等组成。

本设计先是从普通三色灯的指示开始进行设计,用P0口作为输出。程序的初始化是南北绿灯亮30秒,同时东西红灯亮30秒;之后南北黄灯亮3秒,东西红灯亮3秒;之后南北红灯亮15秒,东西绿亮15秒;之后南北红灯亮3秒,东西黄灯量3秒,之后重复执行。倒计时用到定时器T0,用P2口作为LED的显示。二位一体的LED重复执行30秒、3秒、15秒的倒计时。作为突发事件的处理,本设计主要用到外部中断EX0。用一模拟开关作为中断信号。实际中可以接其它可以产生中断信号的信号源。

2.芯片AT89C52

     AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

 主要功能特性:

  ? 兼容MCS51指令系统            

  ? 8k可反复擦写(>1000次)Flash ROM

  ? 32个双向I/O口                  

 ? 256x8bit内部RAM

  ? 3个16位可编程定时/计数器中断     

? 时钟频率0-24MHz

  ? 2个串行中断                    

? 可编程UART串行通道

  ? 2个外部中断源                   

 ? 共6个中断源

  ? 2个读写中断口线               

? 3级加密位                                       

? 低功耗空闲和掉电模式                         

 ? 软件设置睡眠和唤醒功能

实验流程图

(一)实现方法

  (1)在设计中利用软件程序延时的方法来控制红(绿)的亮的时间。考虑延时时间较长所以先用T0产生终端然后通过计数的方法来实现延时。利用P1口的P1.1、P1.2、P1.3作为红绿灯控制端口。

(2)南北向的绿灯连在一块,东西向的红灯连在一块,他们一块与P1.1相连。同样南北向的红灯连在一块,东西向的绿灯连在一块,他们一块与P1. 2相连,四个黄灯连在一块与P1.3相连。

(二)流程图

    

硬件设计

1单片机的结构   

单片微机(Single-Chip Microcomputer)简称为单片机。它在一块芯片上集中成了中央处理单元CPU、随机存储器RAM、只读存储器ROM、定时/计数和多功能输入/输出I/O口,如并行口I/O、串行口I/O和转换A/D等。就其组成而言,一块单片机就是一台计算机。由于它具有体积小、功能强和价格便宜等优点,因而被广泛地应用于产品智能化和工业控制自动化上。

2主要元器件选择

(1). 开关管的选择:BUTTON按钮

(2).  LED发光二极管 LED-RED, LED-YELLOW ,LDE-GREEN

(3). 二位一体数码管   7SEG-MPX2-CAT-RED:数码管(红色)

(4). PN4249:驱动三极管

(5). AT89S51系列单片机 

3设计显示部分

LED数码显示部分。LED数码显示部分由七段数码显示管组成。

发光二极管显示原理:

发光二极管是采用砷化镓、镓铝砷和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。发光二极管在制作时,使用的材料不同,那么就可以发出不同颜色的光。

当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间 ,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值 ,重新进入循环。

软件设计

1.单片机中断系统基本结构

中断是一项重要的计算机技术,是处理正常工作与紧急状态的好办法,是实现人机实时交互的重要途径,在单片机应用系统中,中断技术得到了广泛应用。下面详细介绍单片机中断系统基本结构、与中断相关的特殊寄存器的设置及中断应用系统编程方法。

当CPU查询到系统有中断请求时,如果系统处于中断允许状态,CPU将停止当前的工作,响应中断请求,转向中断服务,中断服务完成后,返回原程序继续执行当前任务,这叫单片机中断。

8051系列单片机中断系统结构如图3.7所示。能让CPU产生中断的信号源叫中断源。8051单片机有NT0、INT1、T0、T1、TI、RI六个中断源,但只有EX0、ET0、EX1、ET1、ES五个向量,下面简要介绍六个中断源。

 

图:单片机中断系统基本结构

INT0、INT1:外部中断源,由P3.2和P3.2引脚输入。具有低电平和脉冲两种触发方式,在每个机器周期的S5P2采样引脚信号,如有效则由硬件将它的中断请求标志IE置1,请求中断。当CPU响应中断时,由硬件复位。

T0、T1:定时/计数器中断,当定时/计数器产生溢出时,置位中断请求标志TF请求中断处理。

RI、TI:串行中断,RI是接收,TI为发送。单片机串行口接收到一个字符后RI置1,发送完一个字符TI置1。值得注意的是,RI、TI在响应中断后,必须由用指令将其复位。                         

中断响应:

CPU在执行程序的过程中,在每个机器周期的S5P2对中断标志位按中断优先级进行查询,一旦查询到有中断请求,CPU只要不在执行同级或高级的中断服务程序和当前指令(RETI指令或访问IE、IP的指令除外)执行完毕两种情况,则响应中断。如果当前正在执行的指令是RETI或访问IE、IP的指令,则当前指令执行完毕后,CPU才可响应中断。中断响应时间可以从中断信号被查询开始算起,中断响应时间在以下三种情况下,响应时间还会更长:

①       CPU正在执行一个比要响应的中断源优先级相等或更高的中断源的中断服务程序,此时须等到中断服务程序执行完毕才可中断响应。

②       正在执行的当前指令不是在最后一个机器周期,只有指令执行完后才响应中断。

③       如果当前执行的是RETI或访问IE、IP的指令,则当前指令执行完毕后,CPU需再执行一条指令才可以中断响应,因此附加等待响应时间不会超过5个机器周期。

中断入口:

单片机响应中断后,将转向特定的入口进行中断服务,单片机的中断入口地址如表3.2所示。

表3.2  MCS-51单片机中断服务程序入口地址表

从表中可以看出,两相邻中断源的入口地址间隔为8个单元。这意味着如果要把中断源对应的中断服务程序从入口地址开始存放,则程序的长度不能超过8个字节,否则会影响到下一个中断源的入口地址的使用。而通常的情况下,中断服务程序的长度不止8个字节,因此,常见的处理方法是:在入口地址处存放一条无条件转移指令,通过这条转移指令转向对应的中断服务程序入口,中断服务程序以RETI为结束。

中断请求的撤销:

CPU响应中断请求,在中断返回(RETI)之前,该中断请求应被撤除,否则会引发另一次中断。

定时/计数器中断请求撤销CPU在响应中断后,由硬件自动清除中断请求标志TF。

外部中断请求撤销如果采用脉冲触发方式,CPU在响应中断后,由硬件自动清除中断请求标志IE;对于电平触发方式的外部中断请求,中断标志的撤销是自动的,由于造成中断请求的低电平继续存在,所以在响应中断后再次会产生中断请求,为此响应中断后要撤销外部信号。

2.每秒钟的设定

延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。

3.计数器初值计算

定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式: TC=M-C

C语言程序

#include"reg52.h"     //宏包含MCS-52系列单片机的头文件

#define uchar unsigned char

#define uint  unsigned  int

uchar code duanmatable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//数码管段码数组

uchar code weima[]={0x7f,0xbf,0xdf,0xef};//位码数组

uchar code xiangwei[]={0xdb,30,0x7b,3,0xbd,15,0xb7,3};  //实现相位的切换,数码管的倒计时与交通灯的相位切换巧妙结合。

void  delay (uint z); //延时程序声明

uchar n50ms,greentime;

uchar  xianshi[2]={10,10}; //显示数组

void intital();

main()

{  intital();

 

   while(1)

   {

       uchar i,j;

            

         for(;greentime==0&&j<8;j+=2)  //for语句判断,通过j的变化送不同的值。

      {

             greentime=xiangwei[j+1];  //送显相位对应的时间

          P0=xiangwei[j];   //相位段码

         }

          if(j==8)

                {

                     j=0;

                }    

         xianshi[0]=greentime%10;//更新显示数组

      xianshi[1]=greentime/10; //更新显示数组

         if(n50ms>=20)    //定时器精确延时

         {  n50ms=0;

              greentime-=1;

         }

         for(i=0;i<2;i++)//送显示

         {

               P3=weima[i];

                P2=duanmatable[xianshi[i]];

                delay(5);

         }

  

   }

}

/*********延时子程序**********/

 void delay(uint z)        

{

      uint x,y;

       for(x=z;x>0;x--)

       for(y=122;y>0;y--);

}

/********延时子程序结束*******/

void  timer0isr() interrupt 1

{

 TH0=(65536-50000)/256;

 TL0=(65536-50000)%256;

 n50ms++;

}

void intital()

{

   TMOD|=0X01;   //定时器1,方式0

   TMOD&=0XF1;

   TH0=(65536-50000)/256;   //赋初值

   TL0=(65536-50000)%256;

   ET0=1;   //开定时器中断

   EA=1;   //开总中断

   TR0=1; //开总中断

 }

简易交通灯硬件接线说明

1、硬件平台及用到的资源

硬件平台:I51学习板。

用到的资源:数码管显示、发光二极管等。

单片机P0.1-P0.3、P0.5-P0.7依次控制东西方向的绿红黄,南北方向的绿红黄。

2、连线说明

数码管显示电路:段码控制接口P8用8P杜邦线连接单片机P2口;位码控制接口P9用4P杜邦线用4P杜邦线接单片机P3.4-P3.7。

交通灯电路图

三、结论:

3.1设计制作过程中遇到的问题及如何解决的

   在接线时总接反,有时候还接错。在编程时,有时忘记生成机器码,忘记保存。最大的问题就是编程了,我在网上也找了许多相关程序但是许多都看不懂,不过老师也给了一些程序不过还是都看不懂。前面一些问题在同学和老师的帮助下我都一一解决,但是在编程这一块还存在很大问题。

3.2通过设计制作过程有哪些提高还有哪些不足及今后学习提高计划

    在这次的实训过程中我懂得了无论大事还是小事都应该注意细节,在硬件连接、keil开发平台已经熟练掌握。但是在c语言编程、pcb制图、画电路图在今后的学习中应该进一步提高。

   四、心得体会:

在实验过程中,单片机作为核心控制元件,使得电路的可靠性比较高,功能也比较强大、多变。而且可以随时的更新系统,下载新的文件进行不同状态的切换,进行不同状态的组合。一开始感觉很好奇,于是产生浓厚兴趣,梦想成为电子产品中的魔术师!

在一开始硬件连线的过程中从在问题:杜邦线不知道该往哪插,接线时顺序总结反。在编程时有时忘记保存,有时忘记生成机器码,编译之后的错误很多。但是在设计和调试过程中,也发现一些问题,譬如红绿灯的切换速度不够,绿灯时而亮时而不亮,红绿灯规则效率偏低等,亮度不够是因为在焊接硬件时把排阻接错了,应该是排阻的阻值用的较大了。在焊接外接电路时没按照老师的步骤走,最后导致接错、焊错。交通灯的外接电路虽然只有几个电阻、三极管、发光二极管和几个接线口以及一个接线板,但是到了自己的手里却无从下手没有头绪,最后在同学的帮助下最后完成了焊接。

还有,老师说我的外接电路排版不是很好,例如电阻,因为我是用手折弯的,而不是用镊子,所以这是我以后需要注意的地方。还有一个晶振焊接的不是很整齐,应该从新焊一下,但因为我怕麻烦,也怕重焊后会影响美观,所以就没再去重试了。另外,由于画PCB时,我漏画了一条线,以至于转化为板时那边出了问题,后来我就得自己对照着PCB再用导线把遗漏的导线连接上,花了不少时间,增加了许多工作量,所以说这些都还需要我们在实践中继续加强改进,得到进一步的完善。

这次课程设计,我发现单片机原理应用性很强,只在老师的课堂讲解是远远不够的,老师经常说:“只有清华的学生用上课时间才能听懂,而且课余时间不用练习,就上课的时间就够了。”当然我们不属于他们其中的一部分,要想做到的话只有自己多下功夫勤于动手去做才有可能做到,才能不断的发现自己的不足之处,从而有针对性的去学习,去查资料。许多的余力和程序看似简单,但真正去做才知道知识并没有自己想的那样扎实,就拿编程来说吧,有些程序看似好像懂了,但自己在keil软件一编程就一塌糊涂、手忙脚乱、不知所措了,可想结果如何。在此,从而懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学理论与实际结合起来,才能真正提高自己的动手能力与思考能力,树立自己的工作信心。相信会对今后的学习工作和生活有非常重要的影响

在设计过程中我们还得到了老师的帮助与意见。在学习、实训过程中不是每个问题都能自己解决,向老师请教或向同学讨论也是一个解决问题,让自己更快进步和增强学习能力很好的办法。

在此,我还想多说几句,就说说咱们的实训老师吧。在他的帮助下我学到了许多东西,最后完成了实训。此外,在实训期间还讲一些激励我们的话让我们从迷茫中走出来,给我们导航指引方向,从而使我们得到进步,勇往直前。在课余之时老师还讲一些有关技能大赛的事情,有全国性的电子产品设计技能大赛、天津市的许多赛事等等,从而使我们从中了解许多有关大赛的信息。不仅如此,老师还经常教育一些上课不认真听讲、不做实训的同学,这些都让我深受感动、值得深思。

在最后,祝愿每个小组在这两个星期的紧张学习中得到理想的成绩,从中学到知识,为以后的工作学习中得到用处!

相关推荐