




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第0页摘要此数字秒表,是在AT89C2051系统上实现的,其计时精确度为0.01s。所使用的元器件主要有排阻、定时计数器、74LS373锁存器、AT80C51等。通过系统中的计时键和显示键可实现对8个比赛人员的计时和显示,清零功能,用系统中的四片七段数码管将计得的时间以XXXX(秒百分秒,其中秒占两位,百分秒两位)的形式显示给用户。计时准确度与现实时间相符第页目录概述.1第1章总体设计.2第2章硬件设计.32.1单片机主控模块.32.1.1定时器/计数器.32.1.2中断系统.62.2LED显示模块.72.2.174LS373介绍.72.3按键模块.8第3章软件设计.93.1主函数voidmain().93.2初始化函数voidinit().103.3显示函数voiddisplay().103.4定时器0中断服务函数void_TR0_().113.5外部中断0中断服务函数void_EX0_().123.6拆数函数voidnumber().13第4章系统调试.144.1常用调试工具.144.1.1KeilC软件.144.1.2PROTEUS软件.154.2系统调试及性能分析.15心得体会.16参考文献.17附录.18附录1:秒表计时器电路原理图.18附录2:程序源代码.19第1页第1章总体设计在本次的课程设计中,主程序主要就是为AT89C2051和74LS373锁存器来控制的,进而为所用的中断程序的地址和一些必要的标志赋值。在数字秒表的设计中运用了2个中断号,2个中断程序。AT89C2051的TO端口在工作方式1下由下降沿触发,而产生方波脉冲,作为AT89C2051的中断信号。系统设计方案框架见图1-1所示。LED显示模块AT89C51段选信号位选信号按键控制模块晶振电路复位电路P0P1P2P3显示模块段选信号位选信号按键控制模块晶振电路复位电路图1-1系统设计方案框架图本实验所用的实验器材有两个开关计时和显示,其中开关计时与中断T0相连,是中断T0的申请信号,即设计要求中的第一个人的计时,负责秒表的计时;开关显示与AT89C2051上的P2.6口相连,即设计记下8个成员的时间,记完后,按显示按钮,从最后一个人的顺序到起来显示他们工作所用的时间(先来后显示)。这个设计的核心思想为:在运行中断程序的时候,判断中断信号,然后根据中断信号来产生脉冲来确定是执行中断服务程序。第2页第2章硬件设计2.1单片机主控模块单片机最小系统以AT89C51单片机为核心,由单片机、时钟电路、复位电路等组成如图2-1所示。主要负责各个模块的初始化工作;读取并处理时间;处理按键响应;控制LED实时显示等。见图2-1所示。图2-1单片机最小系统主控制器AT89C51单片机与MCS51系列单片机产品兼容,内部自带有4KB的Flash存储器及256KBRAM单元,不需另外扩展EEPROM及静态RAM,可以在线下载程序,易于日后的升级。图中的P0是给LED数码管提供段选信号,P1口给LED数码管提供位选信号,P2.6提供给显示开关,P3.2(外部中断0)提供给计时开关。时钟电路是由XTAL1和XTAL2之间跨接的晶体振荡器和微调电容构成。时钟电路中晶体振荡器的频率高则系统的时钟频率就高,所以该系统采用12M晶振;复位电路有三种形式:手动按键复位、上电复位和软件复位,在本系统中采用的是手动按键复位。如图2-1所示,R1、R2、C3和BUTTON组成系统手动按键复位电路。2.1.1定时器/计数器1.定时器/计数器有三种工作方式第3页方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成。TH0的高3位弃之不用。方式1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成。其逻样电路和工作情况与方式0完全相同。方式2初始化时,8位计数初值同时装入TL0和TH0中。当TL0计数溢出时,置位TF0,同时把保存在预置寄存器TH0中的计数初值自动加载TL0,然后TL0重新计数。方式3,定时器计数器0被拆成两个独立的8位计数器TL0和TH0。其中TL0既可以计数使用,又可以定时使用,定时器计数器0的各控制位和引脚信号全归它使用。TH0则只能作为简单的定时器使用。2.定时器控制寄存器(TCON)该寄存器用于保存外部中断请求以及定时器的计数溢出。寄存器地址88H,位地址8FH88H。寄存器的内容及位地址表示如下:位地址8FH8EH8DH8CH8BH8AH89H88H位符号TF1TR1TF0TR0IE1IT1IE0IT0TF0和TF1-计数溢出标志位当计数器计数溢出(计满)时,该位置“1”;使用查询方式时,此位作状态位供查询,但应注意查询有效后应以软件方法及时将该位清“0”;使用中断方式时,此位作中断标志位,在转向中断服务程序时由硬件自动清“0”。TR0和TR1-定时器运行控制位TR0(TR1)=0停止定时器/计数器工作TR0(TR1)=0启动定时器/计数器工作该位根据需要以软件方法使其置“1”或清“0”。3.工作方式控制寄存器(TMOD)TMOD寄存器是一个专用寄存器,用于设定两个定时器/计数器的工作方式。但是TMOD寄存器不能位寻址,只能用字节传送指令设置其内容。各位定义如下:位序B7B6B5B4B3B2B1B0位符号GATEC/TM1M0GATEC/TM1M0第4页4位一组的结构使它不能位寻址,一定义就是4位。从寄存器的位格式中可以看出,它的低半字节定义定时器/计数器0,高半字节定义定时器/计数器1。其中:(1)、GATE-门控位GATE=0以运行控制位TR启动定时器GRTE=1以外中断请求信号(INT1或INT0)启动定时器(2)、C/T-定时方式或计数方式选择位C/T=0定时工作方式C/T=1计数工作方式(3)、M1M0-工作方式选择位M1M0=00方式0M1M0=01方式1M1M0=10方式2M1M0=11方式34.中断允许控制寄存器(IE)位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H位符号EA/ESET1EX1ET0EX0EA-中断允许总控制位ET0和ET1-定时/计数中断允许控制位ET0(ET1)=0禁止定时/计数中断ET0(ET1)=1允许定时/计数中断在本系统中红绿灯时间定时器和黄灯时间定时器都采用定时器的工作方式1。计数值的范围为:165536(216)定时时间计算公式为:(216-计数初值)x晶振周期x12其时间单位与晶振周期或机器周期相同。2.1.2中断系统中断过程的三步曲:中断响应、执行中断服务程序及中断返回。图中的中断源,就是第5页指能提出中断请求的计算机内部电路与外部设备。1.中断允许控制寄存器(IE)寄存器地址0A8H,位地址0AFH0A8H。寄存器的内容及位地址表示如下:位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H位符号EA/ESET1EX1ET0EX0其中与中断有关的控制位共6位:(1)、EA-中断允许总控制位EA=0中断总禁止,禁止所有中断。EA=1中断总允许,总允许后中断的禁止或允许由各中断源的中断允许控制位进行设置。(2)、EX0和EX1-外部中断允许控制位EX0(EX1)=0禁止外中断EX0(EX1)=1允许外中断(3)、ET0和ET1-定时/计数中断允许控制位ET0(ET1)=0禁止定时(或计数)中断ET0(ET1)=1允许定时(或计数)中断(4)、ES-串行中断允许控制位ES=0禁止串行中断ES=1允许串行中断可见,MCS-51通过中断允许控制寄存器对中断的允许(开放)实行两级控制。即为EA位作为总控制位,以各中断源的中断允许位作为分控制位。当总控制位为禁止时,关闭整个中断系统,不管分控制位状态如何,整个中断系统位禁止状态;当总控制位为允许时,开放中断系统,这时才能由各分控制位设置各自中断的允许与禁止。MCS-51单片机复位后(IE)=00H,因此中断系统处于禁止状态。单片机在中断响应后不会自动关闭中断。因此在转中断服务程序后,应根据需要使用有关指令禁止中断,即以软件方式关闭中断。2.中断优先级控制寄存器(IP)MCS-51的中断优先级控制比较简单,因为系统只定义了高、低2个优先第6页级。各中断源的优先级由中断优先级寄存器(IP)进行设定。IP寄存器地址0B8H,位地址为0BFH0B8H。寄存器的内容及地址表示如下:位地址0BFH0BEH0BDH0BCH0BBH0BAH0B9H0B8H位符号/PSPT1PX1PT0PX1其中:PX0-外部中断0优先级设定位;PT0-定时中断0优先级设定位;PX1-外部中断1优先级设定位;PX1-外部中断1优先级设定位;中断响应的条件:有中断源提出中断请求;中断总允许位EA=1,即CPU开放中断;申请中断的中断源的中断允许位为1,即没有被屏蔽2.2LED显示模块2.2.174LS373介绍如图2-1所示为74HC573的引脚图。从表中可以看出,OE为三态控制端(低电平有效),当OE=1时,8个输出端都为高阻态(在功能表中的Z表示高阻态);OE=0时,输入数据D能传输D能传输到输出端。LE为锁存控制输入端,送数脉冲CP从LE端加入,CP下降沿时锁存数据,且LE=0时保持数据(功能表中的Q0表示被锁存的状态);LE=1时不锁存,输入数据直接达到输出端。1D8D为数据输入端,1Q8Q为数据输出端。第7页在本系统中采用了两个74LS373分别用于控制数码管的段选信号(dule)和位选信号(wele),这样是为了使数码管得到的信号更加稳定。2.3按键模块系统的按键电路如图所示。图2-2按键模块系统中按键模块中的计时开关的用途是给单片机提供外部中断信号,当单片机接收到中断后程序就会进入中都服务函数将当前时间装入计时数组中存储。数组一个可以存储8个时间。系统中按键模块中的显示开关的用途是调出计时数组中的时间,提供给LED显示器显示,当显示完毕后等待复位信号重新开始计数。第8页第3章软件设计秒表程序流程图见图3-1所示。开始初始化系统进入定时器中断给百分秒和秒计时调用拆数函数将时间拆分显示时间While循环等待外部中断计时将当前时间装入数组判断是否装了8个数等待显示开关按下送入显示YN等待复位开始初始化系统进入定时器中断给百分秒和秒计时调用拆数函数将时间拆分显示时间循环等待外部中断计时将当前时间装入数组判断是否装了个数等待显示开关按下送入显示等待复位图3-1程序流程图本系统的软件部分主要是由:主函数voidmain()、初始化函数voidinit()、显示函数voiddisplay()、定时器0中断服务函数void_TR0_()、外部中断0中断服务函数void_EX0_()、拆数函数voidnumber()组成。3.1主函数voidmain()主函数流程图见图3-2所示。开始初始化整个系统将时间拆分等待定时器中断计时While循环等待开始初始化整个系统将时间拆分等待定时器中断计时循环等待图3-2主函数流程图第9页在主函数中主要是对系统进行初始化在while循环中等待计数器计数的溢出。3.2初始化函数voidinit()初始化函数的功能就是初始化系统中需要的变量和设置一些单片机内部的寄存器变量。TMOD=0X01;/选择定时器0的工作方式为工作方式1EA=1;/开启总中断位ET0=1;/开启定时器中断0TH0=(65536-10000)/256;TL0=(65536-10000)%256;TR0=1;/允许计数器0工作IT0=1;/外部中断0的触发方式为下降沿触发EX0=1;/开启外部中断0PX0=1;/设置外部中断0的优先级最高second=0;run_second=0;aa=0;cnt=0;key=1;temp=key;3.3显示函数voiddisplay()在系统中采用锁存器74LS373来控制LED显示器的段选信号和位选信号。利用74LS373的LE脚来对信号进行锁存,从而保持信号的完整,避免在显示时出现失真,显示不完整。dule=1;/打开段选位wele=1;/打开位选位P1=0xfe;/给第一位数码管的位选位送低电平,让第一位数码管亮P0=tablesecond_sw;/给数码管的段选位送值dule=0;/关闭段选位锁存信号第10页wele=0;/关闭位选位锁存信号delay(1);/延时显示函数的流程图见图3-3所示。开始显示秒的个位打开段选打开位选给位选位送值给段选位送值关闭段选和位选,延时1ms显示秒的十位显示百分秒的十位显示百分秒的十位打开段选打开位选给位选位送值给段选位送值关闭段选和位选,延时1ms打开段选打开位选给位选位送值给段选位送值关闭段选和位选,延时1ms打开段选打开位选给位选位送值给段选位送值关闭段选和位选,延时1ms结束显示开始显示秒的个位打开段选打开位选给位选位送值给段选位送值关闭段选和位选,延时显示秒的十位显示百分秒的十位显示百分秒的十位打开段选打开位选给位选位送值给段选位送值关闭段选和位选,延时打开段选打开位选给位选位送值给段选位送值关闭段选和位选,延时打开段选打开位选给位选位送值给段选位送值关闭段选和位选,延时结束显示图3-3显示函数流程图3.4定时器0中断服务函数void_TR0_()在定时器中断中主要是计时和显示的功能。定时器的设置:TMOD=0X01;/选择定时器0的工作方式为工作方式1EA=1;/开启总中断位ET0=1;/开启定时器中断0TH0=(65536-10000)/256;TL0=(65536-10000)%256;TR0=1;/允许计数器0工作定时器中断服务函数流程图见图3-4所示。第11页进入定时器中断重新给计数器装初值百分秒加1百分秒是否为100百分秒清0秒加1百分秒是否为100秒清0NYYN对时间进行显示进入定时器中断重新给计数器装初值百分秒加百分秒是否为百分秒清秒加百分秒是否为秒清对时间进行显示图3-4定时器中断服务函数流程3.5外部中断0中断服务函数void_EX0_()外部中断0的中断服务函数流程图见图3-5所示。进入中断计时是否计满将当前时间装入计时数组中是否需要显示停止定时器中断计时器将计时数组中的时间一一返回给时间变量调用拆数调用显示等待复位NY进入中断计时是否计满将当前时间装入计时数组中是否需要显示停止定时器中断计时器将计时数组中的时间一一返回给时间变量调用拆数调用显示等待复位图3-5外部中断0的中断服务函数流程第12页3.6拆数函数voidnumber()在本系统中拆数函数的功能是将当前时间的个位和十位拆分,便于显示函数的引用和显示。second_gw=second%10;second_sw=second/10;run_gw=run_second%10;run_sw=run_second/10;第13页第4章系统调试调试是一个必不可少的环节,它将会验证你的成果,是否实现了所要完成的功能。系统调试仿真时先要使用伟福编译器,把所写的程序进行编译,同时在仿真器里设置生成HEX文件,编译无错误时还要进行PROTEUS仿真,查看功能是否能够实现。下面就将仿真将会用到的软件进行简单的介绍,并对仿真过程予以简介。4.1常用调试工具4.1.1KeilC软件KeilC软件是集成调试环境,集成了编缉器、编译器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。树状结构显示,一目了然,支持ASM(汇编)、C语言,多语言多模块源程序混合调试,在线直接修改、编译、调试源程序,错误指令定位。功能很强大。用于对程序的调试和编辑。图5-1KeilC软件界面第14页4.1.2PROTEUS软件系统仿真还用到了PROTEUS软件,可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助。首先要新建一个文档是DNS型的找出需要的器件,可以使用搜索功能。接着把各个器件放到合适的位置都要放到蓝色框内。然后根据自己的设计要求连线。把所有的元件都连接好,做出完整的电路图。4.2系统调试及性能分析系统的调试开始是把伟福编译生成的无错误后缀名为.HEX的文件加载到AT89C51单片机中,方法是双击单片机弹出一个对话框,在programfile后选择要添加文件,文件要求必须是HEX文件。然后可以点击运行观察现象,当出现错误时,大多都是软件出了问题,经过不断的改进调试。对按键检测、加减时间与按键之间产生的不一致、倒计时子程序的调用等软件的修改后,系统基本实现了所要设计的功能。第15页心得体会通过这次的课程设计,我进一步了解了AT89C2051和74LS373这两块芯片的功能以及它们的工作方式,对电脑有了个全新的认识,对中断的工作方式,电脑芯片内部的数据有了较清楚的认识。这次课程设计是基于芯片上的编程,由于对相应芯片的各个端口的功能不熟悉,一开始不知从何着手,随着对各个芯片端口的逐步了解,后面程序的编写也变得容易多了。这次设计总的感想是:由于是基于芯片上编程,所以编写程序之前必须对各个芯片有所了解,如芯片的各个端口的功能等。然后选择要实现此程序功能的芯片以及怎样接线,调试程序、修改错误之处。通过这次设计,也使我对硬件知识有了更进一步的了解。同时我也知道了编程的一些技巧,使我懂得了更加多的知识,做到了理论联系实际,巩固了所学的知识。由于能力和时间有限系统存在着一些缺陷,望老师批评指正。缺陷:(1)按键计时的抖动问题。(2)与抖动相关的计时精度问题。(3)由于在系统运行程序的时候会消耗CPU的时间,所以时间会不精确。第16页参考文献1李广第等编著.单片机基础.北京航空航天大学出版社2林志琦等编著.单片机原理接口及应用.中国水利水电出版社3胡辉主编.单片机原理与应用.中国水利水电出版社4单成祥等编著.传感器原理与应用.国防工业出版社5谭浩强主编.C语言程序设计教程.高等教育出版社6邱寄帆主编.数字电子技术.人民邮电出版社第17页附录附录1:秒表计时器电路原理图附录2:程序源代码#include#defineuintunsignedint#defineucharunsignedcharucharcodetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/数码管的段码表共阴极0.1.2.3.4.5.6.7.8.9.a.b.c.d.e.fuchartemp;ucharperson82;uintsecond;uintrun_second;uintsecond_sw;uintsecond_gw;uintrun_gw;uintrun_sw;uintaa;uintcnt;sbitkey=P26;sbitdule=P20;sbitwele=P21;voidinit()TMOD=0X01;/选择定时器0的工作方式为工作方式1EA=1;/开启总中断位ET0=1;/开启定时器中断0TH0=(65536-10000)/256;TL0=(65536-10000)%256;第19页TR0=1;/允许计数器0工作IT0=1;/外部中断0的触发方式为下降沿触发EX0=1;/开启外部中断0PX0=1;/设置外部中断0的优先级最高second=0;run_second=0;aa=0;cnt=0;key=1;temp=key;/延时程序voiddelay(uintz)uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);/显示程序voiddisplay()/让第一位数码管点亮dule=1;/打开段选位wele=1;/打开位选位P1=0xfe;/给第一位数码管的位选位送低电平,让第一位数码管亮P0=tablesecond_sw;/给数码管的段选位送值dule=0;/关闭段选位锁存信号wele=0;/关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机器人清洁服务创新创业项目商业计划书
- 输液反应和急救措施
- 知识管理(KM)创新创业项目商业计划书
- 橡胶鞋材生产创新创业项目商业计划书
- 网红短视频内容创作工具创新创业项目商业计划书
- 智能柜台银行服务系统创新创业项目商业计划书
- 电影海报电商创新创业项目商业计划书
- 渔业养殖的气象服务创新创业项目商业计划书
- 水产品品牌国际化战略咨询创新创业项目商业计划书
- 2025年环保产业园区绿色产业集聚与区域产业结构优化报告
- 幼儿园速叠杯培训
- 初中劳动教育生活技能计划
- 新初中班主任培训
- DB13T 5252-2020 HDPE内衬修复供水管道技术规程
- 2025至2030年中国真空电机行业市场行情监测及前景战略研判报告
- 2025年船舶舾装件项目市场调查研究报告
- DB31/ 741-2020碳酸饮料单位产品能源消耗限额
- 2024生产安全事故应急预案
- 矿用电机车永磁电机驱动及能量回馈系统:技术革新与应用实践
- 医院后勤管理的安全风险防控措施
- 2025-2030木薯市场发展现状调查及供需格局分析预测研究报告
评论
0/150
提交评论