单片机实训报告

更新时间:2023-12-15 01:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单 片 机 应 用 实 训 报 告

课程名称: 单片机应用实训报告

实践题目: 电子时钟设计 姓 名: 学 号: 专业班级: 指导教师:

2014 ——2015 学年第 2 学期

南昌工程学院

目录

前言

第1部分 电子时钟介绍 1.1 电子时钟的基本特点 1.2 电子时钟原理

第2部分 电子时钟硬件设计 第3部分 软件介绍 3.1 Protues简介 3.2 Keil简介 第4部分 软件仿真 第5部分 设计总结 第6部分 附录 附录1 元器件明细表 附录2 程序清单

前言

电子时钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行电子时钟的设计是必要的。

第1部分 电子时钟介绍

1.1电子时钟的基本特点

现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。 1.2 电子时钟原理

该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

第2部分 电子时钟硬件设计

2.1 基于protues仿真软件的原理图

图2-1 电子时钟原理图

2.2 基本原理

实训使用AT89C51控制,其中使用p2做输出,p3口做控制信号,使用外部

中断0作调节秒,外部中断1作调节分钟,定时器T0在定时模式作调节小时,定时器T1在计数模式用于计数,而p0.0做总控开关的入口。

一般电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。

而该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

2.3 电路模块

本设计电路,硬件部分共由四模块组成:按键模块、复位电路模块、晶振电路模块、时间显示模块。晶振电路模块负责给单片机提供时钟周期。复位单路模块负责上电后自动复位,或按键后强制复位。上电后,由单片机内部定时器计时,同时通过动态显示函数自动将时分秒显示到数码管上。与此同时,按键扫描函数,一直扫描按键引脚状态,一旦扫描到按键被按下,即进入相应的功能函数。 2.4 单片机的晶振电路

图2-2 晶振电路图

石英晶体也连接在晶振引脚的输入和输出之间,等效为一个并联谐振回路,振荡频率应该是石英晶体的并联谐振频率。晶体旁边的两个电容接地,实际上就是电容三点式电路的分压电容, 接地点就是分压点。以接地点即分压点为参考点,振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看, 形成一个正反馈以保证电路持续振荡。

2.5 按键模块

图2-3 按键模块图

本设计的按键模块采用3个按键作为电子时钟的控制输入,通过按键来实现时钟的时间设置、定时、秒表功能。电路中将三个按键的一端接公共地,LED数码管,P3.4为调时位选择按键,P3.3为调分位选择按键,P3.2调秒位选择按键。

按键模块如图3-3。

2.6 单片机的复位电路

图2-4 单片机复位电路

单片机复位的条件是:必须使RST/VPD 或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12 MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图所示。电路为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。 2.7 时间显示模块

图2-5 8位LED数码管

本实验采用8位LED软件译码动态显示程序。LED数码管分共阳极与共阴极两种,其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极LED数码管则与之相反,它是将发光二极管的阴极(负极)短接后作为反映出半导体材料的特性。

第3部分 软件介绍

3.1 Protues简介

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus系统包括两个主要程序、三大基本功能。ISIS.EXE(电路原理图设计,电路原理仿真)、ARES.EXE(印刷电路版设计)。其中电路原理仿真功能,不仅有分离元件、小规模集成器件的仿真功能,能用箭头与颜色表示电流的方向与大小,而且有多种带CPU的可编程序器件的仿真功能。

它可以用作电路原理,模拟电路和数字电路实验,而且可作单片机与接口实验.特别是可为课程设计与毕业设计提供综合系统仿真.

Proteus是基于SPICE3F5仿真引擎的混合电路仿真软件,不仅能够仿真模拟、数字电路以及模数混合电路,更具特色的是它能够仿真基于单片机的电子系统。Proteus不但完全支持MCS-51及其派生系列单片机的设计系统,另外也能仿真基于AVR和PIC系列的单片机系统。软件调试方面,其自身只带汇编编译器,不支持C语言。但可以将它与Keil C5Proteus的仿真资源Proteus软件可提供的模拟、数字、交(直)流等元器件达30多个元件库,共计数千种。此外,对于元件库中没有的器件,使用者也可依照需要自己创建。1集成开发环境连接,将用汇编和C语言编写的程序编译好之后,可以立即进行软、硬件结合的系统仿真,像使用仿真器一样来调试程序。

3.2 Keil简介

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

Keil C51开发系统基本知识 ⒈系统概述

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil 的优势。下面详细介绍Keil C51开发系统各部分功能和使用。

⒉Keil C51单片机软件开发系统的整体结构

C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存

贮器如EPROM中。

使用独立的Keil仿真器时,注意事项 *仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。

*仿真器上的复位按钮只复位仿真芯片,不复位目标系统。

* 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。

第4部分 软件仿真

运用proteus软件进行仿真现在proteus软件中建立一个新的文件,再根据自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软件进行仿真。

电子时钟主要的设计要求是能够实现时钟的一般功能,以及包括时间的调整功能,这个基于单片机的电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复位。下述为10-41-18的仿真图:

图4-1 时间为10-41-18的仿真图

4.测试结果

测试开始时间10-41-18

测试结束时间10-58-04

误差计算:在19分00秒的时间里,仿真的时间延后了2分14秒。即是说仿真的时间每秒延后0.2秒。

误差分析:(1)延时程序中的延长时间忽视了程序运行身的时间 (2)P0口复位值有误差。

校准调试:将P0口的复位值设为#0BFH,这样显示时间的格式就成为了00-00-00。

第5部分 设计总结

通过这几天的单片机的实训我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用实训锻炼了自己动手能力和思维能力还有在软件方面的编程能力让我受益匪浅同时也暴露出一些平时学习上的问题让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路查漏补缺为进一步学习作好准备。通过实训让我懂得了如何编写一些简单的程序学会了如何制作单片机应用程序并且可以在今后的日常生活中灵活运用。

第6部分 附录 附录1 元器件明细表

名称 标识符 值 数量 Cap C1-C2 33uF 2 Cap C3 22pF 1 Res R1-R13 10K 13 AT89C51 U1 1 BUTTON K1-K4 4 CRYSTAL X1 12MHZ 1

7SEG-MPX8-CA-BLUE

附录2 程序清单

ORG 0000H

LJMP MAIN ; ORG 0003H

LJMP MIAO ; ORG 000BH

LJMP SHI ; ORG 0013H ; LJMP FEN

ORG 001BH ; LJMP ZJ

MAIN: MOV SP,#5FH

MOV TMOD,#16H ;为计数工作,采用方式1

MOV TH0,#255 ; MOV TL0,#255

MOV TH1,#3CH ; MOV TL1,#0B0H

MOV R4,#00H ; MOV R5,#00H ; MOV R6,#00H ; SETB EA

CLR EX0 ; CLR EX1 ; SETB IT0 ; SETB IT1 ; CLR ET0

SETB TR0 ; SETB TR1 ; SETB ET1 MOV R7,#20

LOOP:

MOV A,R4 ;r4 MOV B,#10 ;10 DIV AB ;a 1 转主程序 转外部中断0中断程序 转定时器T0中断程序 转外部中断1中断程序 转定时器T1中断程序 设置T0为定时工作,采用方式1; T1设置计数器初值为255 定时器定时100毫秒 清空r4 清空r5 清空r6 禁止外部中断0中断 禁止外部中断1中断

外部中断0设置为边沿触发方式 外部中断0设置为边沿触发方式 启动定时器0工作 启动定时器1工作 单元内容送入累加器 送入b寄存器中

除以b的整数商存于a,余数存于b

MOV DPTR,#0300H ;把表赋给DPTR MOVC A,@A+DPTR MOV P0,A MOV P1,#01H

LCALL DELAY ;转延迟子程序 MOV P0,#0FFH ;P0口复位 MOV A,B

MOVC A,@A+DPTR ;查表指令 MOV P1,#02H MOV P0,A

LCALL DELAY ; MOV P0,#0FFH ;P0 MOV P2,#0FFH ;P2 JNB P2.0,TIAOJIE MOV P1,#04H MOV P0,#0F6H

LCALL DELAY ; MOV P0,#0FFH ;P0 MOV A,R5 MOV B,#10 DIV AB

MOVC A,@A+DPTR ; MOV P1,#08H MOV P0,A MOV P1,#08H

LCALL DELAY ; MOV P0,#0FFH

MOV P2,#0FFH ;P2 JNB P2.0,TIAOJIE MOV A,B

MOVC A,@A+DPTR ; MOV P1,#10H MOV P0,A

LCALL DELAY ; MOV P0,#0FFH MOV P1,#20H MOV P0,#0F6H

LCALL DELAY ; MOV P0,#0FFH

MOV P2,#0FFH ;P2 JNB P2.0,TIAOJIE MOV A,R6 MOV B,#10 DIV AB

转延迟子程序 口复位 口复位 转延迟子程序 口复位 查表指令 转延迟子程序 口复位 查表指令 转延迟子程序 转延迟子程序 口复位 MOVC A,@A+DPTR ;查表指令 MOV P1,#40H MOV P0,A

LCALL DELAY ;转延迟子程序 MOV P0,#0FFH MOV A,B

MOVC A,@A+DPTR ;查表指令 MOV P1,#80H MOV P0,A

LCALL DELAY ; MOV P0,#0FFH

MOV P2,#0FFH ;P2 JNB P2.0,TIAOJIE LJMP LOOP TIAOJIE: CPL ET0 CPL ET1 CPL EX0 CPL EX1 LJMP LOOP ORG 0100H

ZJ : PUSH A ; MOV TH1,#3CH ; MOV TL1,#0B0H DJNZ R7,FANHUI MOV R7,#20 INC R4 MOV A,R4

CJNE A,#60,FANHUI FANHUI

MOV R4,#00H INC R5 MOV A,R5

CJNE A,#60,FANHUI FANHUI

MOV R5,#00H INC R6 MOV A,R6

CJNE A,#12,FANHUI

MOV R6,#00H ; r6FANHUI: POP A RETI

DELAY: MOV R3,#10 HEHAO: MOV R2,#100 DJNZ R2,$

转延迟子程序 口复位 把A送入堆栈 定时100毫秒 ;若A内容不等于60,则跳到;r4单元清零 ;若A内容不等于60,则跳到;r5单元清零 单元清零 ;出栈 DJNZ R3,HEHAO RET

ORG 0200H MIAO: CLR EA INC R4 MOV A,R4

CJNE A,#60,MIA ;若A内容不等于60,则跳到MIA MOV R4,#00H ; r4单元清零 MIA: SETB EA

RETI FEN: CLR EA INC R5 MOV A,R5

CJNE A,#60,FE

MOV R5,#00H ; r5FE: SETB EA

RETI SHI: CLR EA INC R6 MOV A,R6

CJNE A,#24,SH MOV R6,#00H SH: SETB EA

RETI ORG 0300H

TAB: DB 0C0H,0F9H,0A4H, 0B0H,99H,92H,82H,0F8H,80H,90H的数据 END

;中断返回程序 单元清零 ;中断返回程序 ;中断返回程序 ;查表

批阅教师评语: 报告成绩: 指导教师签名: 年 月 日

封底:

本文来源:https://www.bwwdw.com/article/itm5.html

Top