51单片机怎么编程,有什么好的课程?
虽然现在stm32单片机很火,很多招聘的公司都要求必须要会stm32,但是我依然建议新手从51开始学起。
这也是当初我自学的路径,51相对简单,新手可以在短时间内学习见到效果,比如说做个流水灯,让数码管显示一些数字之类的。
学习技术过程是非常枯燥的,学着学着容易焦虑和放弃,单片机还好,至少还能控制硬件去完成一些智能的控制。
如果是纯软件更学不进去,学来学去只能在冷冰冰的屏幕面前打印字符。
作为新手,想要学习单片机,第一步先是要把环境搭建起来,哪怕是直接用别人的工程,编译烧录到硬件上看看效果都很有成就感。
这也是很多人忽略的一个过程:培养学习的兴趣。
这点非常重要,你没发现当你对一件事物有兴趣的时候,学起来又轻松又快。
一般单片机的编程语言有两种:
1.C语言 2.汇编以前我们那些学校相关专业的都是教的汇编,其实汇编我个人认为前期没必要学。
因为我工作了10年了,真正用到汇编的就是移植RTOS的时候,而且和学校那些还不一样。
每个芯片有些指令集是专用的,所以很多人在不同芯片移植实时操作系统的时候会发现还是有很多指令看不懂,这也是正常的。
这些汇编指令,只要你用到的时候去查阅就可以了。
我建议是重点学习一下c语言,这也是作为一个工程师必备的技能,针对单片机c语言入门教程我们也有录了一套,可以直接在小破站搜无际单片机编程看。
单片机编程一般是在Keil开发工具里去写代码,写完以后用Keil来编译代码,生成hex文件,把这个文件下载到单片机里面去执行。
这块的环境搭建比较简单,大家通过视频去看,然后跟着视频操作一遍就会了。
学习单片机最重要的是要有一套开发板,也就是基于单片机开发的硬件。
一般这种硬件都配套了有相应的视频,所以学习门槛还是挺低的。
51的话我建议是选择stc的51单片机,直接通过串口烧录,比较方便。
我刚接触单片机的时候选择不多,我买的是郭老师的开发板,到目前为止我都觉得比较适合新手入门。
课程也比较详细,基本上基础部分电路、单片机、c语言是一起讲的。
学完开发板的内容以后,做个小项目,基本上也算是入门了。
入门以后你的提升方法就不是开发板了,而是做项目,最好是实际工作那些产品。
拿来练练手,自己先想一下功能要怎么实现,然后再看看别人是怎么写的,他这样写有什么优势和缺点。
这就是成长的过程,开发板只能教你学会单片机外设的使用,但是教不会你做项目,实际项目对成本、体积、功耗都有一定的要求。
单片机的产品来来去去其实就是那几个接口,串口、SPI、IIC、ADC、SDIO、FSMC…..
当你做过的产品都玩过这些接口以后,单片机对你来说就只是工具而已。
更重要的还是你的c语言编程的水平和思维。
51单片机程序及调试步骤实战经验
我刚参加工作的时候,用的是stc 51单片机的,51单片机不像stm32那样可以通过st-link在keil上面在线仿真。
有时候出现bug的时候,非常难找问题,要一段一段屏蔽然后测试。
在刚开始接触开发的时候,我非常不习惯用在线仿真,大概是因为没用过。
记得有一次进了一家公司做行车记录仪,用的台产GRAIN的单片机。
那时候基本上没什么资料,就一个dada sheet和demo程序。
在开发之前,老大安排了给我一个任务,就是把这个仿真环境先给搭起来。
相当于是他们原厂没有的东西,让我去搞定,这个芯片是基于Fa626TE core的32位控制器。
网上的资料太少了,光是测试搭建这个环境花了半个多月,最后还没搭建出来。
那个时候完全是懵逼状态,摸着石头过河,不知道仿真啥原理,反正网上搜到一个我就试一个。
做这个之前基本都是在做51的东西,所以对我来说太难了,加上资料又少,就是跨级打boss。
后面我有点不耐烦,就跟老大说:这个我不用仿真了,以前不用仿真照样也能把产品做出来。
后来老大思考了一下,还是希望能想把仿真搞出来,我有点崩溃,实在想不明白为何他这么固执。
当我后面慢慢接触32位的单片机多了,开发的产品多了,我才真正体会到了仿真的好处。
毫不夸张地说,用好仿真,你的开发效率至少提高3倍,这里说的不是仿真软件。
拿stm32单片机举例,用st-link+keil在线硬件仿真,不但能监控程序怎么跑的,还能监控跑过程中变量的值的变化,指针地址的变化。
用熟了你就知道,特别是做指针的应用,实在太香了,有时候指针指来指去,你的理解可能只是在自己的理论层面上,而用仿真你可以监控到指针的指向变化。
那像51这种,不能像stm32那样用st-link在线仿真怎么办?(现在51好像也有了,具体没用过)
大家别小看51单片机,有些51内核的ROM都有几十K,最终产品程序的大小并不会比stm32的小。
这种如果没仿真,那出现一个BUG,够你调半天了。
在过去的开发中,我也总结了一些经验,大家可以借鉴下。
我一般是借助产品硬件上一切能作为提示的东西,比如说:
1.数码管
2.LCD
3.LED灯
4.串口
我在开发程序的时候,第一个做的肯定是点亮一个LED灯。
点亮LED能够最快地让你验证硬件核心部分(单片机最小系统)有没有问题,
点亮以后,我再开一个定时器它每秒闪烁1次,直到产品大多数功能完成。
这样做的好处就是可以验证你程序有没有跑着跑着死机之类的问题,如果有,那就及时解决,不然后面程序大了找起来会更难。
如果有数码管和LCD,调试起来会更加得心应手,直接在数码管和LCD上显示要调试的数据即可,虽然没仿真这么方便,但是总比都没有好。
还有就是串口,一般硬件在第一次打板的时候,我都会把串口预留出来,方便调试,特别是做物联网产品,串口调试可以说是必备的。
主要作用就是用来监控MCU和WiFi模组之间的通讯数据。
最后,还有一种情况就是产品啥都没有,连LED都没有,这种情况该怎么办?
这种情况就只能听天由命了,完全靠你的开发经验。
一般第一板硬件设计成这样的,都是初级水平工程师,经验不足。
即便你产品用不到那些资源,好歹把串口或者LED预留出来,把整体功能调试完以后最终一板把它去掉不就行了?
相关问答
51单片机 编程 程序 怎么编?51单片机编程程序怎么编?♣这种技术性问题在今日头条上,几乎没有一个高手给你一个答复。因为学习51单片机编程程序是需要长篇大论,并且用电脑操作截图来说明...
51单片机 如何创建 程序 ?目前,较为常见的51单片机创建程序工具是WAVE6000和keiI4,其中最主要的是keil4,其创建步骤如下:第一步,在工具界面中点击file→新建TXT文本。第二步,将新...
用keil 编写51单片机程序 步骤?编写51单片机程序步骤一般包括以下几个步骤:1.确定程序的需求和功能,对程序进行整体设计。2.编写程序代码,采用C语言或汇编语言进行编程。3.使用keil集...
51单片机 的 程序 是怎么制的?51单片机程序是通过编写汇编语言或C语言代码来实现的。首先,需要了解51单片机的指令集和寄存器,以及外设的操作方式。然后,根据设计需求,编写相应的程序代码...
51单片机 怎么写代码?学习单片机很重要的一步就是为单片机烧写程序代码,烧写程序是初学者体验单片机并快速入门的第一步,51单片机由于比较简单,并且为了节省学习成本,一般很少使用...
51单片机 如何建立步骤?目前进行STC89C51/52、AT89S51/521、双击启动keil软件2、启动新建工程3、给新建工程命名和保存4、选择单片机型号,我们以STC89C52为例,依次选择“Atmel”-.....
51单片机程序 清单怎么写?51单片机程序清单主要包括以下几个部分:头文件:包含单片机的一些寄存器定义和函数声明。宏定义:定义一些常量或者宏函数,方便程序的编写。全局变量:定义程序...
51单片机 ,stm32,arduino都是用什么语言进行编程的?51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程。51单片机的编程51单片机进入中国比较早,在...51...
51 八位 单片机 开发板怎么做?1.通过购买相应的材料和器件,以及编程软件,可以制作出51八位单片机开发板。2.首先,需要准备好51单片机芯片、电路板、电阻、电容、晶振等器件,以及USB转串...
51单片机编写 一个10s的延时 程序 ,晶振频率为6MHZ?6M晶振,一个机器周期2us方式0最多计数65536也就是13072.us无法满足10s因此可以用定时器计数50000也就是0.1s计10个这样的数就能满足要求,也就是一开始给...