首页 单片机的定时器计数器

单片机的定时器计数器

举报
开通vip

单片机的定时器计数器摘  要 本设计是一个由AT89C51单片机控制,利用单片机的定时器/计数器定时和记数的原理,结合显示电路、电源电路、LED数码管以及键盘电路按键计时来实现的多功能秒表系统。这个多功能秒表系统能够实现两位LED显示,显示的时间为00~99秒,每秒自动加1,能正确地进行加、减(倒)计时,能同时记录4个相对独立的时间,通过上翻键和下翻键来查看这4个不同的计时值,还具有快加和复位功能,基本上实现了老师的要求。 关键词:单片机;秒表;proteus 目 录 第1章 概 述    4 1.1设计任务    4 1.2设计要...

单片机的定时器计数器
摘  要 本设计是一个由AT89C51单片机控制,利用单片机的定时器/计数器定时和记数的原理,结合显示电路、电源电路、LED数码管以及键盘电路按键计时来实现的多功能秒表系统。这个多功能秒表系统能够实现两位LED显示,显示的时间为00~99秒,每秒自动加1,能正确地进行加、减(倒)计时,能同时记录4个相对独立的时间,通过上翻键和下翻键来查看这4个不同的计时值,还具有快加和复位功能,基本上实现了老师的要求。 关键词:单片机;秒表;proteus 目 录 第1章 概 述    4 1.1设计任务    4 1.2设计要求    4 第2章 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 设计    5 第3章 硬件设计    6 3.1单片机简介    6 3.2电源电路    6 3.3晶体振荡电路    6 3.4复位电路    7 3.5显示电路    8 3.6键盘电路    8 第4章 软件设计    10 4.1软件设计概述    10 4.2程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图    10 4.3子程序模块设计    12 第5章 Proteus软件仿真    22 5.1功能简介    22 5.2 WAVE编译    22 5.3 PROTEUS仿真    23 课程设计体会    25 致谢    27 附录 电路原理图    28 第1章 概 述 1.1设计任务 设计一个单片机控制的秒表系统。利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行加、减(倒)计时,数码管能够正确地显示时间。 1.2设计要求 (1)能同时记录四个相对独立的时间并分别显示。 (2)两位LED显示,显示时间为00~99秒。 (3)每秒自动加1。 (4)一个开始按键、一个复位按键、一个暂停按钮和一个快加按钮(每10ms快速加一)。 (5)用上翻页按钮查看四个不同的计时值。 (6)添加下翻页按钮,并实现快减功能。 第2章 方案设计 本系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等来设计计时器,将软、硬件有机地结合起来。其中软件系统采用汇编语言编写程序,包括显示程序,加减计数程序,快加快减程序,中断,延时程序,按键消抖程序等,并在WAVE中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。 图2.1 系统电路原理 第3章 硬件设计 本系统中,硬件电路主要有电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等 3.1单片机简介 本系统设计采用AT89C51单片机。 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容(由于在微机原理中学过C-51的具体知识,这里不再详细说明)。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效的微控制器。 3.2电源电路 电源电路是系统最基本的部分,任何电路都离不开电源部分,由于三端集成稳压器件所组成的稳压电源线路简单,性能稳定,工作可靠,调整方便,已逐渐取代分立元件,在生产中被广泛采用,由于是小系统,我们采用7809电源提供+5V稳压电压。 3.3晶体振荡电路 一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容。 MCS--51单片机内部的振荡电路是一个高增益反相放大器,引线 XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。 这里,我们选用51单片机12MHz的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取30P,接线时要使晶体振荡器X1尽可能接近单片机。 图3.1 晶体振荡电路 3.4复位电路 采用上电按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使用使RST持续一段时间的高电平,从而实现上电加开关复位的操作。这不仅能使单片机复位,而且还能使单片机的外围芯片也同时复位。当程序出现错误时,可以随时使电路复位。 图3.2 复位电路 3.5显示电路 显示电路既可以选用液晶显示器,也可以选用数码管显示。我们采用的是数码管显示电路。用2个共阳极LED显示,LED是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。 在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。在设计中,我们采用LED动态显示,用P0口驱动显示。由于P0口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。 图3.3 显示电路 3.6键盘电路 计时器的输入控制为按键方式,由于手动按键会产生反弹引起的电平抖动现象,为了保证系统能捕捉输出脉冲,故在每个开关后面安排一个消抖和同步电路,以保证每按一键,只形成一个宽度为系统时钟周期的脉冲。采用兼具消抖和同步功能的电路,能产生与系统时钟周期相同宽度的时钟脉冲。 在按键电路中,我们可以在I/O口上直接接按键,或者通过I/O口设计一个键盘,然后通过键盘扫描程序判断是否有键按下等。键盘扫描电路节省I/O口,但编程有些复杂,在这里,由于我们所用的按键较少,且系统是一个小系统,有足够的I/O口可以使用,为了使程序简化,我们采用按键电路,用部分P1口做开关,P1.0停止,P1.1快减,P1.2快加,P1.3暂停记录,P1.4下翻,P1.5上翻,用外中断INT0开始。 该LED数码显示秒表,显示时间为00~99秒,每秒自动加一。另设计一个“开始”按键和一个“复位”按键。再增加一个“暂停”按键和一个“快加”按键(每10ms快速加一)。按键说明:按“开始”按键,开始计数,数码管显示从00开始每秒自动加一;按“复位”按键,系统清零,数码管显示00;按“暂停”按键,系统暂停计数,数码管显示当时的计数;按“快加”按键,系统每10ms快速加一,即数码显示管在原先的计数上快速加一。 图3.4 键盘电路 第4章 软件设计 4.1软件设计概述 在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。 应用系统的程序由包含多个模块的主程序和各种子程序组成。各程序模块都要完成一个明确的任务,实现某个具体的功能,如:加计数、减计数、延时、快加、快减,计数和显示等,在具体需要时调用相应的模块即可。 功能描述:用2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加1;一个“开始”键,一个“复位”键,一个“暂停”键,一个“快减”键,一个“快加”键;一个“记录”键,可同时记录四个相对独立的时间;一个“上翻”键,一个“下翻”键,查看四个不同的计时值。 4.2程序流程图 4.2.1加1程序 图4.1 加1程序流程图 4.2.2主程序 这里采用分支结构,通过对按键的扫描,判断要实现什么功能。如下所示: 图4.2 主程序流程图 4.2.3定时器1程序 用定时器0实现定时1秒,定时器1实现定时10毫秒,定时初值都是0D8F0H, 这里只写定时1秒的流程图,如下所示: 图4.3 定时器程序流程图 4.3子程序模块设计 4.3.1 停止子程序 按键后,使秒表停止,即关闭定时器0,1,程序如下: STOP:  CLR    TR0 CLR    TR1;关闭定时器0,1 ACALL  DISP;显示 4.3.2 暂停记录子程序 按键结束后,将此时显示内存中的数送寄存器中保存,并通过条件转移指令判断是否存够4个数,若存够则停止,否则继续。 JILU :  MOV    A,20H  MOV    @R1, A INC      R1 DJNZ    50H, HERE;是否够四个数? MOV    R1, #71H MOV    50H, #04H MOV    51H, #04H SJMP    STOP;够4个数停止 4.3.3 加1子程序 此程序只为简单的加1,并判断是否到100?到则从0开始,否则继续,另外将显示内存中的数个位十位分开,以便于动态显示。 JIA1:  MOV    A,20H        ; CLR    C INC    A CJNE  A, #100, GO1;是否加到100? MOV    20H, #00H RET GO1:  MOV    20H, A;将个位十位分开显示 MOV    B, #0AH DIV    AB MOV    31H, A MOV    30H, B RET 4.3.4 显示子程序 DISP:  MOV        R0,#30H      MOV        R3, #0FEH MOV        A, R3 PLAY:  MOV      P2, A MOV      A,@R0 MOV      DPTR, #DSEG1 MOVC    A,@A+DPTR MOV      P0, A LCALL    DL1 MOV      P2, #0FFH MOV    A, R3 RL      A JNB      ACC.2, LD1 INC      R0 MOV      R3, A LJMP      PLAY LD1:  RET DL1:  MOV        R7, #05H DL:    MOV        R6, #0FFH DL6:  DJNZ      R6, $ DJNZ        R7, DL RET 4.3.5 延时子程序 例如延时10ms程序: DELAY10: MOV  R4,#14H DL00:    MOV    R5, #0FFH DL11:    DJNZ    R5, DL11 DJNZ    R4, DL00 RET 4.3.6 按键消抖程序 延时10ms再次判断该位的状态,若仍是0则说明该键被按下,弹起后去执行该按键功能;若为1,则说明是抖动则继续向下判断。 L1:    JB      P1.1,L2  ; P1.1=0,快减 ACALL  DELAY10 JB      P1.1, L2 JNB    P1.1, $ LJMP    KJIAN 4.3.7 中断服务程序 用外部中断1实现开始,定时器0定时1S,定时器1定时10ms 。 4.4源程序代码 ORG    0000H LJMP     MAIN ORG    000BH LJMP    TIME1 ORG  0013H LJMP  ZHDUAN ORG    001BH LJMP    TIME10 ORG    0100H MAIN:  MOV    SP, #50H MOV    TMOD, #11H MOV      TH1,#0D8H  ;定时10ms MOV      TL1, #0F0H MOV      TH0,#0D8H  ;定时10ms MOV      TL0, #0F0H MOV      20H, #00H  ; BIN SECOND MOV      30H, #00H  ; SECOND MOV      31H, #00H MOV      40H, #100 MOV    71H,#00H    ;记录暂存区 MOV    72H, #00H MOV    73H, #00H MOV    74H, #00H MOV    50H, #04H MOV    51H, #04H MOV    R1, #71H SETB    EA SETB    EX1 SETB    ET1 SETB    ET0 CLR      PT0 CLR      PT1 SETB    PX1 SETB    IT1 MOV        P0, #0FFH CLR          TR0 CLR          TR1 CLR        7FH ML1:  ACALL      DISP START:  JB      P1.0,L1    ; P1.0=0,停止 ACALL  DELAY10 JB        P1.0, L1 JNB      P1.0, $ LJMP    STOP L1:    JB      P1.1,L2      ; P1.1=0,快减 ACALL  DELAY10 JB      P1.1, L2 JNB    P1.1, $ LJMP    KJIAN L2:    JB      P1.2,L3        ; P1.2=0,快加 ACALL  DELAY10 JB      P1.2, L3 JNB    P1.2, $ LJMP    KJIA L3:    JB      P1.3,L4        ; P1.3=0,暂停记录 ACALL  DELAY10 JB      P1.3, L4 JNB      P1.3, $ LJMP    JILU L4:    JB      P1.4,L5          ; P1.4=0,下翻 ACALL  DELAY10 JB      P1.4, L5 JNB    P1.4, $ LJMP    XFAN L5:    JB      P1.5,L            ; P1.5=0,上翻 ACALL  DELAY10 JB      P1.5, L JNB    P1.5, $ LJMP    SHFAN L:    SJMP    HERE STOP:  CLR    TR0                ;停止程序 CLR    TR1 ACALL  DISP SJMP    HERE JILU :  MOV    A,20H            ;暂停记录程序 MOV    @R1, A INC    R1 DJNZ  50H, HERE MOV    R1, #71H MOV    50H, #04H MOV    51H, #04H SJMP    STOP XFAN: MOV    A,@R1              ;下翻程序 MOV    20H, A MOV    B, #0AH DIV      AB MOV    31H, A MOV    30H, B LCALL  DISP INC      R1 DJNZ    50H, HERE MOV    R1, #71H MOV    50H, #04H SJMP    HERE SHFAN: MOV    A,@R1            ;下翻程序 MOV    20H, A MOV    B, #0AH DIV      AB MOV    31H, A MOV    30H, B LCALL  DISP DEC      R1 DJNZ    50H, HERE MOV    R1, #74H MOV    50H, #04H SJMP    HERE KJIAN:  SETB    TR1            ;快减程序 CLR      TR0 HEE1:  JNB      TF1, HEE1 CLR      TF1 ACALL  JIAN1 ACALL  DISP JNB      P1.0, STOP SJMP    HEE1 KJIA:    SETB      TR1            ;快加程序 CLR      TR0 HEE:    JNB      TF1, HEE CLR      TF1 ACALL  JIA1 ACALL  DISP JNB      P1.0, STOP SJMP    HEE HERE:  LJMP    ML1 ZHDUAN: SETB    TR0        ;启动定时器0 CLR      TR1 RETI TIME1:    PUSH    ACC            ;定时1秒 PUSH    PSW MOV      TH0, #0D8H MOV      TL0, #0F0H DJNZ      40H, RET0 LCALL  JIA1 LCALL  DISP MOV      40H, #100 RET0:    POP    PSW POP    ACC RETI TIME10: PUSH    ACC            ;定时10毫秒 PUSH    PSW MOV      TH0, #0D8H MOV      TL0, #0F0H RET1:  POP    PSW POP    ACC RETI JIA1:  MOV    A,20H        ;加1 CLR    C INC    A CJNE  A, #100, GO1 MOV  20H, #00H RET GO1:  MOV  20H, A MOV  B, #0AH DIV    AB MOV  31H, A MOV    30H, B RET JIAN1:  MOV      A,20H        ;减1 CLR    C DEC    A CJNE  A, #00, GO2 MOV  20H, #99 RET GO2:    MOV    20H, A MOV    B, #0AH DIV      AB MOV    31H, A MOV    30H, B RET DISP:  MOV        R0,#30H      ;显示 MOV        R3, #0FEH MOV        A, R3 PLAY:  MOV      P2, A MOV      A,@R0 MOV      DPTR, #DSEG1 MOVC    A,@A+DPTR MOV      P0, A LCALL    DL1 MOV      P2, #0FFH MOV      A, R3 RL      A JNB      ACC.2, LD1 INC      R0 MOV      R3, A LJMP    PLAY LD1:  RET LD1:  RET DL1:    MOV  R7, #05H DL:      MOV      R6, #0FFH DL6:    DJNZ     R6, $ DJNZ      R7, DL RET DELAY10:MOV    R4,#14H        ;延时10毫秒 DL00:    MOV    R5, #0FFH DL11:    DJNZ    R5, DL11 DJNZ    R4, DL00 RET DSEG1:  DB 3FH, 06H, 5BH, 4FH, 66H DB 6DH, 7DH, 07H, 7FH, 6FH END 第5章 Proteus软件仿真 5.1功能简介 Protues,集原理图设计、电路 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 、仿真和PCB设计于一体,配有各种信号源和电路分析所需的虚拟仪表;具有模拟电路,数字电路,单片机应用系统,嵌入式系统设计与仿真的功能; 本设计运用功能描述如下:连通电源后,按开始键,秒表正常运行;按暂停记录键,记录4个数,上翻下翻键可以查看记录的4个数;停止键可使暂停;快加快减键可以实现快加快减功能,至停止键被按下;复位键可使系统复位。 5.2 WAVE编译 将所编写的汇编语言程序另存为 秒表.ASM 文件,并在WAVE中运行,显示结果如下: 图5.1 运行结果 5.3 PROTEUS仿真 用PROTEUS将编译生成的秒表.HEX 文件下到单片机中,点击运行按相应的操作键即可看到下图的效果: 图5.2部分仿真结果A 图5.3 部分仿真结果B 图5.4 部分仿真结果C 课程设计体会 心得体会如下: (1)将学习的理论知识通过实验融会贯通,让我对它的理解更加深刻,对程序的编译过程了解透彻。 (2)本次课程设计以自己设计为主,因此培养了学习的积极性,让我能够独立去分析问题、发现问题、解决问题,更增强我与老师同学交流沟通和合作完成任务的能力。 (3)由于这次课程设计不仅设计编程方面的知识,还涉及了其它学科的知识,例如PROTEUS和WAVE等的基本知识。程序是用汇编语言来编写的,这次课程设计让我在编程能力方面得到了提高。 总之,通过这次课程设计,不仅加深了我对单片机理论方面的理解,将理论更好的运用的实践方面,而且锻炼了我们各方面的能力,培养了坚强的毅力和做事的耐心和细心,认识合作的重要性,虽然程序可能有一定的浪费资源,且较罗嗦,但在实践中的慢慢提高,还要感谢于许建明老师的耐心指导。 参考文献 [1] 孟欣主编著.单片机原理及应用实验教程.北京:中国铁道出版社. [2] 孟欣编著.单片机原理及应用.北京:中国铁道出版社. [3] 李群芳主编. 单片机原理、接口及应用.北京:清华大学出版社. [4]余发山主编.单片机原理及应用技术.徐州:中国矿业大学出版社. [5]杨凌霄编著.微型计算机原理及应用.徐州:中国矿业大学出版社. [6]李群芳主编.单片机原理、接口及应用.北京:清华大学出版社. 致谢 经过这几周的课程设计,过程曲折可谓一语难尽。在此期间我也失落过,也曾一度热情高涨。从开始时激情高涨到最后汗水背后的复杂心情,点点滴滴无不令我回味无穷。在课程设计的过程中遇到许多苦难,如仿真不出结果等,最后将课程设计大致整理好给老师后,老师细心地帮我整理出许多细节性问题,如格式等。总之,在许建明老师的细心,耐心指导下,我才能顺利完成了此次课程设计,感谢老师的指导; 附4 电路原理图
本文档为【单片机的定时器计数器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597436
暂无简介~
格式:doc
大小:64KB
软件:Word
页数:0
分类:互联网
上传时间:2020-03-08
浏览量:2