51单片机C语言教程例2.2.1编写程序,点亮第一个发光二极管(part2_1.cP27)#include//52系列单片机头文件sbitled1=P1^0;//声明单片机P1口的第一位voidmain()//主函数{led1=0;/*点亮第一个发光二极管*/}例2.2.2编写程序,点亮P1口的若干二极管(part2_2.cP39)#include//52系列单片机头文件voidmain()//主函数{P1=0xaa;//while(1);}例2.5.1利用for语句延时特性,编写第一个发光二极管以间隔1S亮灭闪动的程序(part2_3.cP42)#include//52系列单片机头文件#defineuintunsignedint//宏定义sbitled1=P1^0;//声明单片机P1口的第一位2025-1-181uinti,j;voidmain()//主函数{while(1)//大循环{led1=0;/*点亮第一个发光二极管*/for(i=1;i>0;i--)//延时for(j=110;j>0;j--);led1=1;/*关闭第一个发光二极管*/for(i=1000;i>0;i--)//延时for(j=110;j>0;j--);}}例2.6.1编写程序使第一个发光二极管以间隔500ms亮灭闪动。(part2_4.cP48)#include//52系列单片机头文件#defineuintunsignedint//宏定义sbitled1=P1^0;//声明单片机P1口的第一位voiddelay1s();//声明子函数2025-1-182voidmain()//主函数{while(1)//大循环{led1=0;/*点亮第一个发光二极管*/delay1s();//调用延时子函数led1=1;/*关闭第一个发光二极管*/delay1s();//调用延时子函数}}voiddelay1s()//子函数体{uinti,j;for(i=500;i>0;i--)for(j=110;j>0;j--);}例2.7.1编写程序使第一个二极管以亮200ms、灭800ms的方式闪动。(part2_5.cP49)#include//52系列单片机头文件#defineuintunsignedint//宏定义sbitled1=P1^0;//声明单片机P1口的第一位2025-1-183voiddelayms(uint);//声明子函数voidmain()//主函数{while(1)//大循环{led1=0;/*点亮第一个发光二极管*/delayms(200);//延时200毫秒led1=1;/*关闭第一个发光二极管*/delayms(800);//延时800毫秒}}voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒for(j=110;j>0;j--);}例2.8.3利用C51自带库_crol_(),以间隔500ms,实现流水灯程序(part2_6.cP53)#include//52系列单片机头文件#include#defineuintunsignedint//宏定义2025-1-184#defineucharunsignedcharvoiddelayms(uint);//声明子函数ucharaa;voidmain()//主函数{aa=0xfe;//赋初值11111110while(1)//大循环{P1=aa;delayms(500);//延时500毫秒aa=_crol_(aa,1);//将aa循环左移1位后再赋给aa}}voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒for(j=110;j>0;j--);}2025-1-185例3.2.1编写程序使第一个数码管显示8(part2.1_.1cP59)#include//52系列单片机头文件sbitdula=P2^6;//申明U1锁存器的锁存端sbitwela=P2^7;//申明U2锁存器的锁存端voidmain(){wela=1;//打开U2锁存器P0=0xFE;//送入位选信号wela=0;//关闭U2锁存器dula=1;//打开U1锁存器P0=0x7F;//送入段选信号dula=0;//关闭U2锁存器while(1);//程序停止到这里}例3.2.2让实验板上6个数码管同时点亮,依次显示0到F,时间间隔为0.5ms,循环下去。(part2.1_2.cP61)#include//52系列单片机头文件#defineucharunsignedchar#defineuintunsignedint2025-1-186sbitdula=P2^6;//申明U1锁存器的锁存端sbitwela=P2^7;//申明U2锁存器的锁存端ucharnum;uncharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelayms(uint);voidmain(){wela=1;//打开U2锁存端P0=0xco;//送入位选信号wela=0;//关闭U2锁存端while(1){for(num=0;num<16;num++)//16个数循环显示{dula=1;//打开U1锁存端P0=table[num];//送入段选信号dula=0;//关闭U1锁存端delay(500);//延时0.5秒2025-1-187}}}voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒for(j=110;j>0;j--);}例3.3.1第一个数码管显示1,时间为0.5s,然后关闭它,立即让第二个数码管显示2,时间为0.5s,在关闭它……一直到最后一个数码管显示6,时间同样为0.5s,关闭它之后再回来显示第一个数码管,一直循环下去。(part2.1_3.cP62)例3.5.2用定时器...