您的位置:首页 > 其它

运用软件延时方法控制P1口亮灯实验

2009-06-10 12:07 405 查看
实验二运用软件延时方法控制P1口亮灯实验

如有疑问,请zlj800800@163.com 探讨

一、实验目的
1学习P1口的使用方法
2学习延时子程序的编写
3进一步熟悉51单片机的相应指令和基本编程方法
二、实验内容
P1口作为输出口,接8只发光二极管,编写相应的程序使发光二极管循环点亮。其中每一个发光二极管亮灭的时间间隔可以由人为的延时子程序进行控制。要求0.5S中亮一个。
已知单片机晶振频率为6 .00MHz
三、实验预备知识
1. P1口是准双向口,可以定义为输入,也可以定义为输出
2. 本实验中延时子程序采用指令循环来实现。
3. 延时时间的计算:
延时时间=机器周期×指令所需机器周期数×循环次数
机器周期=2微秒,
其中循环次数可以采用多重循环来实现
四、程序框图
自己尝试
五、实验步骤
1按要求编写相应的程序
Prom1_1:
#include “reg51.h”
sbit P1_0=P1^0;
void main()
{ P1_1=0;
}
Prom1_2:
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit P10=P1^0;
/*延时程序由Delay 参数确定延迟时间*/
void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}
void main()
{ for(;;)
{ P10=!P10; //取反P1.0 引脚
mDelay(500);
}
}
Prom1_3:
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
/*延时程序
由Delay 参数确定延迟时间
*/
void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}
void main()
{ unsigned char OutData=0xfe;
for(;;)
{
P1=OutData;
OutData=_crol_(OutData,1); //循环左移
mDelay(500); /*延时500 毫秒*/
}
}

2连接实验电路图
3调试并运行程序,观察结果
六、实验要求
完成实验报告,简要写出相应的实验现象和结果。(如遇到的问题以及解决问题的方法)

本次实验上课验收。

附加:用开关控制二极管亮灭
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: