开发工具:
文件大小: 2mb
下载次数: 0
上传时间: 2009-05-19
详细说明: 实验一 走马灯实验 一、实验题目: P2口接八个发光二极管,分别为D0、D1……D7。程序先点亮D1,延时一段时间(2秒钟),再顺序点亮D1……D7,然后又是D0。同时只能有一个灯亮。设晶振频率fosc=6MHz,要求亮灯2秒后下一个灯点亮。 二、实验目的: 1、学习89C51的功能及编程方法。 2、学习P2口的使用方法及延时子程序的编写及使用。 3、学习内部定时/计数器的使用及编程方法。 4、初步掌握中断处理程序的编写方法。 5、学习Proteus ISIS和 Keil C51软件的使用方法。 三、程序说明及流程图: 1、计算计数初值 T=2 16÷(6M÷12)=0.13s>0.1s 分段数:2s÷0.1=20(段) a=-0.1×6000000÷12=-50000 2、程序流程图 (1) 使用延时程序实现跑马灯 (2) 使用软件计数方法实现跑马灯 (3) 使用硬件计数方法实现跑马灯 四、实验硬件连接及程序: 1、使用延时程序实现跑马灯 (1)硬件连线图: (2)程序及说明: #include "reg51.h" //89C51的库函数 void delay () //延时程序 { int a=50000; while (--a); } void main () { char a=1; //赋值a=00000001,用于亮灯 do { P2=a; //把a的值赋值给P2 a=a<<1; //使a左移一位 if (a= =0) a=1; //如果a=0,重新从0000001开始 delay (); //调用延时程序 } while (1); //让主函数死循环,一直运行 } 2、使用软件计数方法实现跑马灯 (1)硬件连线图: (2)程序及说明: #include "reg51.h" //89C51的库函数 char a=0x01,b=0; //a=00000001,用于亮灯;b=0,用于计数 void main () { TL0=-50000%256; //将计数初值赋值给T0的低8位TL0 TH0=-50000/256; //将计数初值赋值给T0的高8位TH0 TMOD=0x01; //T1不用。T0:软件控制启停,定时器状态,方式1 ET0=1; //允许T0中断 EA=1; //CPU开放中断 TR0=1; //T0开始运行 P2=0x01; //最低位的灯亮,即D0亮 while (1){;} //让主函数死循环,一直运行 } void T0_srv () interrupt 1 using 1 //T0的中断服务函数,中断编号1,寄存器组1 { TL0=-50000%256; //将计数初值赋值给T0的低8位TL0 TH0=-50000/256; //将计数初值赋值给T0的低8位TL0 b++; //b自加1 if(b= =20) //如果b=20,则为2秒钟 {b=0;a=a<<1; //使b复位,a左移1位 if (a= =0) a=1; //如果a=0,重新从00000001开始 P2=a; //把a的值赋值给P2 } } 3、使用硬件计数方法实现跑马灯 (1)硬件连线图: (2)程序及说明: #include "reg51.h" //89C51的库函数 char a=0x01; //a=00000001,用于亮灯 void main () { TL0=-50000%256; //将计数初值赋值给T0的低8位TL0 TH0=-50000/256; //将计数初值赋值给T0的高8位TH0 TL1=TH1=-20; //T1为加 ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.