单片机实验报告.doc

上传人:牧羊曲112 文档编号:4006278 上传时间:2023-03-31 格式:DOC 页数:28 大小:109KB
返回 下载 相关 举报
单片机实验报告.doc_第1页
第1页 / 共28页
单片机实验报告.doc_第2页
第2页 / 共28页
单片机实验报告.doc_第3页
第3页 / 共28页
单片机实验报告.doc_第4页
第4页 / 共28页
单片机实验报告.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《单片机实验报告.doc》由会员分享,可在线阅读,更多相关《单片机实验报告.doc(28页珍藏版)》请在三一办公上搜索。

1、实验一 I/O口输入输出实验一、实验目的 掌握单片机P1口、P3口的使用方法。 二、实验内容 以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。 三、实验要求 根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验步骤 1)系统各跳线器处在初始设置状态。用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口); 用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块JD8(P1 口)。 2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序 运行。

2、 3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。 五、实验参考程序;/* ;文件名: Port for MCU51 ;功能: I/O口输入、输出实验 ;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口); ; 用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。 ;/* DIR BIT P3.0 ORG 0000H LJMP START ORG 0100H START: OUTPUT1: MOV A, #0FEH MOV R5, #8 LOOP1: CLR C MOV C,DIR JC OUTPUT2 MOV P1, AR

3、L AACALL DELAY DJNZ R5, LOOP1 SJMP OUTPUT1 OUTPUT2: MOV A, #07FH MOV R5, #8 LOOP2: CLR C MOV C,DIR JNC OUTPUT1 MOV P1, A RR A ACALL DELAY DJNZ R5,LOOP2 SJMP OUTPUT2 DELAY: MOV R6,#0 DELAYLOOP1: MOV R7,#0 DELAYLOOP2: NOP NOP DJNZ R7,DELAYLOOP2 DJNZ R6,DELAYLOOP1 RETEND 六、 实验结果当八位逻辑电平的K0拨到上方,即输出高电平时,实

4、验箱B5区的八个LED灯从左至右循环点亮,当K0拨到下方,即输出低电平时,八个LED灯从右至左循环点亮。七、 结果分析程序通过查询方式不断检测P3.0口的输入状态,当P3.0输入为0时,由P1口通过左移指令RL轮流输出低电平驱动LED发光,在左移时通过软件延时控制LED 亮的时间;当P3.0输入为1时,由P1口通过右移指令RR轮流输出低电平驱动LED发光,在右移时同样通过软件延时控制LED 亮的时间,如此循环扫描查询,便可实现流水灯的效果。实验二 外部中断实验一、实验目的 学习外部中断技术的基本使用方法。 二、实验内容 INT0 端接单次脉冲发生器。按一次脉冲产生一次中断,CPU 使P1.0

5、状态发生一次反转,P1.0接LED 灯,以查看信号反转。 三、实验要求 根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验步骤 1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU 模块的P32;CPU 模块的P10 接八位逻辑电平显示模块的灯。 2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。 3)连续按动单次脉冲产生电路的按键,发光二极管L0 每按一次状态取反,即隔一次点亮。 五、实验参考程序 ;/* ;文件名: EXint for MCU51 ;功能: 外部中断实验 ;接线: 导线连接单次脉冲模块的输出端到CP

6、U模块的P32, ; CPU模块的P10接八位逻辑电平显示模块的L0灯。 ;/* LED BIT P1.0 LEDBUF BIT 20H ORG 0 LJMP START ORG 3 INTERRUPT0: PUSH PSW ; 保护现场 CPL LEDBUF ; 取反LED MOV C, LEDBUF MOV LED, C POP PSW ; 恢复现场 RETI START: CLR LEDBUF CLR LED MOV TCON, #01H ; 外部中断0下降沿触发 MOV IE, #81H ; 打开外部中断允许位(EX0)及总中断允许位(EA) OK: LJMP OK END 六、实验结

7、果每按下E3区的单次脉冲触发按钮时,B5区的发光二极管状态取反一次,即原来是亮按下时灭,原来是灭则按下时亮。七、 结果分析 程序由外部中断0实现,外部中断0由下降沿触发,外部输入由单次脉冲触发器输入,每次按下按钮时会触发单次脉冲,产生一个下降沿,从而使程序产生中断,在中断服务函数的程序里面对P1.0取反,由P1.0驱动LED,就可实现本实验的功能。实验三 定时/计数器实验一、实验目的学习MCS-51 内部计数器的使用和编程方法。二、实验内容使用MCS-51 内部定时/计数器,定时一秒钟,CPU 运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。三、实验要求根据实验内

8、容编写一个程序,并在实验仪上调试和验证。四、 实验步骤1)系统各跳线器处在初始设置状态,用导线连接CPU 模块P10 到八位逻辑电平显示模块的L0。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。五、实验参考程序;/*;文件名: TIMER FOR MCU51;功能: 定时/计数器实验;接线: 导线连接CPU模块P10到八位逻辑电平显示模块的L0.;/* TICK EQU 10000 ; 10000 X 100US = 1S T100US EQU 156 ; 100US时间常数(6M)

9、C100US EQU 30H ; 100US记数单元 LEDBUF BIT 20H ORG 0 LJMP START ORG 000BHT0INT: PUSH PSW MOV A, C100US+1 JNZ GOON DEC C100USGOON: 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, 重置记数器 ; 取反LEDEX

10、IT: POP PSW RETISTART: 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 LOOPEND六、 实验结果运行程序之后,B5区的发光二极管L0隔一秒点亮一次,每次点亮时间为一秒

11、。七、结果分析 本实验通过定时器0的方式2实现精确定时,但定时器的最长定时时间达不到一秒,所以通过一个时间变量实现,总的定时时间等于定时器定时时间乘以时间变量初值,这样就可实现一秒的定时,程序通过扫描不断检测时间变量的值,当定时时间一秒到时,对P1.0的状态取反,实现L0每隔一秒亮一次。实验四 交通灯控制实验一、实验目的掌握十字路口交通灯控制方法。二、实验内容利用系统提供的双色LED 显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。4 位LED 数码管显示时间,LED 显示红绿灯状态。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验步骤1)系统各跳线器处在初始设

12、置状态。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)观察十字路口交通灯效果。五、实验参考程序;/*;文件名:交通灯程序 FOR MCU51;功能:双色LED模拟交通灯信号,并通过调用静态数码显示状态时间。;接线:P1.0同时接G1、G3,P1.1接R1、R3,P1.2接G2、G4,P1.3同时接R2、R4,;P1.6、P1.7接静态数码显示的DIN、CLK。;/* SECON

13、D1 EQU 30H ;东西秒寄存器 SECOND2 EQU 31H ;南北秒寄存器 DBUF EQU 40H ;显示缓冲1 TEMP EQU 44H ;显示缓冲2 LED_G1 BIT P1.0 ;东西绿灯 LED_R1 BIT P1.1 ;东西红灯 LED_G2 BIT P1.2 ;南北绿灯 LED_R2 BIT P1.3 ;南北红灯 DIN BIT P1.6 ;串行显示数据 CLK BIT P1.7 ;串行显示时钟 ORG 0000H LJMP START ORG 0100HSTART: LCALL STATE0 ;调用状态0 LCALL DELAY ;调用延时 MOV TMOD,#01

14、H ;置T0工作方式1 MOV TH0, #3CH ;置T0定时初值50MS MOV TL0, #0B0H SETB TR0 ;启动T0 CLR EALOOP: MOV R2,#20 ;置1S计数初值 50MS*20=1S MOV R3,#20 ;红灯20S MOV SECOND1,#25 ;东西秒显示初值25S MOV SECOND2,#25 ;南北秒显示初值25S LCALL DISPLAY LCALL STATE1 ;调用状态1WAIT1: JNB TF0,WAIT1 ;查询50MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50MS MOV TL0, #0B0H

15、 SETB TR0 ;启动T0 DJNZ R2,WAIT1 ;判1S到否?未到继续状态1 MOV R2,#20 ;置50MS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT1 ;状态1维持20S MOV R2,#5 ;置50MS计数初值 5*4=20 MOV R3,#3 ;绿灯闪3S MOV R4,#4 ;闪烁间隔200MS MOV SECOND1,#5 ;东西秒显示初值5S MOV SECOND2,#5 ;南北秒显示初值5S LCALL DISPLAYWAIT2: LCALL STATE2 ;调

16、用状态2 JNB TF0,WAIT2 ;查询50MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50MS MOV TL0, #0B0H DJNZ R4,WAIT2 ;判200MS到否?未到继续状态2 CPL LED_G1 ;东西绿灯闪 MOV R4,#4 ;闪烁间隔200MS DJNZ R2,WAIT2 ;判1S到否?未到继续状态2 MOV R2,#5 ;置50MS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT2 ;状态2维持3S MOV R2,#20 ;置50MS计数初

17、值 MOV R3,#2 ;黄灯2S MOV SECOND1,#2 ;东西秒显示初值2S MOV SECOND2,#2 ;南北秒显示初值2S LCALL DISPLAYWAIT3: LCALL STATE3 ;调用状态3 JNB TF0,WAIT3 ;查询30MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50MS MOV TL0, #0B0H DJNZ R2,WAIT3 ;判1S到否?未到继续状态3 MOV R2,#20 ;置50MS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,

18、WAIT3 ;状态3维持2S MOV R2,#20 ;置50MS计数初值 MOV R3,#20 ;红灯20S MOV SECOND1,#25 ;东西秒显示初值25S MOV SECOND2,#25 ;南北秒显示初值25S LCALL DISPLAYWAIT4: LCALL STATE4 ;调用状态4 JNB TF0,WAIT4 ;查询50MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50MS MOV TL0, #0B0H DJNZ R2,WAIT4 ;判1S到否?未到继续状态4 MOV R2,#20 ;置50MS计数初值 DEC SECOND1 ;东西秒显示减一 DE

19、C 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 DISPLAYWAIT5: LCALL STATE5 ;调用状态5 JNB TF0,WAIT5 ;查询50MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值100MS MOV TL0, #0B0H DJNZ R4,W

20、AIT5 ;判200MS到否?未到继续状态5 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 LCALL DISPLAYWAIT6:

21、LCALL STATE6 ;调用状态6 JNB TF0,WAIT6 ;查询100MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值100MS MOV TL0, #0B0H DJNZ R2,WAIT6 ;判1S到否?未到继续状态6 MOV R2,#20 ;置100MS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT6 ;状态6维持2S LJMP LOOP ;大循环STATE0: ;状态0 MOV P1,#0 CLR LED_G1 SETB LED_R1 ;东西红灯亮 CLR L

22、ED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE1: ;状态1 SETB LED_G1 ;东西绿灯亮 CLR LED_R1 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE2: ;状态2 CLR LED_R1 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE3: ;状态3 SETB LED_G1 SETB LED_R1 ;东西黄灯亮 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE4: ;状态4 CLR LED_G1 SETB LED_R1 ;东西红灯亮 SETB LED_G2 ;南北绿灯亮

23、CLR LED_R2 RETSTATE5: ;状态5 CLR LED_G1 SETB LED_R1 ;东西红灯亮 CLR LED_R2 RETSTATE6: ;状态6 CLR LED_G1 SETB LED_R1 ;东西红灯亮 SETB LED_G2 SETB LED_R2 ;南北黄灯亮 RETDISPLAY: ;数码显示 MOV A, SECOND1 ;东西秒寄存器 MOV B, #10 ;16进制数拆成两个10进制数 DIV AB MOV DBUF+1,A MOV A,B MOV DBUF, A MOV A, SECOND2 ;南北秒寄存器 MOV B, #10 ;16进制数拆成两个10进

24、制数 DIV AB MOV DBUF+3, A MOV A,B MOV DBUF+2, A MOV R0,#DBUF MOV R1,#TEMP MOV R7,#4DP10:MOV DPTR,#LEDMAP MOV A,R0 MOVC A,A+DPTR MOV R1,A INC R0 INC R1 DJNZ R7,DP10 MOV R0,#TEMP MOV R1,#4DP12:MOV R7,#8 MOV A,R0DP13:RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R7,DP13 INC R0 DJNZ R1,DP12 RETLEDMAP: DB 3FH,6,5B

25、H,4FH,66H,6DH ;0,1,2,3,4,5 DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,B DB 58H,5EH,7BH,71H,0,40H ;C,D,E,F, , -DELAY: MOV R5, #5DLOOP0:MOV R6, #0DLOOP1:MOV R7, #0DLOOP2: NOP NOP DJNZ R7, DLOOP2 DJNZ R6, DLOOP1 DJNZ R5, DLOOP0 RETEND六、实验结果程序开始运行后,B5区模拟的东西红灯亮,南北绿灯亮,同时两个方向的数码管分别从25秒开始倒计时,当倒计时到5秒时,南北绿灯闪亮3秒后变黄,再

26、过2秒,即倒计时到0时,变为东西绿灯亮,南北红灯亮,同时两个方向的数码管分别同时从25秒开始倒计时,但倒计时到5秒时,东西绿灯闪亮3秒后变黄,再过2秒之后又回到初始状态,继续循环运行。七、结果分析 本实验通过双色的LED模拟交通灯的显示状态,并用静态数码管结合定时器实现定时及显示功能,将交通灯的显示分为六个不同的状态,程序运行之后进行计数显示,当计时时间到达某一个状态之后,跳转进入相应的状态执行,执行完之后继续进入下一个状态,实验通过程序模拟了交通灯的显示。实验五 串转并与并转串实验一、实验目的1掌握使用74LS164 扩展输出的方法。2掌握使用74LS165 扩展输入的方法。二、实验内容使用

27、74LS165 扩展输入数据,使用74LS164 扩展输出数据。74LS165 的并行口接八位逻辑电平输出(开关),CPU 使用P1.0、P1.1 和P1.2 串行读入开关状态;74LS164 的并行口接一只数码管,CPU 使用P1.3 和P1.4 串行输出刚读入的开关状态,使之在数码管上显示出来。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验步骤1)系统各跳线器处在初始设置状态。用导线对应连接八位逻辑电平输出模块的QH165、CLK165、SH/LD 到CPU 模块的P10、P11、P12。用导线对应连接静态数码管显示模块的DIN、CLK 到CPU 模块的P13、P1

28、4。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)观察数码(八段码)管的亮灭与拨动开关的状态是否一致。拨动开关拨下输出为低电平,段码点亮。五、实验参考程序;/*;/*文件名:164165 串转并,并转串实验程序;功能:把开关量通过74*165串行输入到内存,并通过74*164串行输出到数;码管上显示。;接线:P1.0接QH165,P1.1接CLK165,P1.2接SH_LD,;P1.3、P1.4接静态数码显示的DIN、CLK。;/* QH165 BIT P1.0 CLK165 BIT P1.1 SH_LD BIT P1.2 DAT164

29、BIT P1.3 CLK164 BIT P1.4 MEMORY EQU 30H ORG 0000H AJMP START ORG 00B0H START: SETB CLK165 CLR SH_LD SETB SH_LD MOV R7, #8INPUT: RR A MOV C, QH165 MOV ACC.7, C CLR CLK165 NOP SETB CLK165 DJNZ R7, INPUT MOV MEMORY,A MOV A,MEMORY MOV R6,#8OUTPUT: RRC A MOV DAT164,C CLR CLK164 SETB CLK164 DJNZ R6, OUTPU

30、T ACALL DELAY SJMP STARTDELAY: MOV R0,#5DD2: MOV R1,#0FFH DJNZ R1,$ DJNZ R0,DD2 RET END六、实验结果当把E4区的八位逻辑电平的拨码开关K0K7向上拨时,即逻辑电平输出高电平时,B4区的四位数码管的段码AH依次点亮,即K0K7每一段向上拨时,对应的AH数码管段码点亮。七、 结果分析 实验通过74LS165八位逻辑电平的并行输出数据转成串行数据,输入单片机的P1.0口,再通过P1.3输出到74LS164的数据输入端,再由164的串转并输出口驱动数码管的八位段码,从而实现了并转串、串转并的功能。实验六 8255 控

31、制键盘与显示实验一、实验目的1掌握8255 输入、输出编程方法。2掌握阵列键盘和数码管动态扫描显示的控制方法。二、实验内容用8255 可编程并行口做一个键盘、显示扫描实验,把按键输入的键值,显示在8255 控制的七段数码管上。8255 PB 口做键盘输入线,PC 口做显示扫描线,PA 口做显示数据线。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验步骤1)系统各跳线器处在初始设置状态,S11E 和S12E 红开关全部打到下方(OFF)。2)用8 位数据线对应连接8255 模块的JD3C(PA 口)、JD4C(PB 口)、JD5C(PC 口)到8279模块的JD3E、JD2

32、E、JD4E;用导线连接8255 模块的CS_8255 到地。3)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。4)在键盘上按任一单键,观察数码管的显示,数码管低位显示按键值。五、实验参考程序;/*;文件名: 8255KD FOR MCU51;功能: 8255控制键盘显示实验;接线: 连接8279键盘显示模块的JD3E到8255模块的JD3C(PA口);JD2E到8255模块的JD4C(PB口);JD4E到8255模块的JD5C(PC口);用导线连接8255模块的CS_8255到地。;/*D8255A EQU 8000H ;8255 PA 口地址D8255B EQU 8001H ;8255 PB 口地址D8255C EQU 8002H ;8255 PC 口地址D8255 EQU 8003H ;8255 状态/命令口地址LEDBUF EQU 50H ;显示缓存KEYVAL EQU 60H ;读到的键码 ORG 0000H LJMP START ORG 0

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号