火狐狸服装加盟官网:手把手教你单片机快速入门

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 18:00:00
手把手教你单片机快速入门 站长原创,如需引用请注明出处

    笔者在2004--2009年期间撰写了大量的单片机学习文章,给读者朋友带来了很大的帮助,在此也让笔者感觉非常高兴,同时,我们也收到了大量读者朋友们的来信及反馈建议,为此,笔者写下“手把手教你单片机快速入门”一文,配合文中所讲的单片机学习、开发设备,提供给学习者一个理论与实践相结合的平台,使广大单片机初学者朋友能够以最快的速度入门,文中写讲述一些单片机常用的开发设备,我们应该如何去使用、操作它们,目前市场上各类单片机开发学习器材有很多,在此,我们挑选了一种最经济的实惠的组合介绍给大家,能大家在最短的时间内能尽快上手。

    首先,我们先来看一看,在下面的学习过程中将要用到的硬件设备有哪些,它们分别是:A51编程器,微型51仿真器和增强型51实验板,实物如图所示,你只需要有一台电脑就可以进行学习和开发了。三板在手,可谓是资源足矣,学习起来够你用的了。至于一些难度较高的应用我们在此先不作介绍,说多了,反而会使问题复杂化。



    A51编程器:用来将我们在PC机上编好的程序烧写至单片机芯片中去,以完成程序的固化工作,市面常见的芯片型号都支持,如AT89C2051、AT89C4051、AT89C51、AT89S51、AT89C52、AT89S52、AT89C55等,相对于市场上出售的编程器其价格已经非常低廉了。



    微型51仿真器:用来提高我们的软件开发效率,实现芯片的在线仿真,一听到仿真器大家都会想到一个贵字,但我们提供的仿真器相信大部分朋友都可以承受,所以推荐给大家。以下文中我们用来仿真AT89C51型号的单片机,事实上51内核的单片机芯片,我们都可以用该仿真器来仿真,在Keil软件中选择好CPU即可。



    增强型51实验板(即仿真器的目标板):方便我们完成各种单片机实验,如流水灯,数码管显示,继电器控制,发声实验,IIC总线通信等等,应该说足够学习使用的了。

    以下我们将与这些单片机开发设备相结合来讲述具体的实践学习过程。

    我们的第一个实验是要用单片机点亮实验板上的第一只LED发光管。想用单片机来完成一些智能化的控制,这个是最简单的一个程序例子,以给大家一个感性的认识。

    我们的实验板上共有8个LED发光二极管,分别与单片机的P1.0脚——P1.7脚相连。现在我们就来点亮第一个发光管,即与P1.0脚相连的那个发光管。首先,我们将仿真器插上串口线,把串口线的另一头插至计算机的COM口上,并把仿真器插在51实验板上,至此硬件设备连接已OK。如图所示:

    接下来,我们得安装仿真器软件——Keil,用户可以在配带的软件光盘“仿真软件KEIL”目录下找到,运行Setup.exe文件进行安装,无需特别的参数设置,按其默认值确认即可,具体安装方法可看目录下的说明文件。安装完成之后,点击开始菜单“程序”中的“Keil uVision2”。进入软件界面,如图所示:

    我们在“工程”菜单中执行“新建”命令,新建工程文件名取为“my.uv2”。接下来是选择我们要做实验使用的CPU类型,我们在此使用市面上最为常见的Ateml公司的AT89C51型号,选好,点击确定即可,这时我们的工程向导已经做完,下一步我们将编写源程序代码,即点亮第一个LED发光管所需要的程序代码。我们执行“新建”操作,在弹出的文本编缉框内键入以下代码:

loop:

CLR P1.0

Ajmp loop

END

    这里我们仅使用了四条语句,CLR P1.0的作用是用来使单片机的P1.0管脚置成低电平,因为我们要使第一个发光管点亮,从电路图中,我们可以看到,只要使P1.0脚上为低电平信号即可。第一行的“Loop”是语句标号;“AJMP LOOP”这条语句的意思是程序运行到此跳转到开始标号loop,重复执行程序。END则是程序结束的标记,如我们看完电影后,在演员表出现完之后,也会出现一个“END”的字样。一个最简单的程序就这样编写完成了,下面我们得保存我们已经编好的程序,即执行“文件”菜单中的“另存为”命令,文件名我们在此取为led.asm,注意.asm是汇编语言的扩展名,如果使用C语言编写的话,则扩展名应是.c。在此,我们先使用汇编语言来介绍。如图所示:

    OK,现在我们已经保存好了这个文件,还记得吗,我们刚才新建了一个叫“my”的工程,而led.asm文件应该是我们my这个工程的其中一份子,换句话说,我们还应该把这个led.asm文件添加到my这个工程当中去。具体操作如下,点击屏幕左侧的Target1字样旁边的“+”图标,则会弹出一个子项,名为“Source Group 1”,在其上面单击鼠标右键,选择“增加文件到组Source Group 1”这项,把我们刚才保好的led.asm加进去。如图所示:

    接下来,我们要为源程序做一项编译工作,即产生目标文件,等会我们要把该文件烧入到我们的AT89C51单片机芯片中去。在执行编译之前,我们需要进行一些设置,右击“Target 1”,在弹出菜单中选择“目标Target 1属性”选项,进入弹出菜单中的“输出”页,页面中有一项为“生成HEX文件”,我们在其选择框内打上勾,然后,点击确定完成设置。现在,我们只要按一下快捷键F7,就可以完成编译工作了,这时,你会在led.asm文件所在目录下发现一个名为“my.hex”的文件,这就是我们所用来完成烧写芯片工作时使用到的目标程序文件,该文件为16进制文件。

    编程编完了,我们自然要使用仿真器来验证一下程序有否正确,但在使用仿真器之前,我们还需要手动设置一些相关参数,同样是在“目标Target 1属性”选项,进入“目标”页面,将晶振频率设置为11.0592M,因为我们的仿真器使用的频率值为11.0592M,如图所示:

    进入“调试”页,选择使用“Keil Monitor-51 Driver”硬件仿真器,点击其后边的“设置”按钮,进行仿真器的串口通讯设置,如果你的仿真器串口线插在计算机的COM1口上,则我们在此选择为“COM1”,因为笔者使用时是插在COM2口上,所以在此我们选择“COM2”,将波特率设置为“38400”,点击确定后,我们在“启动时加载程序”的复选框打个勾,页面内的“恢复调试设置”安需选择即可,我们在此将“断点”、“工具栏”、“存储器显示”这几项打上勾。详细的设置,请如图所示:

    现在我们已经将所有的设置都完成了,下面就让我们来看看我们的成果吧。首先,点击Keil软件“调试”菜单中的“开始/停止调试”项,或者也可以按键盘快捷键Ctrl+F5。如屏幕左下角出现如图所示的样子,则表示仿真器连接成功,“Monitor-51 V3.4”是软件版本号。

    然后,再选择“调试”菜单中的“运行到”按钮,或使用键盘快捷键F5,这地仿真器才真正地起到仿真的作用了,你会发现我们的实验板上的第一个LED发光管亮了,这正是我们所想要得到的结果。如图所示:

    至此,我们已经完成了程序调试工作及硬件的仿真。完了之后,我们还需要做一件事,就是断开连接,如我们在生活中打完电话一定要挂机一样,断开连接的操作非常简单,首先,按一下仿真器硬件电路板上的一个复位按钮(见仿真器图片中左上角那个按钮)。然后在“开始/停止调试”按钮,即我们刚才用来连接时按的那个按钮。至此,仿真工作全部结束,现在对仿真器的使用应该有了大致地了解了吧。

    咱们继续讲,我们现在已经完成了软件程序的编制及仿真工作,下面我们就来讲一讲,咱们的最后一道工序,即程序定形后,我们如何将其烧到我们的单片机芯片中去。我们以现在Atmel公司最新的AT89C51芯片来讲。

    首先,我们将串口线从仿真器上拔下,然后插在51编程器上,同时插上USB线,如图所示:

    将光盘上的“A51经济型编程器软件”文件夹全部复制到你的电脑硬盘上,并将其目录下的所有文件的“只读”属性去掉,具体操作,全选所有文件,在文件属性中将其“只读”项前面复选框内的勾去掉即可。现在,我们打开“编程器.exe”,进入程序界面,同样编程器在第一次使用前也需要手动设置一些参数,进入“设置”项,根据你编程器所插的COM口号,设置好COM口序号,波特率设置为:28800,图中笔者所插的COM口为COM2,将界面左上角的芯片类型设为AT89C51,详细设置如图所示:

    现在该设置的都已经设置完了,下面我们就需要将要烧写的程序文件调进来,执行“打开文件操作”,找到刚才我们刚才已经准备好的my.hex文件,选中打开即可。然后,我们插在要烧写的AT89C51芯片,如图所示:

    首先,我们执行一下“擦除器件”操作,差不多1秒钟即可完成芯片的擦除工作,速度很快。好了,现在已经到最后一步了,用鼠标点一下“写器件”按钮吧,OK,大功告成。至此,我们已经完成了从软件编写,仿真,直到烧写芯片的全部步骤。一定很辛苦了吧:)下面就让我们来看看我们的成果吧,把刚才烧写好的AT89C51芯片插在实验板上,并接上USB线,来看看板上的第一个LED发光管是不是亮了,板上的第一个LED发光管点亮,现在我们已经脱离了我们的仿真器而使用的是单片机芯片。

    笔者写到这里,整个实验、开发步骤已经全部完成,虽然这是一个很简单的实验,但很大复杂的例子都是基于各种简单的原理之上。如下面是一段流水灯的程序,你可以将其直接粘到Keil程序编程器中仿真执行,编译后烧到芯片中去,看一下流水灯的效果,简单吧:)所有的实验方法、步骤完全一样,只是程序代码变了。

org 0000h

ljmp start

org 10

start: mov a,#0feh

loop:mov p1,a

rl a

lcall delaytime

ljmp loop

delaytime:

mov r7,#255

c1:mov r6,#255

c2:djnz r6,c2

djnz r7,c1

ret

end

    最后,笔者写下此文,希望能够帮助广大单片机初学者可以尽快入门,给大家一个感性的认识,最重要的是能够提供给大家一个实验的硬件环境以及软硬件相结合的实践性描述,以使增加单片机初学者的实践动手能力。我们提供的实验板上资源非常丰富,可以做流水灯、数码管、蜂鸣器、键盘、继电器控制、IIC总线通信等实验,光盘上也都配有例程、实验中的一些视频操作录像及编程器、仿真器的全部驱动程序,以供大家方便学习,实验中的一些视频录像请见光盘“单片机实验视频录像”下的视频文件。因此,你只要有一台电脑就可以进行学习、开发了,相信只要你发挥你的想象,一定可以将单片机发挥出它更大的潜力