51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > 51单片机 > 详细内容
定时器和中断实验
发布时间:2009/6/29  阅读次数:3055  字体大小: 【】 【】【
作者:未知   来源:电子商务网
一、实验目的
1、学习51单片机内部定时器的使用方法。
2、掌握中断处理程序的方法。
3、掌握数码管与单片机的连接方法和简单显示编程方法。
4、学习和理解数码管动态扫描的工作原理。
  
二、实验内容
1、使用定时器T0,定时1秒,控制P1口发光管循环点亮。
2、使用定时器T0,定时1秒,控制1个数码管循环显示数字0~9,每秒钟数字加一。
3、使用软件定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。
4、使用定时器T0,定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。
  
三、实验电路图
四、实验说明
1、数码管的基本概念
(1) 段码
       数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。本次实验使用的是共阴数码管,公共端是1、6,公共端置0,则某段选线置1相应的段就亮。公共端1控制左面的数码管;公共端6控制右面的数码管。正面看数码管的引脚、段选线和数据线的对应关系为:
       段码是指在数码管显示某一数字或字符时,在数码管各段所对应的引脚上所加的高低电平按顺序排列所组成的一个数字,它与数码管的类型(共阴、共阳)和与数据线的连接顺序有关。
对应数据线
D7
D6
D5
D4
D3
D2
D1
D0
对应显示段
e
f
DP
g
c
d
b
a
显示数字
段码
0
0CFH
1
1
0
0
1
1
1
1
1
03H
0
0
0
0
0
0
1
1
2
5DH
0
1
0
1
1
1
0
1
3
5BH
0
1
0
1
1
0
1
1
4
93H
1
0
0
1
0
0
1
1
5
0DAH
1
1
0
1
1
0
1
0
6
0DEH
1
1
0
1
1
1
1
0
7
43H
0
1
0
0
0
0
1
1
8
0DFH
1
1
0
1
1
1
1
1
9
0DBH
1
1
0
1
1
0
1
1
  
(2)位码
       位码也叫位选,用于选中某一位数码管。在实验图中要使第一个数码管显示数据,应在公共端1上加低电平,即使P2.7口为0,而公共端6上加高电平,即使P2.6口为1。位码与段码一样和硬件连接有关。
  
(3)拉电流与灌电流
       单片机的I/O 口与其他电路连接时,I/O 电流的流向有两种情况:一种是当该I/O 口为高电平时,电流从单片机往外流,称作拉电流;另一种是该I/O 口为低电平时,电流往单片机内流,称为灌电流。一般I/O 的灌电流负载能力远大于拉电流负载能力,对于一般的51 单片机而言,拉电流最大4mA,灌电流为20mA。一般在数码管显示电路中采用灌电流方式(用共阳数码管),可以得到更高的亮度。本实验电路中采用拉电流方式(用共阴数码管)。
  
2、多位数码管的动态显示
       在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个单片机的8位I/O口控制,形成段选线的多路复用。而各位数码管的共阳极或共阴极分别由单片机独立的I/O口线控制,顺序循环地点亮每位数码管,这样的数码管驱动方式就称为“动态扫描”。在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。
多位8段LED动态显示器电路,其中段选线占用一个8位I/O口,位选线占用一个8位I/O口,由于各位的段选线并联,段线码的输出对各位来说都是相同的。因此,同一时刻,如果各位位选线都处于选通状态的话,8位LED将显示相同的字符。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一位的位选线处于选通状态时,其它各位的位选线处于关闭状态,这样,8位LED中只有选通的那一位显示出字符,而其它位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他的位选线处于关闭状态。如此循环下去,就可以使各位“同时”显示出将要显示的字符。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则可造成多位同时亮的假象,达到显示的目的。
  
3、定时器
       内部定时/计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。当为定时工作方式1时,定时时间的计算公式为:
(216—计数初值)╳晶振周期╳12       或      (216—计数初值)╳机器周期
因为实验系统的晶振12MHZ,机器周期等于1us。最大定时时间为:
  (216—0)╳1/12╳10-6╳12=65536╳10-6(s)= 65.536ms。
所以需要配合软件记数。如要延时1秒,T0取最大定时时间,则需要T0中断16次,所用时间为
65536*16=1048576μs≈1s
因此在T0中断处理程序中,要判断中断次数是否到16次,若不到16次,则只使中断次数加1,然后返回,若到了16次,定时1秒时间到。
如要延时1秒,T0取50ms定时时间,则需要T0中断20次,所用时间为
50ms*20=1000ms=1s
因此在T0中断处理程序中,要判断中断次数是否到20次,若不到20次,则只使中断次数加1,然后返回,若到了20次,定时1秒时间到。
  
五、参考程序框图及部分程序
1、使用定时器T1,定时1秒,控制P1口发光管循环点亮。
;利用定时器精确延时1秒
;循环点亮P1口接的八只发光二极管。  
ORG 0000H
AJMP START
ORG 001BH   ;T1中断入口地址
AJMP INT_T1
ORG   0030H
START:        MOV   SP,#60H
       MOV TMOD,#10H ;置T1为方式1
       MOV TL1,#0B0H   ;延时50mS的时间常数
       MOV TH1,#3CH
       MOV R0,#0FEH
       MOV R1,#20
       SETB TR1;启动定时器1,开始定时
       SETB ET1
       SETB EA     ;开中断
       SJMP $
INT_T1:;T1中断服务子程序
       PUSH ACC;保护现场
       PUSH PSW
       PUSH DPL
       PUSH DPH
       CLR TR1;关闭定时器1,停止定时
       MOV TL1,#0B0H;定时50mS常数
       MOV TH1,#3CH            
       DJNZ R1,EXIT
       MOV   R1,#20;延时一秒的常数
       MOV   A,R0;
       MOV   P1,A   ;送P1口显示
       SETB C
       RLC A
       MOV R0,A
EXIT: SETB TR1;启动定时器1,开始定时
       POP DPH;恢复现场
       POP DPL
       POP PSW
       POP ACC
RETI
END
  
2、使用定时器T0,定时1秒,控制1个数码管循环显示数字0~9,每秒钟数字加一。
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号