单片机实验整理.docx
- 文档编号:2922143
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:16
- 大小:16.86KB
单片机实验整理.docx
《单片机实验整理.docx》由会员分享,可在线阅读,更多相关《单片机实验整理.docx(16页珍藏版)》请在冰豆网上搜索。
单片机实验整理
一:
实验1:
P23口做输出口,接发光二极管,编写程序,使其闪烁。
(P23闪
烁)
#include"reg52.h"
sbitP23=P2^3;//定义LED指示灯的IO口
voidmain()
{
inti;//计时变量
while
(1)
{
for(i=0;i<30000;i++);//延时
P23=!
P23;//指示灯IO口反转
}
}
实验2:
P23-P26口接四只发光二极管LED1-LED4,P20口接开关K1,编写程序,用开关
控制发光二极管上的亮灭。
(开关控制四个灯亮灭)
#include"reg52.h"
sbitP23=P2^3;//定义LED指示灯的IO口
sbitP20=P2^0;//定义key的IO口
voidmain()
{
inti;//计时变量
while
(1)
{
for(i=0;i<30000;i++);//延时
if(P20==0)P23=0;//按键,LED亮
elseP23=1;//LED亮
}
}
实验3:
P23-P26口做输出口接发光二极管编写并调试程序使其闪烁。
(四个灯闪烁)
#include
voidmain()
{
inti;//计时变量
while
(1)
{
for(i=0;i<30000;i++);//延时
P3=0xff;
for(i=0;i<30000;i++);//延时
P3=0x0f;
}
}
实验4:
P23-P26口做输出口,接发光二极管,编写并调试跑马灯程序(跑马灯)
#include
#defineucharunsignedchar
uchartab[]={0xef,0xcf,0x8f,0x0f};
voiddelay()
{
uchari,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
voidmain()
{
uchari;
while
(1)
{
for(i=0;i<4;i++)
{
P3=tab[i];
delay();
}
}
}
二:
实验1:
单片机P2口的P20和P21各接一个开关K1、K2,P23、P24、P25.P26各接一只发光二极管。
由K1和K2的不同状态来确定发光二极管的点亮。
(两个开关控制四个灯亮灭)
#include
sbitk1=P2^0;
sbitk2=P2^1;
voidmain()
{
while
(1)
{
if(k1==0&k2==0)
{P2=0xf7;}
if(k1==1&k2==0)
{P2=0xef;}
if(k1==0&k2==1)
{P2=0xdf;}
if(k1==1&k2==1)
{P2=0xbf;}
}
}
实验2:
设计一个二进制加1计数器,按一次键,加1,并用4个LED显示计数结果,加至16时清零重新计数。
(加法器)
#include
sbitkey=P3^2;
unsignedchara;
unsignedcharcount=0;
voiddelay(inti)
{
while(i)
i--;
}
voidmain()
{
while
(1)
{
if(key==0)
{
delay(10);
if(key==0)
{
count++;
while(!
key);
if(count==16)
count=0;
a=count;
a=~a;
a=a<<3;
P2=a;
}
}
}
}
实验3:
设计一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。
(减法器)
#include
sbitkey=P3^2;
chara;
charcount=15;
voiddelay(inti)
{
while(i)
i--;
}
voidmain()
{
P3=0x0f;//表示15
while
(1)
{
if(key==0)//按键消抖
{
delay(10);
if(key==0)
{
count--;
while(!
key);
if(count<0)
count=15;
a=count;
a=a<<4;
a=~a;
P3=a;
}
}
}
}
实验4:
用1个按键控制LED的显示,要求显示3种以上的不同模式。
(三模式)
#include
sbitkey=P3^2;
unsignedcharcount=0;
voiddelay()
{unsignedi,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);}
voidmain()
{
key=1;
while
(1)
{
if(key==0)
{delay();
while(!
key);
count++;
if(count>3)
count=1;}
switch(count)
{
case1:
{P3=0xff;
delay();//闪烁
P3=0x0f;
delay();}
break;
case2:
{
P3=0xef;delay();P3=0xcf;delay();P3=0x8f;delay();P3=0x0f;delay();
}
break;
case3:
{
P3=0xef;delay();P3=0xdf;delay();P3=0xbf;delay();P3=0x7f;delay();
}
break;
}
}
}
三:
实验1:
采用外部中断的方式实现按键控制1个LED的亮灭(外部中断控制一个灯亮灭)
#include"reg52.h"
sbitP23=P2^3;
voidmain()
{
IT0=1;//外部中断0连沿触发方式
EX0=1;//使能外部中断0
EA=1;//开部中断
P23=0;//指示灯初始为亮
while
(1);
}
voidint0()interrupt0//外部中断0程序入口
{
P23=!
P23;
}
实验2:
采用外部中断的方式实现4个LED的轮流亮灭。
(外部中断控制四个灯轮流亮灭)
#include"reg52.h"
sbitP32=P3^2;
voidmain()
{
IT0=1;//外部中断0连沿触发方式
EX0=1;//使能外部中断0
EA=1;//开部中断
while
(1);
}
voidint0()interrupt0//外部中断0程序入口
{
staticunsignedcharBit=0;
Bit++;
if(Bit>=4)Bit=0;
switch(Bit)
{
case0:
P2=0xf7;break;
case1:
P2=0xef;break;
case2:
P2=0xdf;break;
case3:
P2=0xbf;break;
}
}
实验3:
采用外部中断的方式实现一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。
(外部中断减法器)
#include
voidmain()
{
IT0=1;//外部中断0跳沿触发方式
EX0=1;//使能外部中断0
EA=1;//开部中断
while
(1);
}
voidint0()interrupt0//外部中断0程序入口
{
staticcharcount=16;
chara;
count--;
if(count<0)count=15;
a=count;
a=a<<4;
a=~a;
P3=a;
}
实验4:
采用外部中断的方式实现用1个按键控制LED的显示,要求显示3种以上的不同模式。
(外部中断一个按键实现三模式转换)
#include
staticunsignedcharBit=0;
voiddelay()
{
inti;
for(i=0;i<=30000;i++);
}
voidmain()
{
IT0=0;//外部中断0连沿触发方式
EX0=1;//使能外部中断0
EA=1;//开部中断
while
(1)
{
switch(Bit)
{
case1:
{
P3=0x0f;delay();P3=0xff;delay();//跑马灯
}
break;
case2:
{
P3=0xef;delay();P3=0xdf;delay();P3=0xbf;delay();P3=0x7f;delay();
}
break;
case3:
{
P3=0xef;delay();P3=0xcf;delay();P3=0x8f;delay();P3=0x0f;delay();
}break;
}
}
}
voidint0()interrupt0
{
Bit++;
if(Bit>3)Bit=1;
}
四:
实验1:
采用单片机定时器实现1个LED的亮灭周期为1s。
(定时器一个灯亮灭)
#include
#defineTHC00xee
#defineTLC00x00
sbitled0=P2^3;
voidmain()
{
TMOD=0x01;
TH0=THC0;
TL0=TLC0;
TR0=1;
ET0=1;
EA=1;
while
(1);
}
voidtimer0_ISR(void)interrupt1
{
staticunsignedcharcount=0;
TL0=TLC0;
TH0=THC0;
count++;
if(count>=200)
{
count=0;
led0=!
led0;
}
}
实验2:
采用单片机定时器实现实现4个LED的轮流亮灭,每个LED点亮时间为1s。
)(定时器四个灯轮流亮灭)
#include
#defineTHC00xee
#defineTLC00x00
sbitled0=P2^3;
sbitled1=P2^4;
sbitled2=P2^5;
sbitled3=P2^6;
voidmain()
{
TMOD=0x01;
TL0=TLC0;
TH0=THC0;
TR0=1;
ET0=1;
EA=1;
while
(1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 整理