单片机课设电子秒表的设计与实现_第1页
单片机课设电子秒表的设计与实现_第2页
单片机课设电子秒表的设计与实现_第3页
单片机课设电子秒表的设计与实现_第4页
单片机课设电子秒表的设计与实现_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:电子秒表的设计与实现(系):业: 级: 号: 名:指导教师: 完成日期:xxxxxx大学课程设计报告目录1.第1章总体设计方案18191.11.21.31.4课程设计的内容和要求 课程设计原理 课程设计思路 实验环境1.1.22.第2章详细设计方案3.2.1硬件电路设计2.2主程序设计2.3模块设计2.3.1系统初始化子模块2.3.2定时器0中断处理子模块2.3.3定时器1中断处理子模块2.3.4外中断0处理子模块.2.3.5数码管显示子模块 3.4.4.45678第3章结果测试及分析103.1结果测试.3.2结果分

2、析.参考文献录A(源程序)10101213录B(电路原理图)录C(器件清单).xxxxxx大学课程设计报告第1章总体设计方案2第1章总体设计方案1.1课程设计的内容和要求(1)课程设计内容:利用南京伟福公司的LAB6000通用微控制器仿真实验系统,设计一个带时间 显示的电子秒表,具体内容如下: 电子秒表的初始状态为零,分别显示分、秒、毫秒; 设计一个按钮,按第一次开始计时,按第二次计时暂停,显示当前记录的 时间,按第三次计时停止,回到初始态; 有时间显示的功能,当不用电子秒表的功能时,显示当前的时间,分别为 时分秒形式。(2)课程设计要求: 独立完成课程设计任务; 通过老师现场验收; 交出完整

3、的课程设计报告。根据题目要求,要完成电子秒表和时间显示的功能,在本次设计中主要使用 了 8051微控制器以及74LS138、74LS245和数码管等部分来完成时钟以及秒表的模拟。采用8051作为核心控制芯片,使用8051的两个定时器TO和T1分别作为时 钟和秒表的计时,设计一个按键,使用8051的外中断0或者外中断1来完成功能8051的选择,在秒表和时钟显示两个状态之间进行切换。在对外显示上,使用 的l/O(P0和P2的低三位)作为输出,通过 74LS138的位选功能和74LS245的数据缓冲功能在数码管上显示出当前时间或者秒表计时。1.3 课程设计思路(1)提出方案首先,在硬件设计上,在80

4、51最小系统的基础下,其P0 口作为8段数码管的段码输出,接74LS245(具有数据缓冲和过流保护的功能),74LS245的输出端接 数码管的各段;P2 口的低三位作为数码管的位选通信号,接 74LS138(具有位选 功能)的输入端,其输出端接8段数码管的位选通端;另外设计一个按键,作为8051外中断的输入信号,使用该键完成选择秒表或者时钟显示以及开始、暂停、停止的功能,该按键接8051的外中断输入引脚(P3.2或者P3.3)。在程序设计上,首先设计三个中断处理函数,其中定时器0和定时器1中断作为秒表和当前时钟的计时,外中断 0完成秒表和当前时间的切换,同时在秒表功能中实现开始、暂停、退出的功

5、能;其次,需要完成一个数码管显示功能的函 数;最后是系统初始化函数和主函数,其中初始化函数用于设置与中断相关的寄 存器以及两个定时器的初始值,在主函数中调用各个子功能函数,或者等待中断 的发生再转去处理中断。(2)方案论证在主程序中首先进行初始化(定时器赋初值,开启中断等操作),之后在死循 环里通过判断一个全局变量(标志位 flag)的值(0或者非0)来选择显示秒表还是当前时间,该全局变量初始化为 0,即系统启动时显示当前时间(系统启动时只启动一个定时器),外中断来以后,在中断处理函数中改变它的值,通过switch语句来选择对标志flag的操作以及开启或者关闭定时器,在主程序中根据该值来 完成

6、相应的操作,实现其对应的功能。PC机。1.4实验环境硬件环境:伟福Lab2000P系列单片机仿真实验系统,软件环境:WAVE6000编译环境xxxxxx大学课程设计报告第2章详细设计方案第2章详细设计方案2.1硬件电路设计根据题目要求,硬件电路需要三个模块:单片机最小系统、数码管显示电路 和外中断输入电路。首先搭建一个单片机最小系统,时钟电路采用外部时钟方式,在XTAL1和XTAL2两个引脚之间接一个6MHz (之后使用定时器需要按照该频率进行计算) 的晶振,之后两端并联接两个无极性电容再接地构成时钟电路,为单片机提供时 钟控制信号;复位电路采用按键电平复位方式,详细电路见附录,使得按下复位键

7、以后,实现单片机的复位;串行口的两个引脚RXD和TXD通过MAX232接DB9,实现单片机与PC机的通信,完成程序的下载和调试功能;此外单片机的VCC和VSS引脚分别接5V电源和地,为单片机提供电源。之后在最小系统的基础上,P0 口的8个引脚分别接74LS245的输入端,74LS245的输出端接两个4位一体的8段数码管的段码输入引脚,P0 口输出数码 管的段码;P2 口的低三位接74LS138的输入端,74LS138的输出端接两个4位一 体的8段数码管的位选通端,P2 口低三位输出数码管的位选通信号。该部分完成 数码管显示功能。最后在P3.2( INT0)引脚上接一个按键,该按键另一端接地。实

8、现外中断的输入。具体实验箱连线图如下:8051KEY/LED_ CSCS0P3 2图2.1实验箱连线图2.2主程序设计在主程序中首先调用初始化函数, 对8051进行初始化,之后进入死循环,在 死循环里通过判断一个全局变量(标志位 flag)的值(0或者非0)来决定在数码管上显示当前时间或者显示秒表时间,然后调用显示子函数在数码管上显示出时 间。具体流程图如下所示:开始V图2.2主程序流程图2.3模块设计本设计中总共设计了 5个子模块:系统初始化子函数(Init )、外中断0处理函数(Into)、定时器0中断处理函数(Timer。)、定时器1中断处理函数(Timerl)、 数码管显示子函数(Pr

9、int)。2.3.1系统初始化子模块系统初始化子函数首先初始化两个定时器的各个寄存器,本次设计中定时器0 作为秒表的计时,定时器1作为当前时间的计时。两个定时器都设置为方式 1( 16位定时器),定时器模式,所以TMOD=0X11。系统选用晶振为6MHz,所以系统机器周期是2uS。定时器0作为秒表计时,需要计时时间为 1mS,通过计算,可以得出T0的初值TH0=0XFE,TL0=0X0C。同理计算T1的初值,考虑到16位定时器的最大定时时间不能达到1S,所以在此取个整数值,使其定时0.1S,在之后的中断函数中循环10就可以实现1S,最终计算得T1的初值TH1=0X3C,TL1=0XB0。之后设

10、置与中断相关的寄存器,分别开启定时器0,定时器1,INT0的中(ET0=1,ET1=1,EX0=1 ),再开总中断(EA=1),设置外中断0的触发方式为下降 沿触发(IT0=1),设置中断优先级寄存器(IP=0X0B)。系统启动以后默认显示当前时间,秒表在使用时再开启,所以在初始化函数 中最后开启定时器1( TR1=1)。具体流程图如下所示:图2.31 厂"结束系统初始化流程图2.3.2定时器0中断处理子模块定时器0作为秒表的计时,当定时器计数满而产生溢出时就会触置位其对应的中断标志位(TF0)从而触发中断,之后转入中断处理函数,在定时器0中断处理函数中首先重新给定时器赋初值 (TH

11、0=0XFE,TL0=0X0C ),同时毫秒(mSec)加1,之后判断毫秒是否满1000,如果满1000,毫秒置0, 理通过判断对秒(Sec0)和分(Min0)加1或者置0操作。同时秒(Sec0)加1,同这些完成以后就返回主函数。N图2.4定时器0中断流程图具体流程图如下:2.3.3定时器1中断处理子模块定时器1作为当前时间的计时,当其计数满而溢出触发中断,进入中断处理函 数,定时器1处理函数中首先给定时器1重新赋值(T1=0X3C0B),同时计数器count 加1,之后判断计数器是否满10 (即是否计时到1秒),如果满10, count置0,同时秒加1(Sec+)。同理通过判断对分(Min

12、)和时(Hour)加1或者置0操作。这些完成以后就返回主函数。具体流程图如下:N结束图2.5定时器1中断流程图2.3.4外中断0处理子模块外中断0作为秒表和当前时间切换的处理,同时在秒表功能时,实现开始计时、暂停、退出的功能。当外接按键按下时在INTO引脚产生一个负跳沿,从而触 发外中断,进入中断处理函数。在外中断处理函数中首先判断全局变量(标志位 flag)的值,根据该值的不同进行不同的处理。当 flag=0时,开始秒表功能,首先 各个值(毫秒、秒、分)全部初始化为 0,之后启动定时器0 (秒表开始计时), 最后标志位加1 (flag+),使得返回主函数以后因为该标志非 0,开始显示秒表的时

13、间;当flag=1时,秒表暂停,关闭定时器0,最后标志位加1 (flag+),使得返 回主函数以后该标志非0,并且定时器0已关闭,实现秒表暂停的功能,数码管显示秒表计时的时间;当 flag=2时,退出秒表,重新回到当前时间,标志位清0(flag=0),使得返回主函数以后因为该标志非0,又回到显示当前时间。具体流程图如下:f结束J图2.5外中断0流程图235数码管显示子模块数码管作为对外显示的部分。在该函数中,首先由调用它的程序传递两个参 数(位码和段码),然后根据这两个参数向P2 口送位选信号,选中将要显示的那 个数码管,之后向P0 口送段码,因为本设计中只需要显示数字,所以段码就是09所对应

14、的8段码(定义为无符号字符型数组)。最后调用Delay函数,延时一 下就可以完成数码管的显示功能。具体流程图如下:9T延时DelayO图2.6数码管显示流程图xxxxxx大学课程设计报告第3章结果测试及分析第3章结果测试及分析3.1结果测试首先测试数码管显示模块,因为之后的调试都需要数码管的显示功能。测试 过程中首先进行静态显示测试,根据实际的硬件电路分别向数码管送位码和段码, 看显示结果是否正确,然后加上延时函数,进行动态显示测试,使在视觉效果下 看到6个数码管同时点亮,并且正确显示需要显示的数字,通过调整延时函数的 时间,消除闪烁。第二步测试当前时间(定时器 T1),系统初始化时已经启动定

15、时器1和其对 应的中断,之后不再改变其状态,因为要求在运行过程中当前时间不能停止。该部分主要测试定时器溢出后能否进入中断,并且在中断函数中对T1进行重新赋初值,和对变量(时Hour、分Min、秒Sec)的操作。第三步测试秒表计时(定时器 TO),该部分同时用到外中断 O,因为需要用外中断O来控制秒表的开始、暂停、退出,对应于在外中断O中启动或者停止定时器TO。系统初始化时开启外中断0和定时器TO的中断,但是不启动TO。测试 在按下键以后,能否进入外中断,如果不能进入,需要查看硬件电路是否正确。进入外中断以后启动或者关闭定时器 TO,假如启动定时器,之后在定时器溢出以后能否进入TO中断,同时完成

16、重新赋初值和对变量(毫秒msec、秒SecO分MinO)的操作。最后将各个模块组织起来,总体测试,该部分主要测试在多个中断都开启的 情况下,能否进入各自中断,各中断的处理是否相互影响,主要表现在当前中断 处理过程中又来其他中断,此时因为处理不及时就会产生延时,定时就会比实际 变慢。这种情况一方面需要设置中断优先级,另一方面中断处理函数应尽量短, 指令少,可以减少时间误差。3.2结果分析在数码管的动态显示过程中,如果延时太短就会产生闪烁,如果延时太长,各数码管不能同时显示,给人的视觉效果是各个数码管交替显示,最终延时函数 选取一个合适的时间间隔,使人看到的显示效果恰到好处。其他各个模块单独测试都

17、能达到预期效果,在整体测试过程中,经过中断优 先级的调整和对中断处理函数的精简减少了一定的时间误差。系统初始化以后, 进入当前系统时间的显示;如果有外中断来,开始秒表的计时,启动定时器 0, 数码管切换到显示秒表时间;之后再按键,关闭定时器 0,实现暂停,显示定时时间;再按一次键,将标志位清 0,退出秒表,返回显示当前系统时间。在秒表功能时,定时器1 (系统时间)正常工作,使得在秒表计时过程中,系统时间不 会受到影响。11xxxxxx大学课程设计报告附录参考文献123张毅刚、刘杰.单片机原理及应用M.哈尔滨:哈尔滨工业大学出版社.2004高玉芹.单片机原理与应用及C51编程技术M.北京:机械工

18、业出版社.2011胡学海.单片机原理及系统设计实例教程M.北京:化学工业出版社.2011ET1=1;134谢维成、杨加国.单片机原理、接口及应用系统设计M.北京:电子工业出版社.2011侯继红.单片机系统设计与制作M.北京:电子工业出版社.20116咼锋.7胡汉才.单片微型计算机原理与接口技术M.北京:科学出版社.2007单片机原理及其接口技术M.北京:清华大学出版社.2004附 录A(源程序)#in cludevreg51.h> #defi ne uchar un sig ned char #defi ne uint un sig ned int xdata un sig ned ch

19、ar OUTBIT _at_ 0X8002;xdata un sig ned char OUTSEG _at_ 0X8004;uchar tabseg戶0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F;/定义段码uchar tabbit=1,2,4,8,16,32;/ 选位uchar Hour=23,Mi n=59,Sec=45,Mi n0=0,Sec0=0,flag=0,j=0;ui nt mSec=0;/毫秒应定义为无符号整型/*延时了函*void delay()uint k;for(k=0;k<125;k+);/*初始化子函数 *v

20、oid System _ln it(void)TMOD=0X11;TH0=0XFE;/定时器0作为毫秒计时TL0=0X0C;TH1=0X3C;/定时器1作为秒计时TL1=0XB0;EA=1;/中断控制寄存器IEET0=1;xxxxxx大学课程设计报告附录EX0=1;IT0=1;/外中断0设置为负跳变触发IP=0X0B;TR1=1;/启动定时器1/* 夕卜中 0 了函*void In t0(void) in terr upt 0 switch(flag) case 0:mSec=0;Sec0=0;Min 0=0;TR0=1;/启动定时器0 flag+; /开始显示定时时间 break;case

21、1:TR0=0; /停止定时器0 flag+;break;case 2:flag=0;/返回显示当前时间/*break;定时器 1 中断服务子函数 * void Timerl(void) in terru pt 3TH1=0X3C;TL1=0XB0;if(j=10) j=0;Sec+;if(Sec=60)Sec=0;Mi n+;if(Mi n=60)Mi n=0;Hour+;if(Hour=24)Hour=0;*定时器 0 中断服务子函*void Timer0(void) in terru pt 1TH0=0XFE;TL0=0X0C;mSec+;if(mSec=1000)mSec=0;15xx

22、xxxx大学课程设计报告附录SecO+; if(Sec0=60)SecO=O;Mi nO+;/* 码管显示子函*void Prin t(i nt a,i nt b)OUTBIT=tabbita;OUTSEG=tabsegb;delayO;/*主函* void main (void)System _ln it();while(1) if(!flag)Prin t(0,Sec%10);Prin t(1,Sec/10);Prin t(2,Mi n%10);Prin t(3,Mi n/10);Prin t(4,Hour%10);Prin t(5,Hour/10);elsePrin t(0,mSec%1

23、0);Prin t(1,mSec/10%10);Prin t(2,mSec/100);Prin t(3,Sec0%10);Prin t(4,Sec0/10);Prin t(5,Mi n0%10);17xxxxxx大学课程设计报告附录20录B(电路原理图)収CCn119X2X1EA/VP8051)4?1URESETC130J丁 30p _ 30pF-r¥耳畀 一21K*81 2 3 4 5 6 rr4 VCCD7 D6D5D3D:D1D0wfRD19VCC20-,A4 SizCBLinGe.DdBty : ofDrWhNuiJul-2012VCCC1 +1uFC7psalE/PdxdP2-p2fP25P2.P2/P22»21320 POROPOJPOQOPO

温馨提示

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

评论

0/150

提交评论