- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验四 定时计数器应用 一、实验目的: 1、单片机系统中,可以用软件或硬件定时,当定时时间较长,定时准确率要求较高时,应采用硬件定时。 MCS—51系列单片机中有2个16位的可编程定时/计数器T0和T1,通过本实验要求掌握T0、T1的初始化编程和应用。 2、学会应用烧录软件XLISP和keil-uvision2集成调试软件进行实验。掌握实验的步骤并能得到正确的实验结果。 二、实验内容 1、定时计数器应用: (1)P0口接8个LED闪烁,用定时计数器定时,使闪烁的间隔时间为1S。 用定时计数器0实现定时1S,采用软硬件结合方式:T0方式0,定时50ms,循环程序20次。 (2)定时与中断结合 正常运行时,P1口接8个LED灯流水(定时1S),按下K1时,申请中断,使8个灯闪烁5次。 2、数码管静态显示: 要求数码管显示0-9,间隔时间0.5S,采用定时计数器T1实现(T1工作方式2,定时0.25ms,循环2000次,实现0.5s定时)。 3、思考题: 用定时计数器T0和T1级联定时3S。 三、实验步骤 1、硬件连接 使用USB线(电源)和串口线(通信),将XL2000综合仿真仪与微型计算机连接起来; JP13和JP14端口的跳线帽跳至232的方式;将JP17的开关置为弹起状态,选择编程模式; (1)定时计数器应用:使用8P的连接线将JP44(CPU的P1口)与JP32(8个发光二极管)相连,用1P线连接P3.2和按键。 (2)数码管显示:8P的连接线将P1口与JP88相连。 2、软件设计 Kiel软件操作同实验一:建立工程并存储、选择芯片89C51、新建文件输入程序并保存,将文件加入到工程中。 参考程序 1、(1)8个LED闪烁,延时1S程序 #include “reg51.h” void delay1s() { unsigned char i; for(i=0;i0x14;i++) { TH0=0x3c; TL0=0xb0; TR0=1; while(!TF0); TF0=0; } } void main() { TMOD=0x01; while(1) { P0=0x00; delay1s( ); P0=0xff; delay1s( ); } } 参考程序1、(2) 间隔1秒的流水灯,中断闪烁程序 #include reg51.h void delay1s() { unsigned char i; for(i=0;i0x14;i++) { TH0=0x3c; TL0=0xb0; TR0=1; while(!TF0); TF0=0; } } void int_0 ( ) interrupt 0 { unsigned char k; for(k=0;k5;k++) { P2=0x00; delay1s(); P2=0xff; delay1s(); }} void main() { unsigned char j; unsigned char display[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; EA=1; EX0=1; IT0=1; TMOD=0x01; while(1) { for(j=0;j8;j++) { P2=display[j]; delay1s( ); } } } 2、0~9简易秒表 #include reg51.h unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(); //采用定时器1实现0.5秒延时 { unsigned int i; for(i=0;i2000;i++) //设置2000次循环次数 { TH1=0x06; //方式2,设置定时器初值为06H TL1=0x06; TR1=1; //启动T1 while(!TF1); //定时0.250ms时间到,TF1=1 TF1=0; //将T
文档评论(0)