典中典之发光二极管,我从小学到大
长脚是正级,断脚是负极 里面大块的是负级,小块的是正极
电阻标注:
- 若标注102 -> 代表着为1K电阻(10^2)
- 若标注473 -> 代表着为47K电阻(47 * 10^3)
以此类推 其他器件标注也为类似模式
RP7 RP9模块为限流电阻
此单片机使用TTL规范(高电平5V 低电平0V)
要让上图LED亮,则引脚端要为低电平
单片机通过CPU访问寄存器,寄存器通过驱动器控制引脚,进而控制LED
单片机控制电路实则就是玩弄寄存器
C语言位运算
1. 点亮一个LED
- #include <REGX52.H>
- void main()
- {
- //P2 = 0xFE; // 1111 1110
- P2 = 0x55; // 0101 0101
- // 对变量进行赋值时使用16进制
-
- // 相当于终止对引脚的操作
- while(1)
- {
-
- }
- }
复制代码 其中0x代表16进制
2. 使LED闪烁
- #include <REGX52.H>
- #include <INTRINS.H>
- // 使程序休眠500ms
- void Delay500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- _nop_();
- i = 4;
- j = 129;
- k = 119;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void main()
- {
- while(1)
- {
- P2 = 0xFE;
- Delay500ms();
- P2 = 0XFF;
- Delay500ms();
- }
- }
复制代码 3. 流水灯设计
- #include #include void Delay500ms() //@11.0592MHz{ unsigned char i, j, k; _nop_(); i = 4; j = 129; k = 119; do { do { while (--k); } while (--j); } while (--i);}void main(){ unsigned char i = 0x01; // 初始化为0x01,即二进制的0000 0001,表示第一个LED先点亮 while(1) { P2 = ~i; // 将i的值输出到P2端口,控制LED灯的状态 Delay500ms(); // 延时500ms i 代表着为[b]1K[/b]电阻(10^2)若标注[b]473[/b] -> 代表着为[b]47K[/b]电阻(47 * 10^3)
- 以此类推 其他器件标注也为类似模式</ul>![[Pasted image 20250114171745.png]]
- RP7 RP9模块为限流电阻
- 此单片机使用TTL规范(高电平5V 低电平0V)
- 要让上图LED亮,则引脚端要为低电平
- 单片机通过CPU访问寄存器,寄存器通过驱动器控制引脚,进而控制LED
- 单片机控制电路实则就是玩弄寄存器
- [size=4]C语言位运算[/size]
- ![[Pasted image 20250115111820.png]]
- [size=4]1. 点亮一个LED[/size]
- [code]#include <REGX52.H>
- void main()
- {
- //P2 = 0xFE; // 1111 1110
- P2 = 0x55; // 0101 0101
- // 对变量进行赋值时使用16进制
-
- // 相当于终止对引脚的操作
- while(1)
- {
-
- }
- }
复制代码 其中0x代表16进制
2. 使LED闪烁
- #include <REGX52.H>
- #include <INTRINS.H>
- // 使程序休眠500ms
- void Delay500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- _nop_();
- i = 4;
- j = 129;
- k = 119;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void main()
- {
- while(1)
- {
- P2 = 0xFE;
- Delay500ms();
- P2 = 0XFF;
- Delay500ms();
- }
- }
复制代码 3. 流水灯设计
[code]#include #include void Delay500ms() //@11.0592MHz{ unsigned char i, j, k; _nop_(); i = 4; j = 129; k = 119; do { do { while (--k); } while (--j); } while (--i);}void main(){ unsigned char i = 0x01; // 初始化为0x01,即二进制的0000 0001,表示第一个LED先点亮 while(1) { P2 = ~i; // 将i的值输出到P2端口,控制LED灯的状态 Delay500ms(); // 延时500ms i |