南昌大学单片机实验报告.docx
- 文档编号:26323982
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:44
- 大小:35.63KB
南昌大学单片机实验报告.docx
《南昌大学单片机实验报告.docx》由会员分享,可在线阅读,更多相关《南昌大学单片机实验报告.docx(44页珍藏版)》请在冰豆网上搜索。
南昌大学单片机实验报告
实验一 I/O口输入输出实验
一、实验目的
掌握单片机P1口、P3口的使用方法。
二、实验内容
以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。
以P3口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤
1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.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
LJMP START
ORG0100H
START:
OUTPUT1:
MOVA,#0FEH
MOVR5, #8
LOOP1:
CLRC
MOVC,DIR
JCOUTPUT2
MOVP1,A
RLA
ACALLDELAY
DJNZ R5,LOOP1
SJMPOUTPUT1
OUTPUT2:
MOVA,#07FH
MOV R5,#8
LOOP2:
CLR C
MOVC,DIR
JNC OUTPUT1
MOVP1, A
RRA
ACALLDELAY
DJNZR5,LOOP2
SJMP OUTPUT2
DELAY:
MOV R6,#0
DELAYLOOP1:
MOVR7,#0
DELAYLOOP2:
NOP
NOP
DJNZ R7,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亮的时间,如此循环扫描查询,便可实现流水灯的效果。
实验二 外部中断实验
一、实验目的
学习外部中断技术的基本使用方法。
二、实验内容
INT0端接单次脉冲发生器。
按一次脉冲产生一次中断,CPU使P1.0 状态发生一次反转,P1.0接LED 灯,以查看信号反转。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤
1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU 模块的P32;CPU模块的P10接八位逻辑电平显示模块的灯。
2)启动PC 机,打开THGMW-51软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)连续按动单次脉冲产生电路的按键,发光二极管L0每按一次状态取反,即隔一次点亮。
五、实验参考程序
;//*************************************************
;文件名:
EXintfor MCU51
;功能:
外部中断实验
;接线:
导线连接单次脉冲模块的输出端到CPU模块的P32,
;CPU模块的P10接八位逻辑电平显示模块的L0灯。
;//*************************************************
LEDBITP1.0
LEDBUFBIT20H
ORG0
LJMPSTART
ORG 3
INTERRUPT0:
PUSHPSW;保护现场
CPL LEDBUF;取反LED
MOV C,LEDBUF
MOV LED,C
POPPSW; 恢复现场
RETI
START:
CLRLEDBUF
CLRLED
MOV TCON, #01H;外部中断0下降沿触发
MOVIE, #81H;打开外部中断允许位(EX0)及总中断允许位(EA)
OK:
LJMP OK
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.
;//*************************************************
TICK EQU10000;10000X100US=1S
T100USEQU 156 ;100US时间常数(6M)
C100USEQU30H ;100US记数单元
LEDBUF BIT 20H
ORG 0
LJMPSTART
ORG 000BH
T0INT:
PUSH PSW
MOV A,C100US+1
JNZ GOON
DEC C100US
GOON:
DECC100US+1
MOVA, C100US
ORL A, C100US+1
JNZEXIT ;100US 记数器不为0,返回
MOV C100US, #27H ; #HIGH(TICK)
MOV C100US+1,#10H ;#LOW(TICK)
CPL LEDBUF ;100US记数器为0, 重置记数器
;取反LED
EXIT:
POP PSW
RETI
START:
MOV TMOD,#02H ; 方式2,定时器
MOV TH0,#T100US
MOV TL0,#T100US
MOV IE,#10000010B ; EA=1,IT0=1
SETBTR0 ;开始定时
CLR LEDBUF
CLR P1.0
MOV C100US,#27H ;#HIGH(TICK)
MOV C100US+1,#10H ;#LOW(TICK)
LOOP:
MOVC, LEDBUF
MOV P1.0,C
LJMPLOOP
END
六、实验结果
运行程序之后,B5区的发光二极管L0隔一秒点亮一次,每次点亮时间为一秒。
七、结果分析
本实验通过定时器0的方式2实现精确定时,但定时器的最长定时时间达不到一秒,所以通过一个时间变量实现,总的定时时间等于定时器定时时间乘以时间变量初值,这样就可实现一秒的定时,程序通过扫描不断检测时间变量的值,当定时时间一秒到时,对P1.0的状态取反,实现L0每隔一秒亮一次。
实验四 交通灯控制实验
一、实验目的
掌握十字路口交通灯控制方法。
二、实验内容
利用系统提供的双色LED 显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。
4 位LED数码管显示时间,LED显示红绿灯状态。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤
1)系统各跳线器处在初始设置状态。
P10同时接G1、G3;P11同时接R1、R3;P1.2同时接G2、G4;P1.3同时接R2、R4;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。
;//*******************************************************************
SECOND1EQU 30H ;东西秒寄存器
SECOND2 EQU 31H ;南北秒寄存器
DBUF EQU 40H;显示缓冲1
TEMPEQU44H;显示缓冲2
LED_G1BITP1.0;东西绿灯
LED_R1 BIT P1.1 ;东西红灯
LED_G2BIT P1.2;南北绿灯
LED_R2BIT P1.3 ;南北红灯
DIN BIT P1.6 ;串行显示数据
CLK BITP1.7 ;串行显示时钟
ORG0000H
LJMPSTART
ORG 0100H
START:
LCALL STATE0 ;调用状态0
LCALLDELAY ;调用延时
MOV TMOD,#01H ;置T0工作方式1
MOVTH0,#3CH ;置T0定时初值50MS
MOV TL0,#0B0H
SETB TR0 ;启动T0 CLR EA
LOOP:
MOV R2,#20 ;置1S计数初值50MS*20=1S
MOV R3,#20;红灯20S
MOVSECOND1,#25 ;东西秒显示初值25S
MOV SECOND2,#25;南北秒显示初值25S
LCALLDISPLAY
LCALL STATE1 ;调用状态1
WAIT1:
JNB TF0,WAIT1;查询50MS到否
CLR TF0
MOVTH0, #3CH ;恢复T0定时初值50MS
MOV TL0,#0B0H
SETB TR0 ;启动T0
DJNZR2,WAIT1 ;判1S到否?
未到继续状态1
MOV R2,#20 ;置50MS计数初值
DEC SECOND1 ;东西秒显示减一
DECSECOND2 ;南北秒显示减一
LCALLDISPLAY
DJNZR3,WAIT1 ;状态1维持20S
MOVR2,#5 ;置50MS计数初值 5*4=20
MOV R3,#3 ;绿灯闪3S
MOVR4,#4 ;闪烁间隔200MS
MOVSECOND1,#5 ;东西秒显示初值5S
MOV SECOND2,#5;南北秒显示初值5S
LCALLDISPLAY
WAIT2:
LCALLSTATE2 ;调用状态2
JNB TF0,WAIT2 ;查询50MS到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值50MS
MOV TL0, #0B0H
DJNZR4,WAIT2 ;判200MS到否?
未到继续状态2
CPL LED_G1 ;东西绿灯闪
MOV R4,#4 ;闪烁间隔200MS
DJNZ R2,WAIT2 ;判1S到否?
未到继续状态2
MOV R2,#5 ;置50MS计数初值
DEC SECOND1 ;东西秒显示减一
DECSECOND2 ;南北秒显示减一
LCALL DISPLAY
DJNZ R3,WAIT2 ;状态2维持3S
MOV R2,#20 ;置50MS计数初值
MOVR3,#2 ;黄灯2S
MOV SECOND1,#2 ;东西秒显示初值2S
MOVSECOND2,#2 ;南北秒显示初值2S
LCALL DISPLAY
WAIT3:
LCALLSTATE3 ;调用状态3
JNBTF0,WAIT3;查询30MS到否
CLRTF0
MOVTH0,#3CH ;恢复T0定时初值50MS
MOV TL0,#0B0H
DJNZR2,WAIT3 ;判1S到否?
未到继续状态3
MOV R2,#20;置50MS计数初值
DECSECOND1 ;东西秒显示减一
DEC SECOND2 ;南北秒显示减一
LCALLDISPLAY
DJNZ R3,WAIT3 ;状态3维持2S
MOV R2,#20 ;置50MS计数初值
MOV R3,#20 ;红灯20S
MOVSECOND1,#25 ;东西秒显示初值25S
MOV SECOND2,#25;南北秒显示初值25S
LCALL DISPLAY
WAIT4:
LCALLSTATE4 ;调用状态4
JNBTF0,WAIT4 ;查询50MS到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值50MS
MOVTL0, #0B0H
DJNZR2,WAIT4 ;判1S到否?
未到继续状态4
MOVR2,#20 ;置50MS计数初值
DEC SECOND1 ;东西秒显示减一
DECSECOND2;南北秒显示减一
LCALL DISPLAY
DJNZ R3,WAIT4 ;状态4维持20S
MOVR2,#5 ;置50MS计数初值5*4=20
MOVR4,#4 ;闪烁间隔200MS
MOV R3,#3;绿灯闪3S
MOV SECOND1,#5;东西秒显示初值5S
MOV SECOND2,#5 ;南北秒显示初值5S
LCALLDISPLAY
WAIT5:
LCALL STATE5 ;调用状态5
JNB TF0,WAIT5 ;查询50MS到否
CLR TF0
MOV TH0,#3CH;恢复T0定时初值100MS
MOVTL0,#0B0H
DJNZR4,WAIT5 ;判200MS到否?
未到继续状态5
CPL LED_G2 ;南北绿灯闪
MOVR4,#4 ;闪烁200MS
DJNZ R2,WAIT5 ;判1S到否?
未到继续状态5
MOVR2,#5 ;置100MS计数初值
DECSECOND1 ;东西秒显示减一
DEC SECOND2 ;南北秒显示减一
LCALLDISPLAY
DJNZ R3,WAIT5;状态5维持3S
MOV R2,#20;置50MS计数初值
MOV R3,#2 ;黄灯2S
MOV SECOND1,#2;东西秒显示初值2S
MOVSECOND2,#2 ;南北秒显示初值2S
LCALLDISPLAY
WAIT6:
LCALLSTATE6 ;调用状态6
JNB TF0,WAIT6;查询100MS到否
CLR TF0
MOVTH0,#3CH;恢复T0定时初值100MS
MOVTL0,#0B0H
DJNZR2,WAIT6;判1S到否?
未到继续状态6
MOV R2,#20;置100MS计数初值
DEC SECOND1;东西秒显示减一
DEC SECOND2 ;南北秒显示减一
LCALLDISPLAY
DJNZ R3,WAIT6 ;状态6维持2S
LJMP LOOP ;大循环
STATE0:
;状态0
MOV P1,#0
CLRLED_G1
SETBLED_R1;东西红灯亮
CLRLED_G2
SETBLED_R2 ;南北红灯亮
RET
STATE1:
;状态1
SETB LED_G1 ;东西绿灯亮
CLR LED_R1
CLRLED_G2
SETB LED_R2 ;南北红灯亮
RET
STATE2:
;状态2
CLR LED_R1
CLR LED_G2
SETBLED_R2 ;南北红灯亮
RET
STATE3:
;状态3
SETB LED_G1
SETB LED_R1 ;东西黄灯亮
CLR LED_G2
SETBLED_R2;南北红灯亮
RET
STATE4:
;状态4
CLR LED_G1
SETB LED_R1 ;东西红灯亮
SETB LED_G2 ;南北绿灯亮
CLR LED_R2
RET
STATE5:
;状态5
CLR LED_G1
SETB LED_R1 ;东西红灯亮
CLRLED_R2
RET
STATE6:
;状态6
CLR LED_G1
SETBLED_R1 ;东西红灯亮
SETB LED_G2
SETBLED_R2 ;南北黄灯亮
RET
DISPLAY:
;数码显示
MOV A,SECOND1 ;东西秒寄存器
MOVB, #10 ;16进制数拆成两个10进制数
DIVAB
MOVDBUF+1,A
MOV A,B
MOV DBUF,A
MOV A, SECOND2 ;南北秒寄存器
MOV B,#10 ;16进制数拆成两个10进制数
DIV AB
MOV DBUF+3,A
MOV A,B
MOV DBUF+2,A
MOVR0,#DBUF
MOVﻩ R1,#TEMP
ﻩ MOVﻩR7,#4
DP10:
MOVDPTR,#LEDMAP
ﻩMOVﻩ A,@R0
MOVCA,@A+DPTR
ﻩMOVﻩ@R1,A
ﻩINCR0
ﻩINCﻩ R1
ﻩDJNZR7,DP10
ﻩMOVR0,#TEMP
MOV R1,#4
DP12:
ﻩMOV R7,#8
MOVﻩ A,@R0
DP13:
RLCﻩ A
MOV DIN,C
ﻩCLRﻩCLK
SETBCLK
ﻩDJNZR7,DP13
INC R0
DJNZR1,DP12
RET
LEDMAP:
DB3FH,6,5BH,4FH,66H,6DH;0,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:
MOV R5,#5
DLOOP0:
MOV R6,#0
DLOOP1:
MOVR7,#0
DLOOP2:
NOP
NOP
DJNZ R7,DLOOP2
DJN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 单片机 实验 报告