南昌大学单片机实验报告DOC.docx

上传人:b****7 文档编号:9441376 上传时间:2023-02-04 格式:DOCX 页数:47 大小:67.87KB
下载 相关 举报
南昌大学单片机实验报告DOC.docx_第1页
第1页 / 共47页
南昌大学单片机实验报告DOC.docx_第2页
第2页 / 共47页
南昌大学单片机实验报告DOC.docx_第3页
第3页 / 共47页
南昌大学单片机实验报告DOC.docx_第4页
第4页 / 共47页
南昌大学单片机实验报告DOC.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

南昌大学单片机实验报告DOC.docx

《南昌大学单片机实验报告DOC.docx》由会员分享,可在线阅读,更多相关《南昌大学单片机实验报告DOC.docx(47页珍藏版)》请在冰豆网上搜索。

南昌大学单片机实验报告DOC.docx

南昌大学单片机实验报告DOC

实验一I/O口输入输出实验

一、实验目的

掌握单片机P1口、P3口的使用方法。

二、实验内容

以P1口为输出口,接八位逻辑电平显示,LED显示跑马灯效果。

以P3口为输入口,

接八位逻辑电平输出,用来控制跑马灯的方向。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验步骤

1)系统各跳线器处在初始设置状态。

用导线连接八位逻辑电平输出模块的K0到CPU模块的RXDP3.0口);用8位数据线连接八位逻辑电平显示模块的JD4B到CPU模块JD8(P1口)。

2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。

编译无误后,下载程序运行。

3)观察发光二极管显示跑马灯效果,拨动K0可改变跑马灯的方向。

五、实验参考程序

;〃******************************************************************

;文件名:

PortforMCU51

;功能:

I/O口输入、输出实验

;接线:

用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);;用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。

;//******************************************************************

DIRBITP3.0

ORG0000H

LJMPSTART

ORG0100H

START:

OUTPUT1:

MOVA,#0FEH

MOVR5,#8

LOOP1:

CLRC

MOVC,DIR

JC0UTPUT2

MOVP1,A

RLA

ACALLDELAY

DJNZR5,LOOP1

SJMPOUTPUT1

OUTPUT2:

MOVA,#07FH

MOVR5,#8

LOOP2:

CLRC

MOVC,DIR

JNCOUTPUT1

MOVP1,A

RRA

ACALLDELAY

DJNZR5,LOOP2

SJMPOUTPUT2

DELAY:

MOVR6,#0

DELAYLOOP1:

MOVR7,#0

DELAYLOOP2:

NOP

NOP

DJNZR7,DELAYLOOP2

DJNZR6,DELAYLOOP1

RET

END

六、实验结果

当八位逻辑电平的K0拨到上方,即输出高电平时,实验箱B5区的八个LED灯从左至右循环点亮,当K0拨到下方,即输出低电平时,八个LED灯从右至左循环点亮。

七、结果分析

程序通过查询方式不断检测P3.0口的输入状态,当P3.0输入为0时,由P1口通过左

移指令RL轮流输出低电平驱动LED发光,在左移时通过软件延时控制LED亮的时间;当

P3.0输入为1时,由P1口通过右移指令RR轮流输出低电平驱动LED发光,在右移时同样通过软件延时控制LED亮的时间,如此循环扫描查询,便可实现流水灯的效果。

实验二外部中断实验

一、实验目的

学习外部中断技术的基本使用方法。

二、实验内容

INTO端接单次脉冲发生器。

按一次脉冲产生一次中断,CPU使P1.0状态发生一次反

转,P1.0接LED灯,以查看信号反转。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验步骤

1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU模块的P32;CPU模块的P10接八位逻辑电平显示模块的灯。

2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。

编译无误后,下载程序运行。

3)连续按动单次脉冲产生电路的按键,发光二极管L0每按一次状态取反,即隔一次点

五、实验参考程序

;〃*************************************************

;文件名:

EXintforMCU51

;功能:

外部中断实验

;接线:

导线连接单次脉冲模块的输出端到CPU模块的P32,

;CPU模块的P10接八位逻辑电平显示模块的L0灯。

;〃*************************************************

LEDBITP1.0

LEDBUFBIT20H

ORG0

LJMPSTART

ORG3

INTERRUPT0:

PUSHPSW;保护现场

CPLLEDBUF;取反LED

MOVC,LEDBUF

MOVLED,C

POPPSW;恢复现场

RETI

START:

CLRLEDBUF

CLRLED

MOVTCON,#01H;外部中断0下降沿触发

MOVIE,#81H;打开外部中断允许位(EX0)及总中断允许位(EA)

OK:

LJMPOK

END

六、实验结果

每按下E3区的单次脉冲触发按钮时,B5区的发光二极管状态取反一次,即原来是亮按

下时灭,原来是灭则按下时亮。

七、结果分析

程序由外部中断0实现,外部中断0由下降沿触发,外部输入由单次脉冲触发器输入,每次按下按钮时会触发单次脉冲,产生一个下降沿,从而使程序产生中断,在中断服务函数

的程序里面对P1.0取反,由P1.0驱动LED,就可实现本实验的功能。

实验三定时/计数器实验

一、实验目的

学习MCS-51内部计数器的使用和编程方法。

二、实验内容

使用MCS-51内部定时/计数器,定时一秒钟,CPU运用定时中断方式,实现每一秒钟输

出状态发生一次反转,即发光管每隔一秒钟亮一次。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验步骤

1)系统各跳线器处在初始设置状态,用导线连接CPU模块P10到八位逻辑电平显示模块的L0。

2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。

编译无误后,下载程序运行。

3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。

五、实验参考程序

;//*************************************************

;文件名:

TIMERFORMCU51

;功能:

定时/计数器实验

;接线:

导线连接CPU莫块P10到八位逻辑电平显示模块的L0.

;//*************************************************

TICKEQU10000;10000X100US=1S

T100USEQU156;100US时间常数(6M)

C100USEQU30H;100US记数单元

LEDBUFBIT20H

ORG0

LJMPSTART

ORG000BH

T0INT:

PUSHPSW

MOVA,C100US+1

JNZGOON

DECC100US

GOON:

DEC

C100US+1

MOV

A,C100US

ORL

A,C100US+1

JNZ

EXIT;100US

记数器不为

0,返回

MOV

C100US,#27H;#HIGH(TICK)

MOV

C100US+1,#10H;#LOW(TICK)

CPL

LEDBUF;100US

记数器为0,

重置记数器

取反LED

 

EXIT:

POP

RETI

PSW

START:

MOV

TMOD,#02H

;方式2,定时器

MOV

TH0,#T100US

MOV

TL0,#T100US

MOV

IE,#10000010B

;EA=1,IT0=1

SETB

TR0;

开始定时

CLR

LEDBUF

CLR

P1.0

MOV

C100US,#27H

;#HIGH(TICK)

MOV

C100US+1,#10H

;#LOW(TICK)

LOOP:

MOV

C,LEDBUF

MOV

P1.0,C

LJMP

LOOP

END

六、实验结果

运行程序之后,B5区的发光二极管L0隔一秒点亮一次,每次点亮时间为一秒。

七、结果分析

本实验通过定时器0的方式2实现精确定时,但定时器的最长定时时间达不到一秒,所以通过一个时间变量实现,总的定时时间等于定时器定时时间乘以时间变量初值,这样就可

实现一秒的定时,程序通过扫描不断检测时间变量的值,当定时时间一秒到时,对P1.0的

状态取反,实现L0每隔一秒亮一次。

实验四交通灯控制实验

一、实验目的

掌握十字路口交通灯控制方法。

二、实验内容

利用系统提供的双色LED显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。

4位LED数码管显示时间,LED显示红绿灯状态。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验步骤

1)系统各跳线器处在初始设置状态。

P10同时接G1、G3;P11同时接R1、R3;P1.2同时接G2G4;P1.3同时接R2R4;P1.6、P1.7分别接静态数码显示的DIN、CLK

2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。

编译无误后,下载程序运行。

3)观察十字路口交通灯效果。

五、实验参考程序

・〃*******************************************************************

;文件名:

交通灯程序FORMCU51

;功能:

双色LED模拟交通灯信号,并通过调用静态数码显示状态时间。

;接线:

P1.0同时接G1、G3,P1.1接R1、R3,P1.2接G2、G4,P1.3同时接R2、R4,;P1.6、P1.7接静态数码显示的DIN、CLK

・/]*******************************************************************

SECOND1EQU30H;

东西秒寄存器

SECOND2EQU31H;

南北秒寄存器

DBUFEQU40H;

显示缓冲1

TEMPEQU44H;

显示缓冲2

LED_G1BITP1.0;

东西绿灯

LED_R1BITP1.1;

东西红灯

LED_G2BITP1.2;

南北绿灯

LED_R2BITP1.3;

南北红灯

DINBITP1.6;

串行显示数据

CLKBITP1.7;

串行显示时钟

ORG0000H

LJMPSTART

ORG0100H

START:

LCALLSTATE0;

调用状态0

LCALLDELAY;

调用延时

MOVTMOD,#01H;

置T0工作方式1

MOVTH0,#3CH;

置T0定时初值50MS

MOVTL0,#0B0H

SETBTR0;

启动T0

CLREA

LOOP:

MOVR2,#20;

置1S计数初值50MS*20=1S

MOVR3,#20;

红灯20S

MOVSECOND1,#25;

东西秒显示初值25S

MOVSECOND2,#25;

南北秒显示初值25S

LCALLDISPLAY

LCALLSTATE1;

调用状态1

WAIT1:

JNBTF0,WAIT1;

查询50M倒否

CLRTF0

MOVTH0,#3CH;

恢复T0定时初值50MS

MOVTL0,#0B0H

SETBTR0;

启动T0

DJNZR2,WAIT1;

判1S到否?

未到继续状态1

MOVR2,#20;

置50MS十数初值

DECSECOND1

东西秒显示减一

南北秒显示减一

DECSECOND2

LCALLDISPLAY

DJNZR3,WAIT1;

MOVR2,#5;

MOVR3,#3;

MOVR4,#4;

MOVSECOND1,#5

MOVSECOND2,#5

LCALLDISPLAY

WAIT2:

LCALLSTATE2

JNBTF0,WAIT2;

CLRTF0

MOVTH0,#3CH;

MOVTL0,#0B0H

DJNZR4,WAIT2;

CPLLED_G1;

MOVR4,#4;

DJNZR2,WAIT2;

MOVR2,#5;

DECSECOND1

状态1维持20S

置50MS+数初值5*4=20

绿灯闪3S

闪烁间隔200MS

东西秒显示初值5S

南北秒显示初值5S

调用状态2

查询50M倒否

恢复TO定时初值50MS

判200MS1U否?

未到继续状态2

东西绿灯闪

闪烁间隔200MS

判1S到否?

未到继续状态2

置50MS十数初值

东西秒显示减一

南北秒显示减一

DECSECOND2

LCALLDISPLAY

DJNZ

R3,WAIT2;

状态2维持3S

MOV

R2,#20;

置50MS十数初值

MOV

R3,#2;

黄灯2S

MOV

SECOND1,#2;

东西秒显示初值

2S

MOV

SECOND2,#2;

南北秒显示初值

2S

LCALL

.DISPLAY

WAIT3:

LCALLSTATE3;

调用状态3

JNB

TF0,WAIT3;

查询30M倒否

CLR

TF0

MOV

TH0,#3CH;

恢复TO定时初值

50MS

MOV

TL0,#0B0H

DJNZ

R2,WAIT3;

判1S到否?

未到继续状态3

MOV

R2,#20;

置50MS十数初值

DEC

SECOND1;

东西秒显示减一

DEC

SECOND2;

南北秒显示减一

LCALL

.DISPLAY

DJNZ

R3,WAIT3;

状态3维持2S

MOV

R2,#20;

置50MS十数初值

MOV

R3,#20;

红灯20S

MOV

SECOND1,#25;

东西秒显示初值

25S

MOV

SECOND2,#25;

南北秒显示初值

25S

LCALL

.DISPLAY

WAIT4:

LCALLSTATE4;

调用状态4

JNB

TF0,WAIT4;

查询50M倒否

CLR

TF0

MOV

TH0,#3CH;

恢复T0定时初值

50MS

MOV

TL0,#0B0H

DJNZ

R2,WAIT4;

判1S到否?

未到继续状态4

MOV

R2,#20;

置50MS十数初值

DEC

SECOND1;

东西秒显示减一

DEC

SECOND2;

南北秒显示减一

LCALL

.DISPLAY

DJNZ

R3,WAIT4;

状态4维持20S

MOV

R2,#5;

置50MS十数初值

5*4=20

MOV

R4,#4;

闪烁间隔200MS

MOV

R3,#3;

绿灯闪3S

MOV

SECOND1,#5;

东西秒显示初值

5S

MOV

SECOND2,#5;

南北秒显示初值

5S

LCALL

.DISPLAY

WAIT5:

LCALLSTATE5;

调用状态5

JNB

TF0,WAIT5;

查询50M倒否

CLR

TF0

MOV

TH0,#3CH;

恢复T0定时初值

100MS

MOV

TL0,#0B0H

DJNZ

R4,WAIT5;

判200MS1U否?

未到继续状态

CPL

LED_G2;

南北绿灯闪

MOV

R4,#4;

闪烁200MS

DJNZ

R2,WAIT5;

判1S到否?

未到继续状态5

MOV

R2,#5;

置100MS十数初值

DEC

SECOND1;

东西秒显示减一

DEC

SECOND2;

南北秒显示减一

LCALL

DISPLAY

DJNZ

R3,WAIT5;

状态5维持3S

MOV

R2,#20;

置50MS十数初值

MOV

R3,#2;

黄灯2S

MOV

SECOND1,#2;

东西秒显示初值2S

MOV

SECOND2,#2;

南北秒显示初值2S

LCALLDISPLAY

WAIT6:

LCALLSTATE6;调用状态6

JNB

TF0,WAIT6;

查询100M倒否

CLR

TF0

MOV

TH0,#3CH;

恢复TO定时初值100MS

MOV

TL0,#0B0H

DJNZ

R2,WAIT6;

判1S到否?

未到继续状态6

MOV

R2,#20;

置100MS十数初值

DEC

SECOND1;

东西秒显示减一

DEC

SECOND2;

南北秒显示减一

LCALLDISPLAY

DJNZ

R3,WAIT6;

状态6维持2S

LJMP

LOOP;

大循环

STATE0:

J

状态0

MOV

P1,#0

CLR

LED_G1

SETB

LED_R1;

东西红灯亮

CLR

LED_G2

SETB

LED_R2;

南北红灯亮

RET

STATE1:

J

状态1

SETB

LED_G1;

东西绿灯亮

CLR

LED_R1

CLR

LED_G2

SETB

LED_R2;

南北红灯亮

RET

STATE2:

J

状态2

CLR

LED_R1

CLR

LED_G2

SETB

LED_R2;

南北红灯亮

STATE3:

SETB

J

LED_G1

状态3

SETB

LED_R1;

东西黄灯亮

CLR

LED_G2

SETB

LED_R2;

南北红灯亮

RET

STATE4:

J

状态4

CLR

LED_G1

SETB

LED_R1;

东西红灯亮

SETB

LED_G2;

南北绿灯亮

CLR

LED_R2

RET

STATE5:

J

状态5

CLR

LED_G1

SETB

LED_R1;

东西红灯亮

CLR

LED_R2

RET

STATE6:

J

状态6

CLR

LED_G1

SETB

LED_R1;

东西红灯亮

SETB

LED_G2

SETB

LED_R2;

南北黄灯亮

RET

DISPLAY:

J

数码显示

MOV

A,SECOND1;

东西秒寄存器

MOV

B,#10;16

进制数拆成两个

DIV,

AB

MOV

DBUF+1,A

MOV

A,B

MOV

DBUF,A

MOV

A,SECOND2;

南北秒寄存器

MOV

B,#10;16

进制数拆成两个

DIV,

AB

MOV

DBUF+3,A

MOV

A,B

MOV

DBUF+2,A

MOV

R0,#DBUF

RET

10进制数

10进制数

MOVR1,#TEMP

MOVR7,#4

DP10:

MOVDPTR,#LEDMAP

MOVA,@R0

MOVCA,@A+DPTR

MOV@R1,A

INCRO

INCR1

DJNZR7,DP10

MOV

R0,#TEMP

MOV

R1,#4

DP12:

MOV

R7,#8

MOV

A,@R0

DP13:

RLC

A

MOV

DIN,C

CLR

CLK

SETB

CLK

DJNZ

R7,DP13

INC1

R0

DJNZ

R1,DP12

RET

LEDMAP:

DB3FH,6,5BH,4FH,66H,6DH;O,1,2,3,4,5

DB7DH,7,7FH,6FH,77H,7CH;6,7,8,9,A,B

DB58H,5EH,7BH,71H,0,40H;C,D,E,F,,-

DELAY:

MOVR5,#5

DL00P0:

M0VR6,#0

DLOOP1:

MOVR7,#0

DLOOP2:

NOP

NOP

DJNZR7,DLOOP2

DJNZR6,DLOOP1

DJNZR5,DLOOP0

RET

END

六、实验结果

程序开始运行后,B5区模拟的东西红灯亮,南北绿灯亮,同时两个方向的数码管分别

从25秒开始倒计时,当倒计时到5秒时,南北绿灯闪亮3秒后变黄,再过2秒,即倒计时到0时,变为东西绿灯亮,南北红灯亮,同时两个方向的数码管分别同时从25秒开始倒计

时,但倒计时到5秒时,东西绿灯闪亮3秒后变黄,再过2秒之后又回到初始状态,继续循环运行。

七、结果分析

本实验通过双色的LED模拟交通灯的显示状态,并用静态数码管结合定时器实现定时及显示功能,将交通灯的显示分为六个不同的状态,程序运行之后进行计数显示,当计时时

间到达某一个状态之后,跳转进入相应的状态执行,执行完之后继续进入下一个状态,实验

通过程序模拟了交通灯的显示。

实验五串转并与并转串实验

一、实验目的

1.掌握使用74LS164扩展输出的方法。

2.掌握使用74LS165扩展输入的方法。

二、实验内容

使用74LS165扩展输入数据,使用74LS164扩展输出数据。

74LS165的并行口接八位逻辑电平输出(开关),CPU使用P1.0、P1.1和P1.2串行读入开关状态;74LS164的并行口接一只数码管,CPU使用P1.3和P1.4串行输出刚读入的开关状态,使之在数码管上显示出

来。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验步骤

1)系统各跳线器处在初始设置状态。

用导线对应连接八位逻辑电平输出模块的QH165CLK165SH/LD到CPU模块的P10、P11、P12。

用导线对应连接静态数码管显示模块的DIN、CLK到CPU模块的P13P14。

2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。

编译无误后,下载程序运行。

3)观察数码(八段码)管的亮灭与拨动开关的状态是否一致。

拨动开关拨下输出为低电平,

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

当前位置:首页 > 医药卫生 > 中医中药

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

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