51单片机入门源码部分(流水灯,蜂鸣器,LED)

1. 流水灯实验

1.1 流水灯(位输出)

/***********************************************
* 实验名:流水灯
* 实验效果:流水灯(位输出)
************************************************/
#include<reg52.h>
#define uint unsigned int //16 0-65535
#define on 0
#define off 1

sbit led1 = P1^0;
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
sbit led6 = P1^5;
sbit led7 = P1^6;
sbit led8 = P1^7;


void delay(uint xms) //延时xms
{
	uint i,j;
	for(i=xms;i>0;i--)     //i=xms即延时xms
		for(j=112;j>0;j--);
}
void main()
{
	while(1)
	{
		led1 = on;//P1^0=0;
		delay(200);//延时200ms
		led1 = off;
		
		led2 = on;//P1^0=0;
		delay(200);//延时200ms
		led2 = off;
		
		led3 = on;//P1^0=0;
		delay(200);//延时200ms
		led4 = off;
		
		led4 = on;//P1^0=0;
		delay(200);//延时200ms
		led4 = off;
		
		led5 = on;//P1^0=0;
		delay(200);//延时200ms
		led5 = off;
		
		led6 = on;//P1^0=0;
		delay(200);//延时200ms
		led6 = off;
		
		led7 = on;//P1^0=0;
		delay(200);//延时200ms
		led7 = off;
		
		led8 = on;//P1^0=0;
		delay(200);//延时200ms
		led8 = off;
	}
}

1.2 流水灯(循环移位)

/***********************************************
* 实验名:流水灯
* 实验效果:流水灯(循环移位)
************************************************/
#include<reg52.h>
#define uint unsigned int //16 0-65535
#include<intrins.h>


void delay(uint xms) //延时xms
{
	uint i,j;
	for(i=xms;i>0;i--)     //i=xms即延时xms
		for(j=112;j>0;j--);
}
void main()
{
	P1 = 0xfe; //1111 1110
	while(1)
	{
		delay(500);
		P1 = _crol_(P1,1); //将P1循环左移一位
	}
}

1.3 流水灯(移位操作)

/***********************************************
* 实验名:流水灯
* 实验效果:流水灯(移位操作)
************************************************/
#include<reg52.h>
#define uint unsigned int //16 0-65535


void delay(uint xms) //延时xms
{
	uint i,j;
	for(i=xms;i>0;i--)     //i=xms即延时xms
		for(j=112;j>0;j--);
}
void main()
{
	int i=0;
	while(1)
	{
		P1 = 0xfe; //1111 1110
		for(i=0;i<8;i++)
		{
			delay(1000);
			P1 <<= 1;//P1 = P1<<1;
			P1 = P1 | 0x01;
		}
	}
}

2. 蜂鸣器实验

2.1 蜂鸣器

/***********************************************
* 实验名:蜂鸣器实验
* 实验效果:程序烧录进去后蜂鸣器发出滴滴的声音
************************************************/
#include<reg52.h>
#define uint unsigned int //16 0-65535
#define on 0
#define off 1
sbit fm = P2^3;


void delay(uint xms) //延时xms
{
	int i,j;
	for(i=xms;i>0;i--)     //i=xms即延时xms
		for(j=112;j>0;j--);
}

void main()
{
	while(1)
	{
		fm = on;//P2^3 = 0;蜂鸣器响
		delay(100);
		fm = off;
		delay(100);
	}
}
/***********************************************
* 实验名:流水灯报警
* 实验效果:程序烧录进去后蜂鸣器配合流水灯发出滴滴的声音
************************************************/
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int //16 0-65535
#define on 0
#define off 1
sbit fm = P2^3;


void delay(uint xms) //延时xms
{
	int i,j;
	for(i=xms;i>0;i--)     //i=xms即延时xms
		for(j=112;j>0;j--);
}

void main()
{
	P1 = 0xfe; //1111 1110
	while(1)
	{
		delay(100);
		P1 = _crol_(P1,1);/*将P1循环左移1位*/
		fm = on;//P2^3 = 0;蜂鸣器响
		delay(100);
		fm = off;
	}
}

3. LED显示器静态显示

/***********************************************
* 实验名:LED显示器静态显示
* 实验效果:第一个LED显示器显示字符"b"
************************************************/
#include<reg52.h>
#define duan P0
sbit wei1 = P2^4;//定义第1位LED显示器
sbit wei2 = P2^5;//定义第2位LED显示器
sbit wei3 = P2^6;//定义第3位LED显示器
sbit wei4 = P2^7;//定义第4位LED显示器


void main()
{
	P1 = 0xfe; //1111 1110
	wei1 = 1;
	wei2 = 0;
	wei3 = 0;
	wei4 = 0;
	duan = 0x7c; //0111 1100 "b"
	while(1);
}

4. LED显示器动态显示

/***********************************************
* 实验名:LED显示器动态显示
* 实验效果:在4位一体LED显示器左数第4位显示4,过1s,
* 在左数第3位显示3,过1s,在左数第2位显示2,过1s,
* 在左数第1位显示1,上述过程不断循环
************************************************/
#include<reg52.h>
#define duan P0
#define uchar unsigned char
sbit wei1 = P2^4;//定义第1位LED显示器
sbit wei2 = P2^5;//定义第2位LED显示器
sbit wei3 = P2^6;//定义第3位LED显示器
sbit wei4 = P2^7;//定义第4位LED显示器

uchar code sz[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

void delay (unsigned int xms)
{
	unsigned int i,j;
	for(i=xms;i>0;i--)
		for(j=112;j>0;j--);
}


void main()
{
	while(1)
	{
		duan = sz[4];
		wei1 = 0;
		wei2 = 0;
		wei3 = 0;
		wei4 = 1;
		delay(1000);
		duan = sz[3];
		wei1 = 0;
		wei2 = 0;
		wei3 = 1;
		wei4 = 0;
		delay(1000);
		duan = sz[2];
		wei1 = 0;
		wei2 = 1;
		wei3 = 0;
		wei4 = 0;
		delay(1000);
		duan = sz[1];
		wei1 = 1;
		wei2 = 0;
		wei3 = 0;
		wei4 = 0;
		delay(1000);
	}
	
}
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

slience_me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值