很多接触机器人或单片机不久的朋友面对种类繁多的单片机常会困惑,到底它们之间有何不同?制作机器人到底用哪种单片机控制比较好?当我们选择了一种单片机后,有何捷径能迅速掌握并应用这种单片机?本文尝试用一种通俗易懂的方法解读上述问题,并设计了一种有深度的单片机控制机器人的实例,希望能起到抛砖引玉的作用。我与大家分享我使用单片机的一些经验,希望能让初学者少些迷茫,让已经入门的朋友思维开阔。
这部分内容比较初级,但很多朋友刚接触单片机时或许对下面的问题不是很清楚。
1 什么是CPU?
CPU中文名称为“中央处理器”,典型代表为英特尔8086处理器,现在的奔腾X处理器都是8086的直系后代。处理器,顾名思义,其功能是处理数据,对于中央处理器,就是在数据处理中处于核心地位的处理器,听起来似乎很复杂,但实际上核心就是一个ALU“算术逻辑单元”。这个单元由一些数字门电路组成,仅能完成括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作。CPU内部包含ALU,除此之外CPU还有时钟电路,CPU运行的基本原理是:时钟电路产生计数脉冲,这个脉冲控制着一个累加器,即每产生一个时钟脉冲,累加器加1,这个累加值以16进制数字的形式通过地址总线唯一选通程序储存器中一个储存单元(在CPU外部),这个单元将内部储存的程序命令代码通过数据总线送到ALU中,ALU根据代码不同执行不同操作,比如把某寄存器数值和某数值相加等,然后将计算结果输出到IO口或者各个总线上。
总之,CPU的工作就是把程序中的命令代码翻译成不同任务,然后执行,输出执行结果。CPU在一切数字计算机中都发挥了核心作用,即计算机都有CPU。
2 什么是个人电脑?由于CPU只有计算功能,其计算的结果需要通过显示器、音箱输出,而其工作的依据,即程序命令则依靠硬盘储存,其执行任务时动态存取的数据要保存在内存中,而人可以通过键盘控制程序命令的执行过程,把所有这些CPU的外设组合在一起就叫做“个人电脑”。
3 什么是单片机?
个人电脑功能强大,计算速度快,是较为理想的计算机。但当我们需要用一个小装置控制微波炉定时开关时,个人电脑就显得笨重和昂贵。因此人们设计出一种浓缩型电脑,大的有几平方厘米,小的比米粒还小,它们叫做“单片机”——单片微型计算机。CPU是一个芯片,单片机也是一个芯片,看起来外观差不多,它们有什么不同呢?答案是:单片机内除了集成有CPU外,还集成了程序储存器ROM(可理解为硬盘)、数据储存器RAM(可理解为内存),输入输出接口(可理解为显示器、键盘插座),有的单片机内还集成了电机驱动电路、视频解码电路、AD转换器、无线传输电路等,使得单片机功能变得非常强大。单片机的特长在于可以用单个芯片和简单外部电路去实现复杂的控制操作,因此非常适合机器人控制。其实在绝大多数机器人中都有单片机的影子。简单的和中等复杂的机器人可以用单片机直接控制,高度复杂的机器人用“个人电脑”或者“超级计算机”指挥许多单片机来完成机器人控制。
4 学习单片机的捷径是什么?
所谓捷径就是少走弯路。我刚开始学单片机时走了不少弯路,很多朋友和我都有相似的经历,刚开始接触单片机,面对琳琅满目的图书教材,不知选择哪本;想实践时不知到哪买单片机;不知如何编程下载程序……
A 对于初学者仔细看本文就是学习单片机的捷径之一。
B 到图书馆或者书店在数十本单片机书中选一本你能看懂,而且觉得案例有趣的“实在、生动、活泼”的单片机书做为你的入门读物。
C 建议先从51单片机学起。掌握51后再学AVR,然后学ARM、DSP等。
D 在学习过程中实践非常必要。你需要一台电脑。如果是台式电脑,你可以花十几元购买25针并口下载线,如果是笔记本电脑,你只能购买几十元到几百元的USB ISP编程器。
E 用万用板自己焊一个单片机最小系统,或者购买开发板。没有必要使用昂贵的仿真器。
F 你需要上网下载单片机编程软件,比如51用Keil编程,AVR用CVAVR编程,在编程软件中编好程序,然后生成HEX文件,再上网下载并口烧程序软件或者USB ISP烧程序软件,用烧程序软件加载HEX文件,然后将编程线查到你的单片机电路板上,即可把程序烧到单片机中。
G 拔下编程线,然后接通单片机板电源,你可以看到单片机系统在运行。
H 如果系统不能正常运行,首先检查电路是否接错,然后检查程序是否烧错,如果以上都没毛病,研究程序是否编错。有时系统不能正常运行并不意味着有什么地方错了,只是某些参数没设置好,你需要不断运行、修改程序、调试参数、再运行如此往复,直到你对系统运行满意为止。有时这是一个非常艰苦的重复劳动,调整数百次上千次,你无法回避,只能坚定信念,勇往直前。
I 到淘宝网上买东西更方便、更便宜。
1 模拟计算机
在数字计算机诞生前,人们用电子管、电容器和电感线圈、电阻搭建模拟计算机,能够完成许多简单的计算和控制任务。所谓模拟计算机就是其计算采用的信号不是 1、0数字信号,而是电压连续变换的模拟信号,类似于自动控制原理中的各种控制器采用的运算。别小看了模拟计算机,上世纪80年代中东战争时,阿拉伯国家使用的苏制全自动自行防空炮内采用模拟计算机实现计算飞机轨迹并控制火炮射击目标。
2 齿轮和凸轮组成的控制器
在模拟计算机诞生前,也就是蒸汽机时代,有些机械天才硬是用数百个齿轮和凸轮搭建出机械计算机,人们通过转动印有数字的各种齿轮,另一些齿轮就将运算结果显示出来。机械计算机在人类史上上曾经是高科技产品,第二次世界大战时,德国著名的密码机就是一种机电混合式计算机,它当时是最保密的通信工具。
3 发条和秒表和继电器组成的控制器
在电气时代开始时,人们用钟表内机械的旋转分时控制一些继电器的通断,从而控制一些机床和生产线的运行。这种装置类似于早期洗衣机内的定时器。
三 入门首选 AT89S51系列单片机
1 简介
1980,英特尔公司开发出一种简易的8031CPU,在当时该CPU性能不比8086差很多,但价格较便宜,因此被很多低端应用选中。由于市场看好,ATMEL公司购买了8031的内核,把Flash存储器和加强型IO口融入进去开发出了AT89系列单片机。所有兼容8031指令和内核相似的单片机统称为51单片机,它是目前应用最广泛的8位单片机之一。因51单片机结构简单,指令易学,应用广泛,因此是初学单片机首选机型。如果有人想不学51,直接学AVR,那么此人一定会遇到很多难题,困惑和郁闷将伴随着学习过程。如果学了51再学AVR和其他单片机,人们会发现“所谓单片机都不过如此”。
2 性能
根据任务具体需要选择最合适的单片机,使单片机资源充分利用,使系统性价比达到最高,同时兼顾未来扩展需要,不一味追求高性能单片机,这就是选单片机的原则。
AT89S51有4K的Flash程序存储器,128字节的RAM,32条IO口,中断系统具有6个中断源、5个终端矢量、2个中断优先级的中断结构;串行口是一个全双工的串行通信口;AT89S51的电源电压为4.0-5.5V,AT89LS51的电源电压为2.7-4.0V;振荡器频率 0-33MHz(AT89S51),0-16MHz(AT89LS51); 有ISP 在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。
AT89S52程序储存器容量为8KB,还有AT89S55,ROM容量更大。
有很多公司生产了很多扩展型51系列单片机,有的带有AD转换器,有的带有比较器,有的带有PWM,读者可以根据自身需要选择合适的51单片机,但要注意他们的管脚定义和编程方式。
3 使用方法
AT89S51 适于做单片机学习板、电子时钟、超声波测距仪等不需要采集模拟量和控制大功率外部元件的电路。S51与过去的C51的区别在于S51支持ISP在线编程,即C51需要几百元的编程器编程,而S51仅需一条25针并口线和非常简单的转换电路即可接在台式电脑打印机接口烧程序,下载烧程序小软件即实现可对 S51单片机编程。对51单片机编程一般选用Keil软件,可采用C语言或者汇编语言,编完程后选择输出HEX文件,然后用烧程序小软件读取HEX文件,再烧写到单片机中。
4 实践经验
A 刚开始看书时,按照书上的电路图连线然后通电调试,但总不成功,将自己的电路和书上的电路仔细对照发现不了问题。原因在于很多书上的电路图都是“简化图”,即省略了一些电路,而这些被省略的电路却关乎系统的运行。比如,当单片机书讲到AD转换电路,给出的电路图多省略了晶振和复位电路,按照AD转换电路图搭出来的系统自然不能运行。
B 51单片机P0口输出信号时需要上拉电阻,我经常忘记加电阻,导致电路不好使。
C 51单片机31引脚需要接正极,以选择采用内部程序存储器。如果忘记给这个引脚以正确的电压,你的单片机可能不能执行程序。
4 应用举例