历史上的今天
今天是:2026年01月05日(星期一)
2023年01月05日 | 8051单片机快速入门--我的第一盏灯
2023-01-05 来源:zhihu
学习单片机之前呢,给大家推荐一本单片机学习的书籍《爱上单片机》,内容结构浅显易懂,实践性很强,非常容易上手,好了,废话不多说,直接上干活,带你快速入门单片机; 导入事先准备好的Hex文件,双击8051单片机芯片 导入Hex文件,点击仿真按钮
一、位定义原理
定义方法: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)仿真教程


如上图所示,开始仿真后,因为代码的编写的原因,该电路图是当开关按下led熄灭,修改方法即将if语句进行进行改动即可。
上一篇:89C51单片机有几种低功耗方式
史海拾趣
|
一、普通异步电动机都是按恒频恒压设计的,不可能完全适应变频调速的要求。以下为变频器对电机的影响 1、电动机的效率和温升的问题 不论那种形式的变频器,在运行中均产生不同程度的谐波电压和电流,使电动机在非正弦电压、电流下运行。 ...… 查看全部问答> |
|
摘 要: 介绍了一种利用工具软件MATLAB强大的数学功能来增强ALTERA公司的可编程逻辑器件设计软件MAX+PLUSII的仿真功能、提高设计品质的方法,有较强的针对性。 关键词: MATLAB MAX+PLUS II FPGA 仿真   ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:06 编辑 实现 帮忙:怎么实现、 相位跟踪功能:当fREF在给定范围内变化以及加非阻性负载时,均能保证uF与uREF同相,相位偏差的绝对值≤5°。 file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip ...… 查看全部问答> |
|
问个问题,请高手帮忙,关于可编程并行接口控制器,急用,谢谢! 双机并行通信中,在甲乙两台微机之间进行并行传送1K字节数据。甲机发送,乙机接收。甲机一侧的8255A采用方式1(基本输入/输出方式)工作,乙机的一侧采用8255A方式0(选通输入/输出方式)工作。两机的CPU与接口之间都采用查询方式交换数据。 要求 ...… 查看全部问答> |
|
1 BSP下的驱动与\\PUBLIC\\COMMON\\OAK\\DRIVERS\\下的驱动有啥区别? 2 \\PUBLIC\\COMMON\\OAK\\DRIVERS\\下的驱动能修改吗?开发驱动是不是从这里面直接改?还是另外有别的方法 3 新做完的驱动必须加到BSP里面去吗? 4 做完了一个驱动,怎么样 ...… 查看全部问答> |
|
我受人之托欲寻求一位有bios设计开发经验的高手加入科研单位的研发队伍 我受人之托帮助一国家级科研单位寻找一位有bios设计开发经验的高手,该单位实力雄厚,长期从事该项目,待遇从优,不知如何能找到。我的联系方式:lzh@tjhn.com.cn MSN:hzl_1999@yahoo.com… 查看全部问答> |
|
最近需要使用一个符合Avalon接口协议的SDRAM,但是发现使用SOPC生成的SDRAM控制器里没有burst传输的相关信号,Avalon本身支持burst传输,SDRAM也支持burst传输,为什么生成的控制器里没有相关信号呢?… 查看全部问答> |
|
同一批pcb,同一批32768晶振,不起振的换N个晶振都不起振 stm32F107,焊200块pcb,有8块RTC无论如何不起振 批量整包装买的epson 6P负载电容32768晶振 不起振的无论怎么换晶振还是接地的6p电容,还是不起振。会是stm32的问题么,或者是焊接时损坏?只是其他功能都正常,唯有rtc不行。 另外昨天在挨个 ...… 查看全部问答> |
|
提示两次数据校验错误: data verification failed at address 0x40 和 data verification failed at address 0x0 cmd 文件如下: MEMORY { PAGE 0: &nbs ...… 查看全部问答> |




