51单片机综合学习系统快速入门 《电子制作》2006年11月 站长原创,如需引用请注明出处

    笔者曾在2005—2006年间写了用增强型51实验板学习51单片机知识的连载教程,受到了广大用户的赞同与好评,也让很多单片机初学者能够快速跨入单片机的大门。为此,我们吸取了以往的经验,特地为初学者朋友设计了一款51单片机综合学习系统,集编程,仿真,实验三大功能于一体,功能更强大,性能更稳定,使用更方便,接口齐全,扩展性灵活,可做实验多达几十项,试验单元功能转换实现了无跳线的电子切换,功能模块的切换只需轻触按键即可。如图1所示。下面,我们来结合51单片机综合学习系统这个学习平台,以理论与实践相结合的方式,使广大单片机初学者朋友能够以最快的速度入门,使我们知道单片机开发的整体流程是怎么样的。


图1

    粗略地讲,单片机开发分为三个阶段,分别是:仿真、烧写、实验验证。仿真用来提高我们的软件开发效率,实现芯片的在线仿真,一听到仿真器大家都会想到一个贵字,但我们提供的仿真模块相信大部分朋友都可以承受,以下文中我们用来仿真AT89S51型号的单片机,事实上51内核的单片机芯片,我们都可以用该仿真器来仿真,在Keil软件中选择好CPU即可。编程就是将我们在PC机上仿真调试成功后的程序烧写至单片机芯片中去,以完成程序的固化工作,现在,Atmel公司推出了全新的S系列51单片机,其功能与稳定性都超于往日的C系列单片机,重要的是,S系列的单片机支持了ISP下载功能,因此,51单片机综合学习系统通过ISP的方式进行在线下载程序,烧写芯片非常方便。对于实验,板载资源非常丰富,可做实验有:8位LED数码管、32路LED、4x4矩阵键盘、4个直控键盘、蜂鸣器喇叭、继电器试验、I2C总线接口、SPI总线接口、160X液晶屏、128X64、红外接收头接口、支持PS/2接口的104键标准键盘、步进电机驱动接口、ADC0832模/数转换接口、PC817光电耦合器、串行时钟芯片DS1302、温度传感器DS18B20接口、RS232串口通讯、外扩展接口以便外接更多的实验资源。
以下我们将与51单片机综合学习系统相结合来讲述具体的实践学习过程。

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

    我们的实验板上共有32个LED发光二极管,分别与单片机的P0、P1、P2、P3口相连,每个P口8个LED。现在我们就来点亮第一个发光管,即与P1.0脚相连的那个发光管。首先,我们将SST89E64RD仿真模块插到学习板上,把串口线的一头与学习板相连,另一头插至计算机的COM口上,然后,将9V外接电源接头或USB电源线插到学习板电源口上,因为学习板使用双电源供电设计,至此硬件设备连接已OK。如图2所示:

图2

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

图3

    我们在“工程”菜单中执行“新建”命令,新建工程文件名取为“my.uv2”。接下来是选择我们要做实验使用的CPU类型,我们在此使用市面上常见的Ateml公司的AT89S51型号,选好,点击确定即可,这时我们的工程向导已经做完,下一步我们将编写源程序代码,即点亮第一个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。在此,我们先使用汇编语言来介绍。如图4所示:

图4

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

 

图5

    接下来,我们要为源程序做一项编译工作,即产生目标文件,等会我们要把该文件烧入到我们的AT89C51单片机芯片中去。在执行编译之前,我们需要进行一些设置,右击“Target 1”,在弹出菜单中选择“目标Target 1属性”选项,进入弹出菜单中的“输出”页,页面中有一项为“生成HEX文件”,我们在其选择框内打上勾,然后,点击确定完成设置。现在,我们只要按一下快捷键F7,就可以完成编译工作了,这时,你会在led.asm文件所在目录下发现一个名为“my.hex”的文件,这就是我们所用来完成烧写芯片工作时使用到的目标程序文件,该文件为16进制文件。
编程编完了,我们自然要使用仿真器来验证一下程序有否正确,但在使用仿真器之前,我们还需要手动设置一些相关参数,同样是在“目标Target 1属性”选项,进入“目标”页面,将晶振频率设置为11.0592M,因为我们的仿真器使用的频率值为11.0592M,如图6所示:

图6

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

图7
图8

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

图9

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

图10

    至此,我们已经完成了程序调试工作及硬件的仿真。完了之后,我们还需要做一件事,就是断开连接,如我们在生活中打完电话一定要挂机一样,断开连接的操作非常简单,首先,按一下学习板上的一个复位按钮,板上有中文标注。然后在“开始/停止调试”按钮,即我们刚才用来连接时按的那个按钮。至此,仿真工作全部结束,现在对仿真器的使用应该有了大致地了解了吧。
咱们继续讲,我们现在已经完成了软件程序的编制及仿真工作,下面我们就来讲一讲,咱们的最后一道工序,即程序定形后,我们如何将其烧到我们的单片机芯片中去,即如何使用ISP在线下载功能。
首先,我们将并口线、USB线或9V外接电源线与学习板相连,硬件连接如图11所示。

图11

   然后打开配套光盘中“ISP编程软件”目录下的“ISP编程.exe”文件,软件界面如图12所示。

图12

    下面我们就需要将要烧写的程序文件调进来,执行“打开文件操作”,找到刚才我们刚才已经准备好的my.hex文件,选中打开即可。然后,我们执行一下“擦除”操作,差不多1秒钟即可完成芯片的擦除工作,速度很快。好了,现在已经到最后一步了,用鼠标点一下“写”按钮吧,OK,大功告成。至此,我们已经完成了从软件编写,仿真,直到烧写芯片的全部步骤。一定很辛苦了吧:)现在就可以看到如图10所示的实验验证结果照片了。
最后,笔者写下此文,希望能够帮助广大单片机初学者可以尽快入门,给大家一个感性的认识,重要的是能够提供给大家一个实验的硬件环境以及软硬件相结合的实践性描述,以使增加单片机初学者的实践动手能力。配套光盘中已带数十个例子程序、一些实验视频操作录像及学习板全部驱动程序,因此,你只要有一台电脑就可以进行学习、开发了,相信只要你发挥你的想象,一定可以将单片机发挥出它更大的潜力。