基于proteus的51单片机仿真实例五十一、基于P2口的流水灯
2017-05-08 21:22
232 查看
1、本实例运行时,连接P2口的8个LED左右来回循环点亮。
2、在proteus中新建仿真文件ex39.dsn,输入以下电路图,本例中8个LED连接在P2端口,LED的阳极连接到端口,阴极通过限流电阻接地,对于P0端口,使用这种连接方式时,即使端口输出0xFF,LED也不会被点亮(想一想,这是为什么?)
3、程序设计:
由于本例中led采用的阳极接端口,阴极接地,所以只有相应端口输出1时,与之相对的LED才会被点亮。为产生单个LED循环滚动效果,P2口的初始值设置为0x01,这样先使第一个LED点亮,然后在主程序中使用循环移位函数实现8个led轮流点亮。
另外请注意:两个循环的次数是7次而不是8次,思考一下这是为什么?
在keil c51中新建工程ex39,输入以下程序代码,编译并生成ex39.hex文件:
//实例39:利用循环移位库函数在P2口实现流水灯
#include <reg51.h> //包含头文件
#include <intrins.h> //包含移位库函数头文件
void delay(void) //延时函数
{
unsigned char i,j;
for(i = 0;i < 252;i++)
for(j = 0;j < 252;j++);
}
void main(void)
{
unsigned char i;
P2 = 0x01; //P2口初始化
while(1)
{
for(i = 0;i < 7;i++)
{
P2 = _crol_(P2,1); //P2端口向左循环移动1位
delay();
}
for(i = 0;i < 7;i++)
{
P2 = _cror_(P2,1); //P2端口向右循环移动1位
delay();
}
}
}
4、将ex39.hex文件载入at89c51中,启动仿真,观察运行效果。下图是某一时刻的执行结果。
5、调试本例后,可以将LED改为共阳极连接,修改程序,观察运行结果,比较这两种接法的异同。
2、在proteus中新建仿真文件ex39.dsn,输入以下电路图,本例中8个LED连接在P2端口,LED的阳极连接到端口,阴极通过限流电阻接地,对于P0端口,使用这种连接方式时,即使端口输出0xFF,LED也不会被点亮(想一想,这是为什么?)
3、程序设计:
由于本例中led采用的阳极接端口,阴极接地,所以只有相应端口输出1时,与之相对的LED才会被点亮。为产生单个LED循环滚动效果,P2口的初始值设置为0x01,这样先使第一个LED点亮,然后在主程序中使用循环移位函数实现8个led轮流点亮。
另外请注意:两个循环的次数是7次而不是8次,思考一下这是为什么?
在keil c51中新建工程ex39,输入以下程序代码,编译并生成ex39.hex文件:
//实例39:利用循环移位库函数在P2口实现流水灯
#include <reg51.h> //包含头文件
#include <intrins.h> //包含移位库函数头文件
void delay(void) //延时函数
{
unsigned char i,j;
for(i = 0;i < 252;i++)
for(j = 0;j < 252;j++);
}
void main(void)
{
unsigned char i;
P2 = 0x01; //P2口初始化
while(1)
{
for(i = 0;i < 7;i++)
{
P2 = _crol_(P2,1); //P2端口向左循环移动1位
delay();
}
for(i = 0;i < 7;i++)
{
P2 = _cror_(P2,1); //P2端口向右循环移动1位
delay();
}
}
}
4、将ex39.hex文件载入at89c51中,启动仿真,观察运行效果。下图是某一时刻的执行结果。
5、调试本例后,可以将LED改为共阳极连接,修改程序,观察运行结果,比较这两种接法的异同。
相关文章推荐
- 基于proteus的51单片机仿真实例十一、51单片机的P0口控制实例--流水灯
- 基于proteus的51单片机仿真实例五十、51单片机的P1、P2、P3口的工作原理
- 基于proteus的51单片机仿真实例一、说明
- 基于proteus的51单片机仿真实例五、第一个proteus仿真实例(续)
- 基于proteus的51单片机仿真实例十九、用单片机端口演示数据的乘法运算结果
- 基于proteus的51单片机仿真实例二十八、C语言的if条件语句演示实例
- 基于proteus的51单片机仿真实例二十三、C51条件运算符演示实例
- 基于proteus的51单片机仿真实例二、关于proteus
- 基于proteus的51单片机仿真实例十四、51单片机的C语言文件包含应用实例
- 基于proteus的51单片机仿真实例二十、用单片机端口演示数据的除法运算结果
- 基于proteus的51单片机仿真实例十六、51单片机的C语言的标识符和关键字
- 基于proteus的51单片机仿真实例二十七、C语言的语句演示实例
- 基于proteus的51单片机仿真实例四、第一个proteus仿真实例
- 基于proteus的51单片机仿真实例十二、51单片机的C语言程序结构
- 基于proteus的51单片机仿真实例八、关于proteus常用操作的补充说明
- 基于proteus的51单片机仿真实例二十一、C语言的自增和自减运算演示实例
- 基于proteus的51单片机仿真实例十、51单片机的P0口的工作原理
- 基于proteus的51单片机仿真实例二十五、C51中移位位运算符演示实例
- 基于proteus的51单片机仿真实例二十二、C51逗号运算符演示实例
- 基于proteus的51单片机仿真实例十八、用单片机端口演示数据的加法和减法运算 4000 结果