51单片机教程 第一个51程序 :点亮一个发光二极管

化作尘百度网盘下载中心:https://pan.baidu.com/s/1eLnnSXwbFi8o0RESJYFPSQ
提取码:uxir
在这里插入图片描述
取走点赞哦~

keil+proteus

第一个51程序 :让一个发光二极管闪烁

这是一篇超级详细的C51教程。

单片机就是一个小型CPU,在电子领域应用广泛,电视、冰箱、洗衣机、空调等产品中都能见到他们的身影。它是一个可编程的mcu,根据代码的不同可实现非常多功能

首先介绍两个软件
1、keil uvision4:这是一个单片机开发软件,用于调试,生成可执行文件HEX文件
2、proteus7.8:电路仿真软件

一、首先,到网上下载一个keil uVision4开发环境(用来编写C语言程序)或者下载我的软件,keil下载链接://download.csdn.net/download/mbs520/12191016

二、下载好之后百度keil4的安装教程,开始按百度步骤安装

keil
一定要严格按照百度教程安装

安装成功后打开软件,看到如下界面:

keil4

三、安装软件:Proteus 7.8

这是一个电路仿真软件,非常实用,用来绘制原理图和仿真

Proteus 7.8 下载链接://download.csdn.net/download/mbs520/12116854
下载好后安装,安装好打开软件:
proteus

四、下面开始用Proteus建立硬件环境

把led接在P1.0上,因为我们是初学者,晶振与电源可以先省略,电路一样可以工作。

点击P:
在这里插入图片描述
然后搜索需要的元器件:AT89C51、RES、LED
在这里插入图片描述
找到之后双击添加:左边元件栏里可以看到添加的元件
在这里插入图片描述
继续添加:
在这里插入图片描述
添加完成后开始布置元器件:
在这里插入图片描述
接地符号在这里:
在这里插入图片描述
元件布置完后开始接线:点击两个点就可以连接起来
在这里插入图片描述
连接完成。。。点击保存。

五、上面两个软件都安装成功后开始我们的第一个工程的建立,参考以下代码 ,代码作用: 让一个led闪烁

#include<regx51.h>

void delayms(unsigned int t)//延时函数
{
	
	int a,b;
	for(a=0; a<t; a++)
		for(b=0; b<120; b++);
}

void main(void)
{
	
	P1_0 = 0;       //让P1.0口输出0
    delayms(500);   //延时500ms
	P1_0 = 1;       //让P1.0口输出1
	delayms(500);   //延时500ms

}

下面开始建立工程,打开keil,点击新建工程
在这里插入图片描述
文件名改为“第一个51程序”,点击保存
在这里插入图片描述
找到ATMEL公司的AT89S51
在这里插入图片描述
点击OK,然后新建一个文本文件
在这里插入图片描述
点击保存,文件名后缀为.c,生成一个c文件在这里插入图片描述
写下代码
在这里插入图片描述
添加C语言文件到工程:把刚刚写的c文件添加到工程
在这里插入图片描述
发现左边工程文件多了个.c文件在这里插入图片描述
点击魔法棒:在这里插入图片描述
勾选生成.hex文件
在这里插入图片描述
然后点击编译生成:在这里插入图片描述
编译报告0错误0警告:说明已经生成了.hex文件
在这里插入图片描述

六、打开仿真软件

双击单片机,弹出对话框,点击选择文件夹,找到刚生成的hex文件

在这里插入图片描述

把hex文件导入单片机,运行仿真软件,可以看到led在闪烁,每隔1秒钟闪烁一次,如图:

在这里插入图片描述

*代码解读

1、

#include<regx51.h>
包含头文件<regx51.h>,为什么要包含头文件?因为要编写的是51程序,最终代码是要在51单片机里运行,所以要包含一个51头文件,这个文件包含了51所有寄存器的一些定义,怎么查看它呢,编译的时候会出现在你的工程文件中,在keil4的左边工程文件就可以查看了
在这里插入图片描述

2、

void delayms(unsigned int t)//延时函数
{

int a,b;
for(a=0; a<t; a++)
	for(b=0; b<120; b++);

}
延时函数就是让CPU反复执行一条空指令来消耗时间,这段时间CPU仍然在工作,各寄存器的值保持不变。

3、

void main(void)
这是主函数,程序从这里开始执行

4、

P1_0 = 0;       //让P1.0口输出0
delayms(500);   //延时500ms
P1_0 = 1;       //让P1.0口输出1
delayms(500);   //延时500ms

P1_0是什么?P1_0是在reg51.h头文件定义的,没有头文件写P1_0编译是通不过的。P1_0的本质是一个位寄存器,存储了1bit数据,可以存储0或1,P1_0的值决定了P1_0引脚上输出的电平
P1_0 = 0;就是让P1_0输出0V
delayms(500);寄存器的值不变,P1_0持续500ms低电平
P1_0 = 1; 就是让P1_0输出5V(实际达不到5V),
delayms(500);寄存器的值不变,P1_0持续500ms高电平,循环执行,led就会以1HZ的频率闪烁了
另外,51单片机不用循环语句while,也会循环执行main函数中的内容

代码资料链接://download.csdn.net/download/mbs520/12117125

百度网盘链接:https://pan.baidu.com/s/18cVVHyE6O1AzvUvZMsApZA
提取码:22pi

或者编辑 “所需要的资源名字如:‘点亮一个发光二极管’”->邮箱:2809786963@qq.com
我就会把资料给你发过来,求支持求点赞啊。

(有问题欢迎留言,第一次发帖,不到之处希望各位大神指点)
(也可以私信我问题,看到否可以为为大家耐心解答,很高兴跟大家交流技术问题。范围:电路设计 电路仿真 PCB设计 51单片机 msp430 arduino stm32 luinx)

下一篇:C51教程 第二个51程序: 跑马灯 流水灯

  • 32
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
好的,我会用Markdown语言生成一张电路图来分析单片机I/O口输出驱动三极管及光耦合隔离器的结构原理。以下是生成的电路图: ``` +5V R1 | | +-----|-----+ | | | I/O Q1 R2, R3 | | | +-----|-----+ | | | | LED1 R4 | | | +-----|-----+ | | | | PHOTO1 R5 | | | +-----|-----+ | | | | R6 GND | | +-----+ | GND ``` 上面的电路图展示了单片机I/O口输出驱动三极管及光耦合隔离器的结构原理。电路中的元器件包括: - I/O口:单片机的I/O口输出信号。 - Q1:三极管,用于放大电流驱动外部电路。 - LED1:发光二极管,外部电路的输出装置之一。 - PHOTO1:光敏三极管,用于接收发光二极管发出的光线。 - R1:限流电阻,用于限制电流,保护单片机。 - R2、R3:三极管的基极电阻,用于控制三极管的放大倍数。 - R4:发光二极管的限流电阻,用于限制电流,保护发光二极管。 - R5:光敏三极管的负载电阻,用于接收发光二极管发出的光线。 - R6:单片机的I/O口输出的接地电阻。 电路的工作原理如下: 当单片机的I/O口输出信号为高电平时,Q1的基极电压会变高,导通电流从而进行放大。放大后的电流流经LED1和R4,使LED1发出光线。由于光线是单向的,因此无法直接传输电信号,需要通过光耦合隔离器进行隔离。 当LED1发出的光线照射到光敏三极管PHOTO1上时,会激发光敏三极管内部的电子,从而改变其电导。R5接在光敏三极管的集电极上,用于接收光敏三极管的输出信号,并将信号传回单片机,从而完成单片机的输入操作。 R1和R6用于限制电流,保护单片机和外部电路。R2和R3用于控制三极管的放大倍数,从而达到控制输出电流的目的。 希望这张电路图能够帮助您更好地理解单片机I/O口输出驱动三极管及光耦合隔离器的结构原理。如果您有其他问题,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

化作尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值