基于单片机的电子跑表设计.doc
《基于单片机的电子跑表设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的电子跑表设计.doc(19页珍藏版)》请在沃文网上搜索。
1、 目 录1 设计内容及要求11.1 设计内容与要求:11.2设计要求:12 系统总体方案设计22.1 总体方案设计22.2 设计说明23 各部分方案选定及接口设计33.1 主控制器单片机的选择33.2 时钟电路33.3显示接口电路33.4 键盘接口电路44 系统软件的设计54.1 设计说明54.2 主程序设计54.3 时间处理模块64.5 键盘扫描模块95 系统的调试与使用说明116 总结127 参考文献13附录:141 设计内容及要求1.1 设计内容与要求:具有时钟和电子跑表的功能。开机为时钟功能,用4位LED数码管显示时、分,以24小时计时方式;用按键控制切换到电子跑表功能:可用3位数码管
2、从00.0开始计时的功能。1.2设计要求:1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要元器件选择;4)完成应用程序设计;5)进行应用程序的调试;2 系统总体方案设计2.1 总体方案设计 电子跑表的设计有多种方法,例如,可用中小规模集成电路组成电子跑表;也可用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子跑表;还可以利用单片机来实现等等。为求结构简单,本次设计利用单片机组成数字电子跑表。2.2 设计说明 本系统采用AT89C51单片机、4位LDE数码管显示、一个排阻、4个调节按钮、2个电容与1个晶体振荡器共同构成本的单片机电子跑表的硬件。时钟模块与计时模块则分别由单片机内
3、部的定时器/记数器T0与T1来实现。时间显示功能通过LED数码管动态扫描来实现。电子跑表的启动/暂停/清零功能由软件来实现。P1.0实现时钟与秒表的切换功能,P1.1接开始计时键,P1.2接计时暂停键,P1.3接计时重新计时键。本系统软件部分则采用C51编写,功能模块结构化强,共利用了6个功能函数,2个中断服务函数和1个主函数构成了本次电子跑表的软件部分。图2.1为本系统方框图。AT89C51单片机模块4位共阴数码管显示模块时钟位驱动按键图2.1系统框图3 各部分方案选定及接口设计 3.1 主控制器单片机的选择本次设计采用AT89C51单片机,以下为其标准功能:4k 字节Flash 闪速存储器
4、,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操 作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.2 时钟电路单片机工作的时间基准是由时钟电路提供的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路,如图3.2所示。电路中,电容器C1和C2对振荡频率有微调作用,本
5、次设计中电容器取值为20pF,石英晶体选择12MHz,故单片机的机器周期为1us。图3.1 内部时钟电路3.3显示接口电路本次设计中使用了4位共阴数码显示管,显示控制采用动态显示,即数据的显示是由段和位选信号共同配合完成的。为了实现显示器的动态扫描,我们需要对显示器进行段控和位控,因此在显示器接口电路中需要有两个输出口,其中一个用于输出8条段控线;另一个用于输出位控线,位控线的数目等于显示器的位数。本次设计中用P1口与显示器的8条段控线相接,用P2.4P2.7与显示器的4条位控线相接。如图3.2所示。图3.2 显示接口电路3.4 键盘接口电路本设计的键盘接口电路中使用了4个按键分别与单片机的P
6、1.1P1.3口相连如图3.3所示,分别实现时钟/秒表切换、开始计时、暂停计时、重新计时的功能。按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免键的一次处理闭合,应采CPU多次按用措施消除抖动。 图3.3 键盘接口电路4 系统软件的设计4.1 设计说明 在进行应用软件设计时应采用模块化结构设计,其优点是:每个模块的程序结构简单,任务明确,易于编写,调试和修改,程序可读性好,
7、对程序的修改可局部进行,其他部分可以保持不变,便于功能扩充和版本升级,是便于多个模块的调用和分工合作。因此为了达到功能结构模块化,易读,简单,易移植的特点,故本次设计采用C51编写。 系统编写时可分为键盘扫描程序模块,时间处理模块,显示模块。如图4.1所示。将这些事先划分好的模块用C51编成不同的子函数,再将它们有机的结合起来从而达到系统的整体功能。 主函数 键盘扫描模块数码管显示模块 时间处理模块图4.1 软件设计模块4.2 主程序设计 本程序可分为4个模块,共定义了7个子函数,其中键盘扫描模块包括键盘扫描函数,数码管显示模块包括时钟显示函数、秒表显示函数,时间处理模块包括时钟系时间处理函数
8、、秒表系时间处理函数、延迟函数,,另本程序还利用了两个定时/计数器分别为T0、T1,故还需定义两个中断函数T0中断服务函数和T1中断服务程序。本程序中由于涉及时钟与秒表互切问题,故定义了一控制变量Numb并赋其初值0,若在仿真过中切到秒表则Numb取反为1,切到时钟则Numb重新为0。因此在程序运行过程中便可控制各按键功能及屏蔽在时钟模式或秒表模式下不相干功能键的影响。图4.2为主程序流程图。 开始 赋初值1?否是 键盘扫描函数否是否切换秒表是数码管显示秒表数码管显示时钟 结束图4.2主程序4.3 时间处理模块时钟处理函数用定时器T0定时10ms,其计数初值为,由于T0选用工作方式1,故M为即
9、65536,fosc为晶振频率为12MHZ,t为定时时间10ms,所以X的值为64536,将该值的高八位值赋给TH0,低八位并赋给TL0,这样便完成了T0的初始化工作,因为定时器T0工作在方式1下,故每次定时器T0溢出都需再给T0赋初值。由于T0定时10ms,所以要得到1s的时间需T0溢出100次,由此引入计数变量Count。每当T0溢出,Count便自动加1,直至计满100,便使秒变量Seconds自动加1并初始化Count重新开始计数,直到Seconds为60,初始化Seconds并使分变量Minutes自动加1,同理到时变量Hour为24时,初始化Hours,由此无限循环下去直到关闭电源
10、。图4.3为程序流程图 时钟时间处理函数 T0中断服务函数否否否否否是是是是Minutes=0时Hours+Minutes=60Seconds=0分Minutes+Seconds=60Count=0秒Seconds+Count=100Hours=0赋初值T0溢出启动T0计数变量Count+Hours=24图4.3 T0中断函数及时钟处理函数秒表时间处理函数用的是定时器T1与T0相同,同样定时10ms,高八位TH1赋值为,低八位TL1赋值为。T1的启动由按键扫描函数控制,当开启T1后,每次T1溢出,Decisec自动加1,直至Decisec到100,秒Sec自动加1,直至分Mint为10,初始化
11、Mint计时复位。图4.4为其程序流程图。启动T1T1溢出 秒表时间处理函数T1定时器中断服务函数否否否否是是是Mint=0Mint=10分Mint+Sec=0Sec=60秒Sec+Decisec=0Decisec=100分秒Decisec+赋初值图4.4 秒表处理函数及T1中断服务函数 4.5 键盘扫描模块时钟与秒表切换键程序:CHANGE键为时钟秒表切换键,当按下CHANGE键时,会产生按键抖动,本程序中利用delay(5)产生5ms延迟使得按键状态稳定后重新确认是否按下了CHANGE键即CHANGE为低电平,此时还需判断控制变量Numb是否为0(Numb为0即奇数次按下CHANGE键显示
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电子 跑表 设计
