您现在的位置: 主页 > MCU > 单片机综合应用 > 开发理念大不同 | 51单片机和Arduino到底有何区别?
本文所属标签:
为本文创立个标签吧:

开发理念大不同 | 51单片机和Arduino到底有何区别?

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-07-01 

对于刚入行不久的电子爱好者们,往往分不清51开发板和Arduino开发板的区别,也对二者的选择颇感头疼,今天就带着大家从开发理念的层面来剖析二者的不同,希望阅读此文能给你带来帮助。

开发理念大不同 | 51单片机和Arduino到底有何区别?

开发理念大不同 | 51单片机和Arduino到底有何区别?

Arduino开发板和51开发板的区别,最重要的其实也就是理念的差别。开源硬件注重的是快速开发,而传统的开发板则注重精通其中的技术细节。举个例子,比如,要用DS1302和12864液晶屏来做一个简单的液晶万年历,我们来对比下51平台和Arduino平台的不同。

开发理念大不同 | 51单片机和Arduino到底有何区别?

开发理念大不同 | 51单片机和Arduino到底有何区别?

第一步

连接硬件,我们假设硬件的连接已经完成了,因为在这方面,两边没有什么区别。

开发理念大不同 | 51单片机和Arduino到底有何区别?

开发理念大不同 | 51单片机和Arduino到底有何区别?

第二步

一般都是上网先搜索相应的硬件驱动程序,51单片机系统和Arduino的差别就出来了,Arduino有一个库的概念,一般都是把库直接解压到Arduino安装目录的Libraries文件夹下就可以了,通常不需要关心库里面的代码是如何写的,只要使用就可以了。比如,DS1302的库,使用很简单,在开始的地方声明一下连接,然后创建一个对象。

但是51单片机系统就不一样,51单片机系统没有很明确的封装,网上找到的,也不是库,而是驱动代码。甚至很多时候,还是集成在一个工程里面的,如果需要使用,还得自己把它从里面剥离出来。比如,这是网上找到的51驱动程序的一部分。

开发理念大不同 | 51单片机和Arduino到底有何区别?

值得注意的是,里面出现了很多的“_nop_();”,也就是空指令,用于延迟一个时钟。很多时候,如果使用的是增强型的51单片机,其运行速度可能会比外部设备的运行速度快很多,这样就必须在驱动程序中人工加入延时。而且不同的单片机,运行速度都不一样,延时还得单独作调整。DS1302还好,延时不怕高,只怕低,也就是调试的时候尽可能加大延时就不会出问题,但是DS18B20就很“矫情”了,多了不行,少了也不行,这样程序写起来就很麻烦。这其实也就是51单片机系统写驱动时的一个特点,别的地方拿来的东西还不一定能用,得自己修改了才行。假设你用同样的方法搞定了12864的驱动,然后是主代码的实现,也就是读取时间并且显示到液晶屏上。

用Arduino的朋友,事情就很简单了,首先从DS1302获取时间:Time t = rtc.time();,然后格式化并输出:

开发理念大不同 | 51单片机和Arduino到底有何区别?

这样就完成了,但是如果是51,噩梦就又要开始了。首先,读取时间没什么问题,用驱动程序提供的函数把它写入到t变量里面:DS1302_GetTime(&t);,然后就麻烦了,如果用的是无字库的液晶屏,驱动程序是没有提供显示字符的函数的。怎么办?自己实现咯。首先得有字形,用取模软件得到了字模,也就是一堆数据。

开发理念大不同 | 51单片机和Arduino到底有何区别?

其次是显示的程序。根据液晶控制器的数据手册分析,需要两个函数,一个是打点函数,一个是显示字符的函数。假设找到的驱动程序里已经包括了打点,自己只要写显示字符的函数就可以了,结合之前取模数据,不难写出这样的一个函数:

开发理念大不同 | 51单片机和Arduino到底有何区别?

之后,还需要一个显示字符串的函数。如果了解C语言里的指针和字符串,还是比较简单的。下面是一个很简单的显示字符串的函数:

开发理念大不同 | 51单片机和Arduino到底有何区别?

别看这么点代码量,如果对GRAM结构、指针没有比较透彻的了解,一天都不一定搞得定。实现了这些之后,就可以和Arduino一样写出最终的显示代码了。

从上面这个例子,我们可以看出,两边的区别很明显了。Arduino很适合快速开发,实现自己想要的效果,而不需要掌握太多的专业知识,这也是Arduino快速流行起来的原因,不同行业的人都可以加入进来,参与基于Arduino产品的开发。但是,这并不是说单片机不好,学单片机的可以自豪地说我的基础知识掌握得很扎实,因为单片机的程序都得脚踏实地地写,在写的过程中,就对那些代码和相关的知识有了深入的理解。有了这些知识,如果给你换一套硬件,比如把12864LCD换成320240的TFT,只要有数据手册,照样可以写程序,但是Arduino如果找不到库,那就“玩脱”了,是吧?

笔者个人认为,如果以学习为目的的话,传统的单片机更值得推荐;如果是玩玩,为了完成作品,Arduino不失为一个好选择,毕竟更加方便,能够更加专注于实现自己的创意,这也是很多创客的理念。

本文为 无线电杂志微信公众平台原创文章。版权所有,欢迎个人转发至朋友圈。公众号、报刊等转载请洽:radio@radio.com.cn

…………………………………………………

无线电杂志

微信号:radiomagazine



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机综合应用 > 开发理念大不同 | 51单片机和Arduino到底有何区别?
 单片机 一个 开发

"开发理念大不同 | 51单片机和Arduino到底有何区别?"的相关文章

网站地图

围观()