资源描述:
《最新51单片机实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、精品资料51单片机实验报告........................................精品资料51单片机实验报告实验一点亮流水灯实验现象Led灯交替亮,间隔大约10ms。实验代码#includevoidDelay10ms(unsignedintc);voidmain(){while(1){P0=0x00;Delay10ms(50);P0=0xff;Delay10ms(50);}}voidDelay10ms(unsignedintc){unsignedchara,b;..............
2、..........................精品资料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除最后一个都亮,接着上述过
3、程#include#includevoidDelay10ms(unsignedintc);........................................精品资料main(){unsignedcharLED;LED=0xfe;while(1){P0=LED;Delay10ms(50);LED=LED<<1;if(P0==0x00){LED=0xfe;}}}voidDelay10ms(unsignedintc){unsignedchara,b;for(;c>0;c--){for
4、(b=38;b>0;b--){........................................精品资料for(a=130;a>0;a--);}}}实验原理这里运用了C语言中的位运算符,位运算符左移,初始值的二进制为11111110,之后左移一次变成11111100,当变成00000000时通过if语句重置111111110.延迟函数在第一个报告已经说出了,不再多说。实验3流水灯(库函数版)实验现象最开始还是最右边的一个不亮,然后不亮的灯转移到最右边的第二个,此时第一个恢复亮度,这样依次循环。实验代码#include
5、#includevoidDelay10ms(unsignedintc);voidmain(void){........................................精品资料unsignedcharLED;LED=0xFE;while(1){P0=LED;Delay10ms(50);LED=_crol_(LED,1);}}voidDelay10ms(unsignedintc){unsignedchara,b;for(;c>0;c--){for(b=38;b>0;b--){fo
6、r(a=130;a>0;a--);}}}实验原理........................................精品资料利用头文件中的函数,_crol_(,),可以比位操作符更方便的进行2进制的移位操作,比位操作符优越的是,该函数空位补全时都是用那个移位移除的数据,由此比前一个例子不需要if语句重置操作。数码管实验实验现象单个数码管按顺序显示0-9和A-F。#includevoidDelay10ms(unsignedintc);unsignedcharcodeDIG_CODE[16]={0x3F,
7、0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};voidmain(void){unsignedchari=0;while(1){P0=~DIG_CODE[i];i++;if(i==16){........................................精品资料i=0;}Delay10ms(50);}}voidDelay10ms(unsignedintc)//Îó²î0us{unsignedchara,b;for(
8、;c>0;c--){for(b=38;b>0;b--){for(a=130;a>0;a--);}}}实验原理根据数码管的点亮原理,依次找到代表0-9,A-F的位码,用循环和延迟函数就可以达到要求了。实验动态数码管#include#