51单片机实验报告

时间:2022-11-24 16:40:55 作者:壹号 字数:1752字

51单片机实验报告

实验一 点亮流水灯 实验现象

Led灯交替亮,间隔大约10ms。 实验代码

#include

void Delay10ms(unsigned int c); void main() {

while(1) {

P0 = 0x00; Delay10ms(50); P0 = 0xff; Delay10ms(50); } }

void Delay10ms(unsigned int c) {

unsigned char a, b;

for (;c>0;c--) {

for (b=38;b>0;b--) {

for (a=130;a>0;a--); } } }

实验原理

While(1) 表示一直循环。

循环体内首先将P0的所有位都置于零,然后延时约50*10=500ms,接着P0位全置于1,于是LED全亮了。接着循环,直至关掉电源。延迟函数是通过多个for循环实现的。

实验2 流水灯(不运用库函数) 实验现象

起初led只有最右面的那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程

#include

#include

void Delay10ms(unsigned int c); main() {

unsigned char LED; LED = 0xfe; while (1) {

P0 = LED; Delay10ms(50); LED = LED << 1; if (P0 == 0x00) {

LED = 0xfe; } } }

void Delay10ms(unsigned int c) {

unsigned char a, b; for (;c>0;c--) {

…… 此处隐藏0字 ……

for (b=38;b>0;b--) {

for (a=130;a>0;a--); } } } 实验原理

这里运用了C语言中的位运算符,位运算符左移,初始值的二进制为1111 1110,之后左移一次变成1111 1100,当变成0000 0000时通过if语句重置1111 11110.延迟函数在第一个报告已经说出了,不再多说。 实验3

流水灯(库函数版) 实验现象

最开始还是最右边的一个不亮,然后不亮的灯转移到最右边的第二个,此时第一个恢复亮度,这样依次循环。 实验代码

#include #include

void Delay10ms(unsigned int c); void main(void) {