当前位置:
文档之家› 单片机课设电子秒表的设计与实现
单片机课设电子秒表的设计与实现
最后将各个模块组织起来,总体测试,该部分主要测试在多个中断都 开启的情况下,能否进入各自中断,各中断的处理是否相互影响,主要 表现在当前中断处理过程中又来其他中断,此时因为处理不及时就会产 生延时,定时就会比实际变慢。这种情况一方面需要设置中断优先级, 另一方面中断处理函数应尽量短,指令少,可以减少时间误差。
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章 结果测试及分析
3.1 结果测试 3.2 结果分析
参考文献
附 录A(源程序)
附 录B(电路原理图)
输出端接两个4位一体的8段数码管的位选通端,P2口低三位输出数码管
的位选通信号。该部分完成数码管显示功能。
最后在P3.2(INT0)引脚上接一个按键,该按键另一端接地。实现外
中断的输入。
具体实验箱连线图如下:
KEY/LED_ CS CS0
图2.1 实验箱连线图
2.2 主程序设计
在主程序中首先调用初始化函数,对8051进行初始化,之后进入死 循环,在死循环里通过判断一个全局变量(标志位flag)的值(0或者非 0)来决定在数码管上显示当前时间或者显示秒表时间,然后调用显示 子函数在数码管上显示出时间。
信,完成程序的下载和调试功能;此外单片机的VCC和VSS引脚分别接
5V电源和地,为单片机提供电源。
之后在最小系统的基础上,P0口的8个引脚分别接74LS245的输入
端,74LS245的输出端接两个4位一体的8段数码管的段码输入引脚,P0
口输出数码管的段码;P2口的低三位接74LS138的输入端,74LS138的
3.2 结果分析
在数码管的动态显示过程中,如果延时太短就会产生闪烁,如果延时 太长,各数码管不能同时显示,给人的视觉效果是各个数码管交替显 示,最终延时函数选取一个合适的时间间隔,使人看到的显示效果恰到 好处。
其他各个模块单独测试都能达到预期效果,在整体测试过程中,经过 中断优先级的调整和对中断处理函数的精简减少了一定的时间误差。系 统初始化以后,进入当前系统时间的显示;如果有外中断来,开始秒表 的计时,启动定时器0,数码管切换到显示秒表时间;之后再按键,关 闭定时器0,实现暂停,显示定时时间;再按一次键,将标志位清0,退 出秒表,返回显示当前系统时间。在秒表功能时,定时器1(系统时 间)正常工作,使得在秒表计时过程中,系统时间不会受到影响。
前记录的时间,按第三次计时停止,回到初始态; ③有时间显示的功能,当不用电子秒表的功能时,显示当前的时
间,分别为时分秒形式。 (2)课程设计要求:
①独立完成课程设计任务; ②通过老师现场验收; ③交出完整的课程设计报告。
1.2 课程设计原理
根据题目要求,要完成电子秒表和时间显示的功能,在本次设计中 主要使用了8051微控制器以及74LS138、74LS245和数码管等部分来完 成时钟以及秒表的模拟。
XXXXXX大学
课程设计报告
课程设计名称:单片机系统综合课程设 计
课程设计题目:电子秒表的设计 与实现
院(系): 专 业: 班 级: 学 号: 姓 名: 指导教师: 完成日期:
目录
第1章 总体设计方案 1.1 课程设计的内容和要求
1.2 课程设计原理 1.3 课程设计思路 1.4 实验环境
第2章 详细设计方案
XTAL1和XTAL2两个引脚之间接一个6MHz(之后使用定时器需要按照
该频率进行计算)的晶振,之后两端并联接两个无极性电容再接地构成
时钟电路,为单片机提供时钟控制信号;复位电路采用按键电平复位方
式,详细电路见附录,使得按下复位键以后,实现单片机的复位B9,实现单片机与PC机的通
具体流程图如下:
图2.5 定时器1中断流程图
2.3.4外中断0处理子模块
外中断0作为秒表和当前时间切换的处理,同时在秒表功能时,实 现开始计时、暂停、退出的功能。当外接按键按下时在INT0引脚产生一
个负跳沿,从而触发外中断,进入中断处理函数。在外中断处理函数中 首先判断全局变量(标志位flag)的值,根据该值的不同进行不同的处 理。当flag=0时,开始秒表功能,首先各个值(毫秒、秒、分)全部初 始化为0,之后启动定时器0(秒表开始计时),最后标志位加 1(flag++),使得返回主函数以后因为该标志非0,开始显示秒表的时 间;当flag=1时,秒表暂停,关闭定时器0,最后标志位加1(flag++), 使得返回主函数以后该标志非0,并且定时器0已关闭,实现秒表暂停的 功能,数码管显示秒表计时的时间;当flag=2时,退出秒表,重新回到 当前时间,标志位清0(flag=0),使得返回主函数以后因为该标志非 0,又回到显示当前时间。
在主程序中首先进行初始化(定时器赋初值,开启中断等操作), 之后在死循环里通过判断一个全局变量(标志位flag)的值(0或者非 0)来选择显示秒表还是当前时间,该全局变量初始化为0,即系统启动 时显示当前时间(系统启动时只启动一个定时器),外中断来以后,在 中断处理函数中改变它的值,通过switch语句来选择对标志flag的操作以 及开启或者关闭定时器,在主程序中根据该值来完成相应的操作,实现 其对应的功能。
参考文献
[1] 张毅刚、刘杰.单片机原理及应用 [M].哈尔滨:哈尔滨工业大学出版 社.2004 [2] 高玉芹. 单片机原理与应用及C51编程技术 [M].北京:机械工业出版
具体流程图如下所示:
图2.3 系统初始化流程图
2.3.2定时器0中断处理子模块
定时器0作为秒表的计时,当定时器计数满而产生溢出时就会触置位 其对应的中断标志位(TF0)从而触发中断,之后转入中断处理函数, 在定时器0中断处理函数中首先重新给定时器赋初值(TH0=0XFE, TL0=0X0C),同时毫秒(mSec)加1,之后判断毫秒是否满1000,如 果满1000,毫秒置0,同时秒(Sec0)加1,同理通过判断对秒(Sec0)和 分(Min0)加1或者置0操作。这些完成以后就返回主函数。
具体流程图如下所示:
图2.2主程序流程图
2.3模块设计
本设计中总共设计了5个子模块:系统初始化子函数(Init)、外中断 0处理函数(Int0)、定时器0中断处理函数(Timer0)、定时器1中断处 理函数(Timer1)、数码管显示子函数(Print)。
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。
第二步测试当前时间(定时器T1),系统初始化时已经启动定时器1 和其对应的中断,之后不再改变其状态,因为要求在运行过程中当前时 间不能停止。该部分主要测试定时器溢出后能否进入中断,并且在中断 函数中对T1进行重新赋初值,和对变量(时Hour、分Min、秒Sec)的 操作。
第三步测试秒表计时(定时器T0),该部分同时用到外中断0,因为 需要用外中断0来控制秒表的开始、暂停、退出,对应于在外中断0中启 动或者停止定时器T0。系统初始化时开启外中断0和定时器T0的中断, 但是不启动T0。测试在按下键以后,能否进入外中断,如果不能进入, 需要查看硬件电路是否正确。进入外中断以后启动或者关闭定时器T0, 假如启动定时器,之后在定时器溢出以后能否进入T0中断,同时完成重 新赋初值和对变量(毫秒mSec、秒Sec0、分Min0)的操作。
具体流程图如下:
图2.6 数码管显示流程图
第3章 结果测试及分析
3.1 结果测试
首先测试数码管显示模块,因为之后的调试都需要数码管的显示功 能。测试过程中首先进行静态显示测试,根据实际的硬件电路分别向数 码管送位码和段码,看显示结果是否正确,然后加上延时函数,进行动 态显示测试,使在视觉效果下看到6个数码管同时点亮,并且正确显示 需要显示的数字,通过调整延时函数的时间,消除闪烁。
具体流程图如下:
图2.4 定时器0中断流程图
2.3.3定时器1中断处理子模块
定时器1作为当前时间的计时,当其计数满而溢出触发中断,进入 中断处理函数,定时器1处理函数中首先给定时器1重新赋值 (T1=0X3C0B),同时计数器count加1,之后判断计数器是否满10(即 是否计时到1秒),如果满10,count置0,同时秒加1(Sec++)。同理 通过判断对分(Min)和时(Hour)加1或者置0操作。这些完成以后就 返回主函数。
之后设置与中断相关的寄存器,分别开启定时器0,定时器1,INT0 的中(ET0=1,ET1=1,EX0=1),再开总中断(EA=1),设置外中断0的触 发方式为下降沿触发(IT0=1),设置中断优先级寄存器 (IP=0X0B)。
系统启动以后默认显示当前时间,秒表在使用时再开启,所以在初 始化函数中最后开启定时器1(TR1=1)。
时间或者秒表计时。
.3 课程设计思路
(1)提出方案 首先,在硬件设计上,在8051最小系统的基础下,其P0口作为8段
数码管的段码输出,接74LS245(具有数据缓冲和过流保护的功能), 74LS245的输出端接数码管的各段;P2口的低三位作为数码管的位选通 信号,接74LS138(具有位选功能)的输入端,其输出端接8段数码管的 位选通端;另外设计一个按键,作为8051外中断的输入信号,使用该键 完成选择秒表或者时钟显示以及开始、暂停、停止的功能,该按键接 8051的外中断输入引脚(P3.2或者P3.3)。