东南大学单片机实验报告.docx
- 文档编号:3380817
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:61
- 大小:1.03MB
东南大学单片机实验报告.docx
《东南大学单片机实验报告.docx》由会员分享,可在线阅读,更多相关《东南大学单片机实验报告.docx(61页珍藏版)》请在冰豆网上搜索。
东南大学单片机实验报告
《单片机应用系统设计》
实验报告
姓名:
学号:
院系:
仪器科学与工程学院专业:
测控技术与仪器
实验室:
机械楼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。
思考:
见实验程序注释部分。
软件实验二多字节十进制加法实验
一、实验目的
掌握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;提高时将加数高位22H改为自定义的数的高位(如45H)
DECR0
MOV@R0,#33H;提高时将加数低位33H改为自定义的数的低位(如34H)
MOVR1,#21H
MOV@R1,#44H;提高时作为被加数的高位被修改(如改为35H)
DECR1
MOV@R1,#55H;提高时作为被加数的低位被修改(如改为56H)
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)
被加数数值35H56H
加数数值22H33H
+)
结果数值00H66H88H
五、实验提高
修改加数和被加数(十进制数),重复运行程序。
思考:
见程序注释部分,改过之后结果如下:
被加数数值44H55H
加数数值45H34H
+)
结果数值00H89H89H
软件实验三十进制数排序实验
一、实验目的
掌握十进制数的排序方法
二、实验内容
本程序用的是“冒泡排序”法,是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序,即从小到大排序。
三、实验流程图
四、实验程序
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,89H,F6H,6AH,04H,C0H,BAH,34H,25H,FFH。
运行程序后可以看到50H~59H的内容变为00H,04H,25H,34H,6AH,89H,BAH,C0H,F6H,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)对于MCS51,P1口是准双向口。
它作为输出口时与一般的双向口使用方法想同;但准双向口用作输入口时,因其结构特点必须对它置“1”,否则读入的数据容易产生错误。
(2)8051延时子程序的延时计算问题,对于程序
DELAY:
MOVR6,#0H
MOVR7,#0H
DELAYLOOP:
DJNZR6,DELAYLOOP
DJNZR7,DELAYLOOP
RET
查指令表可知MOV和DJNZ指令均需两个指令周期,在12MHz晶振时,一个机器周期时间为:
12/12MHZ=1ms,该延时子程序延时:
(256X256+2)X2X12/12=130ms。
4、分别连接硬件并执行相关程序,记录结果。
四、实验流程图
五、实验程序
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即可。
Ⅱ、继电器控制实验
一、实验目的
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、查询资料,了解其他弱电控制强电的方法。
思考:
固体继电器、可控硅、光电耦合可控硅等等。
硬件实验二数据输入/输出口扩展实验
Ⅰ、用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的输出端。
Ⅱ、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灯由左向右循环点亮。
思考:
见程序注释。
硬件实验四显示器/键盘实验
Ⅰ、八段数码管显示实验
一、实验目的
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。
思考:
为了显示1~6,将START第二行的0改为1且去掉MLOOP语句;显示A~F时,将1改为10。
Ⅱ、键盘扫描显示实验
一、实验目的
1、掌握键盘和显示器的接口方法和编程方法。
2、掌握键盘扫描和LED八段码显示器的工作原理。
二、实验内容
在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。
实验程序可分成三个模块。
①键输入模块:
扫描键盘、读取一次键盘并将键值存入键值缓冲单元。
②显示模块:
将显示单元的内容在显示器上动态显示。
③主程序:
调用键输入模块和显示模块。
三、实验步骤
1、硬件连接
连线
连接孔1
连接孔2
1
KEY/LED_CS
CS0
读回行码
(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,#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,#1
CALLDELAY
MOVA,R2
RRA
MOVR2,A
INCR0
DJNZR1,LOOP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 单片机 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)