单片机实验一

单片机实验一
单片机实验一

实验1 认识单片机

一、实验目的

熟悉8051单片机实验板及实验中所用到的相关软件,掌握8051单片机的结构和工作原理。

二、实验内容

2.1TTC-2二合一实验系统(PCI版)介绍

1.TTC-2实验系统满足《微机原理与接口技术》、《单片机原理及应用》、《数字逻辑与数字系统》等课程实验要求,实验台包括微机接口和单片机两部分电路,不用增加硬件就可以完成微机接口实验和单片机常用实验。

2.提供单片机的在系统编程功能。可以将使用者自编的程序写入单片机的内部ROM,完成一个单片机实验,就可以掌握单片机的开发全过程。

3.开放式结构。模块化设计支持开放实验。实验台上除固定电路外,还设计有用户扩展实验区。用户扩展实验区有五个通用集成电路插座,每个插座引脚都有对应的“自锁紧”插孔,便于搭建自己设计的实验,有利于进行课程设计。

4.功能强大的软件集成开发环境,可以方便地进行编辑、编译、链接和调试程序。可以查看实验原理图,实验接线,实验程序并接线实验演示。还可以方便的增加和删除实验项目。

5.使用本系统及本系统所提供的集成调试环境进行微机原理和接口实验既可以用8086汇编语言编程,也可以用C语言编程;使用本系统及本系统所提供的软件进行单片机实验既可以用MCS=51的汇编语言编程,也可以用C语言编程。

2.2 单片机实验区

单片机实验区位于实验台中部。这个区域设有:

1.通用单片机插座

在单片机实验区有一个40脚的万能锁紧插座,可以插入40脚以下双列直插式封装的单片机或仿真头,包括Intel公司的MCS-51系列、ATMEL公司的AT89C51、AT89C52及20引脚的AT89C2051、AT89C1051,PHILIPS公司的P89C51系列、51PC系列,Microchip Technology 公司的PIC系列单片机。该插座的每一个引脚都有一个对应的自锁紧插孔,可以用连接线与实验台上的外围电路相连接。(注意:实验结束后,应将万能锁紧插座的拉杆抬起,使之处于松弛状态。)

单片机实验区还有三个功能开关:SW3,SW4和K8。其中:

SW4是微机接口实验和单片机实验选择开关;

SW3是89C51和仿真器选择开关;

K8是单片机编程和运行状态选择开关。

当这些开关接通时,单片机的地址总线与A0~A15连接;数据总线与D0~D7连接;ALE,RD,RW,RST,RXD,TXD等信号均进行连接。

2.单片机地址译码电路U3

考虑到单片机系统扩展的需要,实验台上设置了单片机地址译码电路,电路如图2-12所示。集成电路74LS138进行译码,8条译码输出线0

Y~7

Y的地址分别为0000H~1FFFH、2000H~3FFFH、4000H~5FFFH、6000H~7FFFH、8000H~9FFFH、A000H~BFFFH、C000H~DFFFH、E000H~FFFFH,由“自锁紧”插孔引出,供实验用。

图2-12 单片机地址译码电路

3. 串行EEPROM、看门狗接口

实验台上有1片集成了串行EEPROM及看门狗的接口电路:X25045。可以进行单片机扩展串行EEPROM;单片机看门狗实验。其电路原理如下:

图2-13 串行EPROM、看门狗电路

4. 单片机与PC机通信接口电路

实验台上设有TTL电平与RS232C电平转换电路,采用MAX232芯片。可用于单片机与PC机通信,或单片机与单片机之间通信。

图2-14 串行通信接口电路

2.3 其它电路

1.跳线开关

为方便实验,实验台上设置了以下几个跳线开关:

(1)实验类型选择开关JP12、JP13:这两个跳线开关在实验台50芯总线插座的左方,实验中一般用户不用设置。

(2)模拟量输入选择开关JP19、JP20:在实验台AD转换芯片ADC0809附近,分别用于模/数转换模拟量的输入极性选择,JP19的1、2两点短路时,ADC0809的DN2可输入双极性电压(-5V~+5V);2、3点短路时输入单极性电压(0~+5V)。JP20用于所在DN1的输入极性,选择方法与JP19相同。

(3)+5V电源插针:为减轻+5V电源负载并保证个主要芯片的安全,在个主要实验电路附近都有相应的电源连接插针(标记为+5V),当实验需要使用该部分电路时,用短路块段接插针即可接通+5V电源,对实验中用不到的电路,可断开短路片以保证芯片安全。

3.直流稳压电源

实验箱自备电源,交流电源插座固定在实验箱的后侧板上,交流电源开关安在实验箱的右侧,当打开交流电源开关时,交流电源指示灯亮。实验箱右上角有直流电源开关,接通交流电源后再将直流开关拨到“ON”位置,直流+5V和+12V电源就加到实验电路上。

直流稳压电源的主要技术指标:输入电压AC 175~265V

输出电压/电流+5V/2.5A,±12V/0.5A

输出功率25W

2.4 单片机实验教学模式

利用本实验仪进行单片机实验可以采用简易实验模式和在线实验模式。

2.4.1 简易实验模式

实验设备除PC机外,只要配上本实验仪即可。实验步骤如下:

①在断电的情况下,根据实验要求,连接好实验电路(单片机采用PHILIPS 公司的

P89C51RA2),包括实验仪与PC机之间的的通信电缆。

②在PC机上运行单片机软件模拟器,编写调试实验程序(起始地址为0000H),调试通过后将目标程序存盘(文件扩展名为HEX)。

③接通实验仪电源后,在PC机上运行PHILIPS 公司的在系统编程软件,(该软件的使

用方法将在下一节“在系统编程软件的使用”中介绍)将目标程序直接写入实验仪上的单片机中。

④与PC机脱机后,按下实验仪上的RESET 开关使单片机复位。复位后,写入单片机的用户程序运行,根据运行结果验证实验正确性。

2.4.2 在线仿真实验模式

在线仿真实验模式适用于对单片机实验要求较高的学校及课程设计、毕业设计、科研开发。实验步骤如下:

①在断电的情况下,将实验仪与PC机之间的串行通信电缆连接好,将仿真开关打到仿真器一侧,并根据实验要求,连接好实验电路。这里我们用的是SST89E564RD来仿真实验。

②接通实验仪电源,在PC机上运行在单片机仿真软件,编写实验程序,编写完成后编译完再(起始地址为0000H)联机调试。

③接通实验仪电源,按下实验仪上的RESET 开关使单片机复位。复位后,再用仿真软件进行联机调试,目标程序会自动下载到仿真器运行,根据运行结果验证实验正确性。(有关仿真调试的使用方法请阅读本手册后面的“第九章仿真器Keil的使用”)

2.5 KEIL 8051开发工具使用说明

2.5.1 KEIL简介

Keil Software 的8051开发工具套件可用于编译C语言源程序、汇编语言源程序,连接和重定位目标文件和库文件,创建HEX文件以及调试目标程序。

Keil开发套件提供以下程序:

μVision3 for Windows是一个集成开发环境。它将项目管理、源代码编辑和程序调试等集成到一个功能强大的环境中。

C51国际标准优化C交叉编译器:从C源代码产生可重定位的目标文件。

A51宏汇编器:从8051汇编源代码产生可重定位的目标文件。

BL51连接/重定位器:组合由C51和A51产生的可重定位的目标文件,生成绝对目标文件。

LIB51库管理器:组合目标文件生成可以被连接器使用的库文件。

OH51目标文件到HEX格式的转换器:从绝对目标文件创建Intel HEX 格式的文件。

RTX-51实时操作系统:简化了复杂和对时间要求敏感的软件项目。

KEIL公司发布两种类型的套件:测试版套件和产品套件。

①测试版套件:包括8051工具软件的测试版、用户手册。测试版可以生成目标代码在2KB范围以内的应用。该套件主要是评估8051工具软件的有效性,并产生较小的目标代码。

②产品套件:包括8051工具软件的无限制版、全套手册系列。该套件具有1年的免费技术支持和产品升级。

2.5.2建立新工程的一般步骤

在Keil IDE 中不支持单文件的处理,只有建立一个工程并对该工程进行正确的设置后,才能使用Keil 进行编译连接仿真等操作。

启动uVision2以前,先在磁盘上新建一个文件夹,如C:\赵钱孙C51,以保存项目文件。

1. 新建工程

启动uVision3,点击菜单Project/New Project..后,出现如图3-2所示的新建工程对话窗口,从“保存在”下拉列表框中选择先前建立的文件夹(赵钱孙C51),在“文件名”编辑框中为将要新建的工程输入一个工程名(如prj_1),单击“保存”按钮,将弹出如图3-3

所示的选择器件对话框。

2. 为工程选择器件

图3-3只有一个选项卡:CPU 。因为TTC-2实验台配的CPU 是Philips 公司的P89C51RA2,因此在Data base 列表框中选择生产厂家Philips ,CPU 型号为P89C51RA2xx 。该芯片的基本性能出现在描述文本框中。

从右边对该芯片的描述中可以看出,P89C51RA2xx 是基于CMOS 工艺的8051控制器,具有32位输入/输出线、3个定时器/计数器,7个中断源4个优先级控制、8K 的在线可编程FLASH 为其程序存储器、256字节的片内RAM 和256字节的片外RAM 。

图3- 3 为工程选择器件(CPU )

选择好目标芯片后,单击“确定”按钮,系统将弹出对话框(图3-4),询问是否为新

图3- 2 新建工程对话框

建的工程添加标准启动代码。

所谓启动代码,是指文件STARTUP.A51。STARTUP.A51是为大多数80C51 CPU及其派生产品编写的启动代码。其作用是清除数据存储器,初始化硬件和可重入堆栈指针。另外,还有一些80C51派生产品要求初始化代码能够匹配硬件设置的配置。例如,Philips公司的80C51RD+的片内有xdata RAM,需要用启动代码进行配置后方能使用。因此,单击按钮“是”,为prj_1添加启动文件Startup.A51。

图3- 4

启动文件添加成功后在uVision3的工程管理器下的project workspace\Target 1\Souce Group 1下可以看到刚才新添加的文件STARTUP.A51。

3 .创建新的源文件

新建了空的项目并为其添加了启动文件后,接下来的工作就是为项目新建(或添加)源程序文件。如果已经用其它编辑器(如记事本)编辑好了源程序文件,则需将其添加到本项目中,才能够对源程序进行编译处理;如果还没有建立源程序,则需新建一个源程序文件。

打开“文件/新建”菜单,系统为工程项目创建了一个默认名为“Test1”的文件,用“另存为”命令打开图3-5所示的另存为对话框,将文件保存在自己的文件夹下,如果要创建一个C语言的源程序,则将文件名以.C或.C51为后缀名;如果想创建一个汇编语言源程序,则将文件名的后缀名用.A51。设置好保存位置和文件名后,单击“保存”按钮,uVision3便打开了一个编辑窗口,在此窗口可以用C语言(或MCS51的汇编语言)编辑源程序文件。

图3- 5 将新建源程序文件另存为

如果已经有用其它编辑器编辑好的源程序文件,则必须将其添加到项目中,才能使用。可以展开项目空间的Target1,右健单击“Source Group 1”,从弹出的上下文菜单中选择“Add Files to Source Group 1”命令,系统将弹出添加文件对话框(图3-6)。

在添加文件对话框的“查找范围”列表框中选择文件路径,文件列表框中选择要添加的文件,同时在“文件类型”下拉列表框中选择文件类型,单击“Add”按钮,即完成了添加文件操作。

如果还要继续添加文件,只需重复选择文件路径、文件名、文件类型,单击“Add”按钮即可。文件添加完成后,单击“Close”按钮,关闭对话框。

4. 工作环境和参数的设置

在Keil 的使用中,参数配置同样重要。新工程所有的配置参数都会使用缺省数值,一般可以正常运行,使用初期用户如果遇到不理解的配置参数可以不予理睬,在以后的应用中再逐步弄懂各个参数的实际用处。

图3- 6 为工程项目添加文件

右键单击项目工作空间的“Target 1”,再在弹出的菜单中选择“Options for Target ‘Target 1’”,系统将弹出图3-7所示的工程设置对话框。

图3- 7 工程设置对话框

工程设置对话框有多个选项卡。其中“Device”选项卡就是我们为系统选择CPU时用过的。现在打开“Target”选项卡,在这个选项卡中可以设置目标硬件以及所选器件的片内部件的所有相关参数。下表列出了该对话框各选项的意义。

5.编译项目和创建HEX文件

编辑好源程序文件后,单击工具栏图标(Build Target)或(Rebuild All Target Files),就可以对源程序进行编译连接并生成目标程序。编译过程中如果发现语法错误,μVision将会在输出窗口显示错误和警告信息。移动光标到输出窗口,双击错误信息行,μVision就会将光标定位到编辑窗口相应的位置。

成功地生成应用程序后,就可以进行程序调试了(具体调试方法见下节)。在调试好应用程序后,必须生成一个可供下载到程序存储器的HEX文件。创建HEX文件的方法是,打开“Options for Target ‘Target 1’”对话框(方法见3.4.4),选择“Output”选项卡,将Create HEX File前的复选框选中,“确定”后再编译连接源程序,即可创建HEX文件。

2.6在系统编程软件(ZLGISP)的使用

1.在系统编程简介

随着单片机技术的发展,出现了可以在系统编程(ISP)的单片机。ISP一般是通过单片机的串行接口对内部的程序存储器进行编程,如PHILIPS 公司的P89C51RX+、P89C51RX2单片机;ATMEL公司的AT89S8252单片机;WINBOND公司的W78E516等。利用在系统编程(ISP)的单片机,单片机的实验和开发不需要编程器,单片机芯片可以直接焊接到电路板上,调试结束即成成品,甚至可以远程在线升级单片机中的程序,使得单片机应用系统的设计、生产、维护、升级等环节都发生着深刻的变革。

实验仪附带有一片PHILIPS 公司新推出的高性能8 位单片机P89C51RD2,该单片机与MCS-51单片机引脚及指令集完全兼容。其最大的优点是:片内具有64KB闪速程序存储器,1KB的片内数据存储器,且同PC机连机后,可将目标程序直接写入片内程序存储器中,不再需要专用的编程器。下面就其编程方法作一介绍。

①在断电的情况下,将P89C51RD2单片机插入实验仪通用单片机插座并锁紧。将实验仪与单片机之间的串行通信电缆连接好,通信电缆一端接在PC 的串口COM1或COM2,另一端接实验仪接口DB9。

②将仿真器开关打到89C51一侧,将单片机的相应信号RXD、TXD等与RS232电平转换电路相连。

③将实验仪上的编程开关拨至“编程”位置,编程指示灯亮。按RESET按钮使单片机复位后,即可按下面的说明编程。

2.在系统编程软件的安装

在系统编程软件“ZLGISP”在使用前需进行安装,安装步骤如下:

1、将ZLGISP文件夹下的SETUP.EXE文件拷贝到硬盘上;

2、用鼠标双击SETUP.EXE的图标,根据屏幕提示操作安装。

3. 在系统编程软件的使用

在PC机上运行编程软件ZLGISP,软件运行后屏幕界面如下:

图5- 1

(1)各主菜单介绍

屏幕上方为主菜单:文件、编辑、芯片和帮助。

●文件菜单中包括:装载(用于装载hex文件)、保存文件和退出软件操作。

●编辑菜单用于手动对单片机缓冲区的编辑,包括:编辑、填充和清空操作。手动的编辑操作一般不会用到。

●芯片菜单中包括可以对单片机执行的操作:读出(读出芯片缓冲区内容)、编程(对芯片编程)、查空(检查芯片缓冲区是否为空)、擦除(擦除芯片缓冲区内容)、校验(编程后对芯片缓冲区校验)和设置(设置配置参数)。这些操作在软件的左边一一列出,使用时直接单击左边的相应操作就可以了。

●帮助菜单包括对本软件的说明和使用帮助。

(2)编程操作

在对一片Philips的89C51RX2进行编程时,一般进行5步操作:

第一步:通讯设置

图5- 2

●设置芯片型号:单击“型号”下拉菜单,用鼠标选中所使用的芯片型号。

●设置通信口:单击“通信口”下拉菜单在COM1—COM4中进行选择所使用的通信口。

●波特率设置:单击“波特率”下拉菜单进行选择,建议先从较低的波特率选起,进行通讯实验,试通以后再选用较高的波特率,在我们的单片机实验系统中,建议选2400或4800波特率。

●振荡频率设置:此处需手动输入,在我们的实验系统中应输入“6.000”MHZ。

第二步:设置芯片配置参数

单击软件左边一列的“设置”选项或单击主菜单“芯片”――“设置”选项弹出芯片参数设置窗口。在此对话框中我们需要设置自举指针(Vector)和状态字节(Status)。我们将自举指针(Vector)设为“FC”,状态字节(Status)设为“00”。设置好以后单击“写入”。待对话框下端一栏提示“写入操作成功”后,单击“退出”。这就完成了对芯片配置参数的设置。

在设置芯片的配置参数时应注意自举指针(Vector)一定不要设置为“00”。若不慎将自举指针(Vector)设置为“00”,进行过一次编程后将不能再对这个芯片进行任何操作。操作时软件会提醒你“通信出错”。这种情况下,我们的这个软件已经无能为力。用户须将芯片从实验箱上取下,用编程器对芯片的配置参数重新设置。

另,单击“读出”可以显示芯片的自举指针、状态字节和保密位状态。用户还应当注意,单击“设置”进入对话框后,对话框所显示的自举指针、状态字节和保密位状态是上次设置的状态,并不是当前状态,须单击“读出”才能显示出当前的真实状态。

在此对话框中还可以设置保密位(bit1、bit2和bit3)。保密位用于防止芯片程序被读出。p89c51系列芯片有三个可设置保密位。通过三个保密位的不同组合可以定义四种不同等级的保密。各等级的设置和功能见下表:

表5- 1

注意:

1.保密位是各自独立的。无论保密位如何设置,全部芯片空间的擦除是可执行的。

2.其余保密位的组合没有定义。

由于我们只是简单的程序编程,不会涉及到程序的保密问题。所以用户在使用时不用设置保密位。若由于不慎操作将保密位设置,可通过擦除操作,选择擦除全部芯片空间,即可

将所设置的保密位擦除。

图5- 3

第三步:擦除

单击软件左边一列的“擦除”选项或单击主菜单“芯片”――“擦除”选项弹出芯片擦除窗口。

图5- 4

在擦除对话框中列出了所选器件的各个Flash块,用鼠标选中你要擦除的Flash块。在执行擦除操作时,就会将所选的Flash 块擦除。注意:当擦除整个Flash 时芯片的自举指针(Boot Vector)和状态字节(Status byte)将被设置成初始值。待对话框下端一栏提示“擦除操作成功”后,单击“退出”。这就完成了对芯片的擦除工作。

第四步:装载文件

单击主菜单“文件”――“装载”选项或单击文件下方的打开文件图标弹出装载文件窗口。选择所要装载的hex文件,单击“打开”即可完成对文件的装载工作。

图5- 5

装载完成后芯片缓冲区内容改变,如下图所示:

图5- 6

第五步:编程

单击软件左边一列的“编程”选项或单击主菜单“芯片”――“编程”选项弹出芯片编程窗口。

编程设置有两种方法:一种为默认状态,另一种为手动设置编程地址。

编程对话框的默认状态为如下图所示。单击“编程”,待对话框下端一栏提示“编程操作成功”后单击“退出”。这就完成了编程操作。我们推荐用此默认方法编程。

下面这种操作比较麻烦,而且地址设置不对的话就会出错,所以最好不要用这种方法。

在对话框中去掉“其他编程选择”前的“√”,用户即可手动设置所要编程的地址。对话框列出了所选器件的各个Flash块,用鼠标选中你要编程的Flash块,或者按照具体地址选择设置所要编程的起始地址和终止地址。然后单击“编程”。

图5- 7

此外,编程后还可以进行校验。由于校验不是必不可少的,我们就不列入编程操作步骤了。用户若想要进行校验,单击软件左边一列的“校验”选项或单击主菜单“芯片”――“校验”选项弹出芯片校验窗口。在校验对话框中列出了所选器件的各个Flash块,用鼠标选中你要校验的Flash块,或者按照具体地址选择设置所要校验的起始地址和终止地址。单击“校验”,待下端一栏提示“对应地址内容一样”,就表示校验结果是正确的。

图5- 8

其它对芯片可执行的操作包括读出(用于读出芯片缓冲区的内容)和查空(用于检查芯片缓冲区是否为空)。这两个操作一般不会用到,就不再详述。其具体操作方法与校验类似。用户若想使用可按照提示进行操作。

三.实验步骤

用TTC-2二合一实验箱进行单片机实验的步骤

1.关闭实验箱电源,按实验原理图连接电路。

2.编辑源程序。可以用任何编辑器(记事本、写字板、World)编写源程序,并存盘。如果是汇编语言源程序以A51为后缀名,C语音源程序则以C或C51为文件后缀名。

3.对源程序进行编译(汇编)、连接,生成目标文件(.HEX文件)、映像文件(.M51文件)和列表文件(.LST文件)等各种文件。

在PC机上创建一个文件夹(如MCS51),打开KEIL,新建工程,系统要求选择单片机类型,因为实验室所用单片机为P89C51RA2NB,所以,选择Philips公司的P89C51RA++,为新建的工程命名后保存到自己的文件夹中。

如果已用其它编辑器编辑好了源程序,可以打开已编辑好的源程序;如果尚未编辑好源程序,则新建文件,在编辑窗口编辑源程序,存盘(以A51或C51为后缀名)。

在μVision项目管理窗口展开Target1\Source Group 1,右击,将编辑好的源程序添加到源程序组中。

对源程序进行编译、连接,如果有语法错误,改正后再重新汇编和连接,直到全部正确为止。如果输出窗口没有显示“creating hex file from “…””,则需要右击Target1,选择Options for Target ‘Target1’,打开Output选项卡,将Create HEX File的复选框选中。再进行汇编和连接。

4.将HEX文件写进单片机的程序存储器。

4.3 汇编语言源程序调试举例

1.程序说明

汇编源程序prj_1.A51的功能是用起泡法将存储在内部RAM从50H开始的随机数据进排序,然后将排序后的数据存储到外部RAM的从0000H开始的存储单元。源程序如下:

2.编辑源程序。可以用以下两种方法编辑源程序并将源程序添加到工程中。

(1)启动μVisoin,新建工程,选择CPU,新建文件,在源程序编辑窗口输入以上汇编语言源程序后,右键单击工程管理窗格的“Source Goup 1”,选择“Add Files to ‘Source Group 1’”,为源程序命名(后缀名为A51或ASM)。

(2)用其他编辑器(如记事本)编辑源程序,保存;启动μVisoin,新建工程,选择CPU 后,右键单击工程管理窗格的“Source Goup 1”,选择“Add Files to ‘Source Group 1’”,在弹出的对话框中选择保存后的源程序文件,确定。

3.编译、连接程序。

单击工具条中“Build target”或“Rebuild all target files ”或用菜单project选择该命令,对原程序进行编译连接,如果发现错误则改正后再编译连接,直到没有错误(可以不理睬警告)为止。

4.调试目标程序。我们用设置断点的方法调试目标程序。

单击工具栏的“Start/Stop debug”按钮或通过debug菜单选择该命令或按Ctrl+F5,启动调试。分别在源程序的Bp1(第25行)、Bp2(第39行)、Bp3(第44行)处设置断点。然后运行程序。

(1)当程序运行到Bp1时,内部RAM地址从50H~5AH应该为10个未排序的数。在Memory 窗口的地址栏键入D:50可以观察到,同时CPU寄存器R0、SP的值随之改变(如图4-3所示)。

(2)单步运行或连续运行程序到Bp2,内部RAM的50H、51H单元的数应该按升序排列;如果不对,检查Bp1到Bp2之间的程序。

(3)清除断点2,运行程序到断点3,内部RAM地址从50H~5AH应该是10个按从小到大的顺序排列的数。如果结果不正确,请检查Bp2~Bp3之间的程序。

(4)继续运行程序到结束,在外部RAM的0000H~000AH单元应该能够看到上述10个排序后的数(可在Memory窗口的地址栏输入X:0000H)观察外部数据存储器的结果。如果结果不正确,请检查Bp3~END之间的程序是否正确。

(5)清除所有断点,全速运行程序,在内部RAM的50H~%AH单元、外部RAM 的0000H~000AH单元都应该看到10个排序后的数。

经过上述调试后,就可以生成Hex文件,然后将其下载到应用系统的程序存储器内独立运行了。程序下载方法见第5章,生成Hex文件的方法如下:停止调试,右键单击工程管理窗格的“Target 1”,在弹出的菜单中选择“Options for Target‘Target 1’”命令,选择对话框的“Output”选项卡,将“Create

HEX Fi”前的选项选中后,确定关闭Options for Target ‘Target 1’”。然后再对源程序进行编译连接。

图4- 1 程序运行到断点1时寄存器及内部RAM的值

4.4C源程序调试举例

步骤同上题,运行结果单击view菜单的serial Windows#1选项查看。如下图

单片机实训心得体会

单片机实训心得体会 篇一: 通过今次单片机实训,使我对单片机的认识有了更深刻的理解。系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。 由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。 踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。 但在这次实训中同时使我对汇编语言有了更深的认识。当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。 这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过

程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。希望这次的经历能让我在以后学习中激励我继续进步。 篇二:单片机实验心得 通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 作为一名自动化专业的快大三学生,我觉得做单片机实习是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力,如何把我们所学的专业基础课理论知识运用到实践中去,我想做类似实习就为我们提供了良好的实践平台 学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累单片机是一门应用性和实践性很强的学科,要多动手,多做实验。 (4)要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。 (5)碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。

单片机实验报告

南京晓庄学院电子工程学院 实验报告 课程名称:单片机系统设计与应用 姓名:森 专业:电子信息科学与技术 年级:14级 学号:05 2016年12 月1 日

实验项目列表 序号实验项目名称成绩指导教师 1 单片机仿真软件的使用 2 单片机I/O接口应用实验——流水灯 3 外部中断实验——工业顺序控制模拟 4 定时/计数器实验——矩形波 5 定时/计数器实验——计数器 6 综合实验 7 8 9 10 注: 1、实验箱端口为com6。 2、芯片选择切换到51 3、停止运行使用实验箱上的复位按钮

实验室号:___ 实验时间:成绩: 实验一仿真软件的使用 1.实验目的和要求 1)熟悉Keil C51软件界面,以及编辑、编译、运行程序的步骤; 2)掌握单片机仿真软件使用和调试的方法。 2.实验原理 Keil C51软件使用 在Keil C51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。 3.主要仪器设备(实验用的软硬件环境) 安装有Keil C51软件的PC机1台 4.操作方法与实验步骤 Keil C51软件使用 (1)建立用户文件夹 (2)建立工程 (3)建立文件并编码。输入以下源程序,并保存在项目所在的目录中 (4)把文件加入工程中 (5)编译工程。编译时观察在界面下方的“Build”页中的到编译错误信息和使用的系统资源情况等。 (6)调试。利用常用调试命令,如复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令进行调试,观察并分析调试结果。 (7)目标代码文件的生成。运行生成相应的.HEX文件。 5.实验内容及程序 1)从DATA区地址起始地址为40H的连续10个内存单元的内容传送到XDATA区起始地址为2000H的10个内存单元中。 注意:DATA区地址起始地址为40H的连续10个内存单元必须先赋初值。 P83-5源程序 #include #define uchar unsigned char xdata unsigned char buffer1[10]_at_ 0x2000; //在xdata区定义数组变量BUF1,首地址为2000H data unsigned char buffer2[10]_at_ 0x40; //在data区定义数组变量BUF2,首地址为40H void main(void)

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

单片机实验一

软件实验部分 实验一 Keil uVision2 开发环境入门 一、实验目的 1、初步熟悉Keil uVision2开发环境的使用; 2、了解C51语言程序设计和调试方法。 二、实验内容 1、应用给定程序联系使用Keil uVision2软件 2、对指定数据块赋值 三、实验流程图 1、输入以下程序: 全速运行实验程序,观察相关单元中数据的变化和单步运行的方法 2、对指定数据块赋值 (1)对指定单元进行清零操作 (2)对外部RAM中2000H开始的单元进行赋值,赋值数据为0~16.并对相关单元进行观察。 四、实验步骤 (一)存储块清零 1、打开Keil uVision2开发环境; 2、新建一个文件:File→New; 3、根据清零实验要求输入代码如下: xdata unsigned char Buffer[256] _at_ 0x3000; void main() {

unsigned int index; unsigned char xdata * ptr; ptr = &Buffer; // 起始地址 for (index = 0; index <= 255; index++) { *ptr++ = 0; // 清0, 地址加一 } } 4、保存文件名为“Text1.c”并为其建一个工程; Project→New Project→AT89s51→确定→右键Source Group 1→Add Files to Group ” Source Group 1”→将“Text1.c”选中加入工程即可。 5、编译→改错→直到编译通过没有错误; 6、仿真程序:按钮→按钮→屏幕下方会出现Address工具栏→Address栏中输入 如右图→通过改变表中地址对应的内容,这 三个按钮运行程序,查看内容是否被清零。 (二)对指定数据块赋值 1、建立工程和新建文件同(一)中类似 2、自己编程 仿真结果如下图:(仿真步骤与(一)类似)

单片机实验总结

单片机实验总结

程序由410出品,与老师的不大一样,此处省去1万字-----最终解释归410所有 1.试编写程序。统计片内RAM 30H~50H单元中FFH的个数,并将统计结果存51H。 mov r0,#30h //把30h赋给R0 mov r1,#00h //把00h赋给R1 loop: cjne @r0,#0ffh,next //把R0所指的地址里的数(地址30h中的数)与0ffh比较 inc r1 //若为0ffh则R1加1(计算0ffh的个数) next: inc r0 //若不一样则R0加1(即把R0里的地址加1,R0将指向下一个地址) cjne r0,#51h,loop //比较R0所存的地址与51h,若不等则跳回loop 继续执行 mov 51h,r1 //若相等(R0里的数就为51h,完成30h到50h的计数)将R1里的值赋到地址51h里,即地址51h 中存储着0ffh的个数 sjmp $ //等待 end 2、从片内RAM 30H单元开始存放着一组无符号数,其个数存在21H单元中。试编写程序,找出其中最小的数,并将其存入20H单元中。 mov r0,#30h //把30h赋给R0 mov a,@r0 //把R0所指30H中的数赋给a(a中就是地址30h中的无符号数) mov r1,21h //把21h中的数赋给R1 loop: inc r0 //R0加1(即R0将指向下一个地址) mov 30h,@r0 //把R0所指地址的数给到地址30h中 cjne a,30h,chk //比较a中的数与地址30h中的数的大小,若a中的数>30H中的数,则Cy=0;否则相反 chk: jc lop //判断Cy是否为1,若是,则执行下面程序,否则跳至lop 继续执行 mov a,@r0 //把R0所指地址中的数给a,即把最小数赋给了a lop: djnz r1,loop //R1减一,程序跳至loop继续执行,循环直至R1减到0 mov 20h,a //把a中的数赋到地址20h中 end 3、设片外RAM 2000H单元中有一个8位二进制数,试编程将该数的低四位屏蔽掉,并送回原存储单元。 mov dptr,#2000h //将片外地址2000h给dptr movx a,@dptr //将片外地址2000h中的数赋给a anl a,#0f0h //将a中的数与0f0h与下,屏蔽低四位的数 movx @dptr,a //将屏蔽好的数送回到片外地址2000h中 end

单片机实验报告一

单片机实验报告 1 姓名 陈奋裕 时间 2014/10/30 地点 机电实验大楼B526 实验题目 软件开发环境和简单程序设计 一、实验目的 1. 熟悉WAVE 软件使用 2. 学习简单程序的调试方法 二、实验主要仪器及环境 PC 机、WA VE 软件、仿真器+仿真头、实验板、电源等。 三、实验内容及步骤 1.启动PC 机,打开WAVE 软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序,进行编译,编译无误后,执行程序,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,点击复位按钮,可再次运行程序。 2.打开CPU 窗口,选择单步或跟踪执行方式运行程序,观察CPU 窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。 四、流程图及参考程序 实验1 1)参考程序 2)流程图 ORG 0000H START EQU 30H MOV R0, #START MOV R2, #10 mov a,#01h Loop: MOV @R0,A NOP LJMP $ END

五、实验及程序的分析和讨论 (1)第一个程序是将地址为30H到39H的寄存器的内容全部置1。先在R0中存放内部存储器的起始地址30H,R2中存放内部存储器的长度10个,累加器置1,然后利用循环控制指令DJNZ R2,Loop控制10次循环给上述10个单元赋值1.最后,使单片机自身跳转。 (2)实验得到全速执行后相应的测试结果: (3)实验得到30H到39H寄存器执行后的内容: 从该表中也可以看出该程序的功能,即将30H到39H的寄存器内容置1,说明自己的分析是对的。 六、实验小结 1、汇编语言的结果在软件里面全部都是黑色字体,无法编译,在老师的 提醒下,知道了WAVE软件只能执行ASM文件,所以实验前要先将文件 的类型改为.ASM。 2、程序中的逗号要在英文的状态下面编写;若提示有空余符号,则是分 号后面直接写注释,不要添加空格 七、思考题 1、软件开发环境提供了哪些调试手段?各有何特点? 答: 1.伟福仿真器为我们的调试提供了多种方法,它可以编译,以便查 找语法错误; 2.单步执行,来检查每句程序的功能; 3.全速执行程序,来检查整段程序要完成的功能; 4.还可以设置断点进行调试,以便分段执行程序。 2、如何将存储器块的内容移动到另一位置? 答:借助指针和寄存器,利用转移类指令即可将存储器块的内容移动到 另一位置。

实验报告(单片机实验报告)

1 双字节无符号数加法 例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h) 假设其和不超过16位。请编程。 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1, #79h mov R2,#25h mov R3, #0a4h mov A,R1 ADD A,R3 mov R5,A mov A,R0 ADDC A,R2 mov R4,A ss: jmp ss end 2双字节无符号数减法

例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。同学自己可以设置被减数与减数数值 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1,#79h mov R2,#25h mov R3,#0a4h mov A,R1 CLR C SUBB A,R3 mov R5,A mov A,R0 SUBB A,R2 mov R4,A ss: jmp ss end 3双字节数乘以单字节数

例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。 30H,31H,32H内容 12H,34H,56H ; org 0000h Ljmp start org 0050h start: mov 30h,#12h mov 31h,#34h mov 32h,#56h mov a,(30h) mov b,(32h) mul ab mov R3,b mov R4,a mov a,(31h) mov b,(32h) mul ab add A,R3 mov R3,A

单片机实验

实验三急救车与交通灯实验(4学时) 一、实验目的 (1)了解8255芯片的结构、工作方式及编程方法 (2)学习模拟十字路口交通控制的实现方法; (3)熟练掌握外部中断技术的使用方法。 二、实验内容 (1)在实验箱上完成: 用8255的PA口、PB口的低四位做输出口,控制十二个发光二极管亮灭,模拟十字路口交通灯管理。一般情况下正常显示,有急救车到达时,两个方向四个路口交通信号灯全红,以便让急救车通过。设急救车通过路口时间为10秒,急救车通过后,交通恢复正常。本实验用单次脉冲申请外部中断,表示有急救车通过。 (2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。 所用元器件:单片机AT89C51、可编程并口芯片8255A、按键BUTTON、发光二极管LED-GREEN(RED、BLUE)、8位锁存器74LS273或74LS373、3-8译码器74LS138、或非门74LS02、排阻或电阻RESPACK-8(RES) 、8位缓冲器74LS244 参考仿真电路图: 三、程序框图

四、实验连线(只连图中粗实线) 五、实验步骤 ①8255 PB3~PB0、PA7~PA0依次接发光二极管L1~L12。 ②编写程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮南北路口的红灯亮,东西路口方向通车。延时一段时间后东西路口的绿灯熄灭,黄灯开始闪耀。闪耀若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪耀。闪耀若干次后,再切换到东西路口方向,之后重复以上过程。 六、实验说明 中断服务程序的关键是: ①保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 ②必须在中断程序中设定是否允许中断重入,即设置EX0位。 本例中使用了INT0中断(P3.2),一般中断程序进入时应保护PSW、ACC以及中断程序使用但非其专用的寄存器。本例的中断程序保护了PSW、ACC等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。本例中没有涉及这种情况。 中断信号由单脉冲按钮SP产生。 七、思考 (1)试编程解决中断返回以后不能回到中断之前状态的问题。

单片机实验总结

程序由410出品,与老师的不大一样,此处省去1万字-----最终解释归410所有 1.试编写程序。统计片RAM 30H~50H单元中FFH的个数,并将统计结果存51H。 mov r0,#30h //把30h赋给R0 mov r1,#00h //把00h赋给R1 loop: cjne r0,#0ffh,next //把R0所指的地址里的数(地址30h中的数)与0ffh比较 inc r1 //若为0ffh则R1加1(计算0ffh的个数)next: inc r0 //若不一样则R0加1(即把R0里的地址加1,R0将指向下一个地址) cjne r0,#51h,loop //比较R0所存的地址与51h,若不等则跳回loop 继续执行 mov 51h,r1 //若相等(R0里的数就为51h,完成30h到50h 的计数)将R1里的值赋到地址51h里,即地址51h中存储着0ffh的个数 sjmp $ //等待 end 2、从片RAM 30H单元开始存放着一组无符号数,其个数存在21H单元中。试编写程序,找出其中最小的数,并将其存入20H单元中。 mov r0,#30h //把30h赋给R0

mov a,r0 //把R0所指30H中的数赋给a(a中就是地址30h中的无符号数) mov r1,21h //把21h中的数赋给R1 loop: inc r0 //R0加1(即R0将指向下一个地址) mov 30h,r0 //把R0所指地址的数给到地址30h中 cjne a,30h,chk //比较a中的数与地址30h中的数的大小,若a 中的数>30H中的数,则Cy=0;否则相反 chk: jc lop //判断Cy是否为1,若是,则执行下面程序,否则跳至lop 继续执行 mov a,r0 //把R0所指地址中的数给a,即把最小数赋给了a lop: djnz r1,loop //R1减一,程序跳至loop继续执行,循环直至R1减到0 mov 20h,a //把a中的数赋到地址20h中 end 3、设片外RAM 2000H单元中有一个8位二进制数,试编程将该数的低四位屏蔽掉,并送回原存储单元。 mov dptr,#2000h //将片外地址2000h给dptr movx a,dptr //将片外地址2000h中的数赋给a anl a,#0f0h //将a中的数与0f0h与下,屏蔽低四位的数 movx dptr,a //将屏蔽好的数送回到片外地址2000h中 end 4、试编写程序,求出片RAM20H单元中“1”的个数,并将结果存入21H单

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

单片机实验报告 (3)

单片机原理及接口技术 学院:光电信息科学与技术学院班级:——实验报告册 083-1 实验一系统认识实验 1.1 实验目的 1. 学习keil c51集成开发环境的操作。 2. 熟悉td-51系统板的结构和使用。 1.2实验仪器 pc 机一台,td-nmc+教学实验系统。 1.3实验内容 1. 编写实验程序,将00h—0fh共16个数写入单片机内部 ram 的30h—3fh空间。 2.编写实验程序,将00h到0fh共16个数写入单片机外部ram的1000h到100fh空间。 1.4 源程序 https://www.360docs.net/doc/828118604.html, 0000h mov r1,#30h mov r2, #10h mov a, #00h mov @r1, a inc r1 inc a djnz r2,loop sjmp $ end 2. org 0000h mov dptr, #1000h mov r2, #10h mov a, #00h movx @dptr, a inc dptr inc a djnz r2,loop sjmp $ end loop: loop: 1.5 实验步骤 1.创建 keil c51 应用程序 (1)运行 keil c51 软件,进入 keil c51 集成开发环境。 - 3 -(2)选择工具栏的 project 选项,弹出下拉菜单,选择 newproject 命令,建立一个新的μvision2 工程。选择工程目录并输入文件名 asm1 后,单击保存。 (3)工程建立完毕后,弹出器件选择窗口,选择 sst 公司的 sst89e554rc。(4)为工程添加程序文件。选择工具栏的 file 选项,在弹出的下拉菜单中选择 new 目录。 (5)输入程序,将 text1 保存成asm1.asm。 (6)将asm1.asm源程序添加到 asm1.uv2 工程中,构成一个完整的工程项目。 2.编译、链接程序文件(1)设置编译、链接环境 (2)点击编译、链接程序命令,此时会在 output window 信息输出窗口输出相关信息。 3.调试仿真程序 (1)将光标移到 sjmp $语句行,在此行设置断点。 (2)运行实验程序,当程序遇到断点后,停止运行,观察存储器中的内容,验证程序功能。 1.6 实验结果. 2. 4 实验二查表程序设计实验 2.1实验目的 学习查表程序的设计方法,熟悉 51 的指令系统。 2.2实验设备 pc 机一台,td-nmc+教学实验系统 2.3实验内容 1.通过查表的方法将 16 进制数转换为 ascii 码; 2.通过查表的方法实现y=x2,其中x为0—9的十进制数,以bcd码表示,结果仍以bcd 码形式输出。

单片机实验心得体会3篇

单片机实验心得体会一:单片机实验心得体会 时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。 在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。 这个学期,我们除了在课堂上学习理论知识,还在实验室做了7次实验。将所学知识运用到实践中,在实践中发现问题,强化理论知识。 现在,单片机课程已经结束,即将开始考试了,需要来好好的反思和回顾总结下了。 第一次是借点亮led灯来熟悉keil软件的使用和试验箱上器材。第一次实验体现了一个人对新事物的接受能力和敏感度。虽然之前做过许多种实验。但依旧发现自己存在一个很大的问题,对已懂的东西没耐心听下去,容易开小差;在听老师讲解软件使用时,思路容易停滞,然后就跟不上老师的步骤了,结果需要别人再次指导;对软件的功能没有太大的热情去研究探索,把一个个图标点开,进去看看。所以第一次试验相对失败。鉴于此,我自己在宿舍下载了软件,然后去熟悉它的各个功能,使自己熟练掌握。 在做实验中,第二个问题应该是准备不充分吧。一开始,由于没有课前准备的意识,每每都是到了实验室才开始编程,完成作业,导致每次时间都有些仓促。后来在老师的批评下,认识到这是个很大的问题:老师提前把任务告诉我们,就是希望我们私下把程序编好。于是我便在上机之前把程序编好,拷到u盘,这样上机时只需调试,解决出现的问题。这样就会节约出时间和同学讨论,换种思路,换种方法,把问题给吃透。发现、提出、分析、解决问题和实践能力是作为我们这个专业的基本素质。 三是我的依赖性很大,刚开始编程序时喜欢套用书上的语句,却对语句的理解不够。于是当程序出现问题时,不知道如何修改,眼前的程序都是一块一块的被拼凑整合起来的,没法知道哪里错了。但是编程是一件很严肃的事情,容不得半点错误。于是便只能狠下决心,坚持自己编写,即使套用时,也把每条语句弄懂。这也能激发了学习的兴趣。 还有一次实验是调出电脑里的程序,让它在试验箱上实现其功,让我们去体会别人编程的技巧和程序逻辑美感。看了之后,不得不说我目前的水平简直太小儿科了。还有连线也是个问题,

51单片机实验报告

实验一数据传送实验 实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV @R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 思考题: 1. 按照实验内容补全程序。 2. CPU 对8031内部RAM存储器有哪些寻址方式? 直接寻址,立即寻址,寄存器寻址,寄存器间接寻址。 3. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH ___0A0H~0AFH______________________ 内部RAM 50H~5FH___0A0H~0AFH_______________________ 实验二多字节十进制加法实验

实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。源程序清单:ORG 0000H RESET: AJMP MAIN ORG 0100H MAIN: MOV SP, #60H MOV R0, #31H MOV @R0, #22H DEC R0 MOV @R0, #33H MOV R1, #21H MOV @R1, #44H DEC R1 MOV @R1, #55H MOV R2, #02H ACALL DACN HERE: AJMP HERE DACN: CLR C DAL: MOV A, @R0 ADDC A, @R1 DA A MOV @R1, A INC R0 INC R1 DJNZ R2,DAL CLR A MOV ACC.0 , C RET 思考题: 1. 按照实验内容补全程序。 2. 加数单元、被加数单元和结果单元的地址和内容为? 3130H,2120H,6688H 3. 如何检查双字节相加的最高位溢出? 看psw.3 的溢出标志位ov=1 则溢出 4. 改变加数和被加数,测试程序的执行结果。 实验三数据排序实验

单片机实验程序(全)

2基本输入输出实验(蜂鸣器控制程序) /******************************************************* 名称:基本输入输出(I/O)程序 说明: ********************************************************/ #include //包含头文件 #define uint unsigned int //宏定义 #define uchar unsigned char sbit buzzer=P3^5; sbit Keyadd=P2^0; sbit Keydec=P2^1; sbit Keycom=P2^2; void Delay(uint z) { uint x; uchar y; for(x=z;x>0;x--) //延时 { for(y=250;y>0;y--); } } void main(void) { uchar voice; voice=3; while(1) { if(Keyadd==0) //按键被按下时为0 voice=1; if(Keydec==0) voice=2; if(Keycom==0) voice=3; if(voice==1) {buzzer=~buzzer; Delay(1); } else if(voice==2) {buzzer=~buzzer; Delay(20); } else buzzer=1; } }

3定时器中断实验 /******************************************************* 名称:实验三作业 说明: ********************************************************/ #include //包含头文件 #define uint unsigned int //宏定义 #define uchar unsigned char uchar counter; uchar voice; sbit buzzer=P3^5; sbit Keyadd=P2^0; sbit Keydec=P2^1; sbit Keycom=P2^2; sbit Keycan=P2^3; //----------------计算计数器初值-----------------// #define T0_TIME1 254 //定时时间us为单位 #define T0ReLoadL1 ((65536-(uint)(T0_TIME1*11.0592/12)) % 256) #define T0ReLoadH1 ((65536-(uint)(T0_TIME1*11.0592/12)) / 256) //----------------计算计数器初值-----------------// #define T0_TIME2 1400 //定时时间us为单位 #define T0ReLoadL2 ((65536-(uint)(T0_TIME2*11.0592/12)) % 256) #define T0ReLoadH2 ((65536-(uint)(T0_TIME2 *11.0592/12)) / 256) /********************************************************* 名称:主程序 说明: **********************************************************/ void main(void) { //-----------------------------初始化TIMER0 TMOD|=0x01; //定时器T0方式1 TH0 =T0ReLoadH1; //装载计数器初值 TL0 =T0ReLoadL1; TR0 =1; //启动Timer0 ET0 =1; //Timer0中断使能 EA =1; //总开关使能 //-----------------------------大循环 counter=0;

大学生单片机实习总结

大学生单片机实习总结 ,我们将为大家提供关于20XX年实习报告的信息,敬请期待! :xx :实习报告范文| 实习报告模板| 会计实习报告 | 大学生实习报告 | 顶岗实习报告 | 金工实习报告 | 毕业实习报告 | 土木工程实习报告 | 生产实习报告 |实习周记 | 3000字范文 大学生单片机实习总结 随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么可编程控制器的出现则是给现代工业控制测控领域带来了一次新的革命。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面。本学期我们就学习了单片机这门课程,感觉是有点难呢。也不知道整个学习过程是怎么过来得,可是时间不等人。 时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机实习课题也在一周内完成了。俗话说“好的开始是成功的一半”。说这次实习,我认为最重要的就是做好程序调试,认真的研究老师给的题目。其次,老师对实验的讲解要一丝

不苟的去听去想,因为只有都明白了,做起产品就会事半功倍,如果没弄明白,就迷迷糊糊的去做,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。 虽然这次的实习算起来在实验室的时间只有几天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。 当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。 通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

单片机实验报告

本科生实验报告 实验课程单片机原理及应用 学院名称核技术与自动化工程学院 专业名称电气工程及其自动化 学生姓名 学生学号 指导教师任家富 实验地点6C902 实验成绩 二〇一五年三月二〇一五年六月 单片机最小系统设计及应用 摘要 目前,单片机以其高可靠性,在工业控制系统、数据采集系统、智能化仪器仪表等领域得到极其广泛的应用。因此对于在校的大学生熟练的掌握和使用单片机是具有深远的意义。通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用,本次设计课程采用STC89C52单片机和ADC0804,LED显示,键盘,RS232等设计一个单片机开发板系统。进行了LED显示程序设计,键盘程序设计,RS232通信程序设计等。实现了单片机的各个程序的各个功能。对仿真软件keil的应用提升了一个新的高度。单片机体积小、成本低、使用方便,所以被广

泛地应用于仪器仪表、现场数据的采集和控制。通过本实验的学习,可以让学生掌握单片机原理、接口技术及自动控制技术,并能设计一些小型的、综合性的控制系统,以达到真正对单片机应用的理解。 关键词:单片机;智能;最小系统;ADC;RS232;显示;STC89C52 第1章概述 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。单片机采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 它最早是被用在工业控制领域,由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。 第2章实验内容 2.1单片机集成开发环境应用

51单片机20个实验,代码详细

第一章单片机系统板说明 一、概述 单片机实验开发系统是一种多功能、高配置、高品质的MCS-51单片机教学与开发设备。适用于大学本科单片机教学、课程设计和毕业设计以及电子设计比赛。 该系统采用模块化设计思想,减小了系统面积,同时增加了可靠性,使得单片机实验开发系统能满足从简单的数字电路实验到复杂的数字系统设计实验,并能一直延伸到综合电子设计等创新性实验项目。该系统采用集成稳压电源供电,使电源系统的稳定性大大提高,同时又具备完备的保护措施。为适应市场上多种单片机器件的应用,该系统采用“单片机板+外围扩展板”结构,通过更换不同外围扩展板,可实验不同的单片机功能,适应了各院校不同的教学需求。 二、单片机板简介 本实验系统因为自带了MCS-51单片机系统,因此没有配置其他单片机板,但可以根据教学需要随时配置。以单片机板为母板,并且有I/O接口引出,可以很方便的完成所有实验。因此构成单片机实验系统。 1、主要技术参数 (1)MSC-51单片机板 板上配有ATMEL公司的STC89C51芯片。 STC89C51资源:32个I/O口;封装DIP40。 STC89C51开发软件:KEIL C51。 2、MSC-51单片机结构 (1)单片机板中央放置一块可插拔的DIP封装的STC89C51芯片。 (2)单片机板左上侧有一个串口,用于下载程序。 (3)单片机板的四周是所有I/O引脚的插孔,旁边标有I/0引脚的脚引。 (4)单片机板与各个模块配合使用时,可形成—个完整的实验系统。 三、母板简介 主要技术参数 (1)实验系统电源 实验系统内置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的稳定性。 主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板

单片机实验1

学号序号35 单片机原理与接口技术 实验报告 ) 实验项目序号实验一 实验项目名称跑马灯实验

姓名赵吉婷专业电子信息工程班级电信1班完成时间 一、实验目的 1、$ 2、熟悉HNIST-2型单片机系统相关硬件电路,程序下载方法; 3、掌握采用汇编语言与C语言开发单片机系统的程序结构; 4、掌握51系列单片机通用I/O口的使用。 二、实验前准备 1、完成作业3; 2、根据实验内容编写好相关程序,并进行Proteus仿真。 三、实验内容 实验内容为3项,其中第1、2项必做。 1、基本的流水灯。 根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。每点亮一个LED,采用软件延时一段时间。 2、简单键控的流水灯。 , 不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。松手后,又按正序点亮流水灯。

3、键控的流水灯。 上电,不点亮LED,按一下K1键,按正序点亮流水灯。按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。 四、实验原理图 如图所示。 图跑马灯实验电路原理图 电路原理图如图,AT89S52的~作为输出连接8个发光二极管,输出低电平0时对应发光二极管发光;由于发光二极管的导通电压为,所以HNIST-2型实验装

置在电源与二极管之间加一个阻值为1K限流电阻保护二极管。 AT89S52的、作为输入连接2个按键K1、K2,若检测到=0,则说明K1键按下。 五、软件设计思想 . 1、基本的流水灯 软件延时采用例题程序delay( j ),可调整延时时间。 2、简单键控的流水灯。 由于是按下键不松手,键值一直保留,所以判断=0即是按下K1,采用如例题所示的while= =0)或while(P2= =0xfe)的模式。 3、键控的流水灯 由于是按一下键后马上松手,所以要设置一个变量b保留按键键值,要在延时程序中检测是否按键,当按键后立即设置b的值。 六、实验过程: 编写延时程序: ORG 00H JMP MAIN ORG 30H | MAIN: MOV A,#0FFH CLR C MOVR2,#08H ;循环八次 LOOP:

相关文档
最新文档