单片机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单
片
机
实
验
报
告
姓名:钟林春班级:0801205 学号:2012212963 任课教师:张开碧上课地点:S411
实验一流水灯实验
一、实验目的及要求
1、闪烁的LED;
2、从左到右的流水灯;
3、8只LED左右来回点亮;
4、LED模拟交通灯。
要求1:LED按设定的时间间隔闪烁
要求2:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果要求3:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果;
二、实验原理
电路图1、
电路图2、
三、源程序
要求1:
#include
#define uchar unsigned char
#define uint unsigned int
sbit LED=P1^0;
//延时
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主程序
void main()
{
while(1)
{
LED=~LED;
DelayMS(150);
}
}
要求2:
#include
#include
#define uint unsigned int
uchar led;
void delay(unsigned int i)
{
uint j;
uchar k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{ led=0x7f;//只亮第一个
delay(1000);
while(1)
{ P0=led;
delay(500);
led=_cror_(led,1); //P0逐步右移一位。
}
}
要求3:
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit led=P0^0;
uchar i;
void delay(unsigned int i)
{
uint j;
uchar k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{ P0=0xfe;
delay(1000);
while(1)
{
for(i=0;i<8;i++)
{P0=led;
delay(500);
led=_crol_(led,1); //P0逐步左移一位。
}
for(i=0;i<8;i++)
{P0=led;
delay(500);
led=_cror_(led,1); //P0逐步右移一位
}
}
}
实验二独立键盘实验
一、实验目的
1、K1-K4 按键状态显示;
2、K1-K4 控制LED移位;
3、单只数码管循环显示0~9;
4、K1-K4 控制数码管移位显示。
要求1:K1、K2按下时LED点亮,松开时熄灭,K3、K4按下并释放时LED点亮,再次按下并释放时熄灭;
要求2:按下K1时,P0口LED上移一位;
按下K2时,P0口LED下移一位;
按下K3时,P2口LED上移一位;
按下K4时,P2口LED下移一位;
要求3:主程序中的循环语句反复将0~9的段码送至P0口,使数字0~9循环显示;
要求4:按下K1时加1计数并增加显示位,
按下K2时减1计数并减少显示位,
按下K3时清零
二、实验原理
电路图1、电路图2、
电路图3、电路图4、
三、源程序
要求1:
#include
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit K1=P1^0;
sbitK2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
//延时
voidDelayMS(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
//主程序
void main()
{
P0=0xff;
P1=0xff;
while(1)
{
LED1=K1;