全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子信息工程学系实验报告成 绩:课程名称:单片机原理与接口 指导教师(签名):实验项目名称:实验5 51定时器实验 实验时间:2011-12-15 班级:电信091 姓名:谢亮东 学号:910706140 实 验 目 的: 熟悉keil仿真软件、伟福仿真器的使用和C51定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程。实 验 环 境: Windows 7 旗舰版PC机 Keil C51单片机仿真调试软件,Proteus 7.5 SP3。实 验 原 理: 51型单片机有两个十六位定时/计数器T0、T1,有四种工作方式,由特殊功能寄存器中的定时计数方式控制寄存器TMOD控制:表1 方式控制寄存器D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M01、M0的状态决定定时器的工作方式,定时和外部事件计数方式选择位C/T,GATE与TR0、TR1配合决定定时/计数器的启停。加法计数寄存器TH0、TH1 (高八位)TL0、TL1(低八位);定时/计数到标志TF0、TF1(中断控制寄存器TCON);定时/计数器启停控制位TR0、TR1(TCON);定时/计数器中断允许位ET0、ET1(中断允许寄存IE);定时/计数器中断优先级控制位PT0、PT1(中断优IP)。MCS-51单片机定时计数器的工作原理如下图1所示, 图1 定时器结构单片机内部的定时计数模块,在定时时,对工作频率的12分频进行计数,先记入TL后记入TH,直到溢出为止,根据TL、TH内的初值不同可以定出不同的时间;在计数工作方式时,对T0(T1)引脚的输入脉冲进行计数,将计数值记入TL、TH。当定时/计数溢出时,会引起中断。计数初值与定时时间的关系为:T = 12(T_all a)/fosc定时间隔为T,计数初值为a。所以有计数初值a =Tfosc/12,THx = a / 256,TLx = a % 256。定时器均有一个最大定时时间,对于长时间的定时需要,可以将定时间隔为固定的较小时间,通过另设一全局变量ah1用于计数,累加固定的较小定时时间来进行。使用MCS51单片机的定时/计数器的步骤是:设定TMOD,确定:工作状态(用作定时器/计数器)、工作方式、控制方式。2设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。3确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断:实 验 内 容 及 过 程: 绘制电路图,根据实验的目的进行Proteus仿真制图,结果显示在图2。 图2 所需电路图 二、编写程序代码 1、八位数码管第几位09的计数实验,根据题意在keil中编写如下代码:第 4 页 共 4 页#includeunsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;int i,b,a;main()TMOD=0x01; a=-50*0.001*12000000/12; TH0=a/256; TL0=a%256; P2=0xfb; P0=tabi; EA=1; ET0=1; TR0=1; while(1);void t00() interrupt 1TH0=a/256; TL0=a%256; b+; if(b=20) i+; b=0; if(i=10) i=0; P0=tabi; 编译之后就可以下载到proteus的仿真图中就可以看到结果了。 2、第三、四位059的计数实验,在keil中新建工程并编写如下程序:#includeunsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;int i,b,a;void delay(int);main()TMOD=0x01; a=-50*0.001*12000000/12; TH0=a/256; TL0=a%256; EA=1; ET0=1; TR0=1; while(1) P2=0xfb; P0=tabi%10; delay(10); P2=0xfd; P0=tabi/10; delay(10); void t00() interrupt 1TH0=a/256; TL0=a%256; b+; if(b=20) i+; b=0; if(i=60) i=0; void delay(int z)int i,j; for(j=z;j0;j-) for(i=110;i0;i-);至此,代码输入完毕,同样的道理根据计数原理可以进行数码管的以秒为单位的计数。 3、在第一步基础上 加拨码开关实现暂停,编写程序。运行测试无误,生成hex格式文件。下面为主要部分程序内容:#includeunsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;sbit k=P37;int i,b,a;void delay(int);main()TMOD=0x01; a=-50*0.001*12000000/12; TH0=a/256; TL0=a%256; EA=1; ET0=1; TR0=1; EX0=1; IT0=1; while(1) P2=0xfb; P0=tabi%10; delay(10); P2=0xfd; P0=tabi/10; delay(10);void t00() interrupt 1TH0=a/256; TL0=a%256; b+; if(b=20) i+; b=0; if(i=60) i=0; void delay(int z)int i,j; for(j=z;j0;j-) for(i=110;i0;i-);void kaiguan() interrupt 0TR0=!TR0;实 验 结 果 及 分 析:1、八位数码管的第三位显示09的实验,编译调试后可看到如下结果如图3。数码管的第三位从09地计数,每秒钟增加一个数也就是计时了,这样反复循环。 2在个位的计数基础上增加十位,就这样可以计时99秒了,不过本次试验只针对60秒进制的,因此,在整个过程中,只要分别对个位以及十位分别赋值即可。由于是两位数在数码管的额动态显示中一定要把握好延时的时间,多了或者是少都不行。 3、这次加了个开关,所以我就加了个外部中断0INT0.只要开关按钮一按下,定时器的开关TR0就会一次,由此可以暂停计时。下面分别为按钮被按下的前后两个状态: 图3 个位计数方式 图4 60秒计数方式 图5 按键两次按下前后改变的计数结果没按下之前显示“13”按下第一次按钮后收到一个中断请求暂停,把按键放开来,之后再第二次按下按钮,CPU收到第二次中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冷冻肉购销合同范本
- 山东微山县事业单位2025年下半年招考人才易考易错模拟试题(共500题)试卷后附参考答案
- 宜昌市人力资源和社会保障局所属事业单位2025年下半年急需紧缺人才引进【2人】易考易错模拟试题(共500题)试卷后附参考答案
- 供电合同解除协议书
- 公司宽带安装协议书
- 出售储能电合同范本
- 桂圆买卖合同协议书
- 框架协议框架协议书
- 桌椅板凳租赁协议书
- 元件备货协议书范本
- 2025年《内部控制与风险管理》试题与答案一
- 2025广西柳州城市职业学院人才招聘28人考试笔试参考题库附答案解析
- 2025年秋人教版小学数学六年级上册期末质量检测试卷及参考答案
- 招聘专员年度述职报告
- 心电中心运营方案
- 《分布式光伏发电开发建设管理办法》问答(2025年版)
- xx医院检验科室内质控月总结报告
- 2025年秋青岛版(五四学制)(新教材)小学数学三年级上册(全册)教学设计(附目录P129)
- 【《复杂场景下的运动目标跟踪算法分析》开题报告4200字】
- 2025新疆交通投资(集团)有限责任公司所属公司招聘26人笔试历年典型考点题库附带答案详解2套试卷
- 2025榆林镇北台、红石峡景区招聘(26人)考试笔试模拟试题及答案解析
评论
0/150
提交评论