实验(二)51单片机控制LED流水灯

该实验旨在通过51单片机的AT89C51芯片,运用_CROL_函数进行左移操作控制LED灯的亮灭,实现逐位点亮的效果。实验过程包括电路仿真、Keil工程创建、源代码编写、编译调试,并在Proteus环境中观察运行结果。难点在于理解_CROL_函数的工作机制。
摘要由CSDN通过智能技术生成
  1. 实验目的、内容、仪器

实验目的:了解51单片机的引脚结构,根据前面所学的左移右移的概念利用代码完成实验。

实验仪器:AT89C51:单片机、BUTTON:按键、CAP:电容、CRYSTAL:晶振、LED-RED:LED灯(绿色)、RES:电阻

2.硬件原理

3.程序流程图

4.代码实现

#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delayms(uint);
uchar aa;
void main()
{
aa=0xfe;
while(1)
{
P2=~aa;
delayms(500);
aa=_crol_(aa,1);
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}

5.实验步骤

(1)搭建仿真电路,勾选debug

(2)建立keil工程,选择单片机型号

(3)给工程创建源码文件,并以.c结尾,添加文件到源组里

(4)生成hex文件,点击魔术棒,在output中勾选Create HRX_File

(5)对代码进行编译,调试debug,点击USE,在下拉菜单里选中“Proteus VSM Monitor 一51 ”进行设置

(6)将程序导入到单片机中运行,双击单片机,选择生成的hex文件

(7)在keil中启动调试,开始运行,观察proteus中的电路

6.结果及讨论

这次实验主要难点在于代码的理解方面,首先它运用了C51自带的函数库中的_crol_函数,,此函数包括在instrin的头文件中。_crol_函数会执行完从第一个led亮到第八个led,每判断过一次while的值是否为真的时候,相当于重新执行一遍从第一个led亮到第八个led,这是因为在执行while(1)中的第一条语句时,相当于把aa返回到最初值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值