单片机课程设计十秒秒表_第1页
单片机课程设计十秒秒表_第2页
单片机课程设计十秒秒表_第3页
单片机课程设计十秒秒表_第4页
单片机课程设计十秒秒表_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1设计目的 11.1设计目的 11.2设计内容和要求 11.3设计思路 12设计原理分析 22.1十秒秒表系统设计 22.2十秒秒表系统的功能要求 22.2.1计时显示 22.2.2中断设置 22.3十秒秒表系统的基本构成及原理 22.3.1LED数码管显示器的结构与原理 32.3.2LED数码管的显示方式 43系统硬件电路的设计 53.1系统硬件总电路构成及原理 53.2主控制部分――AT89C51单片机简介 53.2.1AT89C51的内部结构功能 63.2.251单片机的串行接口工作方式 73.3其它器件 83.4十秒秒表系统原理图 83.5设计的连线图 93.6硬件资源及其分配 93.7运行步骤 103.8检测与调试 103.8.1硬件调试 103.8.2软件调试 114系统软件程序的简单设计 124.1程序框图 124.2程序 134.3仿真结果图 15结论 17参考文献 181设计目的1.1设计目的1、通过单片机课程设计,熟练掌握单片机C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。2、通过定时/计数器控制两个LED数码管显示器显示10秒秒表系统的设计,掌握定时/计数器和LED数码管显示器的使用方法,同时掌握简单程序的编写,最终提高我们的逻辑抽象能力。1.2设计内容和要求内容:设计一个开关控制两个LED数码管显示器显示10秒秒表的模拟系统。要求:利用单片机的定时/计数器定时,使两个LED数码管显示器分别显示秒位和毫秒位。1.3设计思路1、先熟悉实验原理,同时了解定时/计数器的运作,和LED数码管显示器显示0到9数字的原理。2、绘制电路原理图,编写基本程序,并进行仿真,实现两个LED数码管显示器显示0到9数字的功能。3、进一步完善程序,并进行仿真,使第二个LED数码管显示器每100毫秒(即0.1秒)显示一个数字,使第一个LED数码管显示器每1秒显示一个数字。2设计原理分析2.1十秒秒表系统设计通过编写程序,实现对LED数码管显示器的控制,进行十秒的计时。使第二个LED数码管显示器每100毫秒(即0.1秒)显示一个数字,使第一个LED数码管显示器每1秒显示一个数字。采用单片机内部的I/O口上的P0口和P2口控制两个LED数码管显示器,用P3.7引脚来接收按钮的控制。2.2十秒秒表系统的功能要求本设计能模拟基本的十秒秒表显示系统,是用中断的方式计数和控制LED数码管显示器显示数字。2.2.1计时显示定时/计数器工作方式寄存器存入定时/计数器工作方式,定时器采用T0定时器0工作于模式1:16位计数范围。2.2.2中断设置每累计2次定时器中断就相当于执行了0.1秒,每累计20次定时器中断就相当于执行了1秒。2.3十秒秒表系统的基本构成及原理单片机单片机晶振复位电路LED数码管显示器1LED数码管显示器2开关

图2.1系统的总体框图2.3.1LED数码管显示器的结构与原理LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种结构,如下图2.2所示。图2.28段式LED数码管结构其中图(a)为共阴极结构,8段发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共段接地,要使哪根发光二极管亮,则对应的阳极端接高电平;图(b)为共阳极结构,8段发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接电源,要使哪根发光二极管亮,则对应的阴极端接地。图(c)为引脚图,从a~dp引脚输入不同的8位二进制编码,可显示不同的数字或字符。通常把控制发光二极管的8位二进制编码称为字段码。此系统使用的共阴极结构,“0”~“9”数字的共阴极对应的字段码如表2.1所示。表2.1“0”~“9”数字对应显示字符共阴极字段码显示字符共阴极字段码03FH56DH106H67DH25BH707H34FH87FH466H96FH2.3.2LED数码管的显示方式LED数码管在显示时,通常有静态显示方式和动态显示方式两种,本系统采用的是静态显示方式。LED静态显示时,其公共端直接接地,各段选线分别与I/O接口线相连。要显示字符,直接在I/O线发送相应的字段码,如图2.3所示。两个数码管的共阴极端直接接地,如果要在第一个数码管上显示数字1,只要在I/O(1)发送1的共阴极字段码;如果要在第二个数码管上显示2,只要在I/O(2)发送2的共阴极字段码。图2.3两位数码管静态显示

3系统硬件电路的设计3.1系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用AT89C51单片机及外围器件构成最小控制系统,2个LED数码管显示器和1个按钮等。主要器件的选择:表3-1元器件表器件个数LED数码管显示器2晶振(11.0592)1排阻1电容3按钮13.2主控制部分――AT89C51单片机简介89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51单片机为40引脚双列直插芯片,有4个I/O口:P0、P1、P2、P3,单片机的最小系统如图所示,18引脚和19引脚接时钟脉冲电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器反相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器反相放大器的输出端,第9引脚为复位输入端,接上电容,电阻及开关后构成上电复位电路,20引脚为接地端,40引脚为电源端。如图所示:图3.1晶振与单片机的连接3.2.1AT89C51的内部结构功能·中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。·数据存储器(内部RAM):数据存储器用于存放变化的数据。AT89C51中数据存储器的地址空间为256个RAM单元,但其中能作为数据存储器供用户使用的仅有前面128个,后128个被专用寄存器占用。·程序存储器(内部ROM):程序存储器用于存放程序和固定不变的常数等。通常采用只读存储器,且其有种类型,在89系列单片机中全部采用闪存。AT89C51内部配置了4KB闪存。·定时/计数器(T0):定时/计数器用于实现定时和计数功能。AT89C51共有2个16位定时/计数器。·并行输入输出(I/O)口:8051共有4组8位I/O口(P0、P1、P2、P3),用于对外部数据的传输。每个口都由1个锁存器和一个驱动器组成。它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其他功能。·全双工串行口:A89C51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。·时钟电路:时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。·中断系统:中断系统的作用主要是对外部或内部的终端请求进行管AT89C51共有5个中断源,其中有2个外部中断源和3个内部中断源。3.2.251单片机的串行接口工作方式51单片机的串行接口有四种工作方式。方式0是将SBUF作为8位同步移位寄存器使用(固定波特率);方式1是10位异步通信方式(可变波特率);方式2是11位异步通信方式(固定波特率);方式3是11位异步通信方式(可变波特率)。图3.2串行接口与单片机的连接3.3其它器件LED数码管显示器根据本设计的特点,采用LED数码管显示器,它是由发光二极管按一定的结构组合起来的显示器件,在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种结构。本系统设计采用的是共阴极结构,如下图3.3所示。图3.3LED数码管显示器3.4十秒秒表系统原理图本系统以单片机为核心,系统硬件电路由单片机、排阻、LED数码管显示器、按钮等组成。如下图所示:图3.4系统原理3.5设计的连线图图3.5实物图3.6硬件资源及其分配主要用到的硬件:P0口、P2口、LED数码管显示器、按钮、定时器T0。硬件分配:(1)P0口、P2口:各连接一个LED数码管显示器。(2)定时/计数器T0:用来产生50毫秒的定时。(3)按钮:用来对秒表器开始、暂停、清零。3.7运行步骤1、按硬件图接线,为了确保LED数码管显示器能够正确显示,P0口和P2口和两个数码管显示器连接应该注意。按钮接P3.7引脚。2、开始运行,点击按钮观察两个LED数码管显示器显示是否与程序设计思路对应,如果有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。3、整体运行,点击按钮观察两个LED数码管显示器显示是否都符合要求,如果不符合,则再调试,直至满足要求。3.8检测与调试3.8.1硬件调试硬件调试是利用开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。硬件调试可分为静态调试与动态调试两步进行。静态调试静态调试是在用户系统未工作时的一种硬件检测。第一步:目测。检查外部的各种元件或者是电路是否有断点。第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。第三步:加电检测。给电路板加电,检测所有的插座或是器件的电源端是否符合要求的值第四步:是联机检查。因为只有用单片机开发系统才能完成对用户系统的调试。动态调试动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近及远、由分到合。由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试,由分到合的调试就完成。由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件。3.8.2软件调试软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。编辑程序后,查看程序是否有逻辑错误。4系统软件程序的简单设计4.1程序框图开始开始初始化,LED数码管显示“0”调用键盘扫描子函数按键是否改变LED显示NY按键是否按下发声延时YN图4.1程序框图4.2程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitK1=P3^7;//设置一位K1来接收按钮//设置一个变量i来计算中断的次数,设置一个Second_Counts来计数,再设置一个Key_Flag_Idx来计算按下按钮的次数uchari,Second_Counts,Key_Flag_Idx;bitKey_State;//设置一个变量判断是否按下按钮ucharDSY_CODE[]=//设置共阴极结构数码管显示的数字“0”-“9”{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voidDelayMS(uintms)//定义一个延迟函数{ uchart; while(ms--) { for(t=0;t<120;t++); }}voidKey_Event_Handle()//按下按钮以后执行的函数{ if(Key_State==0) { Key_Flag_Idx=(Key_Flag_Idx+1)%3; switch(Key_Flag_Idx) { case1:EA=1;ET0=1;TR0=1;break;//按下按钮第一次启动中断,启动计数器中断,定时器启动 case2:EA=0;ET0=0;TR0=0;break;//按下按钮第二次关闭中断,关闭计数器中断,定时器关闭 case0:P0=0x3f;P2=0x3f;i=0;Second_Counts=0;//清零 } }}voidmain(){ P0=0x3f;//P0口显示数字“0” P2=0x3f;//P2口显示数字“0” i=0; Second_Counts=0; Key_State=1; TMOD=0x01;//设置工作方式1 TH0=(65535-50000)/256;//设置计数器初始值 TL0=(65535-50000)%256; while(1) { if(Key_State!=K1) { DelayMS(10);//延时 Key_State=K1; Key_Event_Handle();//进入按下按钮函数 } }}voidDSY_Refresh()interrupt1//中断函数{ TH0=(65535-50000)/256;//再次设置计数器初始值 TL0=(65535-50000)%256; if(++i==2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论