- 开发板中电阻上数字的含义:
102=10 2=1010^2
473=47 3=4710^3 - 二极管原理图分析:RP7和RP9作为电阻起限流作用,防止VCC过高击穿LED。点亮D1的方式:VCC接高电压,P20/SDA口接低电平。在编程中,具体实现方法是:
#include <REGX52.H>
void main()
{
P2=0xFE;//1111 1110
//tips:keil程序当中要用16进制表示,不可直接使用二进制,系统会无法识别,乱码
while(1);
}
3. 控制LED来回闪烁
#include <REGX52.H>
void main()
{
while(1)
{
P2=0xFE;
P2=0xFF;
}
}
由于单片机的频率是MHz级别,因此虽然理论上程序无误,但闪烁时间间隔太短,所以人眼无法识别LED的闪烁,因此需要加入延时函数。
如下图所示,延时函数可以借助STC-ISP生成:
#include <REGX52.H>
#include <INTRINS.H>
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0xFE;
Delay1000ms();
P2=0xFF;
Delay1000ms();
}
}
- 流水灯实现:
#include <REGX52.H>
void Delay(unsigned int xms) //@11.0592MHz
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms=xms-1;
}
}
void main()
{
P2=0xFE;//1111 1110
Delay(500);
P2=0xFF;//1111 1111
Delay(500);
P2=0xFD;//1111 1101
Delay(500);
P2=0xFF;//1111 1111
Delay(500);
P2=0xFB;//1111 1011
Delay(500);
P2=0xFF;//1111 1111
Delay(500);
P2=0xF7;//1111 0111
Delay(500);
P2=0xFF;//1111 1111
Delay(500);
P2=0xEF;//1110 1111
Delay(500);
P2=0xFF;//1111 1111
Delay(500);
P2=0xDF;//1101 1111
Delay(500);
P2=0xFF;//1111 1111
Delay(500);
P2=0xBF;//1011 1111
Delay(500);
P2=0xFF;//1111 1111
Delay(500);
P2=0x7F;//0111 1111
Delay(500);
P2=0xFF;//1111 1111
Delay(500);
}