51单片机实验报告
51单片机实验报告实验一点亮流水灯实验现象Led灯交替亮间隔大约10ms。
实验代码include〈reg51、hvoidDelay10msu
sig
edi
tc;voidmai
(
)1(elihwP00x00Delay10ms(50;;ffx00P05sm01yaleDvoidDelay10ms(u
signedi
tcu
sig
edchara,bfor(;c0c{b0〉b83broffora130;a〉0;a-)}}实验原理WWhiile(1表示一直循环。循环体内首先将P0得所有位都置于零,然后延时约55010500ms,接着0P0位全置于11,于就是DLED全亮了。接着循环,直至关掉电源延迟函数就是通过多个forr循环实现得。实验2流水灯(不运用库函数)实验现象起初led只有最右面得那一个不亮半秒之后从右数第二个led也不亮了直到最后一个也熄灭然后led除最后一个都亮接着上述过程i
cludea031=a(rof
1
f实验原理这里运用了C语言中得位运算符位运算符左移初始值得二进制为11111110之后左移一次变成111111000,当变成000000000时通过fif语句重置1111111110、延迟函数在第一个报告已经说出了,不再多说实验3流水灯库函数版实验现象最开始还就是最右边得一个不亮然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度这样依次循环实验代码i
clude〈reg51、h#include〈i
tri
s、h〉voidDelay10msu
sig
edi
tc);voidmai
(void{u
sig
edcharLEDEFx0=DEL)1(elihwP0LED;;)05(sm01yaleD;)1,DEL_lorc_DELvoidDelay10msu
sig
edi
tcu
sig
edcharab;for;c〉0c)forb38;b〉0;b);a0〉a;031=arof}}实验原理利用头文件中得函数,_crol_,,可以比位操作符更方便得进行22进制得移位操作比位操作符优越得就是,该函数空位补全时都就是用那个移位移除得数据由此比前一个例子不需要fif语句重置操作数码管实验
2
f实验现象单个数码管按顺序显示09与AF。i
clude0cforb=38b〉0b--a0〉a031arof}}实验原理根据数码管得点亮原理,依次找到代表00-9AFF得位码,用循环与延迟函数就可以达到要求了。实验动态数码管i
clude〈reg51、h>#defi
eGPIO_DIGP0defi
eGPIO_PLACEP1u
sig
edcharcodeDIG_PLACE[8]{0xfe0xfd0r