8051单片机快速入门--我的第一盏灯

发布者:光速思考最新更新时间:2023-01-05 来源: zhihu关键字:单片机  快速入门 手机看文章 扫描二维码
随时随地手机看文章

学习单片机之前呢,给大家推荐一本单片机学习的书籍《爱上单片机》,内容结构浅显易懂,实践性很强,非常容易上手,好了,废话不多说,直接上干活,带你快速入门单片机;


一、位定义原理
定义方法:sbit 位名=特殊功能寄存器^位置;
sbit LED1 = P2^0;
符号"^"前面是特殊功能寄存器的名字,后面的数字定义的可寻址位在特殊功能寄存器中的位置,取值必须是0~7
P2是连接LED的IO口,P2^0到7分别对应LED1到8


二、代码实现
#includ
//以AT8951单片机为例
//对八个LED分别进行位定义
sbit LED1 = P2^0;
sbit LED2 = P2^1;
void main()
{
//LED为共阳极低电平LED亮
LED1 = 0;
LED2 = 0;
}


三、引脚定义



8051单片机的40个引脚大致可分为4类:电源块、时钟块、控制块和I/O引脚。
⒈ 电源:
⑴ VCC :芯片电源,接+5V电源(一般情况下规定应该是5到12V);
⑵ VSS :接地端GND;
⒉ 时钟:XTAL1、XTAL2 :晶体振荡电路反相输入端和输出端。
⒊ 控制线:控制线共有4根(入门单片机时这一块暂时不用重点去看)
⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲
① ALE功能:用来锁存P0口送出的低8位地址
② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RST/VPD:复位/备用电源
① RST(Reset)功能:复位信号输入端(用于搭建复位电路)。
② VPD功能:在Vcc掉电情况下,接备用电源。
⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。
① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
以上内容单片机入门时学会使用32个I/O引脚以及时钟电路,复位电路即可,其余在单片机进阶学习过程中可以重点了解学习。
⒋ I/O接口:
拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就看一下如何给它连线。
(1)电源:这当然是必不可少的了。单片机使用的是5V电源,其中正极接40管脚,负极(地)接20管脚。通过晶体振荡器组成时钟电路。需要电子元件有一个晶振,两个30pF的电容。
(2)振蒎电路:单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18(XTAL1)、19脚(XTAL2);如下图:




(3)复位管脚:如下图所示,至于复位是何含义及为何需要复要复位,在之后的单片机功能中会有介绍。




(4)EA管脚:EA管脚接到正电源端。至此,一个单片机就接好,通上电,单片机就开始工作了。如下图点亮一个LED灯:




代码如下:
#include //调用库
sbit k1 = P3^0; //定义开关按键
sbit L1 = P1^0; //定义LED链接管脚
void main(void)
{
while(1) //循环闪烁
{
if(k1 == 0)
{
L1 = 0; //低电平有效,输入0led灯点亮
}
else
{
L1 = 1; //否则熄灭
}
}
}
如上就是我们的第一个任务,要用单片机点亮一只发光二极管LED,这个LED必须要和单片机的某个管脚相连,不然单片机就没法控制它了,我们用1.0管脚与LED相连。
按照这个图的接法,当1脚是高电平时,LED不亮,只有1脚是低电平时,LED才发亮。因此要1脚我们要能够控制,也就是说,我们要能够让1管脚按要求变为高或低电平。同时我们还通过按键控制这个led,即按键摁下,led发光,松开熄灭。
(5)仿真教程

  • 导入事先准备好的Hex文件,双击8051单片机芯片




  • 导入Hex文件,点击仿真按钮







如上图所示,开始仿真后,因为代码的编写的原因,该电路图是当开关按下led熄灭,修改方法即将if语句进行进行改动即可。


关键字:单片机  快速入门 引用地址:8051单片机快速入门--我的第一盏灯

上一篇:89C51单片机有几种低功耗方式
下一篇:单片机矩阵键盘扫描驱动程序与电路分析

推荐阅读最新更新时间:2024-11-12 17:47

单片机程序跑飞现象及解决--看门狗电路
1、程序跑飞现象 随着单片机在能源领域中的广泛应用,单片机的抗干扰问题越来越突出,煤矿井下环境一般比较恶劣,这便会为单片机控制系统带来各种干扰,以致系统不能正常工作。单片机应用系统的抗干扰性能主要取决于硬件的抗干扰设计,但软件抗干扰设计作为硬件抗干扰的完善和补充,作用也非常重要,因为大量的干扰通常并不能影响系统内硬件的运作,却常会使系统的软件无法正常运行,单片机应用的一个突出问题,便是单片机运行过程中经常出现的程序跑飞现象。 在单片机系统中,因为干扰的原因,在非预期的情况下,使得程序计数器PC 的值发生随机的变化,从而使得程序的流向指向不确定区域,这便是程序的跑飞。程序跑飞后或者会使指令的地址码和操作码发生改变,PC 把操作数当作
[单片机]
<font color='red'>单片机</font>程序跑飞现象及解决--看门狗电路
PIC18Fxx单片机IO设置注意事项
通用IO结构 注意事项: 模拟选择寄存器(ANSELx): 复位后,ANSELx位默认为模拟模式。 要将任何引脚用作数字通用或外设输入,必须通过用户软件将相应的ANSEL位初始化为0。 开漏控制寄存器(ODCONx): 使用I2C引脚时,必须设置漏极开路控制。
[单片机]
PIC18Fxx<font color='red'>单片机</font>IO设置注意事项
3步教你如何用51单片机制作秒表
和很多朋友一样,在学51单片机的过程中我们肯定会涉及到制作一个秒表,牵涉到把单片机的多个部分组合起来使用,这对于我们初学者来说可能显得有些困难,我同大家一样,百思不得其解,最后头都弄大了才把这个秒表制作出来,为了给以后的朋友们一些思路,一些参考,所以在这里我把自己制作的整个详细过程整理出来供大家参考。我调试出来是没有问题的,各方面都稳定运行,由于我水平有限,中间可能会有不对的地方,欢迎大家指正,我们一起学习,一起进步! 我将分为三个部分来介绍:1.整体思路,2.硬件电路方面,3.软件编程方面。 1、整体思路 利用51单片机制作秒表时,我介绍精确到十分位(即0.1s)的制作,并让其拥有启动,暂停,复位三个功能。 用到的单片机
[单片机]
3步教你如何用51<font color='red'>单片机</font>制作秒表
PIC单片机AD通道转换函数
由于PIC单片机有八路AD转换通道,如果每路都写一个转换函数,哪样非常麻烦并且不便于写程序,缘此我写了一段如下转换可实现八路通用的函数: uchar get_ad(uchar n) //带通道选择的AD采样函数 { uchar advalu; ADCON0=n; ADCON1=0x80; //1000 0000右对齐 delay(2); //延时等待 ADGO=1; //启动AD转换 while(ADGO); //等待AD转换结束 advalu=ADRESH; //读AD转换的值 advalu*=256; //将读回的AD值左移八位 ad
[单片机]
使用单片机PWM使能L298N驱动TT马达,麦克拉姆轮小车驱动
由于学习的需要,我们需要制作一个物料搬运小车。 经过与小伙伴的一番商讨之后,我们决定使用麦克拉姆轮和TT马达作为小车的底盘驱动。 电机驱动器我们选用的是L298N(便宜又简单。) 以下是个人写的一些代码,简单的封装几个小车前进后退,左右直走的函数。 麦克拉姆轮排列方式为X型。 单片机源程序如下: #include motor.h #include stm32f10x.h #include stm32f10x_rcc.h #include delay.h /************电机 A B C D 的使能输入PWM函数初始化部分************/ static void GENERAL_TIM_GP
[单片机]
单片机输出C#点灯神话
本篇文章友人在广东喝咖啡的时候突然想到的...最近就有想写几篇关于单片机输出的博客,所以回家到之后就奋笔疾书的写出来发表了 如同学习每一门编程语言的Hello World!一样,点灯自然成了单片机入门的HelloWorld。因为单片机上的HelloWorld实在是太难了! 在电子上只有电压电流之类的概念,而对于单片机来说,我们可以认为0代表低电压(低电平、接地),1代表高电压(高电平)。在我们学习的STM32单片机上,高电平其实就是3.3伏!今天我们要点亮的小灯,就是发光二极管,让3.3V和0V分离接在发光二极管的正负(是非)两端,就能够让其发光! 我们采取的单片机有很多针脚(ZET6是144脚,VET6是100
[单片机]
如何使用Keil UVision IDE进行8051编程
步骤1:下载Keil UVision IDE Keil为8051体系结构(C51)提供了代码受限(2K字节)评估版),足以满足学习目的。 评估版的主要限制如下。 8051编译器,汇编器,链接器和调试器的目标代码限制为2 KB 生成超过2 KB的目标代码的程序将无法编译 》 调试器支持2 KB或更小的程序 不提供对多个DPTR寄存器的硬件支持 Keil uVision IDE(评估版)可以是通过该链接下载。 单击上面的链接,您将重定向到Keil网站下载部分。 请单击 C51 图标下载8051。开发工具(上图)。 并下载Windows可执行文件。 更多信息,请点击此处。 步骤2:使用Keil Uvision创建8051/8052项
[单片机]
如何使用Keil UVision IDE进行<font color='red'>8051</font>编程
74HC595使用SPI总线连接51单片机的驱动程序
函数名称: HC595SendData //8位串行输入/输出,并行输出 功能描述: 向SPI总线发送数据 这里只说明并行输入的一般情况 管脚描述:请参考相关的芯片资料 void HC595SendData(unsigned int SendVal) { unsigned char i; for(i=0;i 8;i++) { if((SendVal i)&0x80) MOSIO=1; // set dataline high //若输入最高位为1,则令串行输入为1,反之输入0 else MOSIO=0; S_CLK=0; //上升沿输入每一位 NOP(); //datasheet给
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved