单片机原理实验报告

更新时间:2023-08-29 16:35:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机原理实验报告

班级:仪表092

学号:099064064

姓名:颜志文

指导老师:丁易新

实验01 Keil μVision编程平台与汇编指令练习

一、实验器材

[1] 微型计算机

[2] 单片机硬件开发实验装置 [3] 实验装置下载线

二、实验目的

1. 熟悉uVision3集成调试环境

2. 熟悉MCS-51寻址方式及传送类指令

三、实验要求与任务

传送类指令练习。单步逐条向下执行指令。每执行一条指令,都要分析一下指令源操作数、目的操作数在存储空间的哪个单元,看一看你所理解的指令执行结果与实际运行结果是否符合,并且把每条指令执行后目的操作数的值记录下来。

1. 直接寻址只能在DATA 区和SFR 中进行,如下例 ORG 0000H LJMP START

ORG 0100H START:

MOV MOV MOV MOV

; 此处加入RAM的初始化程序(见下文)

A, 03H ; 把地址03H 中的数移入累加器

43H, 22H ; 把地址22H 中的数移入地址43H 中 02H, C ; 把Cy中的数移入位地址02H 中 42H, #18H ; 把立即数18 移入地址42H 中

MOV 09H, P1 ; 把端口1中的数移入地址09H 中 SJMP $

END

2.间接寻址要使用DPTR,PC ,R0, R1 寄存器作为指针访问各存储器。可访问的空间为CODE、IDATA、XDATA存储区,对DATA 存储区也可进行间接寻址。只能用直接寻址方式对位地址进行寻址。

①XDATA 区寻址:

ORG 0000H LJMP START

ORG 0100H START:

; 此处加入RAM的初始化程序(见下文)

MOV DPTR, #3048H ; DPTR 指向外部存储区

MOVX A, @DPTR ; 读入外部存储区地址3048H 中的数 INC DPTR ; 指针加一

MOV A, #26H ; 立即数26H 写入A 中

MOVX @DPTR, A ; 将26H 写入外部存储区地址3049H 中 MOV R0, #87H ; R0 指向外部存储区地址87H

MOVX A, @R0 ; 将外部存储区地址87H 中的数读入累加器中

SJMP $ END

②CODE区寻址:

查CODE区的平方表:

ORG 0000H LJMP START ORG 0100H

START:

MOV DPTR, #TABLE_BASE ; DPTR 指向表首地址

MOV A, #5 ; 把偏移量(立即数5)装入累加器中

MOVC A, @A+DPTR ; 从表中读出数据到累加器中(5的平方) SJMP $ TABLE_BASE:

DB 0,1,4,9,16,25,36 ; 平方表 END

四、实验步骤: Ⅰ 创建项目

⒈ 第一次使用,首先为我们编写的实验程序在D盘上新建一个文件夹D:\单片机实验; ⒉ 启动keil uVision3,新建一个项目文件并从器件库中选择一个器件,操作步骤如下: ⑴启动keil uVision3;

⑵新建一个项目文件:从菜单Project中选择New Project。 ①选择保存路径(至D:\单片机实验) ②输入项目文件名 (例:shiyan) ③点击保存 ⑶选择CPU:

弹出对话框Select Device for Target,为项目选择CPU。我们选择Atmel下的AT89C51。 弹出对话框,询问是否添加标准的启动代码到你的项目,不理会,点击NO。

Ⅱ新建一个源文件 从菜单File选择New来新建一个源文件。

在text1编辑窗口中输入程序。把程序保存在D:\单片机实验。由于是汇编程序,输入文件名时一定输入扩展名“.asm”。例:shiyan.asm。

Ⅲ 将你的源文件加入到你的项目中

⒈ 在你的Project Workspace窗口中点击Target 1前“+”,展开Suorce Group 1; ⒉ 右击Suorce Group 1,出现菜单,选择Add files to Group “Suorce Group 1”选项; ⒊ 弹出对话框。①选择你刚刚生成的文件。例:shiyan.asm。

②文件类型选择 asm source file ③点击Add后关闭对话框。

Ⅳ 编译(或汇编)你的源程序

⒈ 点击菜单Project下Options for Target弹出对话框Options for Target target1 。 Xtal:定义CPU时钟,12MHz。

下面依次是编译的存储模式、程序空间大小等设置,均使用默认值即可。

若要生成下载文件(.hex文件),点击Output选项,选中Create Hex Files。

⒉ 点击菜单Project下Build Target

即可编译(或汇编)你的源程序(留意一下,在工具栏上可找到相应快捷按钮)。

在下面的输出窗口Output Window可看到编译(汇编)的结果,应该没有错误才可继续下面实验。否则修改你的源程序,直到没有错误为止。

Ⅴ 调试你的程序

点击菜单Debug下Start/Stop Debug Session进入调试模式。

你现在就可以采用连续运行、停止、指令单步、函数单步、运行到光标处行等命令调试你的程序(这些命令在Debug下Run、Stop Running、Step、Step over,Run to Cursor line。也可利用快捷按钮)

你也可以设置断点后,连续执行程序进行调试。

如程序运行到中间想从头再来,只要按

RST按钮即可常用调试快捷按钮

符号

Rst

说明

复位

Run 连续运行

Stop Running 停止

Run to Cursor line 运行到光标

处行

Start/Stop Debug Session 调试模式/ 编辑模式 切换

Step into Step over 指令单步

函数单步

Ⅵ 存储器、寄存器的查看、修改

在调试程序时,经常需要查看存储器内容,你可以查看8051内的4个存储器逻辑空间的任一

个。

在调试模式下,依次点击View,Memory Window,你可以看到包含4个存储器空间的窗口,你在第一个存储器空间的Address栏内输入C:0,即可看到从0000H开始的一段程序存储内容;你也可以在其它Address栏内分别填入X:0、D:0、I:0就可以查看外部数据存储器空间、直接寻址的片内存储空间(包括片内00-7FH的RAM,及80H-0FFH的SFR)、间接寻址的片内存储空间(包括片内00-7FH的RAM,及8032的80H-0FFH的数据RAM)。

如要修改Memory Window内存储单元内容,可用鼠标右键点击选定存储单元,根据提示即可修改。

在Project Workspace窗口,你还可以看到8051的所有寄存器。

如要查看单片机的外围部件,像端口P0-P3,定时器T0、T1等,可点击Peripherals。

实验02 二进制数转换成十进制数实验

一、实验器材

[1] 微型计算机

[2] 单片机硬件开发实验装置 [3] 实验装置下载线

二、实验目的

1. 熟悉uVision3集成调试环境

2.学习掌握51单片机的汇编语言程序设计。

三、实验要求与任务

将RAM地址61H,60H的16进制数(高位61H,低位60H),转换成十进制数,结果送到44H、43H、42H、41H、40H(最高位44H,低位在40H)。

程序思路:数据-10000,够减X次,则万位为X;差值-1000,够减Y次,则千位为Y;差值-100,够减Z次,则百位为Z;差值-10,够减U次,则十位为U;个位为差值。

四、实验步骤:

实验步骤同实验01 实验程序如下: ORG 0000 LJMP B16TD5

B16TD5: MOV 44H,#0FFH MOV 62H,60H MOV 63H,61H B16TD5_1:INC 44H MOV A,62H CLR C

SUBB A,#10H ;十进制10000转换为16进制数2710H

MOV 62H,A MOV A,63H MOV 63H,A JNC B16TD5_1

SUBB A,#27H

ADD A,#10H

MOV 62H,A MOV A,63H MOV 63H,A MOV 43H,#0FFH

ADDC A,#27H

B16TD5_2:INC 43H MOV A,62H CLR C

SUBB A,#0E8H ;十进制1000转换为16进制数3E8H

MOV 62H,A MOV A,63H MOV 63H,A JNC B16TD5_2

SUBB A,#3

MOV A,62H ADD A,#0E8H

MOV 62H,A MOV A,63H MOV 63H,A

ADDC A,#3 MOV 42H,#0FFH B16TD5_3:INC 42H MOV A,62H CLR C

SUBB A,#64H ;十进制100转换为16进制数64H

MOV 62H,A MOV A,63H MOV 63H,A JNC B16TD5_3

SUBB A,#00

MOV A,62H ADD A,#64H

MOV 41H,#0FFH B16TD5_4:INC 41H

MOV 62H,A MOV A,63H MOV 63H,A

ADDC A,#00

CLR C SUBB A,#10

MOV 62H,A JNC B16TD5_4

MOV A,62H ADD A,#10

MOV 40H,A HERE:SJMP HERE END

实验03 流水灯实验

一、实验器材

[1] 微型计算机

[2] 单片机硬件开发实验装置 [3] 实验装置下载线

二、实验目的

1. 熟悉uVision3集成调试环境

2.学习掌握51单片机的I/O端口及编程。

三、实验电路:

图1-3 8位流水灯显示电路

四、实验要求与任务

1. 设计节日流水灯。8051单片机P0口驱动流水灯:输出“1”时灯灭,“0”时灯亮。流水灯效果如下图2-1所示。图中

表示灯灭,

流水灯效果在1-8

状态中循环。

LD0

……

LD7

LD0

……

LD7

1

1

2

2

3

3 4

4 5

5

6

6 7

7

8

8 9

9

10

2-1

流水灯

1

11

12 13

14 15

16 17

18

2-2

流水灯

2

2. 设计节日流水灯。

8051单片机

P0口驱动流水灯:输出“

1”时灯灭,

“0

”时灯亮。流水灯效果如上图

2-2

表示灯灭,流水灯效果在1-16

状态中循环。

五、实验步骤:

1.

系统各跳线器处在初始设置状态(参见附录)(

J1的

1,2处

8只短路帽打在左边,

3,4的

5只短路帽打在右边)

,MCU

的JD13

连接到八位逻辑电平显示模块的JD30

。 2. 程序输入、编译等实验步骤同实验01。 3.程序下载编程。

系统各跳线器处在初始设置状态(参见附录)(JT40打在左边,JD18打在右边),J2的P3.0,P3.1打在右边。

打开STC-ISP V397软件。

⑴ 步骤一:选择单片机芯片型号STC89C52RC ⑵ 步骤二:打开hex文件

⑶ 步骤三:选择COM口,与设备管理器(我的电脑,点击鼠标右键,选择设备管理器)中端口一致。

⑷ 步骤四:设置为12T/单倍速 ⑸ 步骤五:Download/下载。

关学习机电源→握手接线→打开学习机电源 4.程序验证。

流水灯一 ORG 0000H

LJMP MAIN MAIN:

MOV R7,#01H MAIN_LP:

MOV A,R7 MOV P0,A

LCALL DELAY RR A

MOV R7,A JMP MAIN_LP DELAY:

MOV R6,#0AH DL1: MOV R0,#0C8H DL: MOV R1,#0FFH DL6: DJNZ R1,DL6 DJNZ R0,DL DJNZ R6,DL1 RET END

流水灯二

ORG 0000H LJMP MAIN MAIN:

MOV R7,#00H MAIN_LP:

MOV A,R7 MOV P0,A

LCALL DELAY CPL ACC.0 RR A

MOV R7,A JMP MAIN_LP DELAY:

MOV R6,#0AH DL1: MOV R0,#0C8H DL: MOV R1,#0FFH

DL6: DJNZ R1,DL6 DJNZ R0,DL DJNZ R6,DL1 RET END

一、实验器材

[1] 微型计算机

[2] 单片机硬件开发实验装置 [3] 实验装置下载线

实验04 数码管显示实验

二、实验目的

1. 掌握8段数码管硬件线路原理;

2.掌握用HD7279A芯片实现数码管显示的编程方法。

三、实验电路

HD7279A是一片具有串行接口,可同时驱动8位共阴数码管(或64只独立LED)的智能

显示驱动芯片,该芯片还可同时连接多达64键的键盘矩阵。HD7279A内部含译码器,可直接接受16进制码。

HD7279A芯片介绍请见附录一。

四、实验要求与任务

根据电路使用HD7279A驱动共阴数码管,显示自己学号后3位(例如:101)。

程序可参考附录一。

五、实验步骤:

1. 系统各跳线器处在初始设置状态(参见附录)(J1的1,2处8只短路帽打在左边,3,4的5只短路帽打在右边),J3打在7279处。 2. 程序输入、编译等实验步骤同实验01。 3.程序下载编程。

系统各跳线器处在初始设置状态(参见附录)(JT40打在左边,JD18打在右边),J2的P3.0,P3.1打在右边。

打开STC-ISP V397软件,下载程序(同实验03)。

六、实验程序参考框图:

实验程序如下:

KEY BIT P1.3 CLK BIT P1.6 DAT BIT P1.7 CS BIT P2.7

ORG 000H JMP START ORG 100H

START: MOV SP,#2FH ;定义堆栈

MOV P1,#11011011B ;I/O口初始化 MOV R7,#50

START_DELAY: MOV R6,#255

START_DELAY1:DJNZ R6,START_DELAY1 DJNZ R7,START_DELAY

MOV A,#10100100B ;发复位指令 CALL SEND SETB CS

XIANSHI:MOV A,#10000010b CALL SEND MOV A,#00000000b CALL SEND

MOV A,#10000001b CALL SEND MOV A,#00000110b CALL SEND

MOV A,#10000000b CALL SEND MOV A,#00000100b CALL SEND hh:JMP XIANSHI

SEND: MOV R0,#8 CLR CS

CALL LONG_DELAY

SEND_LOOP: MOV C,ACC.7 MOV DAT,C SETB CLK RL A

CALL SHORT_DELAY CLR CLK

CALL SHORT_DELAY DJNZ R0,SEND_LOOP CLR DAT RET

LONG_DELAY: MOV R7,#80

DELAY_LOOP: DJNZ R7,DELAY_LOOP RET

SHORT_DELAY:MOV R7,#6

SHORT_LP: DJNZ R7,SHORT_LP RET END

课程设计实验01 AD转换实验

一、实验器材

[1] 微型计算机

[2] 单片机硬件开发实验装置 [3] 实验装置下载线

二、实验目的

1. 掌握ADC0809模/数转换芯片与单片机的连接方法及ADC0809的典型应用; 2.掌握用查询方式完成模/数转换程序的编写方法。

三、实验电路

实验使用ADC00809模数转换器,ADC0809是8通道8位CMOS逐次逼近式A/D转换芯片。片内有模拟量通道选择开关及相应的通道锁存、译码电路,A/D转换后的数据由三态锁器输出。由于片内没有时钟需外接时钟信号。

芯片的引脚如图5-1,各引脚功能如下:

图5-1 ADC0809引脚图

IN0~IN7:八路模拟信号输入端。

ADD-A、ADD-B、ADD-C:三位地址码输入端。

CLOCK: 外部时钟输入端。CLOCK输入频率范围在10-1280KHz,典型值为640KHz,此时A/D转换时间为100μS。51单片机ALE直接或分频后可与CLOCK相连。本实验CLOCK信号由CPLD Lattice3128分频产生(12MHz晶振12分频)。

D0~D7: 数字量输出端。

OE(ENABLE):A/D转换结果输出允许端。

当OE为高电平时,允许A/D转换结果从D0-D7输出。

ALE: 地址锁存允许信号输入端。

八路模拟通道地址由A、B、C输入,在ALE信号有效时将地址锁存。

START: 启动A/D转换信号输入端。

当START端输入一个正脉冲时,将进行A/D转换。

EOC: A/D转换结束信号输出端。

当 A/D转换结束后,EOC输出高电平。

Vref(+)、Vref(-):正负基准电压输入端。基准正电压的典型值为+5V。

图5-2 ADC0809时序图

实验数码管显示部分电路,同实验04。实验ADC0809电路如下图5-3所示。实验采用外设与存储器同一编址,在使用中可直接将外设当作数据存储器访问。第0路ADC地址为2f00H(即:CS AD信号对应A15~A3为0010 1111 0000 0)。EOC(A/D转换结束信号输出端)取反后接单片机P1.7,若采用查询方式完成模/数转换,只需查询P1.7即可。本实验CLOCK信号由CPLD Lattice3128分频产生(12MHz晶振12分频)。

图5-3 ADC0809模拟转换电路

四、实验要求与任务

本实验从ADC0809的IN-0输入模拟量0~5V,数码管以十进制形式显示模拟量(单位为伏特)。

提示:将AD转换结果*500/255的运算可简化为将AD转换结果*500/256。

五、实验步骤:

1. 系统跳线:

1)系统各跳线器处在初始设置状态(参见附录),将MCU模块JT12跳线器的C、D、E、F四只短路帽置为上边(1、2短接),G短路帽置为下面(2、3短接)。

2)A/D、D/A模块J101跳线器的短路帽置位左边;CPLD模块JT110跳线器的短路帽置位左边。J1的都打到左边,J2的 WR,RD打在左侧,J3打在CS7279处。 2. 程序输入、编译等实验步骤同实验01。 3.程序下载编程。

系统各跳线器处在初始设置状态(参见附录)(JT40打在左边,JD18打在右边),J2的P3.0,P3.1打在右边。

打开STC-ISP V397软件,下载程序(同实验03)。 4.数码管以十进制形式显示模拟量(单位伏特),手动调节电位器 RP100,改变输入模拟量电压的大小,数码管显示将随之变化。

六、实验程序参考框图:

实验程序如下:

ADHEX DATA 050H

DBUF DATA 060H BIT_COUNT DATA 070H

TIMER DATA 072H TIMER1 DATA 073H

TIMER2 DATA 074H

DATA_IN DATA 020H DATA_OUT DATA 021H CLK BIT P1.6 DAT BIT P1.7

ORG 0000H LJMP MAIN ORG 0100H MAIN: clr a setb p1.7

MOV R0,#DBUF

MOV DPTR,#02f00H ; A/D NOP nop nop

MOVX @DPTR,A ; 启动转换 JNB P1.7,$ NOP nop nop

MOVX A,@DPTR ; 读入结果

NOP nop nop

MOV R7,A

MOV ADHEX,A

CALL MUL500 ; ADHEX*500/256 CALL HB2 ; 转换成bcd CALL TODISP ; 拆开显示 NOP

CALL DISPLAY CALL delay LJMP MAIN

DISPLAY:

ANL P2,#00H ; CS7279有效 MOV DATA_OUT,#10100100B ; A4H,复位命令 CALL SEND

MOV DATA_OUT,#11001000B ; 译码方式0,0位显示 CALL SEND

MOV DATA_OUT,DBUF CALL SEND CALL SEND

MOV DATA_OUT,DBUF+1 CALL SEND

MOV DATA_OUT,#11001001B ; 译码方式0,1位显示

MOV DATA_OUT,#11001010B ; 译码方式0,2位显示

CALL SEND

MOV DATA_OUT,DBUF+2 CALL SEND

MOV P2,#0FFH RET

SEND: MOV BIT_COUNT,#8 ANL P2,#00H CALL LONG_DELAY SEND_LOOP:MOV C,DATA_OUT.7 MOV DAT,C SETB CLK

MOV A,DATA_OUT RL A

MOV DATA_OUT,A CALL SHORT_DELAY CLR CLK

CALL SHORT_DELAY

DJNZ BIT_COUNT,SEND_LOOP CLR DAT RET

LONG_DELAY:MOV TIMER,#150 DELAY_LOOP:DJNZ TIMER,DELAY_LOOP RET SHORT_DELAY:

MOV TIMER,#20 SHORT_LP: DJNZ TIMER,SHORT_LP RET

无效

发送字符子程序 ;延时约200US ;延时约20US ; ; CS7279

本文来源:https://www.bwwdw.com/article/j02i.html

Top