单片机实验指导书(源代码)
- 格式:rtf
- 大小:4.32 MB
- 文档页数:181
WAVE6000软件的使用运行厂家提供的光盘,点击WAVE6000安装,安装好后可直接双击快捷方式图标,启动程序。
启动后的界面大致如图1所示。
图1 启动界面详细的使用说明请看光盘中的文件,这里只说明为了对51系列单片机进行纯软件仿真时要用到的一些项目和开始使用的几个必须步骤。
1、启动软件之后,根据需要设置仿真器:点击菜单【仿真器】︱【仿真器设置】(点击菜单行中的【仿真器】项,然后在其下拉菜单中点击【仿真器设置】项,以后不再说明)出现如图2所示对话框。
图2因为要使用纯软件仿真,所以要选中使用伟福软件模拟器,晶体频率可以根据需要设置;其他按照图示选择即可。
点击目标文件页,出现如图3所示对话框。
图3按图示设置即可。
点击语言页,出现对话框如图4所示。
图4按照图中设置即可,注意编译器选择项一定要选择伟福汇编器,其他项不用改变。
由于是纯软件仿真,不用设置通信设置项。
设置完成后,点击按钮【好】,结束设置。
以后的事情就是建立源程序、编译、调试。
2、建立源程序点击菜单【文件】︱【新建文件】,出现一个文件窗口,形如图5所示。
默认文件名称是NONAME1,你现在就可以在此窗口中输入你的源程序了。
比如下面的一个小程序:MOV 30H,﹟5AHMOV DPTR,﹟0128HMOV A,30HMOVX @DPTR,ASJMP $这个小程序的功能是将片内RAM中30H单元的一字节数送到片外RAM中0128H 单元。
以此为例,讲解利用伟福纯软件仿真的过程。
首先输入源程序,修改文件名,点击菜单【文件】︱【另存为】,出现对话框如图6所示。
图6输入文件名(例如TST1.ASM),点击保存即可。
注意,文件扩展名一定要输入,汇编语言的扩展名﹡.asm ,不要忽视。
文件改名是要确定其扩展名,以便据此判断文件类型。
现在的源程序字符出现彩色,以表示不同的文字属性,如图7所示。
图73、汇编点击菜单【项目】︱【编译】,就会自动调用伟福汇编器对源程序进行汇编,这时在信息窗口会显示汇编相关信息,如图8所示。
单片机原理及应用实验指导书实验前准备1.建立新程序选择菜单[文件| 新建文件]功能出现一个文件名为NONAME1 的源程序窗口,在此窗口中输入以下程序ORG 0 MOV A ,#0 MOV P1,#0 LOOP:INC P1 ACALL Delay SJMP LOOP Delay:MOV R2,#3 DPL2:MOV R1,#0 DPL1:MOV R0,#0 DPL:DJNZ R0,DPL DJNZ R1,DPL1 DJNZ R2,DPL2 RETEND输出程序后的窗口如图,现在要做的是将此文件存盘。
2.保存程序选择菜单[文件| 保存文件]或[文件| 另存为]功能给出文件所要保存的位置,例如:D:\My programm 文件夹,再给出文件名MY1.ASM 。
保存文件。
文件保存后,程序窗口上文件名变成了:D:\MY PROGRAMM\MY1.ASM3.建立新的项目选择菜单[文件| 新建项目]功能,新建项目会自动分三步走:A ) 加入模块文件。
在加入模块文件的对话框中选择刚才保存的文件MY1.ASM ,按打开键。
如果是多模块项目,可以同时选择多个文件再打开。
B ) 加入包含文件。
在加入包含文件对话框中,选择所要加入的包含文件(可多选)。
如果没有包含文件,按取消键。
C ) 保存项目。
在保存项目对话框中输入项目名称。
MY1 无须加后缀。
软件会自动将后缀设成“.PRJ ”。
按保存键将项目存在与你的源程序相同的文件夹下。
项目保存好后,如果项目是打开的,可以看到项目中的“模块文件”已有一个模块“MY1.ASM ”,如果项目窗口没有打开,可以选择菜单[窗口| 项目窗口]功能来打开。
可以通过仿真器设置快捷键或双击项目窗口第一行选择仿真器和要仿真的单片机。
4.设置项目选择菜单[设置| 仿真器设置]功能或按“仿真器设置”快捷图标或双击项目窗口的第一行来打开“仿真器设置”对话框。
在“仿真器”栏中,选择仿真器类型和配置的仿真头以及所要仿真的单片机。
北京化工大学信息科学与技术学院单片机原理及应用实验指导书郭青2016年4月单片机实验指导书一、实验系统简介1.实验采用天祥电子公司的GTX TX-1D单片机实验箱。
2.实验板上单片机采用的是STC公司的STC89C52单片机作为主控模块,完全兼容AT89S52单片机,并配置有多种实验模块,可以通过连线将各模块有机结合,进行综合实验。
3.STC89C52可以在线编程,不需要频繁插拔,通过USB接口与PC机相连。
4.程序编译采用Keil C仿真编译系统,可进行编程以及程序编译,生成.OBJ以及.HEX目标文件5.编译完成的.HEX文件通过USB接口写入到实验板上的单片机中,即编程,并直接运行。
6.编程软件的文件名STC-isp V6.82E。
二、实验简要步骤1、启动运行环境正确连接实验系统,确认各个开关处于正确位置,打开实验机电源。
2、编程运行Keil C软件,建立工程,选择器件为STC89C52(如库中无STC MCU,可选择AT89C52),编写源程序,并添加到工程中,然后进行编译。
3、进行实验运行STC-ISP V6.82E软件,点击选择单片机芯片STC89C516RD+,点击打开程序文件,选择欲加载的.HEX文件,点击下载,将程序写入到单片机中,当写入完成后即自动运行。
4、观察并记录实验结果。
如现象不正确,返回第2步,修改源程序。
三、用户手册,电路原理图,工具软件等百度云盘: /s/1skFeFBv密码: 3xfk实验一、读程序存储器及简单I/O实验一、实验要求:1、P1口作输出口,接8只发光二极管,程序存储器的0500H~0509H单元依次存放着数字0~9的ASCII码,编程将其依次读出写入到内部RAM的30H~39H单元,并同时送P1口输出显示。
2、P1口作输出口,接8只发光二极管,编写程序,使发光二极管循环点亮。
二、实验目的1、熟悉实验系统的使用及调试方法。
2、学习80C51汇编语言程序编写。
实验1 红黄绿灯控制1.实验目的(1)学习Keil C51集成编译软件的使用和调试程序方法。
(2)学习将用户程序下载到应用系统的方法。
(3)掌握STC89C52单片机的I/O端口的控制和使用方法。
2.实验内容(1)编写程序要求:利用单片机的P1.0, P1.1, P1.2控制3个LED灯,模仿控制交通灯(红灯亮4秒,黄灯亮2秒,,黄灯和绿灯同时亮1秒,绿灯亮4秒,如此循环)。
3.实验电路见图1.24.实验参考程序(1)程序流程图(2)汇编语言参考程序ORG 0000HSJMP MAINORG 0030HMAIN: CLR P1.2 ;红灯亮4SSETB P1.0 ;绿灯灭SETB P1.1 ;黄灯灭MOV R0,#40ACALL DELAY;自己编写DELAY: MOV A,R0 ;延时程序,R0=10,延时1SMOV R5,ADELAY3: MOV R6,#XXH ;XX的数值自己计算填写DELAY2: MOV R7,#XXH ;XX的数值自己计算填写DELAY1: DJNZ R7,DELAY1DJNZ R7,DELAY1DJNZ R7,DELAY1RETEND5.实验步骤(1)根据实验原理图编写程序,用“Keil uVision4”编译软件进行编译,如未通过,则修改程序,直至通过。
(2)用STC-ISP.EXE软件将所编写程序生成的“HEX”文件下载到实验板STC89C52芯片中(3)运行程序,观察实验板上的红,黄,绿三个LED灯的亮灭次序和时间是否符合实验内容要求,如果不符合要求,改写程序,按照步骤(1)开始重新做实验,直至成功。
6.思考题(1)怎样计算延时子程序的延时时间?(2)如何计算与LED连接的电阻阻值?(3)如何用89C52单片机的I/O口控制继电器?画出电路原理图。
(4)根据实验板原理图,编写一段8个LED循环闪烁的流水灯程序。
7.实验报告要求(1)画出本实验相关的原理图。
(2)回答思考题中的题目。
单片机实验指导书张彦编机电职业技术学院机电系单片机实验室(2008年6月编)伟福仿真器系统概述本仿真器系统由仿真主机+仿真头、MULT1A用户板、实验板、开关电源等组成。
本系统的特点是:1.主机+仿真头的组合,通过更换不同型号的仿真头即可对各种不同类型的单片机进行仿真,是一种灵活的多CPU仿真系统。
采用主机+POD组合的方式,更换POD,可以对各种CPU进行仿真。
本仿真器主机型号为E2000/S,仿真头型号为POD8X5X(可仿真51系列8X5X单片机)。
2.双平台,具有DOS版本和WINDOWS版本,后者功能强大,中/英文界面任选,用户源程序的大小不再有任何限制,支持ASM,c,PLM语言混合编程,具有项目管理功能,为用户的资源共享、课题重组提供强有力的手段。
支持点屏显示,用鼠标左键点一下源程序中的某一变量,即可显示该变量的数值。
有丰富的窗口显示方式,多方位,动态地显示仿真的各种过程,使用极为便利。
本操作系统一经推出,立即被广大用户所喜爱。
3.双工作模式1.软件模拟仿真(不要仿真器也能模拟仿真)。
2.硬件仿真。
4.双CPU结构,100%不占用户资源。
全空间硬件断点,不受任何条件限制,支持地址、数据、外部信号、事件断点、支持实时断点计数、软件运行时间统计。
5.双集成环境编辑、编译、下载、调试全部集中在一个环境下。
多种仿真器,多类CPU仿真全部集成在一个环境下。
可仿真51系列,196系列,PIC系列,飞利蒲公司的552、LPC764、DALLAS320,华邦438等51增强型CPU。
为了跟上形势,现在很多工程师需要面对和掌握不同的项目管理器、编辑器、编译器。
他们由不同的厂家开发,相互不兼容,使用不同的界面,学习使用都很吃力。
伟福WINDOWS调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编Make、Build 和调试工具并提供千个与第三方编译器的接口。
由于风格统一,大大节省了您的精力和时间。
单片机实验实验说明:实验一和二做一次实验三和四做一次实验五和六分别做一次实验一 P1口实验一一、实验目的:1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验设备:EL-MUT-II型实验箱,8051CPU板三、实验内容:1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2.P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。
四、实验原理:P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。
8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。
可以用第二个实验做一下实验。
先按要求编好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。
再来看一下延时程序的实现。
现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。
在系统时间允许的情况下可以采用后一种方法。
本实验系统晶振为6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us。
现要写一个延时0.1s的程序,可大致写出如下:MOV R7,#X (1)DEL1:MOV R6,#200 (2)DEL2:DJNZ R6,DEL2 (3)DJNZ R7,DEL1 (4)上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求出X值:1÷0.256+X(1÷0.256+200×1÷0.256+1÷0.256)=0.1×10⁶指令(1)指令(2)指令(3)指令(4)所需时间所需时间所需时间所需时间X=(0.1××10⁶-1÷0.256)/(1÷0.256+200×1÷0.256+1÷0.256)=127D=7FH经计算得X=127。
目录实验一单片机仿真开发系统的使用 (2)1.1 Keil C51 集成开发环境介绍 (2)1.2 用Proteus仿真软件 (6)1.3 实现单片机最小系统的简单应用。
(8)实验二显示及驱动电路设计用 (10)实验三简单输入/输出实验 (12)实验四外部中断的运用 (14)实验五单片机内部定时/计数器实验 (15)实验六串行口通信设计 (17)实验七直流电机控制 (18)实验八步进马达控制 (19)实验一单片机仿真开发系统的使用1.1 Keil C51 集成开发环境介绍①、运行keil C51编辑软件,软件界面如图1-1所示②、建立一个新的工程项目单击Project菜单,在弹出的下拉菜单中选中New Project选项③、保存工程项目a、选择要保存的文件路径,输入工程项目文件的名称,如保存的路径为C51文件夹,工程项目的名称为C51,如图所示,单击保存b、为工程项目选择单片机型号在弹出的对话框中选择需要的单片机型号,如图所示,这里选择51核单片机中使用较多的89S51,选定型号后,单击确定,出现如图所示的开发平台界面④、新建源程序文件在下图中单击“File”菜单,选择下拉菜单中的New选项,新建文件后得到如图的界面:⑤、保存源程序文件单击“File”菜单,选择下拉菜单中的Save选项,在弹出的对话框中选择保存的路径及源程序的名称,如图所示。
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时必须键程序录入区域入正确的.扩展名。
注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。
然后,单击“保存”按钮⑥、为工程项目添加源程序文件在编辑界面中,单击“Target”前面的“+”,再在“Source Group”上单击右键,得到如图所示的对话框,选择“Add File to Group’Source Group 1’”,弹出如图所示的对话框,选中要添加的源程序文件,单击“Add”,得到如图所示的界面,同时,在“Source Group 1”文件夹中多了一个添加的“Text1.c”文件。
目录实验一P1口输入、输出实验 (2)实验二继电器控制实验 (8)实验三音频控制实验 (11)实验四程序调试 (14)实验五5LED静态串行显示实验 (16)实验六6LED动态扫描显示实验 (21)实验七查询式键盘实验 (28)实验八阵列式键盘实验 (36)实验九计数器实验 (47)实验十定时器实验 (49)实验十一外部中断实验 (54)实验一P1口输入、输出实验一、实验目的1、学习P1口的使用方法2、学习延时子程序的编写和使用二、实验说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验内容及步骤实验(一):用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统1模块。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
实验(二):用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
1、用导线分别连接P1.0、P1.1到两个拨断开关,P1.2、P1.3到两个发光二极管。
2、添加 P1_B.ASM源程序,编译无误后,运行程序,拨动拨断开关,观察发光二极管的亮灭情况。
向上拨为熄灭,向下拨为点亮。
四、流程图及源程序1.流程图2.源程序:(一)实验一ORG 0000HLJMP STARTORG 0030HSTART: MOV A, #0FEHMOV R2,#8OUTPUT: MOV P1,ARL AACALL DELAYDJNZ R2,OUTPUTLJMP STARTDELAY: MOV R6,#0MOV R7,#0DELAYLOOP:;延时程序DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOPRETEND(二)实验二KEYLEFT BIT P1.0 ;定义KEYRIGHT BIT P1.1LEDLEFT BIT P1.2LEDRIGHT BIT P1.3ORG 0000HLJMP STARTORG 0030HSTART: SETB KEYLEFT ;欲读先置一SETB KEYRIGHTLOOP: MOV C,KEYLEFTMOV LEDLEFT,CMOV C,KEYRIGHTMOV LEDRIGHT,CLJMP LOOPEND五、思考题(1)对于本实验延时子程序Delay: MOV R6,0MOV R7, 0DelayLoop:DJNZ R6,DelayLoopDJNZ R7,DelayLoopRET如使用12MHz晶振,粗略计算此程序的执行时间为多少?六、电路图实验二继电器控制实验一、实验目的1、学习I/O端口的使用方法2、掌握继电器的控制的基本方法3、了解用弱电控制强电的方法二、实验说明现代自动控制设备中,都存在一个电子电路的互相连接问题,一方面要使电子电路的控制信号能控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路和电气电路提供良好的电气隔离,以保护电子电路和人身的安全。
单片机实验构成目录
基础实验
1 keil 集成开发环境练习
2 汇编指令实验
3 端口控制实验
4 定时器实验
5 流水灯实验
6 交通灯实验
7 数码管实验
8 数码管扫描实验
9 键盘扫描实验
10 外部中断与计数器实验
11 端口扩展实验
12 扩展显示实验
13 数字时钟设计(秒表设计)
14 计算器设计
15 D/A 转换实验
16 A/D 转换实验
17 并行通信实验
18 串口通信实验
19 多机通信实验
20 存储器扩展实验
扩展实验
21 C 语言程序实验
22 发声器实验
23 红外探测实验
24 红外数据通信实验
25 无线通信协议的构建
26 步进电机驱动实验
27 直流电机驱动实验
28 LCD 显示实验
29 菜单系统设计
30 PWM 波形调制
31 频率测量
32 简易数字万用表设计
33 点阵汉字显示设计
34 Pc 键盘实验
35 Pc 鼠标实验
36 无线键盘设计 实验二 汇编指令实验 一:汇编示例程序源代码: 1:汇编指令实验汇编语言示例程序1
/********************************Copyright(c)************************************/ ;**
;** 西南科技大学计算机学院 ;** ;** http://www.cs.swust.edu.cn ;** ;** 日期: 2005.5.17 ;** 描述: 汇编指令实验示例程序,已运行调试通过,仅提供参考。 ;** 实验内容:将两个寄存器中置初值,分别将两个寄存器的数据执行加或减操作,如果结 ;** 果数据不等于 0x8f,将数据保存在数据存储器中 0x40 地址中,如果等于 0x8f, ;** 保存在数据存储器中 0x50地址中 ;** 适用机型:AT89S52 ;**
*********************************************************************************/ org 0000h
jmp start ; 复位中断,直接进入程序执行 org 0030h start: ; 主程序段 mov sp,#30h ; 堆栈设置,必须正确设置堆栈,否则不能保证子程序调 用的正确返回 mov r1,#48h ; 置初值 mov r2,#67h call addition ; 调用加运算子程序,也可以调用如下减的子程序或用户 另行添加其它运算子程序 lcall compare ; 调用数据比较子程序,并确定程序转向 loop: nop ; 等待程序运行完成,控制 PC指针, jmp loop ;********************************************************************************* 加操作子程序 功能: 将 R1,R2 数据相加,结果保存在A中 ;********************************************************************************* addition:
mov a, r1 add a, r2 ret ;********************************************************************************* 减操作子程序 功能: 将 R1,R2 数据相减,结果保存在A中 ;********************************************************************************* subtract: mov a,r1 clr c subb a,r2 ret ;********************************************************************************* 数据比较子程序 功能:将 a 的数据与 0x8f 比较,如果等于,保存在 50h 的地址中,否则将数据保存在 40h 的地 址中
;********************************************************************************* compare: cjne a, #8fh, notequ ; 数据比较 mov r0,#40h jmp save ; 数据保存 notequ: mov r0,#50h save: mov @r0,a ret end ; 程序结束 ;***********************************end the file*************************************
2 :汇编指令实验汇编语言示例程序2
/************************************Copyright(c)**********************************/ /** ;** 西南科技大学计算机学院 ;** ;** http://www.cs.swust.edu.cn ;** ;** 日期: 2005.5.17 ;** 描述: 汇编指令实验示例程序,已运行调试通过,仅提供参考。 ;** 实验内容:将数据存储器 0x40--0x50 地址随意赋值,然后利用汇编程序将数据从小到大 ;** 重新排列,利用 DEBUG 调试,在地址栏中输入D:0X40察看数据情况 ;** 适用机型:AT89S52 ;** *********************************************************************************/ org 0000h jmp start ; 复位中断,直接进入程序执行 org 0030h start: ; 主程序段 mov sp,#30h ; 堆栈设置,必须正确设置堆栈,否则不能保证子程序调用的 正确返回 lcall initdata ; 置初值 lcall order ; 调用排序运算子程序,将 0x40---0x50 地址数据进行排序
loop:
nop ; 等待程序运行完成,控制 PC 指针, jmp loop ;****************************************************************************** 数据初始化子程序 功能: 对内部RAM区置初值。 ;****************************************************************************** initdata: mov a,#7fh ; 随机基数,修改该数据,得到不同的数据 mov r0,#40h ; 存数据地址 save: add a,r0 ; 随意产生一个数 mov @r0,a ; 保存加运算后的随机数据 inc r0 cjne r0,#51h,save ; 判断数据是否初始化完成 ret ;****************************************************************************** ;RAM 中数据排序子程序子程序 功能: 对内部RAM区数据排序。 原理: 冒泡排序
;****************************************************************************** order: mov r0,#40h ; 取第一个数据地址 rol2: ; 第二个循环体 mov a,r0 mov r1,a mov a,@r0 ; 取数据 mov r2,a ; 取第一个数据,保存在 R2中 rol1: ; 第一个循环体 inc r1 ; 将 R0 加 1 放入 r1 中 mov a,r2 clr c subb a,@r1 ; 数据比较,通过做数据相减判断进位位的 值,确定数据大小 jnc exchange ; 数据交换 next: ; 数据继续处理 cjne r1,#50h,rol1 ; 第一个循环体比较完成判断 mov a,r2 mov @r0,a ; 保存更换后的数据 inc r0 cjne r0,#50h,rol2 ; 数据比较完成判断 jmp exit