第一次点亮单片机的LED灯

创建Keil工程,选择AT89c51芯片,添加STARTUP.A51,导入main.c代码文件。编写简单LED控制代码,用stc-isp软件选择STC89C52RC模型,加载hex文件进行单片机编程下载。

基于上官一号的板子

创建项目

  1. 创建项目工程文件夹
  2. 在文件夹中创建main.c文件
  3. 进入keil主页面,工具栏->new uVision project ->选择第一步的工程文件夹位置->输入工程名字->选择芯片类型 AT89c51 ->提示是否拷贝STARTUP.A51,选择是->生成工程目录->在工程目录上右键鼠标->add Exiting file to Source Group1…->双击代码文件main.c
  4. 编译
#include "reg52.h"
sbit led1 = P3^7;
sbit led2 = P3^6;
void main(){
	led1 = 0;
	led2 = 0;
	while(1);
}

烧写到单片机

  1. 打开stc-isp软件
  2. 选择对应单片机型号,我的为STC89C52RC/LE52RC
  3. 点击打开程序文件按钮,选择对应的 xxx.hex文件
  4. 确认该文件已经保存编译后,点击下载/编程
  5. 断电->上电即可
C51单片机控制LED顺序点亮通常涉及到定时器和数码管阵列的概念。你可以通过以下几个步骤实现: 1. **硬件连接**:将LED接到单片机的IO口,例如P0、P1等。如果有多颗LED需要依次点亮,可以考虑使用共阳极接法或多路I/O驱动器。 2. **软件配置**: - 定义定时器,设置定时器工作模式并预设定时值,比如用T0定时器来作为信号源。 - 初始化定时器,并开始计数。 - 使用中断服务程序(ISR),当定时器溢出时,会触发中断,这时可以轮询当前LED的状态,点亮下一个LED。 3. **顺序点亮**: - 初始状态所有LED关闭。 - 设置第一个LED高电平亮起(如P0.0=1)。 - 当定时器中断时,检查当前LED是否已经到达最后一个,如果是,则恢复初始状态,关闭所有LED;如果不是,将当前LED置低(如P0.0=0),然后点亮下一个LED(如P0.1=1)。 4. **循环处理**:重复上述过程,形成一个LED点亮再熄灭,然后到下一颗LED的循环,直到所有LED点亮过一次。 ```c #include <reg52.h> sbit LED0=P0^0; //假设P0.0为LED1,其他LED类似 void timer0_isr(void) interrupt 1 { if(!LED0) { //判断是否为最后一个LED LED0 = 1; //点亮下一个LED //这里还可以调整延时以便更好地观察效果 __delay_ms(50); LED0 = 0; } } int main() { TMOD = 0x01; //设置TMOD为模式1,8位自动重装定时器 TH0 = 0xFD; //预设定时初值 TL0 = 0xFD; ET0 = 1; //启动外部中断 EA = 1; //打开总中断 TR0 = 1; //启动定时器0 while(1); //无限循环等待中断 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值