历史上的今天
返回首页

历史上的今天

今天是:2025年12月19日(星期五)

正在发生

2022年12月19日 | 关于51单片机学习的一些小建议

2022-12-19 来源:zhihu

相信有不少老铁对如何入门51单片机一直找不到适合自己的方法,通常是看看网上的课程,然后利用开发板进行相关实验观察现象。然后通过一步一步学习最后成功入门。但这只是能够使你能够尽快对单片机有一定的认识。如果想完完全全地学懂单片机还是要懂一些基本的,基础的知识。


比如学单片机分为两个部分:一是硬件部分,二是软件部分。无论你是做硬件方面,还是软件方面。你都需要学习这两方面,只是有所侧重而已。最好的做法就是将两部分结合起来,综合学习。就我本人而言,我是做软件方面的的,除了编写程序外还要利用基本的硬件知识结合C语言来进行更深层次的学习。举一个例子,编写程序来点亮一个LED灯。


程序如下:


#include        //头文件

void main(void)

{  

    led=P2               //P2口重新定义为led

    led=0xff;            //0xff(O)=11111111(B)初始状态将八个led全部熄灭(led为共阳)

    while(1)             //无限循环执行代码

    {

      led=0xfe;          //0xfe(O)=11111110(B)  //点亮一个灯

     }

 }   


这是一个最简单的程序,相信绝大部分人都能看懂,在Keil软件中运行编译生成hex文件后,烧录到51单片机中,就能看到led点亮的现象。


对于初学者而言,在编写这个程序之前。首先我们得了解 led 的运行机制,现在市场中常出现的led灯为发光二级管,具有二级管的一些基本性质。

led原理图

在程序写入单片机后,首先得知道这些led 是如何连接的。一般来说有两种方式:共阳或者共阴,这两种接法对程序最大区别在于 P2口的初始状态定义不同。因为 led 具有单向导电性通俗来讲想要让led发光就必须让 led 电压降的方向与外加电源电压方向一致。因此首先知道led的接法至关重要。


其次要明白程序中每步代表的意思,就以上程序而言,逐条分析:


#include

一个完整的程序,首先要进行头文件的编写也就是预编命令;这一步尤为关键,因为头文件中包含了一些变量的定义,寄存器的定义......。不过一般不需要我们来编写其中的的程序。在许多单片机开发软件中都会事先定义好;比如在Keil软件中如果要编写C51系列的单片机程序只需键入#include即可。在后续的学习开发中应该尝试去编写头文件,这对程序的模块化会有一定的帮助。


接下来分析主函数:


void main(void)

{  

    led=P2               //P2口重新定义为led

    led=0xff;            //0xff(O)=11111111(B)初始状态将八个led全部熄灭(led为共阳)

    while(1)             //无限循环执行代码

    {

      led=0xfe;          //0xfe(O)=11111110(B)  //点亮一个灯

     }

 }  

 

众所周知每一个C程序必须有一个主函数main,而且每个函数都需要定义类型,包括其中的参变量。可根据不同的需求来定义。


接下来是函数体部分:


led=P2               //P2口重新定义为led

首先是将一些 IO口进行定义,在该程序中就将P2(P2^0-P2^7)口定义为led,这样做可以使得程序更具有可读性和更好的理解性。


led=0xff;            //0xff(O)=11111111(B)初始状态将八个led全部熄灭(led为共阳)

在是将led赋初值,其中0x代表十六进制。由进制转换可知一位十六进制对应四位二进制所以化为二进制就是(11111111)代表P2^0-P2^7的状态(也就是高低电平)全为高电平,因为led为共阳,因此八个led全部熄灭。


 while(1)             //无限循环执行代码

    {

      led=0xfe;          //0xfe(O)=11111110(B)  //点亮一个灯

     }


接下来便是函数主要部分了,首先是一个while循环,while(1)代表无限循环,表示程序无限执行下去。然后就是对led再次进行操作,执行的是将led状态由11111111转化为11111110 因此P2^7所连接的led灯亮起。


以上便是对程序的解读了,希望能帮助到初学的同学,其实学习单片机是一件非常有趣的事情,只要坚持,相信终有一日能够自己设计自己所需要的功能,并在单片机上得以实现。

推荐阅读

史海拾趣

Electromagnetic Industries Llp公司的发展小趣事

EMI公司深知产品质量对企业的重要性。因此,公司建立了严格的质量管理体系,从原材料采购到生产加工再到产品检验,每一个环节都严格把关。同时,公司还引进了先进的检测设备和技术手段,确保产品质量的稳定性和可靠性。这些措施的实施使得EMI公司的产品质量得到了客户的广泛认可。

GuangDong Province MengCo Semiconductor Co., Ltd公司的发展小趣事
对于电机抖动或异响问题,应检查电机轴承、转子等部件是否损坏或松动,必要时进行更换或紧固。
Alpha (Taiwan)公司的发展小趣事

面对全球环保意识的日益增强,Alpha (Taiwan)公司积极响应号召,致力于绿色电子产品的研发和生产。公司投入大量资金研发环保材料和技术,成功推出了一系列绿色环保电子产品。这些产品不仅具有优异的性能,而且在使用过程中对环境的影响较小,符合现代社会的环保理念。此外,公司还积极参与环保公益活动,宣传环保知识,推动电子行业的绿色发展。

ENERGIZER公司的发展小趣事

近年来,随着智能设备的普及,消费者对电池的需求也日益增长。为了满足这一需求,ENERGIZER不断加大研发投入,推出了一系列高性能的电池产品。其中,高能量锂电池的研发成功,为智能设备的发展提供了强有力的支持。这款电池具有高能量密度、长寿命等优点,广泛应用于智能手机、平板电脑等高端电子设备中。同时,ENERGIZER还不断优化生产工艺,降低成本,为消费者提供更优质、更实惠的电池产品。

这些故事展示了ENERGIZER公司在电子行业发展中的创新力和市场洞察力,也体现了该公司对环保和消费者需求的关注与响应。作为全球领先的电池制造商,ENERGIZER始终保持着技术创新的步伐,为全球电子行业的发展做出了重要贡献。

Entegris公司的发展小趣事

在晶圆盒传输业务上,Entegris与台湾的家登精密之间发生了一场长达数年的专利侵权诉讼。Entegris最终获得了胜诉,家登被要求赔偿超过3,000万美元。这一胜利不仅保护了Entegris的知识产权,也进一步巩固了其在半导体材料市场的地位。

Hartmann Codier GmbH公司的发展小趣事

在半导体材料领域,对纯度的要求越来越高。Entegris通过不断的技术创新,提升材料的纯度,以满足晶圆厂对材料的高要求。同时,随着制程工艺的步骤增多,控制污染的环节也随之增加,Entegris在微尘控制方面也面临着巨大的挑战。

问答坊 | AI 解惑

600MA低压差LDO AP1735 AP6256

安崴提供低压差600MA输出电流的LDO,AP1735做到600MA/350MV, AP6256做到600MA/500MV 需要样品请联系13537795709 梁生,QQ 291426765 邮箱:LY158@TOM.COM …

查看全部问答>

以7805为例 如何测量直流稳压器的最大输出电流

图中,7805的输入1脚接12V外加电源,3脚输出5V电压,这个用万用表的电压档一测就知道了,但是它的输出电流最大是多少呢? 答案是输出电流随负载的变化而变化,可是电流不能无限小和无限大吧?所以输出电流必定有个最小值和最大值。     ...…

查看全部问答>

27倍自动聚焦的大炮筒,有没有单独的控制线?

27倍自动聚焦的大炮筒,有没有单独的控制线?…

查看全部问答>

VISTA系统下安装 Tornado2.0后,运行时总出现 gdb error,是什么原因?

  运行Tornado时,总弹出好几个错误的对话框,标题为 gdb error!   内容为:Failed to register COM Server. Error code = ox8002801c   将对话框点掉之后 Tornado 就启动起来了,运行还算正常,但每次一启动就出 ...…

查看全部问答>

用busybox做的文件系统为什么dev下没有文件啊

包括什么ttyS0,console等等,什么都没有 怎样修改才能添加呢 另外etc文件夹下也什么文件都没有,不知怎么一回事 内核是2.6的 谢谢…

查看全部问答>

MSP FET430 UIF 仿真器 支持BSL吗

大家好: 我想知道 TI 的 MSP-FET430UIF 仿真器能不能支持 两线 BSL 仿真模式? 如果可以能不能把这个方法用于 430F21X1系列的MCU 上.…

查看全部问答>

MSP430 最简单的问题,型号问题

MSP430F5438 是属于哪个系列的? 手头有一个正宗的MSP-EXP430F5438 开发板 CPU上印字 X430F5438 在TI CCE软件中,设备选项名列最后一个,即选择 XMS430F5438(这是培训手册上指导的) 看了一下随带光盘资料: 1xx Users Guide,手册封面写着 ...…

查看全部问答>

如何使单片机输出频率变大

现在我做一题目发现时钟芯片只能产生20khz如何得到38khz希望大家帮忙。。 谢谢!!…

查看全部问答>

430

430的低功耗在手持通信设备上非常实用!…

查看全部问答>

使用BBB的串口UART

Beaglebone Black上有UART1-UART5共5个可用的uart串口,UART0连到了Beaglebone Black新增的串口调试引脚上,我们最后再来说它。我们进入/lib/firmware目录中可以看到系统自带了一些与uart有关的device tree /lib/firmware/BB-UART1-00A0.dts & ...…

查看全部问答>