首页 51单片机实验

51单片机实验

举报
开通vip

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) //...

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<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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_321575
暂无简介~
格式:doc
大小:36KB
软件:Word
页数:20
分类:互联网
上传时间:2019-02-06
浏览量:38