《《单片机原理与应用》课程设计---可编程定时计数器》由会员分享,可在线阅读,更多相关《《单片机原理与应用》课程设计---可编程定时计数器(14页珍藏版)》请在金锄头文库上搜索。
1、1 前言在测量控制系统中,常常要求有一些实时时钟,以实现定时控制、定时测量或延迟动作,也往往要求有计数器能对外部事件计数,如测电机转速、频率、工件个数等。实现定时/计数,有软件、数字电路和可编程定时/计数器3种主要方法。软件定时,即让机器执行一个程序段,这个程序段本身没有具体的执行目的,通过正确地挑选指令和安排循环次数实现软件延时,由于执行每条指令都需要时间,执行这一程序段所需要的时间就是延时时间。这种软件定时占用CPU的执行时间,降低了CPU利用率。数字电路硬件定时采用如小规模集成电路器件555,外接定时部件电阻和电容构成。这样的定时电路简单,但要改变定时范围,必须改变电阻和电容,这种定时电
2、路在硬件连接好以后,修改不方便。可编程定时/计数器是为了方便微型计算机系统的设计和应用而研制的,它是硬件定时,又能很容易地通过软件来确定和改变它的定时值,通过初始化编程,能够满足各种不同的定时和计数要求,因而在嵌入式系统的设计和应用中得到了广泛的应用。2 定时器的工作原理8XX51单片机的定时/计数器T1由存放器TH1,TL1组成,定时/计数器T0由存放器TH0,TL0组成,它们均为8位存放器,在特殊功能存放器中占地址8AH8DH。它们用于存放定时或计数的初始值。此外,内部还有一个8位的方式存放器TMOD和一个8位的控制存放器TCON,用于选择和控制定时/计数器的工作。定时/计数器实质上是一个
3、加1计数器,它可以工作于定时方式,也可以工作于计数方式,两种工作方式实际都是对脉冲计数,只不过所计脉冲的来源不同。本次课程设计主要用到定时功能,在此只介绍定时方式。在定时方式下,C/=0,开关打向上,计数器TH0、TL0的计数脉冲来自振荡器的12分频后的脉冲,即对系统的机器周期计数,当开关受控合上时,每过一个机器周期,计数器TH0,TL0加1,当计满了预设的个数。TH0,TL0回零,置位定时/计数器溢出中断标志位TF0或TF1,产生溢出中断。3 与定时/计数器有关的特殊功能存放器51系列单片机的定时/计数器为可编程定时/计数器,在定时/计数器工作之前,必须将控制命令写入定时/计数器的控制存放器
4、,即进行初始化。下面介绍定时/计数器的方式存放器TMOD及控制存放器TCON。3.1工作方式控制存放器TMOD 表3.1 定时/计数器方式控制存放器TMODT1 T0TMOD GATE C/ M1 M0 GATE C/ M1 M0GATE为门控位,当GATE = 0 启动不受或的控制,当GATE = 1 启动受或的控制。C/为外部计数器/定时器方式选择位,当C/= 0 为定时方式,当C/= 1 为计数方式。M1M0为工作模式选择位,其模式与说明如下: M1 M0 模式 说明 0 0 0 13位定时/计数器高八位TH7 0+ 低五位TL4 0 0 1 1 16位定时/计数器 TH7 0+ TL7
5、 0 1 0 2 8位计数初值自动重装 TL7 0 TH7 0 1 1 3 T0运行,而T1停止工作,8位定时/计数。3.2 定时/计数器控制存放器TCON 表3.2 定时/计数器控制存放器TCONTCON TR1 TR0 TR0为定时/计数器0运行控制位,分两种情况。当GATE = 0 时,假设TR0 = 1,开启T0计数工作,假设TR0 = 0,停止T0计数;当GATE = 1 时,假设TR0 = 1 且= 1时,开启T0计数。4 定时/计数器的工作方式根据对TMOD存放器中M1和M0的设定,T0可选择四种不同的工作方式,而T1只具有三种工作方式即方式0、方式1和方式2。本次课程设计采用方
6、式0,即13位定时/计数器。当TMOD中的M10、M00时,选定方式0工作。方式0时,计数存放器由13位组成,即THx高八位(作计数器)和TLx的低5位(32分频的定标器)构成。TLx的高3位未用。计数时,TLx的低5位溢出后向THx进位,THx溢出后将TFx置位,并向CPU申请中断。5 程序设计在原根底上,扩展了开关控制和频率选择功能,程序如下:ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV TMOD,#00H ;初始化定时器 SETB TR1 ;启动定时器SW1: JB P1.1,SW2 ;检测开关是否开启,开启那么跳转到SW2 CLR P1.0 ;开关关闭,
7、P1.0口输出低电平WAIT: JNB P1.1,WAIT ;等待开关翻开SW2: JNB P1.2,K1 ;检测开关是否拨到500Hz档SW3: JNB P1.3,K2 ;检测开关是否拨到1KHz档SW4: JNB P1.4,K3 ;检测开关是否拨到2KHz档 K1: MOV TH1,#0E0H ;装入500Hz方波的时间常数 MOV TL1,#18H AJMP LOOPK2: MOV TH1,#0F0H ;装入1KHz方波的时间常数 MOV TL1,#0CH AJMP LOOPK3: MOV TH1,#0F8H ;装入2KHz方波的时间常数 MOV TL1,#06H AJMP LOOPLO
8、OP: JNB TF1,LOOP ;检测溢出标记 CLR TF1 ;溢出标记清零 CPL P1.0 ;P1.0端口输出电平取反 AJMP SW1END程序全部编译后,得到.HEX文件,作为仿真芯片的烧录文件。6 Proteus仿真本次仿真选用AT89C51单片机,选取单刀多掷开关和示波器制作仿真。由于在Proteus中,单片机的一些端口已设置默认值,故无需再外加其他元件。仿真电路如下列图所示:图6.1 仿真电路当开关拨到下档,即程序设计中的关闭档,示波器输出波形如下列图所示:图6.2 关闭档示波器波形当开关拨到左下档,即程序设计中的500Hz档,示波器输出波形如下列图所示:图6.3 500Hz
9、档示波器波形当开关拨到左上档,即程序设计中的1KHz档,示波器输出波形如下列图所示:图6.4 1KHz档示波器波形当开关拨到上档,即程序设计中的2KHz档,示波器输出波形如下列图所示:图6.5 2KHz档示波器波形7 心得体会 这次单片机原理与应用的课程设计,题目是单片机产生一个500Hz方波的设计,经过翻阅?单片微型计算机与接口技术?的课本,以及相关资料,我确定了程序设计思路和电路原理图。这个设计主要采用AT89C51芯片。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器FPEROMFalsh Programmable and Erasable Read Only Memory的低电
10、压,高性能CMOS 8位微处理器。利用WAVE软件,通过汇编语言实现对其功能的控制。我再次的翻阅课本及相关功能的实现程序,最后我写出了产生500Hz方波的汇编程序,并对其做了功能扩展。接下来就是运行,修改调试以及Proteus仿真。在程序编译过程中也出现了些小问题,如漏掉“, ,指令键入错误等,但经过检查和修改,终于编译成功了。在阅读及学习了Proteus软件的用法及实例的相关资料后,通过设计电路和程序的设计思路,我做出了仿真电路,经仿真后得出了500Hz的方波,在此过程中还扩展了开关控制及频率选择功能,我从中感悟到了扩展的一般思路。通过这次?单片机原理与应用?的课程设计,我从中不仅学到了生成
11、方波信号的程序设计原理和根本思路,并且深入了解了AT89C51芯片的编程控制,而且也加深了对理论的认识,进一步理解了汇编语言的指令功能和用法,了解了如何通过程序去控制硬件,通过硬件测试如何发现问题并通过修改程序而解决问题,更学会了如何通过各种途径收集资料,从中获取需要的信息,并为我所用,成为自己的能力,这对于今后的学习还是工作都有着积极的影响。参考文献1 李群芳,张士军,黄建.单片微型计算机与接口技术第2版.北京:电子工业出版社,2005.1.2 周润景,张丽娜,刘印群.PROTEUS入门实用教程.北京:机械工业出版社,2007.9.3 姚燕南,薛钧义.微型计算机原理与接口技术.北京:高等教育出版社,2004.11.4 朱清慧,张凤蕊,翟天嵩,王志奎.Proteus教程电子线路设计、制版与仿真.北京:清华大学出版社,2021.9.5 毛敏.MCS51系列单片机系统及应用实践教程.北京:高等教育出版社,2006.7.致谢在本次课程设计中,我从中学到了不少东西,不仅加强了动手能力,也加深了对理论的认识,其中离不开同组同学的帮助和支持,在此表示感谢。课程设计不仅能检验我们对理论知识的掌握,也了解了设计的思路,在此我要感谢学校开设的这门课程,以及对我们的培养。在课程设计过程中,当我们遇到困难时,指导老师的认真指导指引我们成功完成设计,在此表示感谢!