话不多说 上代码
#include//51单片机的头文件,可以用来调用P2口,寄存器 #include void Delay500ms() //这是我在stc-isp下载的延时函数 ,在我主页会有讲解 { unsigned char i, j, k; _nop_(); i = 4; j = 205; k = 187; do { do { while (--k); } while (--j); } while (--i); } void main() { while(1) { P2=0xFE;//1111 1110 Delay500ms(); P2=0xFD;//1111 1101 Delay500ms(); P2=0xFB;//1111 1011 Delay500ms(); P2=0xF7;//1111 0111 Delay500ms(); P2=0xEF;//1110 1111 Delay500ms(); P2=0xDF;//1101 1111 Delay500ms(); P2=0xBF;//1011 1111 Delay500ms(); P2=0x7F;//0111 1111 Delay500ms(); } }
这是个流水灯代码,点灯方式是通过16进制的0 1进行高低电平控制
一次可以控制8个灯 ,0就是亮,1就是灭。
而sbit取名一次只能控制一个灯
LED灯单向导电,左边是正极,右边是负极。
正极是高电平,为1 。右边VCC已经通电,我们能控制的是负极,如果右边是0,刚好是个通路,就会点亮,反之则不会亮。
在数字电路中,
高电平一般是5V,用1代替,
低电平一般是0V,用0代替,
这里的“1”指的就是高电平,“0”代表低电平,
电流从高电平流向低电平,用电器才能收到信号工作。
是绝对的,固定不变的。
还有一种sbit的写法
#include//对八个LED分别进行位定义,可以理解为C语言中的赋值,把P口对应的给一个新的名字 //sbit就是取名的 sbit LED1 = P2^0; sbit LED2 = P2^1; sbit LED3 = P2^2; sbit LED4 = P2^3; sbit LED5 = P2^4; sbit LED6 = P2^5; sbit LED7 = P2^6; sbit LED8 = P2^7; void main() { //LED为共阳极低电平LED亮 LED1 = 0; LED2 = 0; LED3 = 0; LED4 = 0; LED5 = 0; LED6 = 0; LED7 = 0; LED8 = 0; } 定义方法:sbit 位名=特殊功能寄存器^位置; sbit LED1 = P2^0; 符号"^"前面是特殊功能寄存器的名字,后面的数字定义的可寻址位在特殊功能寄存器中的位置,取值必须是0~7 p2是连接LED的IO口,p2^0到7分别对应LED1到8



