Visual+C++实现微秒级精度定时器

Visual+C++实现微秒级精度定时器
Visual+C++实现微秒级精度定时器

Visual C++实现微秒级精度定时器

在工产控制系统中,有许多需要定时完成的操作,如:定时显示当前时间,定时刷新屏幕上的进度条,上位机定时向下位机发送命令和传送数据等。特别是在对控制性能要求较高的控制系统和数据采集系统中,就更需要精确定时操作。众所周知,Windows是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队列中的消息就暂时被挂起,得不到实时处理。因此,不能简单地通过Windows消息引发一个对定时要求严格的事件。另外,由于在Windows中已经封装了计算机底层硬件的访问,所以要想通过直接利用访问硬件来完成精确定时,也比较困难。在实际应用时,应针对具体定时精度的要求,采取与之相适应的定时方法。

本实例实现了一中微秒级的精确定时,程序的界面提供了两个"Edit"编辑框,其中一个编辑框输入用户理想的定时长度,另外一个编辑框返回实际的时间长度,经过大量的实验测试,一般情况下误差不超过5个微秒。程序的运行界面如图一所示:

图一、实现微秒级的精确定时器

一、实现方法

Visual C++中提供了很多关于时间操作的函数,利用它们控制程序能够精确地完成定时和计时操作。Visaul C++中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数Se tTimer()设置定时间隔(退出程序时别忘了调用和SetTimer()配对使用的KillTimer ()函数),如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。这种定时方法非常简单,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,只可以用来实现诸如位图的动态显示等对定时精度要求不高的情况。

微软公司在其多媒体Windows中提供了精确定时器的底层API支持。利用多媒体定时器可以很精确地读出系统的当前时间,并且能在非常精确的时间间隔内完成一个事件、函数或过程的调用。利用多媒体定时器的基本功能,可以通过两种方法实现精确定时。1)使用ti meGetTime()函数,该函数定时精度为ms级,返回从Windows启动开始所经过的时间。由于使用该函数是通过查询的方式进行定时控制的,所以,应该建立定时循环来进行定时事件的控制。2)使用timeSetEvent()函数,该函数原型如下:

该函数的参数说明如下:参数uDelay表示延迟时间;参数uResolution表示时间精度,在Windows中缺省值为1ms;lpTimeProc表示回调函数,为用户自定义函数,定时调用;参数dwUser表示用户提供的回调数据;参数fuEvent为定时器的事件类型,TIME_ONESHOT 表示执行一次;TIME_PERIODIC:周期性执行。具体应用时,可以通过调用timeSetEvent()函数,将需要周期性执行的任务定义在lpTimeProc回调函数中(如:定时采样、控制等),从而完成所需处理的事件。需要注意的是:任务处理的时间不能大于周期间隔时间。另外,在定时器使用完毕后,应及时调用timeKillEvent()将之释放。下面这段代码的主要功能是设置两个时钟定时器,一个间隔是1ms,一个间隔是2s。每执行一次,把当前系统时钟值输入文件"cure.out"中,以比较该定时器的精确度。

在精度要求较高的情况下,如要求定时误差不大于1ms时,还可以利用GetTickCount ()函数返回自计算机启动后的时间,该函数的返回值是DWORD型,表示以ms为单位的计算机启动后经历的时间间隔。通过两次调用GetTickCount()函数,然后控制它们的差值来取得定时效果.下列的代码可以实现50ms的精确定时,其误差是毫秒级的。

用上述两种方式取得的定时效果虽然在许多场合已经满足实际的要求,但由于它们的精度只有毫秒级的,而且在要求定时时间间隔小时,实际定时误差大。对于精确度要求更高的定时操作,则应该使用QueryPerformanceFrequency()和QueryPerformanceCounter()函数。这两个函数是Visual C++提供并且仅供Windows 95及其后续版本使用,其精度与C PU的时钟频率有关,它们要求计算机从硬件上支持精确定时器。QueryPerformanceFrequen cy()函数和QueryPerformanceCounter()函数的原型如下:

上述两个函数的参数的数据类型LARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构,其具体用法根据编译器是否支持64位而定。该类型的定义如下:

使用QueryPerformanceFrequency()和QueryPerformanceCounter()函数进行精确

定时的步骤如下:

1、首先调用QueryPerformanceFrequency()函数取得高精度运行计数器的频率f,单

位是每秒多少次(n/s),此数一般很大;

2、在需要定时的代码的两端分别调用QueryPerformanceCounter()以取得高精度运行计数器的数值n1、n2,两次数值的差值通过f换算成时间间隔,t=(n2-n1)/f,当t大于

或等于定时时间长度时,启动定时器;

二、编程步骤

1、启动Visual C++6.0,生成一个基于对话框的应用程序,将程序命名为"HightTimer ";

2、在对话框面板中添加控件,布局如图一所示,其中包含两个静态文本框,两个编辑框和两个按纽。上面和下面位置的编辑框的ID分别为IDC_TEST和IDC_ACTUAL,"EXIT"按纽的ID为IDOK,"TEST"按纽ID为ID_TEST;

3、通过Class Wizard添加成员变量,两个编辑框控件分别对应为DWORD m_dwTest和DWORD m_dwAct,另外添加"TEST"按纽的鼠标单击消息处理函数;

4、添加代码,编译运行程序。

三、程序代码

四、小结

本实例介绍了实现精确定时的不同方法,尤其是对于需要精确到微秒级别的定时处理,给出了实现的方法和代码,细心的读者朋友在运行程序的过程中可能会发现要求的定时长度和实际返回的时间长度还是有一些差异的,造成上述情况的原因是由于在进行定时处理时,还需要运行一些简单的循环代码,所以会产生微秒级的误差

高精度时钟芯片的测试方法介绍

高精度时钟芯片的测试方法介绍 中国电子科技集团公司第五十八研究所武新郑解维坤 摘要: 高精度时钟芯片是一种能够提供精确计时的芯片,相对于普通的时钟芯片,它的晶体和温度补偿集成在芯片中,为提高计时精度提供了保障,它同时还具备日历闹钟功能、可编程方波输出功能等。本文以DS3231芯片为例,以J750Ex测试机和相关仪表为测试环境,重点介绍以I2C总线协议为基础的内部寄存器功能和芯片各模块功能的测试。通过测试机测试保存在寄存器中秒、分、时、星期、日期、月、年和闹钟设置等信息,以及电源控制功能,通过测试机对示波器和频率计的程控实现对老化修正和输出频率的测试,同时还会重点介绍该芯片时钟精度的测试方法和测试环境。 关键词: 高精度时钟芯片;DS3231芯片;J750Ex测试机;I2C总线协议 Introduction of testing method of the extremely accurate RTC Wu Xin-zheng (China Electronic Technology Group Corporation, No.58 Research Institute , Jiangsu Wuxi 214035, China) Abstract: The extremely accurate real time clock is a piece of chip which can maintain accurate timekeeping, compared with the ordinary RTC chip, its integrated temperature compensated crystal oscillator and crystal are located in the center of the chip, which provides an assurance for promoting the exacticy, it also has two programmable time-of-day alarms and a programmable square-wave output. This paper takes DS3231 for instance, the environment with J750Ex and related instruments, introduces inner register with I2C and the testing method of every module. The ATE tests seconds, minutes, hours, day, date, month, and year information, the function of power. By means of OSC and frequency meter, it can test the output wave and register for aging trim, at the same time, also introduced the testing method and environment of accuracy. Key words:

专用定时器的设计

一种基于单片机的多功能定时器的设计摘要与关键词:定时器、 目录:1.设计任务 2.方案设计与论证 3.硬件电路设计 3.1 STC单片机的最小系统 3.2 LED显示与单片机接口 3.3 发光二极管、按键、继电器与单片机接口 4.软件设计 4.1 发光二极管指示程序 4.2 键扫描程序 4.3 数码管的显示程序 5.系统调试 6.电路原理图 7.源程序 8.主要参考文献 前言 正文 结论 致谢 附录 参考文献

1.1.设计任务 设计一个基于单片机控制的专用定时器。要求定时器可以实现三个时间的显示,而且每个时间的初值都可以改变,独立完成系统的分析、设计和程序编写,记录开发过程中的问题及解决方法,要有设计过程和原理图,并自行设计满足设计任务的稳压电源。 设计主要指标参数: (1)定时时间1。1S~99S,可调。 (2)定时时间2。1S~99S,可调。 (3)定时时间3。1min~99min,可调。 (4)所有时间数字均可调。 (5)用LED数码管显示剩余时间。 1.2设计意义 近年来随着科技的飞速发展,单片机的应用正不断地走向深入,同时带动传统控制检测的日新月异地更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,根据具体硬件结构以及具体应用对象的特点,与软件相结合,加以完善。单片机之所以在工业控制中有大量的应用,就在于它有独特的定时、计数功能。在工业检测、控制中,许多场合都要用到计数或定时的功能。例如,对外部脉冲进行计数、产生精确的定时时间等。人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。 “定时器”总的来说有两种类型。一种是基于模拟技术的传统产品,这种定时器的功能简单,尽管曾经被广泛应用过,但已列入淘汰之列。另一种是基于数字技术的新一代产品,这种产品功能强,是前者的代换之物。 本设计开发了一种基于单片机的多用途定时器。它造价低,功能全,整体功能价格比较高,配以小键盘和LED显示器,可适应各种场合的定时预警之用。 1.3整体设计方案 基于单片机系统的定时器电路包含了如下的功能模块: ●基本的单片机系统 ●单片机的定时中断 ●单片机的外围电路 ●外部按键输入装置 ●数码管LED显示装置 设计要求输出如图1.1所示的时间定时输出,并显示每个时间的剩余时间。其中三个时间有各自的调节范围:T1, 1S~99S; T2,1S~99S; T3, 1min~99min. 1.31 方案一:利用单片机的定时器完成定时要求。

PCF8563实时时钟高精度调整方法

广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax: 38730925 https://www.360docs.net/doc/8f10391336.html, PCF8563实时时钟高精度调整方法 一、概述 PCF8563是PHILIPS公司设计生产的经典工业级实时时钟芯片(RTC),I2C总线接口,具有功耗低、精度高等特点,广泛应用于电表、水表、气表、电话等产品。本文将介绍如何调整PCF8563时钟精度的方法。 二、电路原理 图1 PCF8563高精度调整 三、相关说明 如图1所示,R3、R4为I2C总线上拉电阻,若总线速度高于100KHz,电阻阻值要更小。由于PCF8563的中断输出及时钟输出均为开漏输出,所以要外接上拉电阻(如图1的R1、R2),若不使用这两个信号,对应的上拉电阻可以不用。 对于PCF8563芯片,需外接时钟晶振32768Hz(如图1的X1),推荐使用5ppm或更稳定的晶振。PCF8563典型应用电路推荐使用15pF的晶振匹配电容,实际应用时可以作相应的调整,以使RTC获得更高精度的时钟源。一般晶振匹配电容在15pF~21pF之间调整(相对于5ppm精度的32768Hz晶振),15pF电容时时钟频率略偏高,21pF电容时时钟频率略偏低。 四、操作方法 1. 设置PCF8563时钟输出有效(CLKOUT),输出频率为32.768KHz。 使用高精度频率计测量CLKOUT输出的频率。 2. 根据测出的频率,对JC1、JC2、JC3作短接或断开调整。频率比32768Hz偏高时, 3. 加大电容值;频率比32768Hz偏低时,减小电容值。 说明:图1中的C1、C2、C3的值在1pF~5pF之间,根据实际情况确定组合方式,以便于快速调整。推荐使用(3pF、3pF、3pF)、(1pF、2pF、3pF)、(2pF、3pF、4pF)。 - 1 -

倒计时定时器设计

一、倒计时定时器设计 1、20秒、30分钟到计时计数器 1、1 设计要求: 20s倒计时定时器:倒计时由按钮启动,计时精度0.1s,在数码管中显示倒计时值。 30分钟倒计时定时器:倒计时由按钮启动,计时精度1s,在数码管中显示倒计时值。 1、2设计的作用目的: 此次设计是我们更进一步了解基本电路的设计流程,提高自己的设计理念,丰富自己的理论知识,巩固所学知识,使自己的动手动脑能力有更进一步提高,为自己今后的学习和工作打好基础,为自己的专业技能打好基础。通过解决实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,以便今后自己在单片机领域的学习和开发打下基础,提高自己的动手能力和设计能力,培养创新能力,丰富自己的理论知识,做到理论和实践相结合。本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式作更深层次的了解。 1、3问题分析: 在电子技术飞速发展的今天,电子产品的人性化和智能化已经非常成熟,其发展前景仍然不可估量。如今的人们需求的是一种能给自己带来方便的电子产品,当然最好是人性化和智能化的,如何能做到智能化呢?单片机的引入就是一个很好的例子。单片机又称单片微型计算机,也称为微控制器,是微型计算机的一个重要分支,单片机是20世纪70年代中期发展起来的一种大规模集成电路芯片,是集CPU,RAM,ROM,I/O接口和中断系统于同一硅片上的器件。单片机的诞生标志着计算机正式形成了通过计算机系统和嵌入式计算机系统两个分支。目

linux内核定时器详解及实例

Linux内核定时器详解 80X86体系结构上,常用的定时器电路 实时时钟(RTC) RTC内核通过IRQ8上发出周期性的中断,频率在2-8192HZ之间,掉电后依然工作,内核通过访问0x70和0x71 I/O端口访问RTC。 时间戳计时器(TSC) 利用CLK输入引线,接收外部振荡器的时钟信号,该计算器是利用64位的时间戳计时器寄存器来实现额,与可编程间隔定时器传递来的时间测量相比,更为精确。 可编程间隔定时器(PIT) PIT的作用类似于微波炉的闹钟,PIT永远以内核确定的固定频率发出中断,但频率不算高。 CPU本地定时器 利用PIC或者APIC总线的时钟计算。 高精度时间定时器(HPET) 功能比较强大,家机很少用,也不去记了。 ACPI电源管理定时器 它的时钟信号拥有大约为3.58MHZ的固定频率,该设备实际上是一个简单的计数器,为了读取计算器的值,内核需要访问某个I/O端口,需要初始化 定时器的数据结构 利用timer_opts描述定时器 Timer_opts的数据结构 Name :标志定时器员的一个字符串 Mark_offset :记录上一个节拍开始所经过的时间,由时钟中断处理程序调用 Get_offset 返回自上一个节拍开始所经过的时间

Monotonic_clock :返回自内核初始化开始所经过的纳秒数 Delay:等待制定数目的“循环” 定时插补 就好像我们要为1小时35分34秒进行定时,我们不可能用秒表去统计,肯定先使用计算时的表,再用计算分的,最后才用秒表,在80x86架构的定时器也会使用各种定时器去进行定时插补,我们可以通过cur_timer指针来实现。 单处理器系统上的计时体系结构 所有与定时有关的活动都是由IRQ线0上的可编程间隔定时器的中断触发。 初始化阶段 1. 初始化间,time_init()函数被调用来建立计时体系结构 2. 初始化xtime变量(xtime变量存放当前时间和日期,它是一个timespec 类型的数据结构) 3. 初始化wall_to_monotonic变量,它跟xtime是同一类型的,但它存放将加在xtime上的描述和纳秒数,这样即使突发改变xtime也不会受到影响。 4. 看是否支持高精度计时器HPET 5. 调用select_timer()挑选系统中可利用的最好的定时资源,并让 cur_timer变量指向该定时器 6. 调用setup_irq(0,&irq0)来创建与IRQ相应的中断门。 时钟中断处理程序 1. 在xtime_lock顺序锁产生一个write_seqlock()来保护与定时相关的内核变量,这样防止中断让该进程被阻止。 2. 执行cur_timer定时器对象的mark_offset方法(记录上一个节拍开始所经过的时间,由时钟中断处理程序调用) 3. 调用do_timer_interrupt函数,步骤为 a) 使jiffies_64值增1 b) 调用updata_times()函数来更新系统日期和时间。

DS3231高精度时钟模块程序

模块参数: 1.尺寸:38mm(长)*22mm(宽)*14mm(高) 2.重量:8g 3.工作电压:3.3--5.5V 4.时钟芯片:高精度时钟芯片DS3231 5.时钟精度:0-40℃范围内,精度2ppm,年误差约1分钟 6.带2个日历闹钟 7.可编程方波输出 8.实时时钟产生秒、分、时、星期、日期、月和年计时,并提供有效期到2100年的闰年补偿 9.芯片内部自带温度传感器,精度为±3℃ 10.存储芯片:AT24C32(存储容量32K) 11.IIC总线接口,最高传输速度400KHz(工作电压为5V时) 12.可级联其它IIC设备,24C32地址可通过短路A0/A1/A2修改,默认地址为0x57 13.带可充电电池LIR2032,保证系统断电后,时钟任然正常走动 接线说明,以Arduino uno r3为例: SCL→A5 SDA→A4 VCC→5V GND→GND 代码部分: #include #include #define uchar unsigned char #define uint unsigned int sbit SDA=P3^6; //模拟I2C数据传送位SDA sbit SCL=P3^7; //模拟I2C时钟控制位SCL sbit INT=P3^2; sbit RESET=P3^3; sbit led0=P1^0; sbit led1=P1^1; sbit led2=P1^2; sbit led3=P1^3; sbit led4=P1^4;

sbit led5=P1^5; sbit led6=P1^6; sbit led7=P1^7; bit ack; //应答标志位 #define DS3231_WriteAddress 0xD0 //器件写地址 #define DS3231_ReadAddress 0xD1 //器件读地址 #define DS3231_SECOND 0x00 //秒 #define DS3231_MINUTE 0x01 //分 #define DS3231_HOUR 0x02 //时 #define DS3231_WEEK 0x03 //星期 #define DS3231_DAY 0x04 //日 #define DS3231_MONTH 0x05 //月 #define DS3231_YEAR 0x06 //年 //闹铃1 #define DS3231_SALARM1ECOND 0x07 //秒 #define DS3231_ALARM1MINUTE 0x08 //分 #define DS3231_ALARM1HOUR 0x09 //时 #define DS3231_ALARM1WEEK 0x0A //星期/日 //闹铃2 #define DS3231_ALARM2MINUTE 0x0b //分 #define DS3231_ALARM2HOUR 0x0c //时 #define DS3231_ALARM2WEEK 0x0d //星期/日 #define DS3231_CONTROL 0x0e //控制寄存器 #define DS3231_STATUS 0x0f //状态寄存器 #define BSY 2 //忙 #define OSF 7 //振荡器停止标志#define DS3231_XTAL 0x10 //晶体老化寄存器 #define DS3231_TEMPERATUREH 0x11 //温度寄存器高字节(8位) #define DS3231_TEMPERATUREL 0x12 //温度寄存器低字节(高2位) uchar code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0,1,2,3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff}; // 4,5,6,7,8,9,off

VC++实现微秒级的精确定时器

在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位机定时向下位机发送命令和传送数据等。特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要精确定时操作。 众所周知,Windows是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队列中的消息就暂时被挂起,得不到实时处理。因此,不能简单地通过Windows消息引发一个对定时要求严格的事件。另外,由于在Windows中已经封装了计算机底层硬件的访问,所以,要想通过直接利用访问硬件来完成精确定时,也比较困难。所以在实际应用时,应针对具体定时精度的要求,采取相适应的定时方法。 VC中提供了很多关于时间操作的函数,利用它们控制程序能够精确地完成定时和计时操作。本文详细介绍了 VC中基于Windows的精确定时的七种方式: 方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。这种定时方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅为30ms,CPU占用低,且定时器消息在多任务操作系统中的优先级很低,不能得到及时响应,往往不能满足实时控制环境下的应用。只可以用来实现诸如位图的动态显示等对定时精度要求不高的情况。如示例工程中的Timer1。 方式二:VC中使用sleep()函数实现延时,它的单位是ms,如延时2秒,用sleep(2000)。精度非常低,最小计时精度仅为30ms,用sleep函数的不利处在于延时期间不能处理其他的消息,如果时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer2。 方式三:利用COleDateTime类和COleDateTimeSpan类结合WINDOWS的消息处理过程来实现秒级延时。如示例工程中的Timer3和Timer3_1。以下是实现2秒的延时代码: COleDateTime start_time =COleDateTime::GetCurrentTime(); COleDateTimeSpan end_time=COleDateTime::GetCurrentTime()-start_time; while(end_time.GetTotalSeconds()< 2) //实现延时2秒 { MSG msg; GetMessage(&msg,NULL,0,0); TranslateMessage(&msg); DispatchMessage(&msg);

基于DS12C887时钟芯片的高精度时钟的设计

华侨大学厦门工学院本科生毕业设计(论文) 时钟芯片地高精度时钟地设计基于DS12C887题目: 吴挺名:姓 0902106019 号:学 电气工程系别: 专业:电气工程及其自动化 年级:2009 指导教师:刘晓东 年月日 独创性声明 本毕业设计(论文)是我个人在导师指导下完成地.文中引用他人研究成果地部分已在标注中说明;其他同志对本设计(论文)地启发和贡献均已在谢辞中体现;其它内容及成果为本人独立完成.特此声明. 日期:论文作者签名: 关于论文使用授权地说明 本人完全了解华侨大学厦门工学院有关保留、使用学位论文地规定,即:学院有权保留送交论文地印刷本、复印件和电子版本,允许论文被查阅和借阅;学院可以公布论文地全部或部分内容,可以采用影印、缩印、数字化或其他复制手段保存论文.保密地论文在解密后应遵守此规定. 日期:指导教师签名:论文作者签名: 时钟芯片地高精度时钟地设计DS12C887基于摘要

随着社会地发展人们地生活节奏越来越快,每天地工作,学习,休息地时间都安排地很紧,需要一个时钟准确地报时.人们对时钟地要求越来越高,不仅要求每天地地时间误差小于几毫秒,还要求具有定时闹钟,具有万年历等功能.传统地日历电子钟元器件多、维修麻烦、误差大、功能更新不方便.DS12C887时钟芯片能够自动显示年、月、日、时、分、秒等时间信息,同时还具有校时,报时,闹钟等功能.DS12C887也可以很方便地由软件编程进行功能地调整或增加.所以设计基于DS12C877时钟芯片地高精度时钟地设计具有十分重要地现实意义和实用价值. 关键词:DS12C887,时钟芯片,单片机STC89C52,高精度时钟 Design of high precision clock based on clock chip DS12C887 Abstract With the development of society, people life rhythm faster and faster, a day's work, study and rest time arrangement is very tight, need a clock tell the time accurately. People is higher and higher requirement for the clock, every day not only requires the time error is less than a few milliseconds, also requires a timing alarm clock, a calendar, and other functions. Traditional electronic clock calendar components, maintenance trouble, big error, function more update is not convenient. Chip DS12C887 clock automatically display year, month, day, hours, minutes and seconds time information, but also with the school, the time, alarm clock, and other functions. DS12C887 can also be very convenient by the software programming to adjust function or to increase. So the design is based on DS12C877 clock chip design of high precision clock has very important practical significance and practical value. Keywords: DS12C887,clock chip microcontroller STC89C52,high-precision clock

WinCC 中定时器使用方法介绍

1、定时器功能介绍 2、脚本中定时器介绍 3、使用脚本实现更多定时器功能 3.1 整点归档 3.2 WinCC 项目激活时避免脚本初次执行及延迟执行脚本1 定时器功能介绍 WinCC 中定时器的使用可以使 WinCC按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。WinCC 已经提供了一些简单的定时器,可以满足大部分定时功能。但是在有些情况下,WinCC 提供的定时器不能满足我们需求,这时我们就可以通过 WinCC 提供的脚本接口通过编程的方式实现定时的功能,因为脚本本身既可以直接调用 WinCC其他功能,比如报表打印,也可以通过中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。WinCC 提供了 C 脚本和 VBS 脚本,本文主要以全局 C 脚本编程为例介绍定时功能的实现。 2 脚本中定时器介绍既然在全局脚本中可以编程控制其他功能的执行,那么首先看看全局脚本的触发: 图1 脚本触发器分类如图1所示:脚本触发器分为使用定

时器和使用变量,定时器又分为周期执行和非周期执行一次,比如每分钟执行一次脚本属于周期执行,指定2012年10月1日执行一次属于非周期执行。使用变量触发脚本,即在变量发生变化时,脚本就执行一次,而变量的采集可以根据指定周期循环采集,或者根据变化采集,根据变化实际是1秒钟采集变量一次。 3使用脚本实现更多定时器功能 利用脚本自身的定时器,可以通过在脚本中编程的方式实现更多其它定时功能。 3.1整点归档 WinCC提供了变量归档,变量归档分为周期归档和非周期归档,不管是周期归档或非周期的归档,都又可以通过一些变量或脚本返回值来控制归档,比如:整点归档。下面的设置结合WinCC脚本,实现了在整点开始归档,归档五分种后停止归档,即每个小时仅归档前五分钟的数据。 软件环境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3 归档名称:ProcessValueArchive 归档变量:NewTag 归档周期:1 分钟 归档控制变量 startarchive C脚本触发周期:10秒 脚本代码: #include"apdefap.h" int gscAction( void ) { #pragma option(mbcs) #pragma code ("kernel32.dll");

高精度大屏幕LED日历时钟设计

论文题目:高精度大屏幕LED日历时钟设计 A high precision and large screen LED calendar clock design 系别: 专业: 班级: 姓名: 学号: 指导老师: 职称: 日期:

目录 目录 ................................................................. I 摘要 ................................................................. II 第1章引言.. (4) 1.1背景与意义 (4) 1.2论文设计 (4) 1.2.1 系统设计实现的目标 (4) 1.2.2 系统的总体设计 (4) 第2章需求分析 (5) 2.1需求分析 (5) 2.2 可行性分析 (6) 2.3开发及运行环境 (7) 第3章硬件电路设计 (7) 3.1单片机最小系统 (7) 3.2时钟芯片设计 (8) 3.2.1时钟芯片引脚介绍 (8) 3.2.2 4个控制寄存器介绍 (9) 3.3按键调整电路 (11) 3.4电源模块 (11) 第4章软件设计 (12) 4.1主程序流程 (12) 4.2 时间设置子流程 (12) 4.3闹钟设置子程序流程 (13) 4.4程序设计问题 (13) 4.4.1 按键抖动问题 (13) 4.4.2 蜂鸣器设置 (14) 4.4.3 液晶显示器设置 (14) 4.4.4中断设置 (14) 第5章测试 (15) 5.1测试软件介绍 (15) 5.2软件调试 (15) 结束语 (17) 致谢 (18) 参考文献 (19) 附录 (20) 程序代码: (20)

定时器的设计论文

课程设计 题目定时器的设计 学生姓名黄冬冬学号1110064069所在院(系)物电学院 专业班级电信1103班 指导教师刘亚锋 完成地点陕西理工学院实验楼506 2013年10月15日

目录 摘要 (1) 引言 (1) 1、任务要求 (2) 2、所需实验设备、器材和软件 (2) 2.1所需实验设备 (2) 2.2所需实验器材 (3) 2.3所需实验软件 (4) 3、方案选择 (4) 3.1方案一 (4) 3.2方案二 (4) 3.3方案三 (5) 3.4方案对比与选择 (6) 4、流程图 (6) 5、仿真与测试 (7) 5.1仿真图形 (7) 5.2测试结果 (7) 5.3出现的问题及解决方法 (8) 5.4总结 (8)

6不足之处 (8) 参考文献 (9) 定时器的设计 摘要:本设计利用555时基集成电路构成的定时开关电路,采用纯数字电路的知识,用纯逻辑电路来实现定时的实现,用NE555作为控制芯片,加入了比较器C2的同相输入端接到分压电阻网络的1/3Vcc处,反相输入端2为触发电压输入端,用来启动电路。两个比较器的输出端控制RS触发器,实现了定时器的设计。 【关键字】555继电器稳态 引言 定时器,是指装有时段或时刻控制机构的开关装置;定时器有一个频率稳定的振荡源,通过齿轮传动或集成电路分频计数,当将时间累加到预置数值时,或指示到预置的时刻处,定时器即发送信号控制执行机构。定时器有机械式、电动式和电子式三类,其中机械式定时器以发条为原动力,用擒纵调速器控制走时精度,通过齿轮传动和凸轮,按时间控制机构预置的时段操纵执行机构动作;电动式定时器用交流同步电动机或石英步进电机驱动,通过齿轮传动和凸轮簧片触点机构,按预置的时段或时刻控制执行机构;电子式定时

基于单片机的定时器设计.

电气信息学院 课程设计任务书 课题名称基于单片机的定时器设计 姓名Front专业班级学号 校内指导老师企业指导老师 课程设计时间2017年3月6日-2017年3月17日(3、4周) 教研室意见意见:审核人: 一、设计任务及要求 1、设计任务: 以单片机为核心设计一个音乐提示定时器,具备倒数计时、时间修改、音乐演奏等功能。可作为微电脑倒数计数器,做一小段时间计时,放在家中使用,例如煮泡面、煮开水或小睡片刻等;用于全自动洗衣机洗涤完毕音乐提示定时器。设计4个按键设置现在想要倒数的时间:K1--可调整倒数时间为1-60分钟;K2—设置倒数计时时间为5分钟,显示为“05”;K3—设置倒数计时时间为20分钟,显示为“20”;K4—设置倒数计时时间为60分钟,显示为“60”;一旦按键后则开始倒计时,当计时为0则演奏一曲音乐;内定倒数计时时间为5分钟,显示为05。 2、设计要求: 1)设计方案要合理、正确; 2)系统硬件设计; 3)系统软件设计及调试; 4)系统联调; 5)写出设计报告。 二、进度安排 第一周: 周一:集中布置课程设计任务和相关事宜,查资料确定系统总体方案。 周二~周三:完成硬件设计和电路连接 周四~周日:完成软件设计 第二周: 周一~周三:程序调试 周四~周五:设计报告撰写。周五进行答辩和设计结果检查。

三、参考文献 1)《微型计算机原理及应用》许立梓编机械工业出版社 2002 2)《微型计算机接口技术及应用》刘乐善编华中理工大学出版社 2000 3)《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社 2000 4)《16位微型计算机原理接口及其应用》周佩玲编中国科学技术大学出版社2000 5)《微型计算机原理与接口技术》吴秀清编中国科学技术出版社 2001 6)《微型计算机接口技术》邓亚平编清华大学出版社 2001 7)《单片机原理及及应用》王迎旭编机械工业出版社 2001 8)《单片机应用程序设计技术》周航慈著北京航空航天大学出版社 2002 9)《单片机实用技术问答》谢宜仁主编人民邮电出版社 2002

用C51语言实现单片机高精度定时的新算法

用C51语言实现单片机 高精度定时的新算法 刘 帆1林育兹1戴玉珍2 (1.厦门大学机电工程系,厦门 361005;2.上海电子信息职业技术学院,上海 201411) 摘要为提高8051单片机定时精度,扩展8051系列单片机的用途,本文分析了8051系列单片机定时器溢出中断与CPU响应中断的时间误差。在此基础上,提出了应用C51高级语言对多个定时器进行精确定时的误差补偿方法,并且使用Keil Uvision2仿真调试软件搭建一段数字显示式倒计时的实例程序,通过分析和调试误差补偿算法,使8051单片机在多个定时器同时使用的情况下,定时误差最终小于3个机器周期,是目前8051单片机高精度定时的一种新算法。 关键词:单片机;定时器;中断误差;C51 A New Arithmetic to Improve the Multi-timer Timing Accuracy by Using C51 Language with 8051 MCU Liu Fan1Lin Yuzi1Dai Yuzhen2 (1.Department of Electrical and Mechanical Engineering, Xiamen University, Xiamen 361005; 2. Shanghai Technical Institute of Electronics & Information, Shanghai 201411) Abstract In order to improve the timing accuracy of 8051MCU and expand the purpose for the series of 8051MCU, this paper analyzed the timing error between the timer interrupt overflow and interrupt response of CPU. It gives the way of solving the multi-timer timing error by using C51 advanced language. Besides it uses the simulate software —— Keil Uvision2 to build a Single chip control digital display of a counting down program, through analyzing and debug the compensate counting of error, it finally makes the error of timing for 8051MCU below 3 machine period in the condition of using the multi-timer timing. Key words:8051 MCU;timer;timing error;C51 1引言 对于8051系列单片机的定时应用已经有不少讨论,有的利用汇编语言对其定时器的中断时间进行误差补偿[4],但该方法的系统编程繁琐,且开发周期长等;有的利用C51程序实现T0的精确定时[5],但其算法仅适用于某些特定情况,且稳定性不高。因此,本文针对单片机多个定时器同时使用的定时误差进行分析,提出应用C51高级语言进行高精确定时的新算法,以解决上述定时方法所存在的问题,并给出了应用实例,具有一定的实用性。 2定时误差产生的原因 产生定时误差的主要原因有:①定时器产生溢出中断信号时,CPU正在执行某指令;②定时器溢出中断信号时,CPU正在执行某中断服务程序。2.1定时器工作方式的分析 8051单片机的2个定时/计数器,有方式0~方式3的4种工作方式。本文以最常用的定时方式1作讨论,其工作原理如图1所示。 由图1可知,单片机工作在方式1时,若定时/计数值计满溢出后,则定时/计数器的初值将被置零,并继续从THx=0x00,TLx=0x00开始计数。由于定时初值不会被重新装入,所以需要利用程序重新对THx、TLx赋值。但赋值操作需要占用一定时间,如果不补偿,会造成下一次定时/计数溢出中断信号的时间与理想值不符(即误差)。 2008年第3期 34

定时器产品使用说明书

定时器产品使用说明书 定时设置: 1、先检查时钟是否与当前时间一致,如需重新校准,在按住“时钟”键的同时,分别按住“星期”、“小时”、“分钟”键,将时钟调到当前准确时间。 2、按一下“设定”键,显示屏左下方出现“1开”字样(表示第一次开启的时间)。然后按“星期”调整本次设定的星期组合模式,再按“小时”、“分钟”键,输入所需开启的时间。 3、再按一下“设定”键,显示屏左下方出现“1关”字样(表示第一次关闭时间),再按“星期”、“小时”、“分钟”键,输入所需关闭的日期和时间。 4、继续按动“设定”键,显示屏左下方将依次显示“2开、2关、3开、3关……16开、16关”,参考步骤2、3设置以后各次开关时间。设置完成后,按一下“时钟”键返回。 5、如果每天不需设置16组开关,则必须按“清除”键,将多余各组消除,使其显示屏上显示“—:—”图样(不是00:00)。 6、按“模式”键,可以变换工作模式。总共有四种工作模式:A、液晶显示开(代表进入常开模式);B、液晶显示关(代表进入常关模式);C、由开进入自动(表示目前状态为开,等到下一组时间到后开始自动运行);D、由关进入自动(表示目前状态为关,等到下一组定时时间到后开始自动运行)。 当出现以下情况时: 1、定时器没有根据设定的程序开启或关闭,请检查设置程序是否正确或重新调整。 2、定时器长时间不用,显示模糊时,请将定时器接通电源充足,10分钟后无显示,按“复位”键,2-3秒。 3、如以上步骤均不能排除问题,请与公司或经销商联系维修。 注意事项: 1、对于那些因定时开关出错而可能发生的生命相关事故或者对社会产生重大影响的设备(如医疗设备等),请不要使用定时开关。 2、对于那些因定时开关出错而发生重大财产损失的设备(大型加热器或冷库),在使用本定时开关时,请务必是特性和性能的数值有足够的余量,并采取二重电路等安全对策。 3、请勿自行修理、分解或改造。 4、接通电源后请勿接触端子部分。本开关工作在无潮湿、腐蚀及高金属含量气体环境中。请勿沾染油或水。

单片机定时器设计报告

第一章绪论 1.1系统背景 ◆ 1.1.1单片机的介绍 单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性! ◆ 1.1.2单片机的应用 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说

ATMEGA16定时器的使用

ATMEGA16定时器的使用 [日期:2012-01-07 ] [来源:本站编辑作者:佚名] [字体:大中小] (投递新闻) /* 本程序简单的示范了如何使用ATMEGA16的定时器 AVR定时器的要点介绍 T0工作于CTC模式,输出1KHz/2KHz 50%占空比的方波 T1工作于快速PWM模式兼输入捕捉 T2工作于相位修正PWM模式,输出490Hz的8bit PWM波 出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器对于定时器,AVRstudio的软件仿真是不准确的。 */ #include #include #include //时钟定为8MHz,F_CPU=8000000 //管脚定义 #define ICPKEY 6 //ICP1 PD6 按键模拟ICP输入 #define PWM0 3 //OC0 PB3 #define PWM1A 5 //OC1A PD5 #define PWM1B 4 //OC1B PD4 #define PWM2 7 //OC2 PD7 //宏定义 #define PWM1A_ON() PORTD|= (1<

单片机定时器设计

摘要 摘要 随着时代的进步,电子行业的发展,定时器的应用也越来越广泛,单片机以其强大的功能,成为许多功能电子产品的首选。本次电子定时器电路根据设计要求采用AT89C51单片机来实现最大99秒倒计时,采用两位数码管显示。文章的核心主要是硬件介绍及连接和软件编程两个大的方面。硬件电路主要包括AT89C51、晶振电路、数码管,发光二级管,按键。软件用汇编语言实现,主要包括主程序、倒计时、重启控制程序等软件模块。采用软硬件配合基本能实现设定定时时间倒计时功能,达到了设计的要求和目的。并在Proteus软件上进行了仿真和调试。 关键词 AT89C51单片机;定时器;倒计时

目录 摘要…………………………………………………………………………………………… 第一章绪论......................................................... 1.1定时器的发展................................................. 1.2 电子定时器的应用............................................... 1.3选题的目的和意义................................................ 1.4 本章小结 第二章单片机的基础知识 (3) 2.1单片机简介 (3) 2.2单片机的特点 (3) 2.3 本章小节 第三章功能实现及硬件介绍 (4) 3.1 设计功能实现 (4) 3.2 C51单片机引脚介绍 (9) 3.3时钟和复位电路 3.4数码管显示 (10) 3.5键盘 (12) 3.6电气原理图……………………………………………………… 3.7本章小结 第四章软件设计 (15) 4.1 程序流程图 (15) 4.2定时1秒设计 (16) 4.3重新启动 (17) 4.4程序 (17) 4.5 本章小结 结论................................................................ 参考文献............................................................ 致谢.........................................................................

相关文档
最新文档