51单片机实验1、LED灯闪烁实验
2、LED流水灯实验
3、无源蜂鸣器实验
4、继电器控制实验
5、数码管显示实验
6、独立按键实验
1、LED灯闪烁实验
#include
void Delay(unsigned int i) //延时程序,i是形式参数,i为1
时延时约1MS
{
unsigned int j;
for(;i>0;i--) //变量i由实际参数传入一个值,因此i
不能赋初值
for(j=0;j
函数功能:延时一段时间
void Delay(unsigned int i) //...
1、LED灯闪烁实验
2、LED流水灯实验
3、无源蜂鸣器实验
4、继电器控制实验
5、数码管显示实验
6、独立按键实验
1、LED灯闪烁实验
#include
void Delay(unsigned int i) //延时程序,i是形式参数,i为1
时延时约1MS
{
unsigned int j;
for(;i>0;i--) //变量i由实际参数传入一个值,因此i
不能赋初值
for(j=0;j<125;j++) //j由0自增到125 所用的时间大约
是1MS
{;}
}
void main() //主函数
{
P0=0xff; //初始化端口全部置1高电平LED熄灭
P1=0xff; //初始化端口全部置1 高电平LED熄灭while(1) //无限循环一直执行以下程序
{
P0=0x00; //灯亮
P1=0x00; //灯亮
Delay(500); // 将实际参数500传递给形式参数i,延时500ms 也就是0.5S
P0=0xff; //灯灭
P1=0xff; //灯灭
Delay(500); //将实际参数500传递给形式参数i,延时500ms 也就是0.5S
}
}
2、LED流水灯实验
#include
函数功能:延时一段时间
void Delay(unsigned int i) //延时程序,i是形式参数,i为1
时延时约1MS
{
unsigned int j;
for(;i>0;i--) //变量i由实际参数传入一个值,因此i
不能赋初值
for(j=0;j<125;j++)
{;}
}
void main(void)
{
P0=0xff;
P1=0xff;
while(1) //无限循环执行程序
{
P0=0xfe; //P0第一个灯亮
P1=0xfe; //P1第一个灯亮
Delay(200); //调用延时函数
P0=0xfd; //P0第二个灯亮
P1=0xfd; //P1第二个灯亮
Delay(200); //调用延时函数
P0=0xfb; //P0第三个灯亮
P1=0xfb; //P1第三个灯亮
Delay(200); //调用延时函数
P0=0xf7; //P0第四个灯亮
P1=0xf7; //P1第四个灯亮
Delay(200); //调用延时函数
P0=0xef; //P0第五个灯亮
P1=0xef; //P1第五个灯亮
Delay(200); //调用延时函数
P0=0xdf; //P0第六个灯亮
P1=0xdf; //P1第六个灯亮
Delay(200); //调用延时函数
P0=0xbf; //P0第七个灯亮
P1=0xbf; //P1第七个灯亮
Delay(200); //调用延时函数
P0=0x7f; //P0第八个灯亮
P1=0x7f; //P1第八个灯亮
Delay(200); //调用延时函数
}
}
3、无源蜂鸣器实验
#include
sbit BEEP=P3^6; //定义蜂鸣器控制端P36
sbit L00=P0^0; //定义L0.0 LED灯
void Delayst(unsigned int i) //延时程序,i是形式参数,i 为1时延时约250US
{
unsigned int j;
for(;i>0;i--) /变量i由实际参数传入一个值,因此i不能
赋初值
for(j=0;j<31;j++) // 此数值为125时大约延时1MS 由此计算出为1时延时大约8US 31X8=248US≈250US {;}
}
void Delay(unsigned int i) //延时程序,i是形式参数,i为1
时延时约1MS
{
unsigned int j;
for(;i>0;i--) //变量i由实际参数传入一个值,因此i不
能赋初值
for(j=0;j<125;j++)
{;}
}
void main() //主函数
{
unsigned int j;
while(1) //无限循环一直执行以下程序
{
L00=0; //点亮L00 LED灯
for(j=1000;j>0;j--) //蜂鸣器响大约500MS
{
BEEP = ~BEEP;
Delayst(2); //延时500US 发出大约1KHZ频率的响声}
L00=1; //熄灭L00 LED灯
BEEP=1; //蜂鸣器不响
Delay(500); //将实际参数500传递给形式参数i,延时500ms 也就是0.5S
}
}
4、继电器控制实验
#include //包含单片机头文件
sbit Reley=P3^7; //定义继电器控制端P37
sbit L00=P0^0; //定义L0.0 LED灯
sbit K5=P1^4; //定义K5独立按键
sbit K6=P1^5; //定义K6独立按键void Delay(unsigned int i) //延时程序,i是形式参数,i为1
时延时约1MS
{
unsigned int j;
for(;i>0;i--) //变量i由实际参数传入一个值,因此i
不能赋初值
for(j=0;j<125;j++)
{;}
}
void main() //主函数
{
while(1) //无限循环一直执行以下程序
{
if(K5==0) //按键K5按下
{
Delay(20); //延时20MS 按键消抖
if(K5==0) //再次确认按键是否按下
{
L00=0; //点亮L00 LED灯
Reley=0; //继电器吸合
}
}
if(K6==0) //按键K6按下
{
Delay(20); //延时20MS 按键消抖
if(K6==0) //再次确认按键是否按下
{
L00=1; //熄灭L00 LED灯
Reley=1; //继电器释放
}
}
}
}
5、数码管显示实验
#include //包含52单片机寄存器定义的头文
件
void delay(void) //延时函数,延时约0.6毫秒
{
unsigned char i;
for(i=0;i<200;i++)
; //空循环起延时作用
}
void main(void)
{
P0=0xff; //初始化端口
P2=0xff; //初始化端口
while(1) //无限循环//假定数码管从左到右依次
是DS0-DS7
{
P2=0xfe; //P2.0引脚输出低电平,DS0点亮
P0=0xf9; //数字1的段码
delay();
P2=0xfd ; //P2.1引脚输出低电平,DS1点亮
P0=0xa4; //数字2的段码
delay();
P2=0xfb; //P2.2引脚输出低电平,DS2点亮
P0=0xb0; //数字3的段码
delay();
P2=0xf7; //P2.3引脚输出低电平,DS3点亮
P0=0x99; //数字4的段码
delay();
P2=0xef; //P2.4引脚输出低电平,DS4点亮
P0=0x92; //数字5的段码
delay();
P2=0xdf ; //P2.5引脚输出低电平,DS5点亮
P0=0x82; //数字6的段码
delay();
P2=0xbf; //P2.6引脚输出低电平,DS6点亮
P0=0xf8; //数字7的段码
delay();
P2=0x7f; //P2.7引脚输出低电平,DS7点亮
P0=0x80; //数字8的段码
delay();
P2=0xff;
}
}
6、独立按键实验
#include
#define uchar unsigned char
#define uint unsigned int //数据类型的宏定义
sbit K1 = P3^2; //定义独立按键K1
sbit K2 = P3^3; //定义独立按键K2
sbit K3 = P3^4; //定义独立按键K3
sbit K4 = P3^5; //定义独立按键K4
sbit K5 = P1^4; //定义独立按键K5
sbit K6 = P1^5; //定义独立按键K6
sbit K7 = P1^6; //定义独立按键K7
sbit K8 = P1^7; //定义独立按键K8
sbit BEEP = P3^6; //蜂鸣器控制端口P36
/* 延时子程序*/
void delay1(uchar x)
{ uchar j;
while((x--)!=0)
{ for(j=0;j<125;j++)
{;}
}
}
-------------------------------------------------
void delay0(uchar x) //x*0.14MS
{
unsigned char i;
while(x--)
{
for (i = 0; i<13; i++) {}
}
}
-------------------------------------------------
void delay(uint ms)
{
uchar t;
while(ms--)
{
for(t = 0; t < 120; t++);
}
}
-------------------------------------------------
void beep() //蜂鸣器响一声函数
{
unsigned char i;
for (i=0;i<100;i++)
{
delay0(4);
BEEP=!BEEP; //BEEP取反
}
BEEP=1; //关闭蜂鸣器
delay1(250); //延时
}
-------------------------------------------------
main()
{
P1 = 0xff; //初始化端口
P2 = 0x7f; //初始化端口选通数码管最右侧点亮while(1)
{
P0 = 0xbf; //显示“-”
if(K1==0)
{
delay(20);
if(K1==0){
beep(); //调用蜂鸣器响一声函数告知有按键按下P0 = 0xf9; //显示”1“
delay(1000); //延时大约1秒维持显示状态
}
}
else if(K2==0)
{
delay(20); //延时20MS 按键消抖
if(K2==0){
beep(); //调用蜂鸣器响一声函数告知有按键按下
P0 = 0xa4; //显示”2“
delay(1000); //延时大约1秒维持显示状态
}
}
else if(K3==0)
{
delay(20); //延时20MS 按键消抖
if(K3==0){
beep(); //调用蜂鸣器响一声函数告知有按键按下
P0 = 0xb0; //显示“3”
delay(1000); //延时大约1秒维持显示状态
}
}
else if(K4==0)
{
delay(20); //延时20MS 按键消抖
if(K4==0){
beep(); //调用蜂鸣器响一声函数告知有按键按下
P0 = 0x99; //显示“4”
delay(1000); //延时大约1秒维持显示状态
}
}
else if(K5==0)
{
delay(20); //延时20MS 按键消抖
if(K5==0){
beep(); //调用蜂鸣器响一声函数告知有按键按下P0 = 0x92; //显示“5”
delay(1000); //延时大约1秒维持显示状态
}
}
else if(K6==0)
{
delay(20); //延时20MS 按键消抖
if(K6==0){
beep(); //调用蜂鸣器响一声函数告知有按键按下P0 = 0x82; //显示“6”
delay(1000); //延时大约1秒维持显示状态
}
}
else if(K7==0)
{
delay(20); //延时20MS 按键消抖
if(K7==0){
beep(); //调用蜂鸣器响一声函数告知有按键按下P0 = 0xf8; //显示“7”
delay(1000); //延时大约1秒维持显示状态
}
}
else if(K8==0)
{
delay(20); //延时20MS 按键消抖
if(K8==0){
beep(); //调用蜂鸣器响一声函数告知有按键按下P0 = 0x80; //显示“8”
delay(1000); //延时大约1秒维持显示状态
}
}
}
}
本文档为【51单片机实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。