- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计秒表的实验报告
基于Freescale的秒表设计
实验报告
姓名: 车永发
学号: 0802040112
专业年级:资源勘查工程08级
学院(系):资源与环境学院
基于Freescale的秒表设计
实验目的:
了解Freescale单片机使用。
熟悉开发环境,理解和掌握时钟中断、数码显示、键盘输入 等相关知识。
实现秒表精确显示百分之一秒,并且在千分之一秒进行显时更新。
秒表实现清零、暂停等功能。
实验平台:
Freescale(飞思卡尔)MS9S12XS128MAL单片机开发板一套,Freescale程序下载器一个,直流稳压电源一个,计算机一台。
实验步骤:
查找并阅读Freescale的相关技术资料。
学习Freescale的学习课件。
明确实验目的,并确定、优化实验方案。
参阅Freescale的相关技术资料,编写最佳设计方案的程序代码。
结合已编写的程序,连接电路,再接通电源。
将程序下载到Freescale单片机中,并进行测试。
整理学习资料,撰写实验报告。
设计思路:
本实验通过数码管的不断扫描显示秒表时间,单片机通过接收键盘输入清零与暂停指令,以实现相应的功能。但对于内部的准确计时方式主要有以下两种方案:
方案一:主要采用用户编写的延时函数,通过不同的循环方式,记录系统执行程序所需要的时间来实现秒表的计时。
方案二:主要采用单片机的时钟中断功能,通过设定时钟中断间隔,记录循环次数来实现秒表的准确计时。
方案比较:
由于单片机的执行速度非常快,执行简单语句的时间远远小于秒,因此,方案一通过设定特定的循环次数,可以实现秒表的计时,但是,系统的运行速度会受到系统环境的影响,也即是说其时间的准确性极容易受到系统环境的影响。与方案一相比,尽管方案二也会受到系统环境的影响,但是,在采用时钟中断的情况下,相应程序的执行时间会大大减少,因此对时间准确性的影响程度远远低于方案一。
基于方案比较,我们采用方案二,由时钟中断程序控制时间的更新频率,以下为其设计思路的框图:
电路原理图
程序流程图:
依据以上设计,初步完成了相关程序的编写。
实验测试:
结合程序把单片机的扩充板上的相关接口用导线正确连接,并且连接好下载器,接通电源。
把程序下载到单机中,进行测试。
通过测试发现清零的实现有两种情况:
跑秒过程中即可以清零也可以暂停;
跑秒过程中不可以清零,只有暂停之后才可以清零。
由于在跑秒过程中清零,不具有实际意义,因此,我们确定用第二种方法实现清零与暂停。
实验结论:
本实验用单片机简单实现了秒表的精准计时,在人们对时间的准确性要求越来越高的当今世界具有重要的现实意义。尤其是在现代工业的精确定时领域和体育赛事过程中应用较为广泛。
附录:程序代码
#include Cpu.h
#include Events.h
#include TI1.h
#include PE_Types.h
#include PE_Error.h
#include PE_Const.h
#include IO_Map.h
#define led_dat PTP
#define led_1 PTT_PTT0
#define led_2 PTT_PTT1
#define led_3 PTT_PTT2
#define led_4 PTT_PTT3
const byte a[16]={0xC0,0xF9,0xA4,0xb0,0x99,
0x92,0x82,0xF8,0x80,0x90,
0X08,0X03,0X46,0X21,0X06,0X0E};
#define POT PTP_PTP7
extern byte sec=0,ms=0,dem=2;
byte key=0;
byte temp=0;
void display(byte a1,byte a2,byte a3,byte a4,byte dem) {
PTT=0XFF;
led_dat=a[a1];
led_1=0;
if(dem==1)POT=0;
else POT=1;
Cpu_Delay100US(30);
PTT=0XFF;
led_dat=a[a2];
led_2=0;
if(dem==2)POT=0;
else POT=1;
Cpu_Delay100US(30);
PTT=0XFF;
led_dat=a[a3];
led_3=0;
if(dem==3)POT=0;
else POT=1
文档评论(0)