流水灯控制实验

内容

用 P0 口作为输出口,接 8 位用作逻辑电平显示的发光二极管。间隔 300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。

实验原理

  1. I/O 口是单片机与外界联系的通道。它可对各类外部信号(模拟量、开关量、频率信号)进行检测、判断、处理,并可控制各类外部设备。单片机通过 I/O 口感知外部世界的存在,而外界也通过 I/O 口感知单片机的存在。

  2. 51 单片机共有 4 个准双向的 8 位并行 I/O 端口,分别记为
    P0、P1、P2、P3,其中输出锁存器属于特殊功能寄存器。端口的每一位均由锁存器、输出驱动器和输入缓冲器组成,这些端口除了按字节输入输出外,还可以按位寻址,便于位控功能的实现。

  3. 4 个 I/O 口中,P0、P2 口为双功能端口,当单片机片外扩展存储器时,P0 口作为单片机系统复用的地址/数据总线使用,P2
    口用作地址总线;P1 口是单功能的 I/O 口,引脚输入时,必须先向锁存器写 1;由于51 单片机的引脚数目有限,因此在 P3
    口电路中增加了引脚的第二功能。

所用仪器、材料

①Keil uVision5
②Proteus8 Professional 仿真软件
③一片单片机,型号为:IPA15F2K61S2

程序代码

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z){
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main(){
uchar i;
uchar j;
P2=0xa0;P0=0x00;
//先奇数亮完偶数亮,循环三次
for(i=0;i<3;i++)
{ P2=0x80;P0=0xaa;
delay(300);
P2=0x80;P0=0x55;
delay(300);
//一个灯上下循环三次
for(j=0;j<3;j++)
{
P2=0x80;P0=0xfe;
for(i=0;i<7;i++)
{delay(150);
P0=_crol_(P0,1);
delay(150); } }
// 俩个分别从两边从中间流动三次
for(i=0;i<3;i++){
P2=0x80;
P0=0x7e; delay(300);
P0=0xbd;delay(300);
P0=0xdb;delay(300);
P0=0xe7;delay(300); }
// 从中间往两边流动三次
for(i=0;i<3;i++){
P2=0x80;
P0=0xe7;delay(300);
P0=0xdb;delay(300);
P0=0xbd;delay(300);
P0=0x7e; delay(300);}
//八个灯全部闪烁 3 次
for(i=0;i<3;i++){
P2=0x80;P0=0x00;
delay(300);}
delay(300);
while(1)
P0=0xff;

实物图

在实物实物展示这里插入图片描述

  • 3
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值