设计与开发

单片机软件开发 详解单片机的硬件开发过程

小编 2024-10-05 设计与开发 23 0

详解单片机的硬件开发过程

在进行单片机应用系统开发时,一般先进行硬件开发,再进行软件开发。单片机的硬件开发一般可按下面几个步骤进行。

明确单片机应用系统要实现的功能

在进行单片机开发时,一定要明确开发出来的单片机应用系统需要实现什么样的功能,之后的硬件、软件设计都要围绕着单片机要实现的功能进行。

例如,要开发一个控制发光二极管亮灭的单片机应用系统,具体功能要求如下。

① 采用4个开关控制4只发光二极管。

② 按下某个开关,相应的发光二极管会发光;松开开关,发光二极管会熄灭。

③ 同时按下4个开关,4只发光二极管都亮。

选择单片机型号

明确单片机应用系统要实现的功能后,再选择单片机的种类和型号。单片机的种类很多,如PIC系列单片机、MCS-51系列单片机等,这些单片机又有很多型号,不同型号的单片机结构和功能有所不同,编程时软件指令也有所不同。

在选择单片机型号时,一般应注意以下两点。

① 在功能够用的情况下,考虑性能价格比。有些型号的单片机功能强大,但相应的价格也较高,而选择单片机型号时功能足够即可,不要盲目选用功能强大的单片机。

② 选择自己熟悉的单片机。不同系列的单片机内部硬件结构和软件指令或多或少有些不同,而选择自己熟悉的单片机可以提高开发效率,缩短开发时间。

这里选择Atmel公司的AT89S51型号的单片机,选择的理由除了AT89S51单片机与8051单片机完全兼容(引脚数及功能相同,软件指令也相同,内部结构基本相同)外,AT89S51单片机在市场上也比较容易获得(8051已不生产),另外AT89S51单片机内部的程序存储器采用可反复擦写的EEPROM,这样有利于反复修改程序,而8051单片机内部的程序存储器只能写一次。

设计单片机外围电路

单片机的外围电路主要有基本工作条件电路、输入电路和输出电路。根据单片机要实现的功能设计出来的单片机外围电路如图3-2所示。

图3-2 单片机外围电路

(1)基本工作条件电路

单片机的VCC电源引脚接+5V电源,C3、R5构成复位电路,晶振X和电容C1、C2与内部电路构成时钟电路,这些电路分别为单片机提供电源、复位信号和时钟信号,单片机即开始工作。

(2)输入电路

按键S1~S4构成输入电路。当按下某按键时,单片机相应的输入引脚为低电平;当按键弹起时,相应的输入引脚为高电平。

(3)输出电路

发光二极管VD1~VD4和电阻R1~R4构成单片机的输出电路,其中R1~R4为限流电阻,用于防止流过发光二极管的电流过大而损坏发光二极管。当单片机的某个输出引脚为低电平或高电平时,该引脚外接的发光二极管就会亮或灭。

单片机外围电路设计好后,可以将这些电路做在一块电路板上,为了方便之后的单片机软件开发,可在安装单片机的位置处安装一个40引脚的插座,这样在仿真、编程时可使单片机容易插入和取出。这样制作出来的电路板常称作实验板。

单片机的软件开发过程

单片机软件开发过程是先编写程序,再编译、仿真和调试程序,然后用编程器将程序写入单片机。这几个过程可以分别用几个软件完成,也可以在一个软件中完成。现在很多单片机开发人员都采用Keil公司开发的KeilC51软件来编写、编译、仿真和调试程序。

3.2.1、编写程序

在编写程序前,需要先安装 KeilC51 软件,然后在该软件中建立项目和源程序文件,再在源程序文件中编写程序。

1.KeilC51软件的获取与安装KeilC51软件是德国Keil公司开发的51系列单片机编程软件,在该软件中,用户可用汇编语言或C语言编写程序,然后对程序进行编译、仿真和调试。

如果读者需要该软件,可到Keil公司网站http://www. Keil.com下载Eval(评估)版本,也可登录易天教学网(www.eTV100.com)下载。下载该软件后获得的是一个压缩包,解压后运行SETUP文件夹中的Setup.exe文件,即开始安装软件。在安装时,首先会出现图3-3所示的对话框,如果不是商业用户,单击“Eval Version”(评估版本)按钮,软件即开始安装,后面的安装过程与一般的软件安装过程相同,这里不再赘述(注:评估版本软件对编写的程序要求不能大于 2KB,其他与商业版软件相同。对于初学者来说, KeilC51评估版本基本够用)。

图3-3 选择软件安装版本对话框

2.新建项目和源程序文件

KeilC51 软件安装完成后,双击桌面上的“Keil μVision2”图标,或单击桌面左下角的“开始”按钮,在弹出的菜单中选择“程序”→“Keil μVision2”命令,就可以启动 Keil μVision2,进入图3-4所示的“μVision2”软件窗口。

(1)新建项目

在进行单片机程序开发时,为了便于管理,需要先在“μVision2”中建立一个项目,然后在该项目中编写、仿真和调试程序。新建项目的操作过程如下。

① 选择“Project”→“New Project”菜单命令,如图3-5所示,立刻弹出图3-6所示的“Create New Project”(建立新项目)对话框。

② 在“Create New Project”对话框中选择文件保存的位置,再输入项目文件名“test1”,文件的默认扩展名(类型)为“.uv2”,然后单击“保存”按钮,立刻弹出图3-7所示的对话框,要求选择为哪种型号的单片机编写程序。

图3-4 μVision2软件窗口

图3-5 执行新建项目命令

图3-6 建立新项目对话框

图3-7 选择单片机型号对话框

③ 在图3-7所示对话框左侧的选择区内选择单片机型号为 Atmel 公司的“AT89S51”,然后单击“确定”按钮,会弹出图3-8所示的对话框,该对话框询问是否要把标准8051的启动代码添加到项目中。

图3-8 询问是否将标准8051的启动代码加入到项目中

KeilC51既支持C语言编程也支持汇编语言编程,如果欲用汇编语言编写程序,则应单击“否”按钮;如果想用C语言编写程序,一般也单击“否”按钮;但是如果用到了某些增强功能需要初始化配置时,则可以单击“是”按钮。这里单击“否”按钮(即不添加启动代码),新建项目结束,在图3-9所示μVision2 软件窗口左边的项目管理器中新增了一个“Target 1”文件夹,该文件夹中还有一个“Source Group 1”文件夹。

图3-9 新建项目完毕,在μVision2软件窗口中新增“Target 1”文件夹

(2)新建源程序文件

要编写程序,还需要新建一个源程序文件,再在该文件中编写程序。

新建源程序文件的操作过程如下。

① 新建源程序文件。单击工具栏中的新建按钮 ,也可选择“File”→“New”菜单命令,即新建一个默认名为“Text 1”的空白文件,同时该文件在软件窗口中打开,如图3-10所示。

图3-10 新建源程序文件

② 保存源程序文件。单击工具栏上的保存按钮 ,也可选择“File”→“Save As”菜单命令,弹出图3-11所示的“Save As”对话框。在对话框中打开之前建立的项目文件所在的文件夹,再将文件命名为“test1.asm”(扩展名.asm表示为汇编程序,不能省略),单击“保存”按钮即将该文件保存下来。

图3-11 保存源程序文件对话框

③ 建立源程序文件与项目关联。新建的源程序文件与新建的项目没有什么关联,需要将它加入到项目中。打开项目管理器的“Source Group 1”文件夹,右击该文件夹,弹出图3-12所示的快捷菜单,在该快捷菜单中选择“Add Files to Group’Source Group 1’”项,会出现图3-13所示的加载文件对话框。在该对话框中选文件类型为“Asm Source file”,找到新建的“test1.asm”文件,再单击“Add”按钮,test1.asm文件即被加入到项目中,此时对话框并不会消失,可以继续加载其他文件,单击“Close”按钮关闭对话框。在Keil软件项目管理器的“Source Group 1”文件夹中可以看到新加载的“test1.asm”文件,如图3-14所示。

图3-12 在快捷菜单中选择加载文件命令

图3-13 在对话框中选择要加载的文件

3.编写程序

编写程序有两种方式:一是直接在 Keil 软件中编写;二是在其他软件中编写,再加载到 Keil软件中。

图3-14 软件项目管理器中出现加载的文件

(1)在Keil软件中编写程序

在Keil软件的源程序文件中用汇编语言编写程序(也可以用C语言编写),如图3-15所示。

图3-15 在源程序文件的文本框内编写程序

源程序文件中的汇编语言程序如下:

MAIN:

MOV  P3,#0FFH

LOOP:

MOV P1,P3

LJMP LOOP

END

有关程序的编写方法在后面的章节将专门介绍。

(2)加载其他软件编写的程序

Keil 软件源程序文件的文本框对中文的支持不是很好,在输入中文时,有时会出现文字残缺现象。编程时也可以使用其他文本编辑器(如 Windows 自带的记事本)编写程序,再将程序加载到Keil软件中进行编译、仿真和调试。加载其他软件编写的程序的过程如下。

① 用文本编辑器编写程序。打开Windows 自带的记事本,在其中编写程序,如图3-16所示。编写完后将该文件保存下来,文件的扩展名为.asm或.a51,这里将文件保存为test1S.asm

图3-16 用记事本编写程序

② 将程序文件装载进 Keil 软件。加载程序文件的过程与图3-12~图3-14所示的过程相同,具体操作过程如下。

打开Keil软件,在项目管理器中的“Source Group 1”文件夹上右击,弹出快捷菜单,选择其中的“Add Files to Group’Source Group 1’”项,会出现加载文件对话框,在对话框中选文件类型为“Asm Source file”,然后找到之前编写的“test1S.asm”文件,再单击“Add”按钮,test1S.asm文件即被加载进Keil软件中,单击“Close”按钮关闭对话框。

加载程序结束后,可以在项目管理器的“Source Group 1”文件夹中看到加载进来的“test1S.asm”文件,如图3-17所示,双击可以打开该文件。

图3-17 用记事本编写的程序被加载进项目管理器

3.2.2、编译或汇编程序

用汇编语言写好程序后,程序还不能直接写入单片机,因为单片机只接受二进制数,所以要将汇编语言程序转换成二进制或十六进制代码(又称机器代码)。将汇编语言程序或其他程序(如 C语言程序)转换成二进制或十六进制代码的过程称为汇编或编译。

汇编要用到汇编器,汇编器可以将汇编语言程序转换成二进制或十六进制代码;编译要用到编译器,编译器可以将高级语言程序(如C语言程序)转换成二进制或十六进制代码。不同类型的单片机需要使用不同的汇编器或编译器,MCS-51系列单片机对汇编语言程序汇编时采用A51汇编器,而对C语言程序编译时采用C51编译器。

KeilC51 软件本身带有汇编器和编译器,在对程序进行汇编或编译时,会自动调用相应的汇编器或编译器。下面以汇编test1.asm程序为例,说明汇编和编译的过程。

(1)汇编或编译前的设置

在汇编或编译程序前需要对项目进行一些设置。设置时,选择“Project”→“Options for Target ’Target 1’”菜单命令,弹出图3-18所示的对话框。该对话框中有 10 个选项卡,每个选项卡中都有一些设置内容,其中“Target”和“Output”选项卡较为常用,默认打开“Target”选项卡,这里保持默认值。

图3-18 Target选项卡中的内容

单击“Output”选项卡即可切换到该选项卡,该选项卡的内容如图3-19所示。这里只选中“Create HEX Fi”复选框,选中该复选框后在汇编或编译时会生成扩展名为.hex的十六进制文件

图3-19 Output选项卡中的内容

(2)进行汇编或编译

在图3-19所示的“Options for Target’Target 1’”对话框中设置完成后,单击“确定”按钮,返回到Keil软件界面,然后单击编译或汇编按钮 ,软件就开始对test1.asm文件中的程序进行编译或汇编,完成后,在软件窗口下方的输出窗口中可看到有关的编译或汇编信息。如图3-20所示,如果出现“0 Error(s),0 Warning(s)”,则表示程序没有问题(至少在语法上不存在问题);如果存在错误或警告,则要认真检查程序,修改后再编译或汇编,直到通过为止。

图3-20 程序汇编或编译结束出现有关的汇编或编译信息

编译或汇编完成后,打开项目文件所在的文件夹,会发现生成了一个“test1.hex”文件。该文件是由汇编器将汇编语言程序汇编成的十六进制代码,用记事本程序打开它,可以看见该文件的具体内容,如图3-21所示。通过编程

器可以将test1.hex文件中的内容写入到单片机中。

图3-21 汇编生成的test1.hex文件的内容

相关问答

单片机 是怎样编程的?

单片机编程是将计算机指令转换为可执行的二进制代码,并将其储存在单片机中,以便控制硬件执行任务。编程的过程包括选择编程语言、编写代码、编译代码以生成可...

谈谈你对 单片机 的认识?

从大一的时候在大学图书馆看到关于AVR单片机的书籍,到参加竞赛、工作,我和单片机已经打了六七年的交道了吧。其间我都是在做产品的软件开发,与硬件工程师合作...

单片机 能用于哪些行业?

这个我有发言权,我就是做单片机嵌入式软件开发的。单片机作为电子制造设备用于数据信息流的采集、传输与控制的载体应用于各行各业中。医疗器械方面,医院的检...

单片机 行业可以转什么行业?

单片机行业可以转很多方面的工作啊,具体看你从事的硬件还是软件。对于之前从事单片机硬件的,有了这个硬件基础,可以去的行业多了,毕竟很少有哪个行业离得开...

单片机 的发展前景如何?

单片机目前品牌有很多,早年主要是以国外品牌为主,随着我国自主芯片品牌的发展,国产芯片逐渐崛起,目前对于cotex-M内核系列的国产单片机厂家越来越多,国内的...

单片机 除了可以用汇编和c语言编程,还有其他什么编程语言吗?

除了C和汇编,超子还接触过使用Arduino、Labview、Python以及Lua对单片机进行程序开发。不过这些相对比较小众,没有普适性。一、ArduinoArduino应该算是一种对...

自学 单片机 reg51.h定时程序是里头的TH1、TL1、TR1、TMOD是什...

TH1计数器1,TL1是定时器1,TR1是启动定时器1,TMOD(工作方式控制寄存器).具体想了解是什么意思可以去下载个资料看一下《基于C语言的MCS-51系列单片机软件开发系统...

没有基础学 单片机开发 可以吗?

谢谢邀请,可以的,但需要学习的专业知识很多,会比相关专业毕业的人员更大的难度如果您是一个年纪偏大比如40岁以上中年人,想从事单片机开发工作,个人不推荐...谢...

毕业即将满一年,浑浑噩噩,开始学习 单片机开发 方向能找到工作的机率有多大?

2、在某宝上买一块现成的51单片机开发板,网上很多,非常多,而且还送资料,价格也只要几十元。让老板再给一块程序下载器,这样硬件开发环境就全了。3、准备一...3...

单片机 工程师35岁还有生存空间吗?

单片机工程师35岁了当然有生存空间,而且这个年纪是单片机工程师的黄金年龄。很多人有一个误解,觉得做技术的过了三十五就会被淘汰,其实这是一种误区,单拿单...

猜你喜欢