历史上的今天
今天是:2025年04月02日(星期三)
2020年04月02日 | 51单片机:点亮一个LED并闪烁(仿真+代码)
2020-04-02 来源:eefocus
点亮一个LED,这是单片机的一个最简单的入门实验。能让你初步了解到单片机的作用。(因为简单就只在仿真软件上给大家看一下)
先给大家看一下仿真软件的电路(软件为Proteus)

左侧为时钟电路和复位电路,右侧便是我们的实验电路。
实验电路:一个LED灯+100电阻
(因为LED电压电流很小,所以必须加一个电阻限流一下,在现实试验中我们也得加个电阻,不要太大也不能太小,不然起不到作用)
右击晶振点击属性改12KHz,LED段的电阻同样点开属性改为100,其余的话数值可以不用改动。
单片机下载程序,只要右击单片机进入属性找到程序文件夹中的后缀名为.hex,确定就好。

上图是在仿真软件中需要用到的元件,点击元件模式——再点P标志——搜索(框中的元件名),
AT89C51RC2:单片机
BUTTON:按键
CAP:电容
CRYSTAL:晶振
LED-GERRN:LED灯(绿色)
RES:电阻

上图是电源的选择,点击终端模式——框中的POWER和GROUND分别为VCC和GND,也就是5V电源和地线。
接下来是程序部分(软件为keil)
#include"reg51.h" //定义头文件
sbit led=P2^0; //定义引脚
void delay(unsigned char i) //延时函数 i=1时 延时10us
{
while(i--);
}
void main() //main代表主函数,程序执行的部分
{
led=0;
while(1) //代表这循环
{
led=~led; //~表示之前的值取反,即0变1 1变0
delay(100); //延时,使得led灯闪烁
}
}
首先定义一下引脚,在仿真软件中我们LED连接着单片机的P2^0,且LED的负极连接着单片机,因此引脚必须输出低电平,才能点亮LED 。在主函数中,先使led=0,此时灯亮,进入while循环,led取反,led=1,灯不亮,delay延时1ms,再对led取反,由此反复,我们就看到了led闪烁的情况。
(PS:软件在编写完成后必须在设置中设置震荡为12KHz,在.hex那个打上勾后才能输出我们要的文件格式)
上一篇:51单片机之点亮第一个LED
史海拾趣
|
满足如下条件: 1. WinCE5.0(C++) 2. 从文件读取一个RGB24bit的bitmap 3. 读取的数据转化为RGB16bit,即:RGB565的bitmap 4. 将数据加载到屏幕(或者DDraw的后台缓存中) Thanks in advanced!… 查看全部问答> |
|
Get_Device_Descriptor、Get_Device_Configuration、Set_Configuration由谁首先下发的?设备枚举时的描述符首先存放在哪里?… 查看全部问答> |
|
从一开始接触单片机就萌发了这个想法,刚开始想做一个太阳能热水器的温度水位的无线采集装置的,动机很简单,原来的控制器只有一个,我们家农村的房子有5个卫生间和一个厨房都需要知道现在热水器的温度和水位是多少了,所以在实际应用中添加了这些 ...… 查看全部问答> |
|
请问,各位大牛,我现在买了TI的simpliciTI协议下的开发套件,但是现在想换成zigbee协议进行开发,因此想自己画两个Smart RF05 BB的板子,但是在TI的官网上并没有找到其外围电路图,请问哪位有资源分享下一啊,不甚感激!!!… 查看全部问答> |
|
工作原理:单片机控制DC9V电机工作,电机通过减速箱后带动一个机械机构转动,挤压洗手液流出,每旋转一圈挤压一次洗手液,限位开关给系统输入一个信号,LED显示挤压洗手液的次数。SW4为电路板安装盒子前盖开关,当前盖闭合时,红灯亮2秒,红外光控 ...… 查看全部问答> |




