刚接触单片机的朋友,常卡在“写了代码却没反应”这一步。其实问题往往不在芯片本身,而是缺一个能跑通、看得见效果的示例程序。今天就用最常见的STC89C52和Arduino Uno,带你看两个真正能上手的单片机示例程序。
STC52:让LED闪烁起来
用Keil C51写一段最基础的延时闪烁程序,接好最小系统板和LED(阳极接P1.0,阴极经220Ω电阻接地):
#include <reg52.h>
void delay(unsigned int i) {
while(i--);
}
void main() {
while(1) {
P1 = 0xFE; // P1.0输出低电平,LED亮
delay(60000);
P1 = 0xFF; // P1.0恢复高电平,LED灭
delay(60000);
}
}编译下载后,LED会以约0.5秒间隔闪烁——这是你和单片机第一次“对话成功”的信号。
Arduino:三行搞定呼吸灯
对新手更友好的Arduino,不用算定时器、不纠结晶振频率。把LED接到引脚9,上传这段代码:
void setup() {
pinMode(9, OUTPUT);
}
void loop() {
for(int i=0; i<=255; i++) {
analogWrite(9, i);
delay(10);
}
for(int i=255; i>=0; i--) {
analogWrite(9, i);
delay(10);
}
}LED亮度会像呼吸一样渐明渐暗。背后是PWM调光,但你连寄存器都不用碰,就能直观理解“控制信号”的作用。
别光抄代码,试试改一改
把第一个程序里的delay(60000)改成delay(30000),LED闪得更快;把第二个程序中delay(10)换成delay(5),呼吸节奏就变急促了。动手改数字、观察变化,比背一百条理论都管用。
单片机不是玄学,它只是需要一个能立刻反馈的起点。这些示例程序,就是你调试工具、万用表和面包板之外,最实在的第一块敲门砖。