单片机实验四

2018-11-18 21:39

单片机实验报告

姓名 学号 时间 2014.11.10

评 阅 实验题目 单片机内部定时器实验

一、 实验目的与要求

实验目的:学习单片机的定时器功能和应用,学习蜂鸣器的使用。

实验要求:①编写定时16秒的程序,1秒、2秒、3秒……的变化由数码管体现,到

16秒的时间时,停止计数,蜂鸣器报警。

②在①的基础上添加一个中断子程序,完成当有外部中断时,开始计时的

功能。定时16秒,1秒、2秒、3秒……的变化由数码管体现,到16秒的时间时,停止计数,数码管变暗,蜂鸣器报警。蜂鸣器报警效果为响0.5秒,停0.5秒循环(增加定时器0,工作方式为方式1)。

③思考题:请问,在晶振为6MHz时,定时器能设置的最大定时宽度是多

少?在晶振为12MHz时,定时器能设置的最大定时宽度是多少?请写出模式1的定时宽度的计算方法。

二、 实验环境(硬件环境、软件环境)

硬件环境:TMD-2模块化单片机实验仪

CPU:89C51RD2HXX 工作频率:6MHz

RAM:62256(32K X8) 地址范围:0000H~7FFFH I/O口输入输出设备:8个拨动开关,8个LED灯

数据显示设备:1个共阴极数码管,1个两行16字符的液晶显示器 逻辑笔

输出时钟频率(YCLK):1MHz

系统电源:+5V/2A ,+12V/0.5A ,-12V/0.5A

软件环境:系统编程软件Flash Magic ,汇编语言程序编辑软件Keil

三、 实验电路

图3.4.1 定时器报警实验原理图

说明:CPU通过输出端口(8700H)将数码管的字形码锁存在74LS374的输出端,再通过74LS244驱动数码管显示数据。B1为蜂鸣器,T0通过正与门驱动器DS75451控制蜂鸣器。当DS75451(U29B)输出低电平时,蜂鸣器鸣叫。T1通过DS75451控制共阴极数码管(LED)的公共端。当DS75451(U29A)输出低电平时,数码管显示。

四、 程序流程图

① 编写定时16秒的程序,1秒、2秒、3秒……的变化由数码管体现,到16秒的时间时,停止计数,蜂鸣器报警。

开始

置定时器1为方式1(GATE=0,C/T=0,M1=0,M0=1) 置定时器1初值为3CB0 允许定时器1中断(IE=88H) R5=16 P3.4=1 ,P3.5=0 从首地址取出第一个字形码送数码管 启动定时器1(TR1=1) 1秒时间到? R5=R5-1 取出下一个字形码送到数码管 R5=0?(是否计到16秒) P3.4=0(蜂鸣器鸣叫) 数码管显示全亮 定时器1停止计数(TR1=0) 结束

② 在①的基础上添加一个中断子程序,完成当有外部中断时,开始计时的功能。定时16秒,1秒、2秒、3秒……的变化由数码管体现,到16秒的时间时,停止计数,数码管变暗,蜂鸣器报警。蜂鸣器报警效果为响0.5秒,停0.5秒循环(增加

定时器0,工作方式为方式1)。 开始 置定时器1为方式1(GATE=0,C/T=0,M1=0,M0=1) 置定时器0为方式1(GATE=0,C/T=0,M1=0,M0=1) 置定时器1初值为3CB0,置定时器0的初值为3CB0 允许定时器1、定时器0、外部中断0中断(IE=8BH) R5=16 P3.4=1 ,P3.5=0 中断标志是否为1 从首地址取出第一个字形码送数码管 启动定时器1(TR1=1) 1秒时间到? R5=R5-1 取出下一个字形码送到数码管 R5=0?(是否计到16秒) P3.4=1(蜂鸣器不叫),TR0=1(启动定时器0) 数码管显示不亮,定时器1停止计数(TR1=0) P3.4=0(蜂鸣器鸣叫),TR0=1(启动定时器0) 0.5秒时间到? 0.5秒时间到?

③ 程序测试报告:(调试输入数据、结果数据或状态。)

① 程序开始运行后,数码管依次显示数字0、1、2、3……E、F,间隔为1秒,计到F后,数码管变为全亮,蜂鸣器报警。 ② 程序开始运行后,数码管无显示,当有外部中断时,数码管依次显示0、1、2、3……E、F,间隔为1秒,计到F后,数码管变暗,蜂鸣器报警。蜂鸣器报警效果为响0.5秒,停0.5秒循环。 ③ 思考题:请问,在晶振为6MHz时,定时器能设置的最大定时宽度是多少?在晶振为12MHz时,定时器能设置的最大定时宽度是多少?请写出模式1的定时宽度的计算方法。

答:fosc=6MHz:Tmax=2^16*12/6MHz=131.072ms

fosc=12MHz:Tmax=2^16*12/12MHz=65.536ms 模式1:T=(2^16-X)*12/fosc ;X为定时器初值

六、 体会:(碰到的问题、如何解决、有何体会)

本次实验综合性较高,结合了定时器和外部中断的程序设计方法。需要注意的地方也比较多,像定时器初值的计算、查表程序的设计、TMOD、IE的赋值等都需要注意。还有就是由于定时器采用方式1,因此需要多次赋初值,当完成一次定时器溢出后,注意重置初值;由于采用方式1,在本题的条件下,定时器的定时宽度最大为131.072ms,达不到0.5s的要求,因此我们可以拆分为5*0.1s,这样每次计时0.1s,计时5次,便可以达到要求,但是要注意每次循环结束后要重置次数的初值5。

在程序的设计过程中,刚开始的几次出现不少错误,像忘记重置次数5这样的漏洞,经过多次检查及实验,得到了最终的正确的程序,能够满足要求。总之,实验原理是基础,只有学好了单片机原理,才能真正熟练掌握其应用,我们还有待锻炼。

七、 源程序代码

① 编写定时16秒的程序,1秒、2秒、3秒……的变化由数码管体现,到16秒的时间时,停止计数,蜂鸣器报警。 ADRLED EQU 8700H

ORG 0000H LJMP MAIN ORG 1BH


单片机实验四.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《建筑力学一》试卷B卷参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: