单片机定时器的应用与误差纠正论文(精)
基于单片机的定时开关控制器的设计与实现毕业设计论文

目录摘要----------------------------------------------------------------- I关键词--------------------------------------------------------------- I Abstract ------------------------------------------------------------- I Key words ------------------------------------------------------------ I 1 引言--------------------------------------------------------------- 1 1.1研究背景与应用------------------------------------------------- 11.2主要研究内容--------------------------------------------------- 22 系统基本方案的选择与论证-------------------------------------------3 2.1本设计方案思路------------------------------------------------- 3 2.2可控开关设计的选择---------------------------------------------4 2.3时钟信号的实现------------------------------------------------- 52.4译码方案的选择------------------------------------------------- 73 硬件设计---------------------------------------------------------- 10 3.1可控开关电路-------------------------------------------------- 113.2电平转换电路-------------------------------------------------- 12 3.2.1 LM7805稳压电路------------------------------------------- 12 3.2.2 RS232电平转换电路---------------------------------------- 13 3.3单片机系统电路------------------------------------------------ 13 3.3.1单片机P89V51简介----------------------------------------- 13 3.3.2 P89V51RD2的时钟电路-------------------------------------- 153.4显示电路------------------------------------------------------ 164 软件设计---------------------------------------------------------- 17 4.1总体方案------------------------------------------------------ 17 4.2主程序流图---------------------------------------------------- 174.3中断模块说明-------------------------------------------------- 195 制作与调试-------------------------------------------------------- 19 5.1硬件电路的布线与焊接------------------------------------------ 19 5.1.1总体特点-------------------------------------------------- 19 5.1.2 电路划分与PCB的制作-------------------------------------- 19 5.1.3 焊接------------------------------------------------------ 20 5.2调试---------------------------------------------------------- 215.3改进与扩展---------------------------------------------------- 216 结论-------------------------------------------------------------- 21 参考文献------------------------------------------------------------ 22致谢---------------------------------------------------------------- 24 附录---------------------------------------------------------------- 24基于单片机的定时开关控制器的设计与实现摘要随着时代的进步,电子行业的发展,定时器的应用也越来越广泛。
80C51单片机定时误差的研究

1.引言传统农业生产中要大量使用农药,由于人们健康意识的提高,对粮食、蔬菜的品质要求越来越高,其中之一是对农产品中农药残留要求越来越高。
因此,需要对农业生产中的施药进行控制,即采用精准施药技术,而定时是其中的关键技术之一。
在以前的精准施药系统中,用Visual C++中SetTimer()函数定时其精度为55ms,GetTickCount()函数定时精度为1ms[1],但是由于占用了系统宝贵的资源,而且当需要更高的中断频率时这种方法就显得无能为力了[2]。
目前的方法缺乏通用性。
另外,对设置参数后产生的误差也没有准确分析。
通过分析,用80C51单片机可以减小误差,实现定时精度的提高,从而减少施药量。
不仅节约了生产成本,也可降低农产品中农药残留,提高农产品品质。
另外,也减少了因农药滥用而造成的环境污染的风险。
80C51单片机的控制系统中,有两种方法实现定时:软件延时,即让CPU循环执行一段时间,以实现软件延时;硬件定时,即利用80C51系列单片机硬件集成的两个16位定时器/计数器实现定时。
我们针对这两种方法进行分析研究,通过修改程序和设置参数实现了定时精度的提高。
2.软件延时误差的原因与修正软件延时原理:80C51的CPU每执行一条指令需要若干个指令周期,运用软件编程,让机器循环执行一段程序,而得到一个固定时间。
若使用12MHz晶振,设一个机器周期为T。
则T=1μs。
50ms(等于50000T)延时程序为:MOV R7,#100;(1T)DL2:MOV R6,#250;(1T)DL1:DJNZ R6,DL1;(2T)DJNZ R7,DL2;(2T)RET;(2T)此程序准确延时时间为:[(500+1+2)×100+1+2]T=50.303ms,误差为303μs,产生误差的原因是只考虑到指令DL1:DJNZ R6,DL1的循环时间(刚好为50ms),没考虑其它语句的执行时间。
因此,将上面程序修改如下:MOV R7,#100;(1T)DL2:MOV R6,#248NOP;(2T)DL1:DJNZ R6,DL1;(2T)DJNZ R7,DL2;(2T)RET;(2T)此程序的延时时间为:[(248×2+2+2)×100+1+2]T=50003T= 50.003ms。
单片机定时器中断时间误差的分析及补偿(精)

单片机定时器中断时间误差的分析及补偿作者冰晓日期 2009-1-8 8:09:00推荐摘要:本文分析了单片机定时器溢出中断与CPU响应中断的时间误差,并给出了补偿误差的方法和实例。
关键词:单片机; 定时器; 中断; 误差1前言单片机内部一般有若干个定时器。
如8051单片机内部有定时器0和定时器1。
在定时器计数溢出时,便向CPU发出中断请求。
当CPU正在执行某指令或某中断服务程序时,它响应定时器溢出中断往往延迟一段时间。
这种延时虽对单片机低频控制系统影响甚微,但对单片机高频控制系统的实时控制精度却有较大的影响,有时还可能造成控制事故。
为扩大单片机的应用范围,本文介绍它的定时器溢出中断与CPU响应中断的时间误差、补偿误差的方法和实例。
2误差原因、大小及特点产生单片机定时器溢出中断与CPU响应中断的时间误差有两个原因。
一是定时器溢出中断信号时,CPU正在执行某指令;二是定时器溢出中断信号时,CPU正在执行某中断服务程序。
2.1.CPU正在执行某指令时的误差及大小由于CPU正在执行某指令,因此它不能及时响应定时器的溢出中断。
当CPU执行此指令后再响应中断所延迟的最长时间为该指令的指令周期,即误差的最大值为执行该指令所需的时间。
由于各指令都有对应的指令周期,因此这种误差将因CPU正在执行指令的不同而不同。
如定时器溢出中断时,CPU正在执行指令MOVA,Rn,其最大误差为1个机器周期。
而执行指令MOVRn, direct时,其最大误差为2个机器周期。
当CPU正在执行乘法或除法指令时,最大时间误差可达4个机器周期。
在8051单片机指令系统中,多数指令的指令周期为1~2个机器周期,因此最大时间误差一般为1~2个机器周期。
若振荡器振荡频率为fosc,CPU正在执行指令的机器周期数为Ci,则最大时间误差为Δtmax1=12/fosc×Ci(us)。
例如fosc=12MHZ,CPU正在执行乘法指令(Ci=4),此时的最大时间误差为:Δtmax1=12/fosc×Ci=12/(12×106)×4=4×10-6(s)=4(μs)2.2CPU正在执行某中断服务的程序时的误差及大小定时器溢出中断信号时,若CPU正在执行同级或高优先级中断服务程序,则它仍需继续执行这些程序,不能及时响应定时器的溢出中断请求,其延迟时间由中断转移指令周期T1、中断服务程序执行时间T2、中断返回指令的指令周期T3及中断返回原断点后执行下一条指令周期T4(如乘法指令)组成。
浅议降低51单片机定时器定时误差的几种方法

浅议降低51单片机定时器定时误差的几种方法作者:冯伟来源:《价值工程》2013年第17期摘要: 51单片机在当前控制检测系统中的应用越来越多,对其定时的精确要求也越来越高。
虽然51单片机自带的16位定时/计数器较为精确,但是在实际应用过程中难免存在误差,而且这个误差不可避免,所以降低51单片机定时器误差就显得尤为重要。
关键词:单片机;定时误差中图分类号:TP368.1 文献标识码:A 文章编号:1006-4311(2013)17-0051-020 引言51单片机的定时/计数器在基本的单片机系统中都会用到,而且对其定时精确度的要求越来越高。
一般我们在单片机系统设计中,定时方式通常有以下三种:软件定时,硬件定时和可编程控制器定时。
软件定时是通过程序的指令控制实现定时方法,这种定时方式虽然调整方便,但是误差较大,而且CPU的利用率很低;硬件定时是利用专用的定时集成电路设计实现的定时方法,硬件定时的时间较为精确,但是不易调整定时时间;可编程控制器定时是利用程序控制的方法控制硬件的定时时间,这种定时方式能够得到比较精确的定时时间,且调整定时时间也比较方便,51单片机的定时/计数器就属于可编程控制器定时。
虽然51单片机定时/计数器定时方便,但是在系统应用过程中还存在一定的误差,这个误差主要是由于系统中断响应所引起的。
基本的51单片机中有5个中断源,其中两个16位的定时/计数器中断,中断系统采用两个优先级控制。
51单片机中断响应过程如图1所示。
这是一个多级中断响应的流程图,在定时中断响应过程中,CPU一般通过查看定时/计数器的中断请求标志位TF0和TF1来确定是否有中断请求。
但是在执行定时中断的过程中,CPU必须执行完当前执行的指令或者高优先级的中断程序之后才能进入定时中断,这个过程至少需3个机器周期才能实现,这时定时器中的加1计数器还在计数,这样在进入定时中断重新给加1计数器赋值时就会出现加1计数器重新计数的过程,这就是定时器误差的来源。
浅谈MCS 51单片机定时误差原因

智能制造数码世界 P .275浅谈MCS 51 单片机定时误差原因谢琪林 攀枝花学院摘要:随着MCS 51 单片机在工业上的实际应用,精确定时的要求越来越高。
但是由于时钟周期考虑不全和硬件自身等的原因引起定时误差,文中从软硬方面分析了误差原因, 并针对误差非固定性的特点合理考虑各种指令执行周期、设置计数器初值、利用计数器溢出值、适时开关中断的角度出发给出了纠正方法。
关键词:单片机;误差;定时在MCS 51 单片机的控制系统中, 常常要求有些定时或者延时控制。
定时或者延时控制一般有如下2 种方法: 软件延时,即让CPU 循环执行一段时间, 以实现延时和硬件定时, 即利用MCS 51 系列单片机硬件集成的2 个16 位可编程定时/计数器。
但采用上述这两种方法来实现时间控制时却容易产生误差, 对于一般低频率的应用中对时间控制精度要求低的场合来说没有太大的问题, 而在高频实时控制应用中对时间控制精度要求高的场合来讲问题就凸现出来, 必须加以纠正和补偿。
1 软件延时误差的产生及纠正软件延时原理: 利用CPU 内部定时机构, 使每执行一条指令需要若干个指令周期的原理, 运用软件编程, 让机器循环执行一段程序, 而得到一个固定的时间段, 就将这段时间作为定时时间。
软件定时的时间长短完全取决于指令的执行时间, 此方法主要用于短时间定时。
例, 采用软件方法设置一个502μs 的定时时间, 设晶体振荡频率为12MHz。
可编制如下的子程序段用于软件定时。
DELAY : MOV R2, #64H ; 1 个时钟周期DL1: NOP ; 1 个时钟周期NOP ;DJNZ R2, DL1 ; 2 个时钟周期RET ; 1 个时钟周期在该程序段中, 采用减1 指令计数, 计数初值100( 64H) 预先设置在寄存器R2 中, 各指令的执行时间如程序段中的注释所示。
软件定时的时间可由各指令的执行时间以及循环次数100( 64H) 所确定, 计算如下:1μs+(1μs+1μs+1μs +2μs)×100+1μs=502μs但在很多情况下, 只考虑了循环体的执行时间, 没有考虑本例中的MOV 、RET 指令, 即在设计延时500μs 时也采用了本程序, 这样就有一个误差, 误差率是0.4%, 这个误差非常大。
单片机定时器毕业设计(论文)

毕业设计毕业设计题目:学生学号:学生姓名:所在系(部):专业及班级:指导教师:完成日期:《电气自动化》专业毕业设计任务书课题名称:定时系统课题类型:模拟课题设计的目的:(1)定时设定由按键部分控制(2)实现定时时间的显示数码管显示:分(十位)分(个位)∶秒(十位)秒(个位)(3)到点响铃(4)系统运行中可重新设定定时值(5)最大实现99分59秒的定时设计的任务及主要内容::第一章概述1 任务设计(1)定时设定由按键部分控制(2)实现定时时间的显示数码管显示:分(十位)分(个位)∶秒(十位)秒(个位)(3)到点响铃(4)系统运行中可重新设定定时值(5)最大实现99分59秒的定时2 总体方案(1)设计框图系统框图如图1(2)设计思路利用89C51单片机作为本系统的中控模块。
上电后,按下功能键进入调时状态,通过各单元电路将按键部分设定的时间通过定时时间显示部分中的LED数码管显示出来,当时间设定完毕后再次按下按键部分的功能键,闹铃模块的蜂鸣器鸣叫0.5S以示定时器开始工作,到点实现响铃,再由按键部分关闹铃。
中途可重新设置定时数值。
复位部分除上电初实现复位外,其余任何时候可按键实现复位。
注:按键部分一共有4个按键,分别为功能键P3.0,秒设定键P3.1(增),分设定键P3.2(增)分设定键P3.3(减)。
3、方案论证(1)定时部分定时部分是本设计的核心部分。
方案:本方案完全用软件实现定时。
原理为:在单片机内部存储器设两个字节分别存放时钟的分、秒信息。
利用键盘部分对定时时间进行设定,由定时显示部分数码管显示,同时定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒个位减1;若秒个位减到0,则判秒十位值是否为0,若不是,则秒个位赋9,秒十位减1;分同理。
该方案具有硬件电路简单的特点。
(2)闹铃器件的选择方案:采用蜂鸣器闹铃,当到设定时间时,单片机向蜂鸣器送出高电平,蜂鸣器发生。
采用蜂鸣器闹铃结构简单,控制方便。
(完整版)基于单片机的多功能定时器毕业设计论文

目录1 引言 ........................................................................................................................2 概述 ........................................................................................................................2.1 定时开关电源插座系统概述...........................................................................2.2 本设计方案思路...............................................................................................2.3 研发方向和技术关键.......................................................................................2.4 主要技术指标...................................................................................................3 总体设计 ....................................................................................................................3.1 可控开关设计的选择.......................................................................................3.2 时钟信号的实现...............................................................................................3.3 译码方案的选取...............................................................................................4 硬件设计 (1)4.1 可控开关电路 (1)4.2 电平转换电路 (1)4.3 单片机系统电路 (1)4.4 显示电路 (1)5 软件设计 (1)5.1 总体方案 (1)5.2 主程序流图 (1)5.3 中断模块说明 (1)6 制作与调试 (1)6.1 硬件电路的布线与焊接 (1)6.2 调试 (2)6.3 改进与扩展 (2)7 结论 (2)致谢 (2)参考文献 (2)附录 (2)1.引言随着电子技术和电源技术的发展,开关电源以体积小、重量轻、功率密度大、集成度高、输出组合便利等优点而成为电子电路电源的首选。
基于MCS51单片机定时误差分析及纠正

福建电脑2006年第12期基于MCS51单片机定时误差分析及纠正杨洪亮(临沂师范学院信息学院山东临沂276005)【摘要】:随着MCS51单片机在工业上的实际应用,精确定时的要求越来越高。
但是由于时钟周期考虑不全和硬件自身等的原因引起定时误差,文中从软硬方面分析了误差原因,并针对误差非固定性的特点合理考虑各种指令执行周期、设置计数器初值、利用计数器溢出值、适时开关中断的角度出发给出了纠正方法。
【关键词】:单片机;误差;定时在MCS51单片机的控制系统中,常常要求有些定时或者延时控制。
定时或者延时控制一般有如下2种方法:软件延时,即让CPU循环执行一段时间,以实现延时和硬件定时,即利用MCS51系列单片机硬件集成的2个16位可编程定时/计数器。
但采用上述这两种方法来实现时间控制时却容易产生误差,对于一般低频率的应用中对时间控制精度要求低的场合来说没有太大的问题,而在高频实时控制应用中对时间控制精度要求高的场合来讲问题就凸现出来,必须加以纠正和补偿。
另外,还有一些硬件方面的因素,如晶体自身的精度、晶体的频率漂移误差也会引起定时误差,也必须加以纠正。
1.软件延时误差的产生及纠正软件延时原理:利用CPU内部定时机构,使每执行一条指令需要若干个指令周期的原理,运用软件编程,让机器循环执行一段程序,而得到一个固定的时间段,就将这段时间作为定时时间。
软件定时的时间长短完全取决于指令的执行时间,此方法主要用于短时间定时。
例,采用软件方法设置一个502μs的定时时间,设晶体振荡频率为12MHz。
可编制如下的子程序段用于软件定时。
DELAY:MOVR2,#64H;1个时钟周期DL1:NOP;1个时钟周期NOP;DJNZR2,DL1;2个时钟周期RET;1个时钟周期在该程序段中,采用减1指令计数,计数初值100(64H)预先设置在寄存器R2中,各指令的执行时间如程序段中的注释所示。
软件定时的时间可由各指令的执行时间以及循环次数100(64H)所确定,计算如下:1μs+(1μs+1μs+1μs+2μs)×100+1μs=502μs但在很多情况下,只考虑了循环体的执行时间,没有考虑本例中的MOV、RET指令,即在设计延时500μs时也采用了本程序,这样就有一个误差,误差率是0.4%,这个误差非常大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机定时器的应用与误差纠正论文
关键字:计数器定时器误差中断单片机设置计数方式应用工作
单片机定时器的应用与误差纠正王暄(陕西师范大学物理学与信息
技术学院,陕西西安710062)摘要:对MCS-51单片机定时器的原理与使用中
的几个关键问题进行了讨论,给出定时器的使用方法与误差补偿方法,并给出
了实现程序。
1前言
定时器是MCS-51单片机非常重要的组成部分,由于其应用与单片机的其他硬件相关,存在着一定的复杂性[1]。
而定时器是单片机应用中解决某类复杂问题的最有为效的方法,应用非常广泛。
随着定时要求的提高,在定时处理过程中所
带来的误差需要校正[2],本文就MCS-51单片机的使用方法与误差校正方法进
行了讨论,并给出通用算法与程序。
2定时器工作方式与方式设置
MCS-51单片机有两路独立的定时器,每路定时器有4种工作方式(0~3),方
式0是13位计数结构,计数器由TH全部8位与TL的低5位构成;方式1是
16位计数结构,计数器由TH与TL全部8位共16位组成;方式2是8位计数
结构方式,计数器由TL8位组成,与其他方式不同的是,当定时溢出时,硬件自动将TH的值装入TL中,有自动加载功能。
前三种工作方式,两路定时器的设
置与使用完全相同,但在工作方式3下,两路定时器有很大差别,只有0路定
时器可以工作在方式3下,1路定时器只能工作在方式0~2下,在工作方式3下,0路定时器被拆分成两个独立的8位计数器TL0与TH1,其中0路定时器的各控制位和引脚信号全归TL0使用,因此TH0只能做简单的定时器使用,其控
制位占用了1路定时器的控制位,如果0路定时器工作在方式3下,1路定时
器由于让出了所属控制位,通常作为串行口波特率发生器[3]。
定时器的工作方式选择主要依靠设置TMOD寄存器的值,其各位定义如下:位
序 B7 B6 B5 B4 B3 B2 B1 B0 位符号 GATE C/T M1 M0 GATE C/T M1 M0
其中,B0~B3用来控制0路定时器,B4~B7用来控制1路定时器。
GATE位为门控位,主要确定定时器启动的方式,如果GATE=0,则用TR0(TR1)位启动/关闭定时器,如果GATE=1,则以外中断请求信号(INT0或INT1)启动
定时器。
C/T位为定时与计数选择位,C/T=0为定时方式,C/T=1为计数方式。
M0、M1为工作方式选择位
M1M0=00方式0M1M0=10方式2
M1M0=01方式1M1M0=11方式3
选择定时器工作方式,应根据上述规定向寄存器TMOD中写入相应数,如设置0
路定时器工作在定时方式0下,1路定时器工作在方式1下,则应用下列指令
设置:
MOVTMOD,#10H
3定时器的处理方式与计数初值的计算
MCS-51单片机的定时器采用增值计数法,在定时工作方式下,启动定时器后,
每机器周期CPU硬件会自动给相应计数器加1,直至超出对应计数器所能表示
的最大值,发生定时溢出,硬件自动将TF0(TF1)置位,用户可以通过查询
TF0(TF1)位判断定时是否溢出,如果此时定时中断处于开放状态,将引发相
应定时中断,MCS-51响应中断,根据相应中断地址(0路定时中断的中断入口
地址为000B,1路为001B)执行中断处理程序。
定时编程有两种基本方式,一种方式为查询方式,在启动定时时关闭相应定时
中断,然后循环检测TF0(TF1)进行相应处理;另一种方式为中断方式,启动
定时时开放相应定时中断,并将定时溢出处理程序编写为中断处理程序形式通
过在相应中断入口地址(000B,001B)放置跳转指令转入定时溢出处理程序。
定时器工作方式选定后,定时溢出时间唯一取决于计数器的初值,如何根据应
用需要确定计数器初值,也是定时器应用的一个重要问题。
假定单片机机器周
期为K0,所选定的定时方式计数器为n位,所实现的定时时间长度为T,则有:(2n-x)K0=T(1)
其中x为计数器的初值,根据式1可以求出初值x为:
x=2n-(T/K0)(2)
4定时器的编程步聚和各步聚的通用程序
定时器应用编程主要分为以下几个步聚。
4.1步骤1根据定时要求求计数初值x
首先根据单片机时钟频率f确定单片机机器周期k0,即:
k0=12/f(3)
在实际应用中,单片机时钟频率f一般为6mHz或12mHz,所以单片机机器周期
k0=2μs或1μs,然后根据选定的工作方式确定计数器位数n,将所得k0与n
代入式2,求出计数初值x,并根据所选择的计数方式将x的值分入TH0(TH1)
与TL0(TL1)。
4.2步骤2编写初始化程序
初始化程序与定时编程方式有关,中断方式初始化程序如下(以0路定时器为例):
movTMOD,#n(规定定时工作方式)
movTH0,#n1(设置计数器低位)
movTL1,#n2(设置计数器高位)
setBEA(开放中断)
setBET0(开放定时中断0)
setBTR0(启动定时)
查询方式初始化程序如下:
movTMOD,#n(规定定时工作方式)
movTH0,#n1(设置计数器低位)
movTL1,#n2(设置计数器高位)
clrET0(开放定时中断0)
setBTR0(启动定时)
其中#n1和#n2与计数初值x有关,如果采用方式2,有#n1=#n2,所有初
始化程序都以0路定时器为例,如果用1路定时器,则将程序中的寄存器和控
制位的下标1改为0。
4.3步骤3编制定时处理程序
中断方式处理程序如下:
org000B
1jmpb1
b1:clrEA
movTH0,#n1
movTH1,#n2
定时处理语句段
reti
其中,0路定时器为000B,如果为1路定时器为001B,如果定时器工作在方式2,则不需要给TH0、TH1重新赋值。
查询方式处理程序如下:
L1:jbcTF0,LO1
sjmpL1
LO1:movTH0,#n1
movTH1,#n2
定时处理语句段
sjmpL1
5定时的误差校准
由于单片机的机器周期为1μs~2μs,定时误差一般应在0μs~20μs之内,
对于一般应用,此误差可以忽略,但是对于精确度要求比较高的应用场合,此
误差必须进行校正。
定时误差是定时溢出后转入执行定时处理语句段之间所耗
费的时间,此时间主要由定时溢出转入定时处理语句段所必须执行的指令或硬
件过程产生。
定时误差校准的简单原理是:在定时溢出响应后,停止定时器计数,读出当时
计数值(它反映了定时响应的延迟时间),然后将完成这一任务的程序段执行
时间考虑进去,作为修正因子校正定时初值,以下程序段以中断处理方式为例:clrEA
clrTR1
clrc
movA,#n0
clrTR0
subbA,TL0
subbA,#08
movTL0,A
movA,#n1
subbA,TH0
movTH0,A
setbTR0
定时处理语句段
reti
由于执行从指令clrTR0(停止计数)到指令setbTR0(重新开启计数)之间的指令需8个机器周期,应将此消耗考虑进去。
上述程序将定时误差缩小在1个机器周期内。
电子元器件应用。