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);
}
}