东南大学单片机实验报告测控技术与仪器.docx

上传人:b****5 文档编号:7498734 上传时间:2023-01-24 格式:DOCX 页数:77 大小:4.32MB
下载 相关 举报
东南大学单片机实验报告测控技术与仪器.docx_第1页
第1页 / 共77页
东南大学单片机实验报告测控技术与仪器.docx_第2页
第2页 / 共77页
东南大学单片机实验报告测控技术与仪器.docx_第3页
第3页 / 共77页
东南大学单片机实验报告测控技术与仪器.docx_第4页
第4页 / 共77页
东南大学单片机实验报告测控技术与仪器.docx_第5页
第5页 / 共77页
点击查看更多>>
下载资源
资源描述

东南大学单片机实验报告测控技术与仪器.docx

《东南大学单片机实验报告测控技术与仪器.docx》由会员分享,可在线阅读,更多相关《东南大学单片机实验报告测控技术与仪器.docx(77页珍藏版)》请在冰豆网上搜索。

东南大学单片机实验报告测控技术与仪器.docx

东南大学单片机实验报告测控技术与仪器

 

《单片机应用系统设计》

实验报告

 

姓名:

学号:

院系:

仪器科学与工程学院专业:

测控技术与仪器

实验室:

机械楼5楼同组人员:

评定成绩:

审阅教师:

 

软件实验一数据传送实验

一、实验目的

1、熟悉单片机仿真开发器的使用;

2、掌握编程方法;

3、掌握8051内部RAM的数据操作

二、实验内容

内部RAM40H~4FH单元置数A0H~AFH,然后将40H~4FH单元内容送到内部RAM50H~5FH单元中。

编辑、编译、运行程序,检查内部RAM中的结果。

三、实验程序

ORG0000H

RESET:

AJMPMAIN

ORG003FH

MAIN:

MOVR0,#40H

MOVR2,#10H;提高时将10H改为20H

MOVA,#0A0H;提高时将0A0H改为00H

A1:

MOV@R0,A

INCR0

INCA

DJNZR2,A1

MOVR0,#40H

MOVR1,#50H;提高时将50H改为60H

MOVR2,#10H;提高时将10H改为20H

A2:

MOVA,@R0

MOV@R1,A

INCR0

INCR1

DJNZR2,A2

A3:

SJMPA3

四、实验结果

实验显示RAM的40H~4FH以及50H~5FH的内容都为A0H~AFH。

五、实验提高

修改程序:

将所置的数改为00H~1FH,置数单元和传送单元分别改为内部RAM的40H~5FH、60H~7FH。

见实验程序注释部分。

六、实验思考

熟悉了伟福单片机系统的使用方法,在仿真器中查看寄存器内容变化,了解了51单片机内部RAM寻址方式:

立即数寻址、寄存器寻址等。

软件实验二多字节十进制加法实验

一、实验目的

掌握MCS-51汇编语言程序设计方法

二、实验内容

多字节十进制加法;

加数存储单元首地址由R0指出,被加数和结果的存储单元首地址由R1指出,字节数由R2指出;

编辑、编译、运行程序,检查内部RAM中的结果。

三、实验程序

加数存储单元为:

31H、30H,被加数存储单元为:

21H、20H,结果存储单元为:

22H、21H、20H。

ORG0000H

RESET:

AJMPMAIN

ORG0100H

MAIN:

MOVSP,#60H

MOVR0,#31H

MOV@R0,#22H;提高时将加数高位改为自定义的数的高位(如66H)

DECR0

MOV@R0,#33H;提高时将加数低位改为自定义的数的低位(如77H)

MOVR1,#21H

MOV@R1,#44H;提高时作为被加数的高位被修改(如改为44H)

DECR1

MOV@R1,#55H;提高时作为被加数的低位被修改(如改为55H)

MOVR2,#02H

ACALLDACE

HERE:

SJMPHERE

DACE:

CLRC

DAL:

MOVA,@R0

ADDCA,@R1

DAA

MOV@R1,A

INCR0

INCR1

DJNZR2,DAL

CLRA

MOVACC.0,C

MOV@R1,A

RET

四、实验结果

被加数单元地址(21H)(20H)

加数单元地址(31H)(30H)

+)

结果单元地址(22H)(21H)(20H)

 

被加数数值44H55H

加数数值22H33H

+)

结果数值00H66H88H

五、实验提高

修改加数和被加数(十进制数),重复运行程序。

思考:

见程序注释部分,改过之后结果如下:

 

被加数数值44H55H

加数数值66H77H

+)

结果数值01H11H32H

六、实验思考

学习了多字节十进制加法,其中DA这条汇编指令是实现十进制加法的关键,当用BCD码十进制数进行加法运算时,其运算结果的和数不一定仍为十进制的BCD码,必须用DA指令调整成十进制的BCD码。

软件实验三十进制数排序实验

一、实验目的

掌握十进制数的排序方法

二、实验内容

本程序用的是“冒泡排序”法,是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。

再进行下一轮比较,找出第二大数据,直到全部数据有序,即从小到大排序。

三、实验程序

SIZEEQU10

ARRAYEQU40H

CHANGEEQU0

SORT:

MOVR0,#ARRAY

MOVR7,#SIZE-1

CLRCHANGE

GOON:

MOVA,@R0

MOVR2,A

INCR0

MOVB,@R0

CJNEA,B,NOTEQUAL

SJMPNEXT

NOTEQUAL:

JCNEXT;提高时将“JC”改为“JNC”

SETBCHANGE

XCHA,@R0

DECR0

XCHA,@R0

INCR0

NEXT:

DJNZR7,GOON

JBCHANGE,SORT

LJMP$

END

四、实验结果

实验时,运行程序前手动更改RAM50H~59H的内容为任意10个无序的数,如00H,09H,0FH,0AH,04H,C0H,B1H,34H,25H,FFH。

运行程序后可以看到50H~59H的内容变为00H,04H,09H,0AH,0FH,25H,34H,B1H,C0H,FFH即按升序排列的10个数。

五、实验提高

修改程序,按照从小到大的顺序排列。

结果:

只要将NOTEQUAL子程序中的JC改为JNC即可实现。

运行后的数据将按照从大到小排列。

六、实验思考

本实验使用的是冒泡排序,冒泡排序是很经典的排序算法,通过依次比较前后两个数大小从而将整个序列排序。

这个方法算法思想直观易懂,实现方式简单,但是由于需要多次循环所以整个过程很繁琐,尤其是数据较多时需要处理的时间就会大大加长。

硬件实验一I/O口输入/输出及控制实验

Ⅰ、I/O口输入/输出实验

一、实验目的

1、学习单片机I/O口的使用方法;

2、学习延时子程序的编写和使用。

二、实验内容

1、I/O口输出:

P1口做输出口,接八只发光二极管,编写程序让发光二极管循环点亮。

2、I/O口输入/输出:

P1.0、P1.1做输入口接两个拨动开关;P1.2、P1.3做输出口,接两个发光二极管。

编写程序读取开关状态,将此状态在发光二极管上显示出来。

编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。

三、实验步骤

1、I/O口输出硬件连接

连线

连接孔1

连接孔2

1

P1.0

L0

2

P1.1

L1

3

P1.2

L2

4

P1.3

L3

5

P1.4

L4

6

P1.5

L5

7

P1.6

L6

8

P1.7

L7

MCS51的P1口循环点灯

2、I/O口输入/输出硬件连接

连线

连接孔1

连接孔2

1

K4

P1.0

2

K5

P1.1

3

P1.2

L4

4

P1.3

L5

MCS51的P1口输入/输出

3、分别连接硬件并执行相关程序,记录结果。

四、实验程序

1、I/O口输出(P1口循环点灯)

LOOP:

MOVA,#01H;提高时将01H改为55H

MOVR2,#8

OUTPUT:

MOVP1,A

RLA

CALLDELAY

DJNZR2,OUTPUT

LJMPLOOP

DELAY:

MOVR6,#0

MOVR7,#0

DELAYLOOP:

DJNZR6,DELAYLOOP

DJNZR7,DELAYLOOP

RET

END

2、I/O口输入/输出(P1口输入/输出)

KEYLEFTEQUP1.0

KEYRIGHTEQUP1.1

LEDLEFTEQUP1.2

LEDRIGHTEQUP1.3

SETBKEYLEFT

SETBKEYRIGHT

LOOP:

MOVC,KEYLEFT

MOVLEDLEFT,C

MOVC,KEYRIGHT

MOVLEDRIGHT,C

LJMPLOOP

END

六、实验结果

I/O口输出实验,运行程序后可以看到LED从右向左循环点亮;

I/O口输入/输出实验,运行程序并置1后,拨动某一个开关后会看到对应的LED发光。

七、实验提高

修改I/O口输出程序,改成先1,3,5,7灯亮,再2,4,6,8灯亮。

思考:

只要将程序第一行的01H改为55H即可,55H即01010101B,最初1,3,5,7灯亮,右循环后变为10101010B,2,4,6,8灯亮。

八、实验思考

本实验第一次使用延时程序,对于程序

DELAY:

MOVR6,#0H

MOVR7,#0H

DELAYLOOP:

DJNZR6,DELAYLOOP

DJNZR7,DELAYLOOP

RET

查指令表可知MOV和DJNZ指令均需两个指令周期,在12MHz晶振时,一个机器周期时间为:

12/12MHZ=1ms,该延时子程序延时:

(256X256+2)X2X12/12=130ms。

由于DJNZ指令是先对寄存器内容减1再与0比较,所以给R6R7赋值0可以获得最长延时。

 

Ⅱ、继电器控制实验

一、实验目的

1、学习I/O端口的使用方法;

2、掌握继电器控制的基本方法;

3、了解用弱电控制强电的方法。

二、实验内容

用单片机端口,输出电平控制继电器的吸合和断开,实现对外部装置的控制。

三、实验步骤

1、硬件连线

连线

连接孔1

连接孔2

1

P1.0

继电器输入

2

5V

继电器常闭输入

3

L0

继电器中间输入

2、实验说明

本实验采用的继电器其控制电压是5V,控制端为高电平时,继电器工作常开触点吸合,连接触点的LED灯被点亮。

当控制端为低电平时,继电器不工作,LED灯灭。

3、分析并执行程序

四、实验程序

OUTPUTEQUP1.0;P1.0PORT

LOOP:

CLRC

MOVOUTPUT,C

CALLDELAY

SETBC

MOVOUTPUT,C

CALLDELAY

LJMPLOOP

DELAY:

;提高时为了修改延时时间,只要更改2个立即数0即可。

MOVR6,#0

MOVR7,#0

DLOOP:

DJNZR7,DLOOP

DJNZR6,DLOOP

RET

END

五、实验结果

运行程序后可以看到LED灯呈亮、灭、亮、灭的循环。

六、实验提高

1、修改程序,改变继电器吸合的时间间隔;

更改DELAY子程序中的两个立即数即可。

2、查询资料,了解其他弱电控制强电的方法。

弱电控制强电是通过低压系统的设备如定时器、传感器等设备对强电(220V以上)供电系统实现自动延时开启或关闭功能,有固体继电器、可控硅、光电耦合可控硅等等。

七、实验思考

这次试验比较简单,初步了解了继电器及其使用方法。

硬件实验二数据输入/输出口扩展实验

Ⅰ、用74HC245读入数据

一、实验目的

1、了解CPU数据总线的使用;

2、掌握利用74HC245数据输入/输出的方法。

二、实验内容

利用试验箱上的74HC245输入电路,用总线方式读入开关状态。

三、实验步骤

1、硬件连接

连线

连接孔1

连接孔2

1

K0

245-I0

2

K1

245-I1

3

K2

245-I2

4

K3

245-I3

5

K4

245-I4

6

K5

245-I5

7

K6

245-I6

8

K7

245-I7

9

CS0

CS245

2、实验说明

一般情况下,CPU的总线会挂有很多器件,如何使这些器件不造成冲突,这就要使用一些总线隔离器件,例如74HC245就是一种。

74HC245是三态总线收发器,利用它既可以输出也可以输入数据。

本实验74HC245的片选地址为CS0,即8000H,读这个地址,就是从74HC245读回开关的值。

可以用单步的方式执行程序,改变开关状态,观察读回的值。

3、分析并执行程序,观察并记录实验结果。

四、实验程序

CS245EQU8000H

ORG0000H

LOOP:

MOVDPTR,#CS245

MOVXA,@DPTR

LJMPLOOP

END

五、实验结果

程序执行后,拨动八位开关,开为1,闭为0,开关状态表示8位二进制数,相应的寄存器显示对应的结果。

六、实验提高

连接拨动开关,利用发光二极管显示拨动开关的状态。

如果利用74HC245输出,如何设计电路?

将二极管与开关一一对应相连即可。

其中开关连接74HC245的输入端,LED连接74HC245的输出端。

八、实验思考

这次试验第一次访问了外部RAM,使用MOVX指令,将外部RAM地址放入数据指针DPTR间接寻址,寻址范围可达64KB。

Ⅱ、74HC273扩展数据输出

一、实验目的

1、学习在单片机系统中扩展简单I/O接口的方法;

2、学习数据输出程序的设计方法;

3、了解数据锁存的概念和方法。

二、实验内容

利用实验箱上的273输出电路,从总线上输出I/O口信号,控制八个LED灯。

三、实验步骤

1、硬件连接

连线

连接孔1

连接孔2

1

L0

273-I0

2

L1

273-I1

3

L2

273-I2

4

L3

273-I3

5

L4

273-I4

6

L5

273-I5

7

L6

273-I6

8

L7

273-I7

9

CS0

CS273

2、实验说明

本实验用74HC273扩展I/O端口。

方法是:

通过片选信号和写信号将数据总线上的值锁存在273中,同时在273的输出端口输出。

当数据总线上的值撤销后,由于273能够锁存信号,所以273的输出端保持不变,直到下次有新的数据被锁存。

本实验中,在数据输出同时输出片选信号和写信号。

3、分析并执行程序,观察并记录结果。

四、实验程序

CS273EQU8000H

MOVDPTR,#CS273

MOVA,#1

LOOP:

MOVX@DPTR,A

MOVR6,#0FFH

MOVR7,#0FFH

DELAYLOOP:

DJNZR6,DELAYLOOP

DJNZR7,DELAYLOOP

NOP

RLA;提高时将RL改为RR

LJMPLOOP

DELAY:

END

CS273EQU8000H

MOVDPTR,#CS273

MOVA,#1

LOOP:

MOVX@DPTR,A

RLA;提高时将RL改为RR

NOP

LJMPLOOP

END

五、实验结果

执行程序后可以看到LED灯从右向左循环点亮。

六、实验提高

增加延时程序,让LED灯由左向右循环点亮。

见程序注释。

七、实验思考

74HC273具有八路边沿触发,D型触发器,带独立的D输入和Q输出。

273带锁存,这样D输入的信号可以锁住保持在输出端,保持LED的驱动是固定的电平状态,所以当总线数据撤销后,输出端的值可以保持不变。

硬件实验四显示器/键盘实验

Ⅰ、八段数码管显示实验

一、实验目的

1、了解数码管动态显示的原理;

2、了解用总线方式控制数码管显示。

二、实验内容

利用实验仪提供的显示电路,动态显示一行数据。

三、实验步骤

1、硬件连接

连线

连接孔1

连接孔2

1

KEY/LED_CS

CS0

2、实验说明

注意:

当用总线方式驱动八段显示管时,请将八段的驱动方式选择开关拨到“内驱”位置;当用I/O方式驱动八段显示管时,请将开关拨到“外驱”位置。

本实验仪提供了6位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。

显示共有6位,用动态方式显示。

8位段码、6位位码是由两片74LS374输出。

位码经MC1413或ULN2003倒相驱动后,选择相应显示位。

本实验仪中8位段码输出地址为0X004H,位码输出地址为0X002H。

此处X是由KEY/LEDCS决定,参见地址译码。

做键盘和LED实验时,需将KEY/LEDCS接到相应的地址译码上。

以便用相应的地址来访问。

例如,将KEY/LEDCS接到CS0上,则段码地址为08004H,位码地址为08002H。

七段数码管的字型代码表如下表:

显示字形

g

f

e

d

c

b

a

段码

0

0

1

1

1

1

1

1

3fh

1

0

0

0

0

1

1

0

06h

2

1

0

1

1

0

1

1

5bh

3

1

0

0

1

1

1

1

4fh

4

1

1

0

0

1

1

0

66h

5

1

1

0

1

1

0

1

6dh

6

1

1

1

1

1

0

1

7dh

7

0

0

0

0

1

1

1

07h

8

1

1

1

1

1

1

1

7fh

9

1

1

0

1

1

1

1

6fh

A

1

1

1

0

1

1

1

77h

b

1

1

1

1

1

0

0

7ch

C

0

1

1

1

0

0

1

39h

d

1

0

1

1

1

1

0

5eh

E

1

1

1

1

0

0

1

79h

F

1

1

1

0

0

0

1

71h

3、分析并执行程序,观察并记录结果。

四、实验程序

OUTBITEQU08002H

OUTSEGEQU08004H

INEQU08001H

LEDBUFEQU60H

NUMEQU70H

DELAYTEQU75H

LJMPSTART

LEDMAP:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

DELAY:

MOVR7,#0

DELAYLOOP:

DJNZR7,DELAYLOOP

DJNZR6,DELAYLOOP

RET

DISPLAYLED:

MOVR0,#LEDBUF

MOVR1,#6

MOVR2,#00100000B

LOOP:

MOVDPTR,#OUTBIT

MOVA,#0

MOVX@DPTR,A

MOVA,@R0

MOVDPTR,#OUTSEG

MOVX@DPTR,A

MOVDPTR,#OUTBIT

MOVA,R2

MOVX@DPTR,A

MOVR6,#05

CALLDELAY

MOVA,R2

RRA

MOVR2,A

INCR0

DJNZR1,LOOP

MOVDPTR,#OUTBIT

MOVA,#0

MOVX@DPTR,A

RET

START:

MOVSP,#40H

MOVNUM,#0

MLOOP:

INCNUM

MOVA,NUM

MOVB,A

MOVR0,#LEDBUF

FILLBUF:

MOVA,B

ANLA,#0FH

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

MOV@R0,A

INCR0

INCB

CJNER0,#LEDBUF+6,FILLBUF

MOVDELAYT,#30

DISPAGAIN:

CALLDISPLAYLED

DJNZDELAYT,DISPAGAIN

LJMPMLOOP

END

五、实验结果

数码管动态地012345、123456、234567、·······、F012345、0123456、······不断循环显示。

六、实验提高

修改程序,显示1、2、3、4、5、6或A、B、C、D、E、F。

去掉MLOOP:

INCNUM一句,NUM的值一直是1或者A,主程序结尾处也不要跳转回MLOOP,我让程序在结尾处一直循环DISPLAYLED子程序。

七、思考

多个数码管扫描显示利用了人眼的视觉暂留现象,单片机一次位选一个数码管,点亮一个字符,然后位选下一个数码管,这时候上一个数码管其实灭了,但是单片机扫描速度非常快,人眼看到的现象就是多个数码管同时亮了。

Ⅱ、键盘扫描显示实验

一、实验目的

1、掌握键盘和显示器的接口方法和编程方法。

2、掌握键盘扫描和LED八段码显示器的工作原理。

二、实验内容

在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。

实验程序可分成三个模块。

①键输入模块:

扫描键盘、读取一次键盘并将键值存入键值缓冲单元。

②显示模块:

将显示单元的内容在显示器上动态显示。

③主程序:

调用键输入模块和显示模块。

三、实验步骤

1、硬件连接

连线

连接孔1

连接孔2

1

KEY/LED_CS

CS0

列码

(0X002H)

读回行码

(0X001H)

数据总线

2、实验说明

本实验仪提供了一个6×4的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。

如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,相应行码为高。

在判断有键按下后,要有一定的延时,防止键盘抖动。

再通过输出的列码和读取的行码来判断按下的是什么键。

地址中的X是由KEY/LEDCS决定,参见地址译码。

做键盘和LED实验时,需将KEY/LEDCS接到相应的地址译码上。

以便用相应的地址来访问。

例如将KEY/LEDCS信号接CS0上,则列扫描地址为08002H,行码地址为08001H。

列扫描码还可以分时用作LED的位选通信号(参见键盘显示电路)。

3、分析并执行程序,观察并记录结果。

四、实验程序

OUTBITEQU08002H

OUTSEGEQU08004H

INEQU08001H

LEDBUFEQU60H

LJMPSTART

LEDMAP:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

DELAY:

MOVR7,#0

DELAYLOOP:

DJNZR7,DELAYLOOP

DJNZR6,DELAYLOOP

RET

DISPLAYLED:

MOVR0,#LEDBUF

MOVR1,#

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1